FAST99 sensitivity analysis of Saltelli et al (1999)
Call:
fast99(model = NULL, factors = colnames(X_norm), n = 3000, q = "qunif", q.arg = list(min = 0, max = 1))
Model runs: 45000
Estimations of the indices:
first order total order
R0 2.585428e-02 0.035929466
TE 8.449869e-03 0.012916688
TP 5.232931e-03 0.009794117
TI1 2.755023e-03 0.005637028
TI2 4.424181e-04 0.002651128
nuA 2.146632e-03 0.004908428
ns 3.161063e-03 0.006554266
p_home_weekend 2.465234e-05 0.002252227
alphaTH 1.251016e-02 0.014628540
etaTH 3.012345e-02 0.032340747
alphaEP 4.749904e-02 0.049844993
alphaI1D 4.128630e-04 0.002730804
alphaHD 6.479151e-01 0.665511700
alphaI1H 4.060805e-02 0.042927247
eta 1.532206e-01 0.155485294
Call:
fast99(model = NULL, factors = colnames(X_norm), n = 3000, q = "qunif", q.arg = list(min = 0, max = 1))
Model runs: 45000
Estimations of the indices:
first order total order
R0 2.863806e-02 0.0362205113
TE 7.500666e-03 0.0101285630
TP 8.205312e-03 0.0097800745
TI1 1.751677e-03 0.0032319492
TI2 1.808647e-04 0.0009642045
nuA 1.960271e-03 0.0031444349
ns 2.630065e-03 0.0041243613
p_home_weekend 2.258216e-04 0.0010491636
alphaTH 1.813378e-05 0.0007295074
etaTH 1.559330e-04 0.0008386092
alphaEP 4.130470e-02 0.0423746633
alphaI1D 8.163022e-01 0.8302459638
alphaHD 7.783550e-06 0.0011500901
alphaI1H 7.638476e-04 0.0041380489
eta 7.532251e-02 0.0764951926
This is an R Markdown Notebook. When you execute code within the notebook, the results appear beneath the code.
Try executing this chunk by clicking the Run button within the chunk or by placing your cursor inside it and pressing Ctrl+Shift+Enter.
Add a new chunk by clicking the Insert Chunk button on the toolbar or by pressing Ctrl+Alt+I.
When you save the notebook, an HTML file containing the code and output will be saved alongside it (click the Preview button or press Ctrl+Shift+K to preview the HTML file).
The preview shows you a rendered HTML copy of the contents of the editor. Consequently, unlike Knit, Preview does not run any R code chunks. Instead, the output of the chunk when it was last run in the editor is displayed.
LS0tCnRpdGxlOiAiTWV0YXdhcmRzIFdhdmUwNCIKb3V0cHV0OiBodG1sX25vdGVib29rCi0tLQoKCgojIyBFbXVsYXRpb24gdGVzdHMgZm9yIE1ldGFXYXJkcwoKTW9kZWwgZGVzY3JpcHRpb24gKHBhcmFtZXRlcnMgZXRjLiApIGFyZSBbaGVyZV0oaHR0cHM6Ly91cTRjb3ZpZC5naXRodWIuaW8vdmlnbmV0dGVzL2RhdGEvTWV0YVdhcmRzL3ZpZ25ldHRlL01vZGVsRGVzY3JpcHRpb24pICAKCkJhc2VkIG9uIENvZGUgZnJvbSBKYW1lcyBTYWx0ZXIuCgpDb2RlIGZvciB0aGlzIG5vdGVib29rIGlzIFtoZXJlXShodHRwczovL2dpdGh1Yi5jb20vZG91Z21jbmVhbGwvY292aWQvYmxvYi9tYXN0ZXIvamFtZXMvd2F2ZV8wM190ZXN0LlJtZCkKCmBgYHtyIHNldHVwLCBpbmNsdWRlPUZBTFNFfQprbml0cjo6b3B0c19jaHVuayRzZXQoZWNobyA9IEZBTFNFLCBtZXNzYWdlID0gRkFMU0UsIGVycm9yID0gRkFMU0UpCmBgYAoKYGBge3IsIGVjaG8gPSBGQUxTRSwgd2FybmluZyA9IEZBTFNFLCBtZXNzYWdlID0gRkFMU0V9CmxpYnJhcnkoUlNRTGl0ZSkKbGlicmFyeShmaWVsZHMpCmxpYnJhcnkodmlyaWRpcykKbGlicmFyeShyZ2RhbCkKbGlicmFyeShkcGx5cikKbGlicmFyeShyZXNoYXBlMikKbGlicmFyeShnZ3Bsb3QyKQpsaWJyYXJ5KGNvd3Bsb3QpCmxpYnJhcnkoRGljZUtyaWdpbmcpCmxpYnJhcnkoZW10b29scykKbGlicmFyeShpbXB0b29scykKbGlicmFyeSh2aXp0b29scykKCmBgYAoKCgpgYGB7cn0KCiMjIyBIZWxwZXIgZnVuY3Rpb25zCm1ha2VUcmFuc3BhcmVudDwtZnVuY3Rpb24oc29tZUNvbG9yLCBhbHBoYT0xMDApCiAgIyBUcmFuc3BhcmVudCBjb2xvdXJzIGZvciBwbG90dGluZwp7CiAgbmV3Q29sb3I8LWNvbDJyZ2Ioc29tZUNvbG9yKQogIGFwcGx5KG5ld0NvbG9yLCAyLCBmdW5jdGlvbihjdXJjb2xkYXRhKXtyZ2IocmVkPWN1cmNvbGRhdGFbMV0sIGdyZWVuPWN1cmNvbGRhdGFbMl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibHVlPWN1cmNvbGRhdGFbM10sYWxwaGE9YWxwaGEsIG1heENvbG9yVmFsdWU9MjU1KX0pCn0KCgpgYGAKCgpgYGB7cn0KIyMjIyBMb2FkIGluIGRhdGFiYXNlICMjIyMKZmlsZW5hbWUgPC0gImRhdGEvc3VtbWFyaWVzX0RXLmRiIiAjIGxpa2VseSBqdXN0IGNhbGxlZCB3YXZlX3N1bW1hcmllc19EVy5kYiB3aGVuIGRvd25sb2FkZWQsIEkndmUgcmVuYW1lZApzcWxpdGUuZHJpdmVyIDwtIGRiRHJpdmVyKCJTUUxpdGUiKQpkYiA8LSBkYkNvbm5lY3Qoc3FsaXRlLmRyaXZlciwKICAgICAgICAgICAgICAgIGRibmFtZSA9IGZpbGVuYW1lKQpuZXdfd2F2ZTFfc2VlZHMgPC0gZGJSZWFkVGFibGUoZGIsImNvbXBhY3QiKQoKIyBJZiBpbnN0ZWFkIGhhdmUgd2FyZC1sZXZlbCBzdW1tYXJpZXMKI2ZpbGVuYW1lIDwtICJkYXRhL3N1bW1hcmllc19kZWZhdWx0LmRiIgojc3FsaXRlLmRyaXZlciA8LSBkYkRyaXZlcigiU1FMaXRlIikKI2RiIDwtIGRiQ29ubmVjdChzcWxpdGUuZHJpdmVyLAojICAgICAgICAgICAgICAgIGRibmFtZSA9IGZpbGVuYW1lKQojZGJMaXN0VGFibGVzKGRiKQoKYGBgCgpgYGB7ciwgZXZhbCA9IEZBTFNFfQojIyMjIENyZWF0ZSBhZ2dyZWdhdGVkIGRhdGEgIyMjIwpuZXd0YWJsZSA8LSBkYkdldFF1ZXJ5KGRiLCAiU0VMRUNUICogRlJPTSBjb21wYWN0IFdIRVJFIHdlZWsgPSAxMiBBTkQgYWdlID0gOCIpCgojIERvbid0IGNhcmUgYWJvdXQgdGhpcyBjb2x1bW4KbmV3X3dhdmUxX3NlZWRzJEhwcmV2X21uIDwtIE5VTEwKCiMgU3VtIGRlYXRocwpuZXdfd2F2ZTFfc2VlZHMkZGVhdGhzIDwtIG5ld193YXZlMV9zZWVkcyRjdW1IRCArIG5ld193YXZlMV9zZWVkcyRjdW1DRAoKIyMjIyBBZ2dyZWdhdGUgZm9yIGVhY2ggd2VlayAjIyMjCkV4dHJhY3RXZWVrIDwtIGZ1bmN0aW9uKGFsbF9kYXRhLCB3ZWVrcyA9IGMoMTI6NikpewogIGV4dHJhY3RlZF9kYXRhIDwtIE5VTEwKICBmb3IgKHcgaW4gMTpsZW5ndGgod2Vla3MpKXsKICAgICMgRmlyc3QgZXh0cmFjdCBhbGwgdGhvc2Ugd2l0aCByZXBsaWNhdGVzIChOQSBlbHNlKQogICAgdG1wX2RhdGEgPC0gc3Vic2V0KGFsbF9kYXRhLCB3ZWVrID09IHdlZWtzW3ddICYgIShpcy5uYShyZXBsaWNhdGUpKSkKICAgIHRtcF9kYXRhIDwtIGFnZ3JlZ2F0ZShjYmluZChjdW1ILGN1bUhELGN1bUNELGRlYXRocykgfiBvdXRwdXQgKyByZXBsaWNhdGUsIGRhdGEgPSB0bXBfZGF0YSwgRlVOID0gc3VtKSAjIGFnZ3JlZ2F0ZSBhY3Jvc3MgYWdlIGFuZCB0cnVzdAogICAgdG1wX2RhdGFfcmVwcyA8LSBhZ2dyZWdhdGUoY2JpbmQoY3VtSCxjdW1IRCxjdW1DRCxkZWF0aHMpIH4gb3V0cHV0LCBkYXRhID0gdG1wX2RhdGEsIEZVTiA9IG1lZGlhbikgIyB0YWtlIG1lZGlhbiBhY3Jvc3MgcmVwbGljYXRlcwoKICAgICMgUmVwZWF0IGZvciBzaW5nbGUgcnVucyAoTkFzKQogICAgdG1wX2RhdGEgPC0gc3Vic2V0KGFsbF9kYXRhLCB3ZWVrID09IHdlZWtzW3ddICYgKGlzLm5hKHJlcGxpY2F0ZSkpKQogICAgdG1wX2RhdGFfdW5pcXVlIDwtIGFnZ3JlZ2F0ZShjYmluZChjdW1ILGN1bUhELGN1bUNELGRlYXRocykgfiBvdXRwdXQsIGRhdGEgPSB0bXBfZGF0YSwgRlVOID0gc3VtKSAjIGFnZ3JlZ2F0ZSBhY3Jvc3MgdHJ1c3RzCgogICAgIyBDb21iaW5lCiAgICB0bXBfZGF0YSA8LSByYmluZCh0bXBfZGF0YV9yZXBzLCB0bXBfZGF0YV91bmlxdWUpCiAgICB0bXBfZGF0YSR3ZWVrIDwtIHdlZWtzW3ddCgogICAgZXh0cmFjdGVkX2RhdGEgPC0gcmJpbmQoZXh0cmFjdGVkX2RhdGEsIHRtcF9kYXRhKQogIH0KCiAgcmV0dXJuKGV4dHJhY3RlZF9kYXRhKQp9CgphbGxfd2Vla19zZWVkcyA8LSBFeHRyYWN0V2VlayhuZXdfd2F2ZTFfc2VlZHMsIHdlZWtzID0gYygxMjo2KSkKc2F2ZShhbGxfd2Vla19zZWVkcywgZmlsZSA9ICdkYXRhL2FsbF93ZWVrX3NlZWRzLlJEYXRhJykKCgojIyMjIEFnZ3JlZ2F0ZSBmaW5hbCB3ZWVrIGJ5IGFnZSAjIyMjCkV4dHJhY3RBZ2UgPC0gZnVuY3Rpb24oYWxsX2RhdGEpewogICMgRmlyc3QgZXh0cmFjdCBhbGwgdGhvc2Ugd2l0aCByZXBsaWNhdGVzIChOQSBlbHNlKQogIHRtcF9kYXRhIDwtIHN1YnNldChhbGxfZGF0YSwgd2VlayA9PSAxMiAmICEoaXMubmEocmVwbGljYXRlKSkpCiAgdG1wX2RhdGEgPC0gYWdncmVnYXRlKGNiaW5kKGN1bUgsY3VtSEQsY3VtQ0QsZGVhdGhzKSB+IG91dHB1dCArIGFnZSArIHJlcGxpY2F0ZSwgZGF0YSA9IHRtcF9kYXRhLCBGVU4gPSBzdW0pICMgYWdncmVnYXRlIGFjcm9zcyB0cnVzdAogIHRtcF9kYXRhX3JlcHMgPC0gYWdncmVnYXRlKGNiaW5kKGN1bUgsY3VtSEQsY3VtQ0QsZGVhdGhzKSB+IG91dHB1dCArIGFnZSwgZGF0YSA9IHRtcF9kYXRhLCBGVU4gPSBtZWRpYW4pICMgdGFrZSBtZWRpYW4gYWNyb3NzIHJlcGxpY2F0ZXMKICAjIFJlcGVhdCBmb3Igc2luZ2xlIHJ1bnMgKE5BcykKICB0bXBfZGF0YSA8LSBzdWJzZXQoYWxsX2RhdGEsIHdlZWsgPT0gMTIgJiAoaXMubmEocmVwbGljYXRlKSkpCiAgdG1wX2RhdGFfdW5pcXVlIDwtIGFnZ3JlZ2F0ZShjYmluZChjdW1ILGN1bUhELGN1bUNELGRlYXRocykgfiBvdXRwdXQgKyBhZ2UsIGRhdGEgPSB0bXBfZGF0YSwgRlVOID0gc3VtKSAjIGFnZ3JlZ2F0ZSBhY3Jvc3MgdHJ1c3RzCgogICMgQ29tYmluZQogIHRtcF9kYXRhIDwtIHJiaW5kKHRtcF9kYXRhX3JlcHMsIHRtcF9kYXRhX3VuaXF1ZSkKICByZXR1cm4odG1wX2RhdGEpCn0KCndlZWsxMmFnZV9zZWVkcyA8LSBFeHRyYWN0QWdlKG5ld193YXZlMV9zZWVkcykKc2F2ZSh3ZWVrMTJhZ2Vfc2VlZHMsIGZpbGUgPSAnZGF0YS93ZWVrMTJhZ2Vfc2VlZHMuUkRhdGEnKQpgYGAKCmBgYHtyfQojIyMgTG9hZCBBZ2dyZWdhdGVkIGRhdGEgIyMjIwoKbG9hZCgnZGF0YS9hbGxfd2Vla19zZWVkcy5SRGF0YScpICMgZGF0YWZyYW1lIG9mIHdlZWtseSBjdW11bGF0aXZlIHRvdGFscwpsb2FkKCdkYXRhL3dlZWsxMmFnZV9zZWVkcy5SRGF0YScpICMgZGF0YWZyYW1lIG9mIHdlZWsgMTIgdG90YWxzIGJ5IGFnZQphbGxfd2VlazEyIDwtIHN1YnNldChhbGxfd2Vla19zZWVkcywgd2VlayA9PSAxMikgIyB3ZWVrIDEyIGN1bXVsYXRpdmUgdG90YWxzIG9ubHkgCgojIyMjIExvYWQgaW4gZGVzaWduICMjIyMKTmV3RGVzaWduIDwtIHJlYWQuY3N2KCdkYXRhL2lucHV0cy5jc3YnKSAjIGFnYWluLCBtaWdodCBiZSBjYWxsZWQgc29tZXRoaW5nIGVsc2UKCiMgTWVyZ2UgZGVzaWduIGFuZCBtb2RlbCBvdXRwdXQKQ29tYmluZWREYXRhIDwtIGFsbF93ZWVrX3NlZWRzICU+JSBsZWZ0X2pvaW4oTmV3RGVzaWduLCBieSA9IGMoJ291dHB1dCcgPSAnb3V0cHV0JykpCgojIExvYWQgY3N2IGZpbGUgb2YgTEFEIGRlYXRocywgdHJ1c3QgYWRtaXNzaW9ucyAobm90IHB1YmxpYykKI29ic19kZWF0aHMgPC0gcmVhZC5jc3YoJ2RhdGEvZm9yVEotbGFkLWRlYXRocy1ieS1hZ2UtMjAyMS0wMy0yMi5jc3YnKSAjIGNvbnNpc3RlbnQsIGRlcGVuZGluZyBvbiAyOCBkYXkgdnMgY2VydGlmaWNhdGUgZGVmaW5pdGlvbgojdHJ1c3RfYWRtaXNzaW9ucyA8LSByZWFkLmNzdignZGF0YS9mb3JUSi10cnVzdC1hZG1pc3Npb25zLWJ5LWFnZS0yMDIxLTAzLTIyLmNzdicpCgojIERvd25sb2FkIHZhcmlvdXMgUEhFIGRhdGFzZXRzCnBoZV9kZWF0aHMgPC0gcmVhZC5jc3YoJ2h0dHBzOi8vYXBpLmNvcm9uYXZpcnVzLmRhdGEuZ292LnVrL3YyL2RhdGE/YXJlYVR5cGU9bmF0aW9uJm1ldHJpYz1jdW1EZWF0aHMyOERheXNCeURlYXRoRGF0ZSZtZXRyaWM9bmV3RGVhdGhzMjhEYXlzQnlEZWF0aERhdGUmZm9ybWF0PWNzdicpCnBoZV9kZWF0aHMgPC0gc3Vic2V0KHBoZV9kZWF0aHMsIGFyZWFOYW1lID09ICdFbmdsYW5kJykgIyBwcm9iYmx5IHdhbnQgV2FsZXMgYXMgd2VsbCByZWFsbHkKCnBoZV9kZWF0aHNfY2VydCA8LSByZWFkLmNzdignaHR0cHM6Ly9hcGkuY29yb25hdmlydXMuZGF0YS5nb3YudWsvdjIvZGF0YT9hcmVhVHlwZT1uYXRpb24mbWV0cmljPW5ld0RhaWx5TnNvRGVhdGhzQnlEZWF0aERhdGUmbWV0cmljPWN1bURhaWx5TnNvRGVhdGhzQnlEZWF0aERhdGUmZm9ybWF0PWNzdicpCnBoZV9kZWF0aHNfY2VydCA8LSBzdWJzZXQocGhlX2RlYXRoc19jZXJ0LCBhcmVhTmFtZSA9PSAnRW5nbGFuZCcpICMgYWdhaW4sIG5lZWQgV2FsZXMgYXMgd2VsbCB3aGVuIHRoaXMgaXNuJ3Qgc3VjaCBhIHNtYWxsIG51bWJlcgoKcGhlX2RhdGEgPC0gcmVhZC5jc3YoJ2h0dHBzOi8vYXBpLmNvcm9uYXZpcnVzLmRhdGEuZ292LnVrL3YyL2RhdGE/YXJlYVR5cGU9bmF0aW9uJm1ldHJpYz1uZXdBZG1pc3Npb25zJm1ldHJpYz1jdW1BZG1pc3Npb25zJmZvcm1hdD1jc3YnKQpwaGVfZGF0YSA8LSBzdWJzZXQocGhlX2RhdGEsIGFyZWFOYW1lID09ICdFbmdsYW5kJykKCnBoZV9hZG1pc3Npb25zIDwtIHJlYWQuY3N2KCdodHRwczovL2FwaS5jb3JvbmF2aXJ1cy5kYXRhLmdvdi51ay92Mi9kYXRhP2FyZWFUeXBlPW5hdGlvbiZhcmVhQ29kZT1FOTIwMDAwMDEmbWV0cmljPW5ld0FkbWlzc2lvbnMmZm9ybWF0PWNzdicpCgpgYGAKCmBgYHtyLCBmaWcud2lkdGggPSAxMiwgZmlnLmhlaWdodCA9IDEyfQpwYWlycyhOZXdEZXNpZ25bLDE6MTVdKQoKYGBgCgoKCmBgYHtyfQoKd2VlazEyIDwtIHN1YnNldChDb21iaW5lZERhdGEsIHdlZWsgPT0gMTIpCgoKYGBgCgoKCmBgYHtyLCBmaWcud2lkdGggPSAxMiwgZmlnLmhlaWdodCA9IDZ9CgpwYXIobWZyb3cgPSBjKDQsMTUpLCBtYXIgPSBjKDIsMSwyLDEpLCBvbWEgPSBjKDAuMSwzLCAzLDAuMSkpCgpmb3IoaiBpbiAyOjUpewpmb3IgKGkgaW4gMToxNSkgewogIAogIHBsb3QoTmV3RGVzaWduWyxpXSwgd2VlazEyWyxqXSwgeWxhYiA9ICcnLCB4bGFiID0gJycsIGF4ZXMgPSBGQUxTRSwgY29sID0gbWFrZVRyYW5zcGFyZW50KCdibGFjaycsIDEwMCksIAogICAgICAgYmcgPSBtYWtlVHJhbnNwYXJlbnQoJ2JsYWNrJywgMTAwKSwgcGNoID0gMjEpCiAgCiAgaWYoaj09Mil7CiAgICBtdGV4dCh0ZXh0ID0gY29sbmFtZXMoTmV3RGVzaWduKVtpXSwgc2lkZSA9IDMsIGxpbmUgPSAyKQogIH0KICAKICBpZihpPT0xKXsKICAgIG10ZXh0KHRleHQgPSBjb2xuYW1lcyh3ZWVrMTIpW2pdLCBzaWRlID0gMiwgbGluZSA9IDIpCiAgICAKICB9CiAgCn0KICAKICB9CgpgYGAKCgojIyBFbXVsYXRpbmcgY3VtdWxhdGl2ZSBkZWF0aHMgaW4gaG9zdHBpdGFsIChjdW1IRCkgaW4gdGhlIGNvbW11bml0eSAoY3VtQ0QpIGF0IHRoZSBiZWdpbm5pbmcgb2YgbG9ja2Rvd24KClRoZSBEaWNlS3JpZ2luZyBFbXVsYXRvciBmaXQgZm9yIGxvZyhkZWF0aHMpIGxvb2tzIGdvb2QuIExlYXZlLW9uZS1vdXQgaXNuJ3QgYSBncmVhdCBtZWFzdXJlLCBidXQgaXQncyBhIHN0YXJ0LgoKYGBge3IsIGZpZy53aWR0aCA9IDUsIGZpZy5oZWlnaHQgPSA4LCAgaW5jbHVkZSA9IEZBTFNFfQoKZml0X2N1bUhEIDwtIGttKH4uLCBkZXNpZ24gPSBOZXdEZXNpZ25bLCAxOjE1XSwgcmVzcG9uc2UgPSBsb2coMSsgd2VlazEyJGN1bUhEKSkKZml0X2N1bUNEIDwtIGttKH4uLCBkZXNpZ24gPSBOZXdEZXNpZ25bLCAxOjE1XSwgcmVzcG9uc2UgPSBsb2coMSsgd2VlazEyJGN1bUNEKSkKCmBgYAoKYGBge3J9Cmxvb19jdW1IRCA8LSBsZWF2ZU9uZU91dC5rbShmaXRfY3VtSEQsIHR5cGUgPSAnVUsnLCB0cmVuZC5yZWVzdGltID0gVFJVRSkKbG9vX2N1bUNEIDwtIGxlYXZlT25lT3V0LmttKGZpdF9jdW1DRCwgdHlwZSA9ICdVSycsIHRyZW5kLnJlZXN0aW0gPSBUUlVFKQoKYGBgCgojIyMgV2VlayAxMiBjdW11bGF0aXZlIEhvc3BpdGFsIGRlYXRocyBMZWF2ZS1vbmUtb3V0IHBsb3RzCmBgYHtyLCBmaWcud2lkdGggPSAxMiwgZmlnLmhlaWdodCA9IDZ9CgoKcGFyKG1mcm93ID0gYygxLDIpKQpwbG90KGxvZygxKyB3ZWVrMTIkY3VtSEQpLCBsb29fY3VtSEQkbWVhbiwgbWFpbiA9ICdMT08gbG9nKDErIEN1bXVsYXRpdmUgSG9zcGl0YWwgRGVhdGhzKScpCnNlZ21lbnRzKHgwID1sb2coMSsgd2VlazEyJGN1bUhEKSwgeTAgPSBsb29fY3VtSEQkbWVhbiAtICgyKiBsb29fY3VtSEQkc2QpLCAKICAgICAgICB4MSA9bG9nKDErIHdlZWsxMiRjdW1IRCksIHkxID0gbG9vX2N1bUhEJG1lYW4gKyAoMiogbG9vX2N1bUhEJHNkKQopCmFibGluZSgwLDEpCgoKeTAgPSBleHAobG9vX2N1bUhEJG1lYW4pIC0gKGV4cChsb29fY3VtSEQkbWVhbikgKiAoZXhwKGxvb19jdW1IRCRzZCkgLSAxKSkKeTEgPSBleHAobG9vX2N1bUhEJG1lYW4pICsgKGV4cChsb29fY3VtSEQkbWVhbikgKiAoZXhwKGxvb19jdW1IRCRzZCkgLSAxKSkKCnBsb3Qod2VlazEyJGN1bUhELCBleHAobG9vX2N1bUhEJG1lYW4pLCBtYWluID0gJ0xPTyBDdW11bGF0aXZlIEhvc3BpdGFsIERlYXRocycsIHlsaW0gPSByYW5nZSh5MCwgeTEpIAogICAgICkKc2VnbWVudHMoeDAgPSB3ZWVrMTIkY3VtSEQsIHkwID0geTAsCiAgICAgICAgIHgxID0gd2VlazEyJGN1bUhELCB5MSA9IHkxCikKCmFibGluZSgwLDEpCgoKYGBgCgoKIyMjIFdlZWsgMTIgY3VtdWxhdGl2ZSBjb21tdW5pdHkgZGVhdGhzIExlYXZlLW9uZS1vdXQgcGxvdHMKYGBge3IsIGZpZy53aWR0aCA9IDEyLCBmaWcuaGVpZ2h0ID0gNn0KCnBhcihtZnJvdyA9IGMoMSwyKSkKcGxvdChsb2coMSsgd2VlazEyJGN1bUNEKSwgbG9vX2N1bUNEJG1lYW4sIG1haW4gPSAnTE9PIGxvZygxKyBDdW11bGF0aXZlIGNvbW11bml0eSBEZWF0aHMpJykKc2VnbWVudHMoeDAgPWxvZygxKyB3ZWVrMTIkY3VtQ0QpLCB5MCA9IGxvb19jdW1DRCRtZWFuIC0gKDIqIGxvb19jdW1DRCRzZCksIAogICAgICAgIHgxID1sb2coMSsgd2VlazEyJGN1bUNEKSwgeTEgPSBsb29fY3VtQ0QkbWVhbiArICgyKiBsb29fY3VtQ0Qkc2QpCikKYWJsaW5lKDAsMSkKCgp5MCA9IGV4cChsb29fY3VtQ0QkbWVhbikgLSAoZXhwKGxvb19jdW1DRCRtZWFuKSAqIChleHAobG9vX2N1bUNEJHNkKSAtIDEpKQp5MSA9IGV4cChsb29fY3VtQ0QkbWVhbikgKyAoZXhwKGxvb19jdW1DRCRtZWFuKSAqIChleHAobG9vX2N1bUNEJHNkKSAtIDEpKQoKcGxvdCh3ZWVrMTIkY3VtQ0QsIGV4cChsb29fY3VtQ0QkbWVhbiksIG1haW4gPSAnTE9PIEN1bXVsYXRpdmUgY29tbXVuaXR5IERlYXRocycsIHlsaW0gPSByYW5nZSh5MCwgeTEpIAogICAgICkKc2VnbWVudHMoeDAgPSB3ZWVrMTIkY3VtQ0QsIHkwID0geTAsCiAgICAgICAgIHgxID0gd2VlazEyJGN1bUNELCB5MSA9IHkxCikKCmFibGluZSgwLDEpCgoKYGBgCgojIyBOb3JtYWxpc2UgaW5wdXQgc3BhY2UgYW5kIHJlLWZpdCB0byBwcm9kdWNlIHNvbWUgc2Vuc2l0aXZpdHkgYW5hbHlzZXMKCmBgYHtyLCBpbmNsdWRlID0gRkFMU0V9CgpYIDwtIE5ld0Rlc2lnblssIDE6MTVdClhfbm9ybSA8LSBub3JtYWxpemUoWCkKCmZpdF9jdW1IRF9ub3JtIDwtIGttKH4uLCBkZXNpZ24gPSBYX25vcm0sIHJlc3BvbnNlID0gbG9nKDErIHdlZWsxMiRjdW1IRCkpCmZpdF9jdW1DRF9ub3JtIDwtIGttKH4uLCBkZXNpZ24gPSBYX25vcm0sIHJlc3BvbnNlID0gbG9nKDErIHdlZWsxMiRjdW1DRCkpCgpYX29hYXQgPC0gb2FhdF9kZXNpZ24oWF9ub3JtLCBuPTIxLCBtZWQgPSBUUlVFKQpjb2xuYW1lcyhYX29hYXQpID0gY29sbmFtZXMoWCkKCmBgYAoKCiMjIyBvbmUtYXQtYS10aW1lIHNlbnNpdGl2aXR5IGZvciBjdW11bGF0aXZlIGhvc3BpdGFsIGRlYXRocyAKCgpgYGB7ciwgZmlnLndpZHRoID0gMTAsIGZpZy5oZWlnaHQgPSA4fQoKCgp5X29hYXQgPC0gcHJlZGljdC5rbShmaXRfY3VtSERfbm9ybSwgbmV3ZGF0YSA9IFhfb2FhdCwgdHlwZSA9ICdVSycpCgpvYWF0TGluZVBsb3QoWF9vYWF0ID0gWF9vYWF0LCB5X29hYXRfbWVhbiA9IHlfb2FhdCRtZWFuLCB5X29hYXRfc2QgPSB5X29hYXQkc2QsIAogICAgICAgICAgICAgbl9vYWF0ID0gMjEsbnIgPSAzLCBuYyA9IDUpIApgYGAKCgojIyMgb25lLWF0LWEtdGltZSBzZW5zaXRpdml0eSBmb3IgY3VtdWxhdGl2ZSBjb21tdW5pdHkgZGVhdGhzIAoKYGBge3IsIGZpZy53aWR0aCA9IDEwLCBmaWcuaGVpZ2h0ID0gOH0KCnlfb2FhdCA8LSBwcmVkaWN0LmttKGZpdF9jdW1DRF9ub3JtLCBuZXdkYXRhID0gWF9vYWF0LCB0eXBlID0gJ1VLJykKCm9hYXRMaW5lUGxvdChYX29hYXQgPSBYX29hYXQsIHlfb2FhdF9tZWFuID0geV9vYWF0JG1lYW4sIHlfb2FhdF9zZCA9IHlfb2FhdCRzZCwgCiAgICAgICAgICAgICBuX29hYXQgPSAyMSxuciA9IDMsIG5jID0gNSkgCmBgYAoKCgojIyBGQVNUOTkgc2Vuc2l0aXZpdHkgYW5hbHlzaXMgb2YgU2FsdGVsbGkgZXQgYWwgKDE5OTkpCmBgYHtyfQoKbGlicmFyeShzZW5zaXRpdml0eSkKIyBHZW5lcmF0ZSBhIGRlc2lnbiBmb3IgdGhlIEZBU1Q5OSBhbmFseXNpcwpYX2Zhc3QgPC0gZmFzdDk5KG1vZGVsID0gTlVMTCwgZmFjdG9ycyA9IGNvbG5hbWVzKFhfbm9ybSksIG4gPSAzMDAwLAogICAgICAgICAgICAgICAgIHEgPSAicXVuaWYiLCBxLmFyZyA9IGxpc3QobWluID0gMCwgbWF4ID0gMSkpCiMgUHJlZGljdCB0aGUgcmVzcG9uc2UgYXQgdGhlIEZBU1Q5OSBkZXNpZ24gcG9pbnRzIHVzaW5nIHRoZSBlbXVsYXRvcgoKCgpwcmVkX2Zhc3RfY3VtSEQgPSBwcmVkaWN0KGZpdF9jdW1IRF9ub3JtLCBuZXdkYXRhID0gWF9mYXN0JFgsIHR5cGUgPSAnVUsnKQpwcmVkX2Zhc3RfY3VtQ0QgPSBwcmVkaWN0KGZpdF9jdW1DRF9ub3JtLCBuZXdkYXRhID0gWF9mYXN0JFgsIHR5cGUgPSAnVUsnKQojIENhbGN1bGF0ZSB0aGUgc2Vuc2l0aXZpdHkgaW5kaWNlcwpmYXN0X3RlbGxfY3VtSEQgPC0gdGVsbChYX2Zhc3QsIHByZWRfZmFzdF9jdW1IRCRtZWFuKQpmYXN0X3RlbGxfY3VtQ0QgPC0gdGVsbChYX2Zhc3QsIHByZWRfZmFzdF9jdW1DRCRtZWFuKQoKCmJwQ29udmVydCA8LSBmdW5jdGlvbihmYXN0bW9kZWwpewogICMgZ2V0IHRoZSBGQVNUIHN1bW1hcnkgaW50byBhbiBlYXNpZXIgZm9ybWF0IGZvciBiYXJwbG90CiAgZmFzdF9zdW1tIDwtIHByaW50KGZhc3Rtb2RlbCkKICBmYXN0X2RpZmYgPC0gZmFzdF9zdW1tWyAsMl0gLSBmYXN0X3N1bW1bICwxXQogIGZhc3RfYnAgPC0gdChjYmluZChmYXN0X3N1bW1bICwxXSwgZmFzdF9kaWZmKSkKICBmYXN0X2JwCn0KCgoKYGBgCgpgYGB7cn0KCnBhcihsYXMgPSAyLCBtYXIgPSBjKDksNSwzLDIpKQpiYXJwbG90KGJwQ29udmVydChmYXN0X3RlbGxfY3VtSEQpLCBjb2wgPSBjKCdza3libHVlJywgJ2dyZXknKSwgeWxhYiA9ICdyZWxhdGl2ZSBzZW5zaXRpdml0eScsIG1haW4gPSAnY3VtSEQgRkFTVDk5IFNlbnNpdGl2aXR5JykKbGVnZW5kKCd0b3BsZWZ0JyxsZWdlbmQgPSBjKCdNYWluIGVmZmVjdCcsICdJbnRlcmFjdGlvbnMnKSwgZmlsbCA9IGMoJ3NreWJsdWUnLCAnZ3JleScpICkKCnBhcihsYXMgPSAyLCBtYXIgPSBjKDksNSwzLDIpKQpiYXJwbG90KGJwQ29udmVydChmYXN0X3RlbGxfY3VtQ0QpLCBjb2wgPSBjKCdza3libHVlJywgJ2dyZXknKSwgeWxhYiA9ICdyZWxhdGl2ZSBzZW5zaXRpdml0eScsIG1haW4gPSAnY3VtQ0QgRkFTVDk5IFNlbnNpdGl2aXR5JykKbGVnZW5kKCd0b3BsZWZ0JyxsZWdlbmQgPSBjKCdNYWluIGVmZmVjdCcsICdJbnRlcmFjdGlvbnMnKSwgZmlsbCA9IGMoJ3NreWJsdWUnLCAnZ3JleScpICkKCmBgYAoKCgoKVGhpcyBpcyBhbiBbUiBNYXJrZG93bl0oaHR0cDovL3JtYXJrZG93bi5yc3R1ZGlvLmNvbSkgTm90ZWJvb2suIFdoZW4geW91IGV4ZWN1dGUgY29kZSB3aXRoaW4gdGhlIG5vdGVib29rLCB0aGUgcmVzdWx0cyBhcHBlYXIgYmVuZWF0aCB0aGUgY29kZS4gCgpUcnkgZXhlY3V0aW5nIHRoaXMgY2h1bmsgYnkgY2xpY2tpbmcgdGhlICpSdW4qIGJ1dHRvbiB3aXRoaW4gdGhlIGNodW5rIG9yIGJ5IHBsYWNpbmcgeW91ciBjdXJzb3IgaW5zaWRlIGl0IGFuZCBwcmVzc2luZyAqQ3RybCtTaGlmdCtFbnRlciouIAoKYGBge3J9CnBsb3QoY2FycykKYGBgCgpBZGQgYSBuZXcgY2h1bmsgYnkgY2xpY2tpbmcgdGhlICpJbnNlcnQgQ2h1bmsqIGJ1dHRvbiBvbiB0aGUgdG9vbGJhciBvciBieSBwcmVzc2luZyAqQ3RybCtBbHQrSSouCgpXaGVuIHlvdSBzYXZlIHRoZSBub3RlYm9vaywgYW4gSFRNTCBmaWxlIGNvbnRhaW5pbmcgdGhlIGNvZGUgYW5kIG91dHB1dCB3aWxsIGJlIHNhdmVkIGFsb25nc2lkZSBpdCAoY2xpY2sgdGhlICpQcmV2aWV3KiBidXR0b24gb3IgcHJlc3MgKkN0cmwrU2hpZnQrSyogdG8gcHJldmlldyB0aGUgSFRNTCBmaWxlKS4KClRoZSBwcmV2aWV3IHNob3dzIHlvdSBhIHJlbmRlcmVkIEhUTUwgY29weSBvZiB0aGUgY29udGVudHMgb2YgdGhlIGVkaXRvci4gQ29uc2VxdWVudGx5LCB1bmxpa2UgKktuaXQqLCAqUHJldmlldyogZG9lcyBub3QgcnVuIGFueSBSIGNvZGUgY2h1bmtzLiBJbnN0ZWFkLCB0aGUgb3V0cHV0IG9mIHRoZSBjaHVuayB3aGVuIGl0IHdhcyBsYXN0IHJ1biBpbiB0aGUgZWRpdG9yIGlzIGRpc3BsYXllZC4K