### SYNC-TRANSFER 2/5 -- mit sync-entpacken.bat entpacken ### Base64 - NICHT von Hand bearbeiten. ### FILE: index.html | 129211 PCFET0NUWVBFIGh0bWw+CjwhLS0gU3RhbmQ6IDIwMjYtMDUtMTQgLS0+CjxodG1sIGxhbmc9ImRl Ij4KPGhlYWQ+CiAgICA8bWV0YSBjaGFyc2V0PSJVVEYtOCI+CiAgICA8bWV0YSBuYW1lPSJ2aWV3 cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEuMCI+CiAg ICA8dGl0bGU+VkkzIERHTC1QbGFudW5nPC90aXRsZT4KICAgIDxsaW5rIHJlbD0iaWNvbiIgdHlw ZT0iaW1hZ2UveC1pY29uIiBocmVmPSJmYXZpY29uLmljbyI+CiAgICA8bGluayByZWw9InN0eWxl c2hlZXQiIGhyZWY9InN0eWxlLmNzcyI+CiAgICA8IS0tIFNoZWV0SlMgKHhsc3guZnVsbC5taW4u anMpIHdpcmQgbnVyIGltIEFkbWluLVRhYiAiSW1wb3J0IiBnZWJyYXVjaHQuCiAgICAgICAgIExv a2FsIGVpbmdlYnVuZGVuLCBrZWluIENETi4gTGl6ZW56OiBBcGFjaGUtMi4wIChTaGVldEpTIENF KS4gLS0+CiAgICA8c2NyaXB0IHNyYz0ieGxzeC5mdWxsLm1pbi5qcyIgZGVmZXI+PC9zY3JpcHQ+ CjwvaGVhZD4KPGJvZHk+CgogICAgPCEtLSA9PT09PT09PT09IFBlcnNvbi1Ib3Zlci1Qb3BvdmVy IChnbG9iYWwsIG51ciBlaW4gQ29udGFpbmVyKSA9PT09PT09PT09IC0tPgogICAgPGRpdiBpZD0i dmkzLXBlcnNvbi1wb3BvdmVyIiBjbGFzcz0idmkzLXBlcnNvbi1wb3BvdmVyIHZlcnN0ZWNrdCIg cm9sZT0idG9vbHRpcCIgYXJpYS1oaWRkZW49InRydWUiPjwvZGl2PgogICAgPCEtLSBLb21tZW50 YXItUG9wb3ZlcjogemVpZ3QgZGVuIEluaGFsdCBlaW5lciBaZWxsLU5vdGl6IGJlaW0gSG92ZXIu CiAgICAgICAgIFNhdWJlcmVyIEVyc2F0eiBmdWVyIGRlbiBlaW56ZWlsaWdlbiBuYXRpdmUgdGl0 bGUtVG9vbHRpcCwgZGVyCiAgICAgICAgIFNjaGljaHQgdW5kIEtvbW1lbnRhciB6dXNhbW1lbmts YXRzY2h0ZS4gR2VzY2hsb3NzZW5lciBIZWFkZXIsCiAgICAgICAgIE1laHJ6ZWlsZXItQm9keSwg Rm9vdGVyIG1pdCBWZXJmYXNzZXIgKyBEYXR1bS4gLS0+CiAgICA8ZGl2IGlkPSJ2aTMta29tbWVu dGFyLXBvcG92ZXIiIGNsYXNzPSJ2aTMta29tbWVudGFyLXBvcG92ZXIgdmVyc3RlY2t0IiByb2xl PSJ0b29sdGlwIiBhcmlhLWhpZGRlbj0idHJ1ZSI+PC9kaXY+CgogICAgPCEtLSA9PT09PT09PT09 IEhpbndlaXMtQmFubmVyIChudXIgU1UgKyBHZXNhbXR2ZXJhbnR3b3J0bGljaCkgPT09PT09PT09 PSAtLT4KICAgIDxkaXYgaWQ9ImhpbndlaXMtYmFubmVyIiBjbGFzcz0iaGlud2Vpcy1iYW5uZXIg dmVyc3RlY2t0IiByb2xlPSJzdGF0dXMiIGFyaWEtbGl2ZT0icG9saXRlIj48L2Rpdj4KCiAgICA8 IS0tID09PT09PT09PT0gSGVhZGVyIG1pdCBOYXZpZ2F0aW9uID09PT09PT09PT0gLS0+CiAgICA8 aGVhZGVyIGlkPSJrb3BmbGVpc3RlIj4KICAgICAgICA8ZGl2IGNsYXNzPSJoZWFkZXItbGlua3Mi PgogICAgICAgICAgICA8aDE+PGltZyBzcmM9Imljb25zL1ZJM19QbGFudW5nX0xvZ28ucG5nIiBh bHQ9IiIgY2xhc3M9ImhlYWRlci1sb2dvIj48c3BhbiBkYXRhLWJlej0iYXBwLnRpdGVsIj5WSTMg REdMLVBsYW51bmc8L3NwYW4+IDxzcGFuIGlkPSJhbnplaWdlLWphaHIiIGNsYXNzPSJoZWFkZXIt amFociI+PC9zcGFuPjwvaDE+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPG5hdiBjbGFzcz0iaGVh ZGVyLW5hdiI+CiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9Im5hdi1idG4gYWt0aXYiIGRhdGEt YW5zaWNodD0icGxhbnVuZyIgZGF0YS1iZXo9Im5hdi5wbGFudW5nIj5QbGFudW5nPC9idXR0b24+ CiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9Im5hdi1idG4iIGRhdGEtYW5zaWNodD0id29jaGVu cGxhbiIgZGF0YS1iZXo9Im5hdi53b2NoZW5wbGFuIj5Xb2NoZW5wbGFuPC9idXR0b24+CiAgICAg ICAgICAgIDxidXR0b24gY2xhc3M9Im5hdi1idG4iIGRhdGEtYW5zaWNodD0icGVyc3BsYW4iIGRh dGEtYmV6PSJuYXYucGVyc3BsYW4iPlBlcnMuIFBsYW48L2J1dHRvbj4KICAgICAgICAgICAgPGJ1 dHRvbiBjbGFzcz0ibmF2LWJ0biIgZGF0YS1hbnNpY2h0PSJiZXNldHp1bmciIGlkPSJuYXYtYmVz ZXR6dW5nIiB0aXRsZT0iUHLDvGZ1bmcg4oCUIDQgV29jaGVuLVZvcnNjaGF1IiBkYXRhLWJlej0i bmF2LmJlc2V0enVuZyIgc3R5bGU9ImRpc3BsYXk6bm9uZSI+UHLDvGZ1bmc8L2J1dHRvbj4KICAg ICAgICAgICAgPGJ1dHRvbiBjbGFzcz0ibmF2LWJ0biIgZGF0YS1hbnNpY2h0PSJhZG1pbiIgICAg aWQ9Im5hdi1hZG1pbiIgc3R5bGU9ImRpc3BsYXk6bm9uZSI+QWRtaW5pc3RyYXRpb248L2J1dHRv bj4KICAgICAgICA8L25hdj4KICAgICAgICA8ZGl2IGNsYXNzPSJoZWFkZXItcmVjaHRzIj4KICAg ICAgICAgICAgPGJ1dHRvbiBpZD0iYnRuLWJ1Z3JlcG9ydCIgY2xhc3M9Imljb24tYnRuIGJ1Z3Jl cG9ydC1idG4iIHRpdGxlPSJCdWcgb2RlciBQcm9ibGVtIG1lbGRlbiI+QnVnUmVwb3J0PC9idXR0 b24+CiAgICAgICAgICAgIDxidXR0b24gaWQ9ImJ0bi1pbmZvIiBjbGFzcz0iaWNvbi1idG4iIHRp dGxlPSJJbmZvcm1hdGlvbmVuICZhbXA7IEhpbGZlIj5JbmZvPC9idXR0b24+CiAgICAgICAgICAg IDxzcGFuIGlkPSJiZW51dHplci13cmFwIiBjbGFzcz0iYmVudXR6ZXItd3JhcCI+CiAgICAgICAg ICAgICAgICA8c3BhbiBpZD0ibWVpbi1hdmF0YXItYnRuIiBjbGFzcz0ibWVpbi1hdmF0YXItYnRu IHZlcnN0ZWNrdCIgcm9sZT0iYnV0dG9uIiB0YWJpbmRleD0iMCIgdGl0bGU9Ik1laW4gUHJvZmls YmlsZCBiZWFyYmVpdGVuIiBhcmlhLWxhYmVsPSJNZWluIFByb2ZpbGJpbGQgYmVhcmJlaXRlbiI+ PC9zcGFuPgogICAgICAgICAgICAgICAgPHNwYW4gaWQ9ImJlbnV0emVyLWFuemVpZ2UiIGNsYXNz PSJiZW51dHplci1iYWRnZSI+PC9zcGFuPgogICAgICAgICAgICAgICAgPHNwYW4gaWQ9Imhpbndl aXMtYmFkZ2UiIGNsYXNzPSJoaW53ZWlzLWJhZGdlIHZlcnN0ZWNrdCIgcm9sZT0iYnV0dG9uIiB0 YWJpbmRleD0iMCIgYXJpYS1sYWJlbD0iT2ZmZW5lIEhpbndlaXNlIGFuemVpZ2VuIj48L3NwYW4+ CiAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgPGJ1dHRvbiBpZD0iYnRuLXRoZW1lIiBj bGFzcz0iaWNvbi1idG4iIHRpdGxlPSJUYWcvTmFjaHQgdW1zY2hhbHRlbiI+TmFjaHQ8L2J1dHRv bj4KICAgICAgICA8L2Rpdj4KICAgIDwvaGVhZGVyPgoKICAgIDwhLS0gPT09PT09PT09PSBBTlNJ Q0hUOiBQTEFOVU5HID09PT09PT09PT0gLS0+CiAgICA8ZGl2IGlkPSJhbnNpY2h0LXBsYW51bmci IGNsYXNzPSJhbnNpY2h0Ij4KICAgICAgICA8IS0tIFBsYW51bmdzZ3JpZCDigJQgRXhjZWwtdHJl dWVzIExheW91dCAtLT4KICAgICAgICA8ZGl2IGlkPSJwbGFudW5nLWNvbnRhaW5lciI+CiAgICAg ICAgICAgIDwhLS0gRml4aWVydGUgbGlua2UgU3BhbHRlIC0tPgogICAgICAgICAgICA8ZGl2IGlk PSJuYW1lbi1zcGFsdGUiPgogICAgICAgICAgICAgICAgPCEtLSBLb3BmYmVyZWljaCBsaW5rczog SGV1dGUtQmFubmVyIHVlYmVybGFnZXJ0IGRpZSBkcmVpIERhdHVtc3plaWxlbiAtLT4KICAgICAg ICAgICAgICAgIDxkaXYgaWQ9ImtvcGYtbGlua3MiPgogICAgICAgICAgICAgICAgICAgIDwhLS0g UGxhdHpoYWx0ZXItWmVpbGVuIGZ1ZXIgSG9laGVuLVN5bmMgbWl0IEtvcGYgcmVjaHRzLgogICAg ICAgICAgICAgICAgICAgICAgICAgSmVkZSBaZWlsZSBsaW5rcyBlbnRzcHJpY2h0IEVYQUtUIGVp bmVyIFplaWxlIHJlY2h0cwogICAgICAgICAgICAgICAgICAgICAgICAgKGdsZWljaGUgSG9laGUh KSwgc29uc3QgdmVyc2NoaWVidCBzaWNoIGRpZSBOYW1lbnNzcGFsdGUKICAgICAgICAgICAgICAg ICAgICAgICAgIGdlZ2VudWViZXIgZGVtIERhdGVuLUdyaWQuIC0tPgogICAgICAgICAgICAgICAg ICAgIDxkaXYgY2xhc3M9ImtvcGYtemVpbGUga3otZGF0dW0iPjwvZGl2PiAgICAgICAgIDwhLS0g PSAjZGF0dW0temVpbGUtdGFnICgyMHB4KSAtLT4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNs YXNzPSJrb3BmLXplaWxlIGt6LXdvY2hlbnRhZyI+PC9kaXY+ICAgICA8IS0tID0gI2RhdHVtLXpl aWxlLXdvY2hlbnRhZyAoMjBweCkgLS0+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0i a29wZi16ZWlsZSBrei1hbmxhc3MiPjwvZGl2PiAgICAgICAgPCEtLSA9ICNkYXR1bS16ZWlsZS1h bmxhc3MgKDM4cHgsIE1haSAyMDI2IG1pdCBFdmVudHMga29tYmluaWVydCkgLS0+CiAgICAgICAg ICAgICAgICAgICAgPCEtLSBPdmVybGF5OiBIZXV0ZS1MZWlzdGUgKEJ1dHRvbiArIERhdHVtICsg V29jaGVudGFnKSBkZWNrdAogICAgICAgICAgICAgICAgICAgICAgICAgZGllIG9iZXJlbiBQbGF0 emhhbHRlci1aZWlsZW4gYWIgKGt6LWRhdHVtK3dvY2hlbnRhZythbmxhc3MpLiAtLT4KICAgICAg ICAgICAgICAgICAgICA8ZGl2IGlkPSJrbC1oZXV0ZS1iYW5uZXIiPgogICAgICAgICAgICAgICAg ICAgICAgICA8YnV0dG9uIGlkPSJidG4taGV1dGUiIGNsYXNzPSJrbC1oZXV0ZS1idXR0b24iIHRp dGxlPSJIZXV0ZSDigJQgc3ByaW5ndCBpbiBkZXIgUGxhbnRhZmVsIHNvZm9ydCB6dW0gaGV1dGln ZW4gRGF0dW0gdW5kIHNjcm9sbHQgZGllIEFuc2ljaHQgZG9ydGhpbi4gUHJha3Rpc2NoLCB1bSBu YWNoIGRlbSBCbMOkdHRlcm4gaW4gYW5kZXJlIFdvY2hlbiBvZGVyIE1vbmF0ZSBzY2huZWxsIHp1 ciBha3R1ZWxsZW4gV29jaGUgenVyw7xja3p1a2VocmVuLiI+SGV1dGU8L2J1dHRvbj4KICAgICAg ICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBpZD0iYnRuLXNjaGljaHR0ZWFtIiBjbGFzcz0ia2wt aGV1dGUtYnV0dG9uIiB0aXRsZT0iVGVhbSDigJQgTWVpbiBTY2hpY2h0LVRlYW0gZsO8ciBkaWUg bsOkY2hzdGVuIDE0IFRhZ2U6IHplaWd0IGFsbGUgUGVyc29uZW4gYXVzIGRlaW5lciBTY2hpY2h0 LVJvdGF0aW9uIChiYXNpZXJlbmQgYXVmIGRlaW5lciBoZXV0aWdlbiBTY2hpY2h0IEZyw7xoL1Nw w6R0L05hY2h0KS4gUHJha3Rpc2NoIGbDvHIgU2NoaWNodHRhdXNjaC1BbmZyYWdlbiB1bmQgdW0g enUgc2VoZW4sIHdlciB3YW5uIG1pdCBkaXIgYXJiZWl0ZXQuIE51ciBzaWNodGJhciwgd2VubiBk ZWluZSBOVy1LZW5udW5nIGVpbmVyIFBsYW4tUGVyc29uIHp1Z2VvcmRuZXQgaXN0LiIgYXJpYS1s YWJlbD0iTWVpbiBTY2hpY2h0LVRlYW0g4oCUIDE0LVRhZ2Utw5xiZXJzaWNodCI+VGVhbTwvYnV0 dG9uPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJrbC1oZXV0ZS1pbmZvIj4K ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImtsLWhldXRlLWRhdHVtLXR4 dCIgaWQ9ImtsLWhldXRlLWRhdHVtIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAg IDxkaXYgY2xhc3M9ImtsLWhldXRlLXd0YWctdHh0IiBpZD0ia2wtaGV1dGUtd3RhZyI+PC9kaXY+ CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2 PgogICAgICAgICAgICAgICAgICAgIDwhLS0gWmVpbGUgNTogU3TDpHJrZSAtLT4KICAgICAgICAg ICAgICAgICAgICA8ZGl2IGNsYXNzPSJrb3BmLXplaWxlIGt6LXN0YWVya2UiPgogICAgICAgICAg ICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ia2wtbGFiZWwiPlN0w6Rya2U8L3NwYW4+CiAgICAg ICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJrbC13ZXJ0Ij5ER0wgaW4gVkkgMzwvc3Bh bj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8IS0tIFpl aWxlbiA1LTExOiBTY2hpY2h0Zm9sZ2UgcHJvIFN0YW5kb3J0IC0tPgogICAgICAgICAgICAgICAg ICAgIDxkaXYgaWQ9InNjaGljaHRmb2xnZS1saW5rcyI+CiAgICAgICAgICAgICAgICAgICAgICAg IDxkaXYgY2xhc3M9ImtvcGYtemVpbGUga3otc2NoaWNodGZvbGdlIGt6LXNmLWVyc3RlIj4KICAg ICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJrbC1sYWJlbCI+U2NoaWNodDwv c3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJrbC13ZXJ0IiBk YXRhLXN0YW5kb3J0PSIwIj48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2Pgog ICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAg ICAgICAgICA8IS0tIFBlcnNvbmVubGlzdGUgLS0+CiAgICAgICAgICAgICAgICA8ZGl2IGlkPSJu YW1lbi1saXN0ZSIgcm9sZT0icm93aGVhZGVyIiBhcmlhLWxhYmVsPSJQZXJzb25lbmxpc3RlIGRl ciBQbGFudGFmZWwiPjwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgIDwhLS0g U2Nyb2xsYmFyZXIgcmVjaHRlciBCZXJlaWNoLiByb2xlPWdyaWQgbWFjaHQgZGllIFN0cnVrdHVy IGZ1ZXIKICAgICAgICAgICAgICAgICBTY3JlZW5yZWFkZXIgZXhwbGl6aXQgKFNwcmludCA2YSAy MDI2LTA1LTI5KS4gVGFiLU5hdmlnYXRpb24KICAgICAgICAgICAgICAgICBkZXIgZWluemVsbmVu IFplbGxlbiBrb21tdCBpbiBTcHJpbnQgNmIgKEdyaWQtUmVmYWN0b3IpLiAtLT4KICAgICAgICAg ICAgPGRpdiBpZD0iZ3JpZC1zY3JvbGwtY29udGFpbmVyIiByb2xlPSJncmlkIiBhcmlhLWxhYmVs PSJEaWVuc3RwbGFuLVRhZmVsIj4KICAgICAgICAgICAgICAgIDwhLS0gS29wZmJlcmVpY2ggcmVj aHRzIC0tPgogICAgICAgICAgICAgICAgPGRpdiBpZD0ia29wZi1yZWNodHMiIHJvbGU9InJvd2dy b3VwIj4KICAgICAgICAgICAgICAgICAgICA8IS0tIFplaWxlIDE6IERhdHVtIC0tPgogICAgICAg ICAgICAgICAgICAgIDxkaXYgaWQ9ImRhdHVtLXplaWxlLXRhZyIgY2xhc3M9ImtvcGYtZGF0ZW4t emVpbGUiIHJvbGU9InJvdyIgYXJpYS1sYWJlbD0iVGFnZXNkYXR1bSI+PC9kaXY+CiAgICAgICAg ICAgICAgICAgICAgPCEtLSBaZWlsZSAyOiBXb2NoZW50YWcgLS0+CiAgICAgICAgICAgICAgICAg ICAgPGRpdiBpZD0iZGF0dW0temVpbGUtd29jaGVudGFnIiBjbGFzcz0ia29wZi1kYXRlbi16ZWls ZSIgcm9sZT0icm93IiBhcmlhLWxhYmVsPSJXb2NoZW50YWciPjwvZGl2PgogICAgICAgICAgICAg ICAgICAgIDwhLS0gWmVpbGUgMzogSWNvbnMgJiBBbmzDpHNzZSAoRmVpZXJ0YWcvU29uZGVydGVy bWluL0dlYnVydHN0YWcgaW4gZWluZXIKICAgICAgICAgICAgICAgICAgICAgICAgIGtvbXBha3Rl biBaZWlsZSwgZGF6dSBkaWUgRmVyaWVuLVJhbmdlLUJhciBhbHMgT3ZlcmxheSkgLS0+CiAgICAg ICAgICAgICAgICAgICAgPGRpdiBpZD0iZGF0dW0temVpbGUtYW5sYXNzIiBjbGFzcz0ia29wZi1k YXRlbi16ZWlsZSIgcm9sZT0icm93IiBhcmlhLWxhYmVsPSJBbmzDpHNzZSI+PC9kaXY+CiAgICAg ICAgICAgICAgICAgICAgPCEtLSBaZWlsZSA1OiBTdMOkcmtlIEZ8U3xOIC0tPgogICAgICAgICAg ICAgICAgICAgIDxkaXYgaWQ9InN0YWVya2UtemVpbGUiIGNsYXNzPSJrb3BmLWRhdGVuLXplaWxl IiByb2xlPSJyb3ciIGFyaWEtbGFiZWw9IlNjaGljaHRzdMOkcmtlIj48L2Rpdj4KICAgICAgICAg ICAgICAgICAgICA8IS0tIFplaWxlbiA1KzogU2NoaWNodGZvbGdlIHBybyBTdGFuZG9ydCAtLT4K ICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJzY2hpY2h0Zm9sZ2UtcmVjaHRzIiByb2xlPSJy b3dncm91cCIgYXJpYS1sYWJlbD0iU2NoaWNodGZvbGdlIHBybyBTdGFuZG9ydCI+PC9kaXY+CiAg ICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwhLS0gRGF0ZW4tR3JpZCAtLT4K ICAgICAgICAgICAgICAgIDxkaXYgaWQ9ImdyaWQtZGF0ZW4iIHJvbGU9InJvd2dyb3VwIiBhcmlh LWxhYmVsPSJTY2hpY2h0ZW4gZGVyIFBlcnNvbmVuIj48L2Rpdj4KICAgICAgICAgICAgPC9kaXY+ CiAgICAgICAgPC9kaXY+CgogICAgICAgIDwhLS0gWmVsbGVuLUVkaXRvciAtLT4KICAgICAgICA8 ZGl2IGlkPSJ6ZWxsLWVkaXRvciIgY2xhc3M9InZlcnN0ZWNrdCI+CiAgICAgICAgICAgIDxzZWxl Y3QgaWQ9ImVkaXRvci1hdXN3YWhsIiBzaXplPSIxMCI+PC9zZWxlY3Q+CiAgICAgICAgICAgIDxk aXYgY2xhc3M9ImVkaXRvci1rb21tZW50YXIiPgogICAgICAgICAgICAgICAgPCEtLSBWZXJsYXVm c2xpc3RlOiBnZXJlbmRlcnQgdm9uIGVkaXRvcktvbW1lbnRhclZlcmxhdWZSZW5kZXJuKCkuCiAg ICAgICAgICAgICAgICAgICAgIFBybyBFaW50cmFnOiBUZXh0LCBNZXRhLVplaWxlIChWZXJmYXNz ZXIgKyBaZWl0KSwgb3B0aW9uYWwKICAgICAgICAgICAgICAgICAgICAgTG9lc2NoLUljb24gZnVl ciBTdXBlclVzZXIvR2VzYW10dmVyYW50d29ydGxpY2hlLiAtLT4KICAgICAgICAgICAgICAgIDxk aXYgaWQ9ImVkaXRvci1rb21tZW50YXItdmVybGF1ZiIgY2xhc3M9ImVkaXRvci1rb21tZW50YXIt dmVybGF1ZiI+PC9kaXY+CiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgaWQ9ImVk aXRvci1rb21tZW50YXItaW5wdXQiIGNsYXNzPSJmb3JtLWlucHV0IiBwbGFjZWhvbGRlcj0iTmV1 ZXIgS29tbWVudGFyLi4uIiBzdHlsZT0id2lkdGg6MTAwJTtmb250LXNpemU6MTFweDtwYWRkaW5n OjRweCA2cHgiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZWRpdG9yLWtvbW1lbnRhci1i dG5zIj4KICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGlkPSJidG4ta29tbWVudGFyLWhpbnp1 IiBjbGFzcz0iYnRuIGJ0bi1wcmltYWVyIGJ0bi1rbGVpbiI+SGluenVmw7xnZW48L2J1dHRvbj4K ICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4K ICAgIDwvZGl2PgoKICAgIDwhLS0gPT09PT09PT09PSBBTlNJQ0hUOiBXT0NIRU5QTEFOID09PT09 PT09PT0gLS0+CiAgICA8ZGl2IGlkPSJhbnNpY2h0LXdvY2hlbnBsYW4iIGNsYXNzPSJhbnNpY2h0 IHZlcnN0ZWNrdCI+CiAgICAgICAgPGRpdiBjbGFzcz0id3AtbGF5b3V0Ij4KICAgICAgICAgICAg PCEtLSBUb29sYmFyIC0tPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJ3cC10b29sYmFyIj4KICAg ICAgICAgICAgICAgIDxidXR0b24gaWQ9IndwLXZvcndvY2hlIiBjbGFzcz0idG9vbGJhci1idG4i PiZsYXJyOyBWb3J3b2NoZTwvYnV0dG9uPgogICAgICAgICAgICAgICAgPGJ1dHRvbiBpZD0id3At YWt0dWVsbGUtd29jaGUiIGNsYXNzPSJ0b29sYmFyLWJ0biI+QWt0dWVsbGUgV29jaGU8L2J1dHRv bj4KICAgICAgICAgICAgICAgIDxidXR0b24gaWQ9IndwLW5hZWNoc3RlLXdvY2hlIiBjbGFzcz0i dG9vbGJhci1idG4iPk7DpGNoc3RlIFdvY2hlICZyYXJyOzwvYnV0dG9uPgogICAgICAgICAgICAg ICAgPGRpdiBjbGFzcz0idG9vbGJhci10cmVubmVyIj48L2Rpdj4KICAgICAgICAgICAgICAgIDxz cGFuIGlkPSJ3cC16ZWl0cmF1bSIgY2xhc3M9IndwLXplaXRyYXVtLWFuemVpZ2UiPjwvc3Bhbj4K ICAgICAgICAgICAgICAgIDxidXR0b24gaWQ9IndwLWRydWNrZW4iIGNsYXNzPSJ0b29sYmFyLWJ0 biIgc3R5bGU9Im1hcmdpbi1sZWZ0OmF1dG8iIHRpdGxlPSJXb2NoZW5wbGFuIGRydWNrZW4gKGVp bmUgU2VpdGUpIj5EcnVja2VuPC9idXR0b24+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAg ICA8IS0tIFdvY2hlbnBsYW4tUmVuZGVyLVppZWw6IHdvY2hlbnBsYW4uanMgZXJzZXR6dCBkZW4g SW5oYWx0IHZvbgogICAgICAgICAgICAgICAgIC53cC1zY3JvbGwgYmVpIGplZGVtIFJlbmRlciBk dXJjaCAud3Atc2VpdGUgKFRhZ2Jsb2NrLUxheW91dCkuCiAgICAgICAgICAgICAgICAgRnJ1ZWhl ciBzdGFuZCBoaWVyIGVpbmUgc3RhdGlzY2hlIDx0YWJsZT4sIGRpZSBzb2ZvcnQKICAgICAgICAg ICAgICAgICB1ZWJlcnNjaHJpZWJlbiB3dXJkZSDigJQgZW50ZmVybnQgKEF1ZGl0IDIwMjYtMDYt MTUpLiAtLT4KICAgICAgICAgICAgPGRpdiBjbGFzcz0id3Atc2Nyb2xsIj48L2Rpdj4KICAgICAg ICAgICAgPCEtLSBMZWdlbmRlIC0tPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJ3cC1sZWdlbmRl Ij4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ3cC1sZWctaXRlbSI+PHNwYW4gY2xhc3M9 IndwLWxlZy1kb3QiIHN0eWxlPSJiYWNrZ3JvdW5kOnZhcigtLWZhcmJlLWZydWVoKSI+PC9zcGFu PiBGcsO8aGRpZW5zdDwvc3Bhbj4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ3cC1sZWct aXRlbSI+PHNwYW4gY2xhc3M9IndwLWxlZy1kb3QiIHN0eWxlPSJiYWNrZ3JvdW5kOnZhcigtLWZh cmJlLXNwYWV0KSI+PC9zcGFuPiBTcMOkdGRpZW5zdDwvc3Bhbj4KICAgICAgICAgICAgICAgIDxz cGFuIGNsYXNzPSJ3cC1sZWctaXRlbSI+PHNwYW4gY2xhc3M9IndwLWxlZy1kb3QiIHN0eWxlPSJi YWNrZ3JvdW5kOnZhcigtLWZhcmJlLW5hY2h0KSI+PC9zcGFuPiBOYWNodGRpZW5zdDwvc3Bhbj4K ICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KCiAgICA8IS0tID09 PT09PT09PT0gQU5TSUNIVDogUEVSU8OWTkxJQ0hFUiBQTEFOID09PT09PT09PT0gLS0+CiAgICA8 ZGl2IGlkPSJhbnNpY2h0LXBlcnNwbGFuIiBjbGFzcz0iYW5zaWNodCB2ZXJzdGVja3QiPgogICAg ICAgIDxkaXYgY2xhc3M9InBwLWxheW91dCI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InBwLXRv b2xiYXIiPgogICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0icHAtcGVyc29uLWF1c3dhaGwiIHN0 eWxlPSJmb250LXdlaWdodDo2MDA7bWFyZ2luLXJpZ2h0OjZweCI+UGVyc29uOjwvbGFiZWw+CiAg ICAgICAgICAgICAgICA8c2VsZWN0IGlkPSJwcC1wZXJzb24tYXVzd2FobCIgY2xhc3M9ImZvcm0t aW5wdXQiIHN0eWxlPSJ3aWR0aDoyNTBweCI+PC9zZWxlY3Q+CiAgICAgICAgICAgICAgICA8ZGl2 IGNsYXNzPSJ0b29sYmFyLXRyZW5uZXIiPjwvZGl2PgogICAgICAgICAgICAgICAgPGJ1dHRvbiBp ZD0icHAtZHJ1Y2tlbiIgY2xhc3M9InRvb2xiYXItYnRuIj5EcnVja2VuPC9idXR0b24+CiAgICAg ICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcC1zY3JvbGwiIGlkPSJwcC1z Y3JvbGwiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHAtdGl0ZWwiIGlkPSJwcC10aXRl bCI+PC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcC1tb25hdGUiIGlkPSJwcC1t b25hdGUiPjwvZGl2PgogICAgICAgICAgICAgICAgPCEtLSBadXNhbW1lbmZhc3N1bmcgLS0+CiAg ICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcC1zdW1tYXJ5IiBpZD0icHAtc3VtbWFyeSI+PC9k aXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CgogICAgPCEt LSA9PT09PT09PT09IEFOU0lDSFQ6IEJFU0VUWlVOR1NLT05UUk9MTEUgPT09PT09PT09PSAtLT4K ICAgIDxkaXYgaWQ9ImFuc2ljaHQtYmVzZXR6dW5nIiBjbGFzcz0iYW5zaWNodCB2ZXJzdGVja3Qi PgogICAgICAgIDxkaXYgY2xhc3M9ImJrLWxheW91dCI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9 ImJrLWtvcGYiPgogICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICA8aDIg c3R5bGU9Im1hcmdpbjowIiBkYXRhLWJlej0ibmF2LmJlc2V0enVuZyI+UHLDvGZ1bmc8L2gyPgog ICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9ImZvbnQtc2l6ZToxM3B4O2NvbG9yOnZhcigt LXRleHQtbXV0ZWQpO21hcmdpbi10b3A6NHB4IiBpZD0iYmstdW50ZXJ0aXRlbCI+NC1Xb2NoZW4t Vm9yc2NoYXUgYWIgaGV1dGUg4oCUIEFtcGVsOiDiiaQxIEZrID0gcm90LCA9MiBGayA9IGdlbGIs IOKJpTMgRmsgPSBncsO8biBwcm8gU2NoaWNodDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+ CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJiay1rb3BmLXN0YXRzIj4KICAgICAgICAgICAg ICAgICAgICA8ZGl2IGNsYXNzPSJiay1rcGkiIGlkPSJiay1rcGktZ2VzYW10Ij48ZGl2IGNsYXNz PSJiay1rcGktemFobCI+4oCTPC9kaXY+PGRpdiBjbGFzcz0iYmsta3BpLWxhYmVsIj5UYWdlIGlt IEZlbnN0ZXI8L2Rpdj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJiay1r cGkgYmsta3BpLXdhcm4iIGlkPSJiay1rcGktZGVmaXppdCI+PGRpdiBjbGFzcz0iYmsta3BpLXph aGwiPuKAkzwvZGl2PjxkaXYgY2xhc3M9ImJrLWtwaS1sYWJlbCI+cm90ICjiiaQxKTwvZGl2Pjwv ZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJrLWtwaSBiay1rcGktb2siIGlk PSJiay1rcGktb2siPjxkaXYgY2xhc3M9ImJrLWtwaS16YWhsIj7igJM8L2Rpdj48ZGl2IGNsYXNz PSJiay1rcGktbGFiZWwiPmdyw7xuICjiiaUzKTwvZGl2PjwvZGl2PgogICAgICAgICAgICAgICAg PC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGlkPSJiay1iZWdydWVz c3VuZyI+PC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJrLWluaGFsdCIgaWQ9ImJrLWlu aGFsdCI+CiAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPSJwYWRkaW5nOjQwcHg7dGV4dC1hbGln bjpjZW50ZXI7Y29sb3I6dmFyKC0tdGV4dC1tdXRlZCkiPldpcmQgZ2VsYWRlbiDigKY8L2Rpdj4K ICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KCiAgICA8IS0tID09 PT09PT09PT0gQU5TSUNIVDogQURNSU5JU1RSQVRJT04gPT09PT09PT09PSAtLT4KICAgIDxkaXYg aWQ9ImFuc2ljaHQtYWRtaW4iIGNsYXNzPSJhbnNpY2h0IHZlcnN0ZWNrdCI+CiAgICAgICAgPGRp diBjbGFzcz0iYWRtaW4tbGF5b3V0Ij4KICAgICAgICAgICAgPCEtLSBBZG1pbi1TaWRlYmFyOiBD bHVzdGVyIG1pdCBVZWJlcnNjaHJpZnRlbiAodHlwb2dyYWZpc2NoIGdydXBwaWVydCwgb2huZSBJ Y29ucykuCiAgICAgICAgICAgICAgICAgR3J1cHBlbiBmb2xnZW4gbWVudGFsZW4gS2F0ZWdvcmll bjogIldlciBhcmJlaXRldCBoaWVyPyIgKFBlcnNvbmVuKQogICAgICAgICAgICAgICAgIC0+ICJX aWUgaXN0IGVzIG9yZ2FuaXNpZXJ0PyIgKE9yZ2FuaXNhdGlvbikgLT4gSW5oYWx0ZSAoU2NoaWNo dGVuLAogICAgICAgICAgICAgICAgIEthbGVuZGVyKSAtPiBLb21tdW5pa2F0aW9uIC0+IFNpY2hl cmhlaXQgKFJlY2h0ZSkgLT4gRGFyc3RlbGx1bmcgLT4gU3lzdGVtLgogICAgICAgICAgICAgICAg IGRhdGEtYWRtaW4tdGFiLVdlcnRlIHVuZCBUYWItSURzIGJsZWliZW4gdW52ZXJhZW5kZXJ0IOKA lCBudXIgR3J1cHBpZXJ1bmcKICAgICAgICAgICAgICAgICB1bmQgUmVpaGVuZm9sZ2Ugd3VyZGVu IGltIFBoYXNlLTMtUmVkZXNpZ24gbmV1IHNvcnRpZXJ0LiAtLT4KICAgICAgICAgICAgPGFzaWRl IGNsYXNzPSJhZG1pbi1zaWRlYmFyIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFkbWlu LW5hdi1ncnVwcGUiPgogICAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0iYWRtaW4tbmF2LXRp dGVsIj5QZXJzb25lbjwvaDM+CiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYWRt aW4tbmF2LWJ0biBha3RpdiIgZGF0YS1hZG1pbi10YWI9InBlcnNvbmFsIj5QZXJzb25hbHZlcndh bHR1bmc8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJhZG1pbi1u YXYtYnRuIiBkYXRhLWFkbWluLXRhYj0ibGlzdGVuIiBpZD0ibmF2LWxpc3RlbiI+RGllbnN0Z3Jh ZGUgJmFtcDsgRnVua3Rpb25lbjwvYnV0dG9uPgogICAgICAgICAgICAgICAgPC9kaXY+CgogICAg ICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWRtaW4tbmF2LWdydXBwZSI+CiAgICAgICAgICAgICAg ICAgICAgPGgzIGNsYXNzPSJhZG1pbi1uYXYtdGl0ZWwiPk9yZ2FuaXNhdGlvbjwvaDM+CiAgICAg ICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYWRtaW4tbmF2LWJ0biIgZGF0YS1hZG1pbi10 YWI9ImdydXBwZW4iPkRpZW5zdGdydXBwZW48L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICA8 YnV0dG9uIGNsYXNzPSJhZG1pbi1uYXYtYnRuIiBkYXRhLWFkbWluLXRhYj0ic3RhbmRvcnRlIj5T dGFuZG9ydGUgJmFtcDsgU2NoaWNodGZvbGdlPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAg PGJ1dHRvbiBjbGFzcz0iYWRtaW4tbmF2LWJ0biIgZGF0YS1hZG1pbi10YWI9Im1pa3JvdGVhbXMi Pk1pa3JvdGVhbXM8L2J1dHRvbj4KICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAg ICAgIDxkaXYgY2xhc3M9ImFkbWluLW5hdi1ncnVwcGUiPgogICAgICAgICAgICAgICAgICAgIDxo MyBjbGFzcz0iYWRtaW4tbmF2LXRpdGVsIj5TY2hpY2h0LUthdGFsb2c8L2gzPgogICAgICAgICAg ICAgICAgICAgIDxidXR0b24gY2xhc3M9ImFkbWluLW5hdi1idG4iIGRhdGEtYWRtaW4tdGFiPSJz Y2hpY2h0Y29kZXMiPlNjaGljaHRjb2RlcyAmYW1wOyBGYXJiZW48L2J1dHRvbj4KICAgICAgICAg ICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFkbWluLW5hdi1ncnVw cGUiPgogICAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0iYWRtaW4tbmF2LXRpdGVsIj5LYWxl bmRlcjwvaDM+CiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYWRtaW4tbmF2LWJ0 biIgZGF0YS1hZG1pbi10YWI9ImZlaWVydGFnZSI+RmVpZXJ0YWdlICZhbXA7IEZlcmllbjwvYnV0 dG9uPgogICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImFkbWluLW5hdi1idG4iIGRh dGEtYWRtaW4tdGFiPSJzb25kZXJ0ZXJtaW5lIj5Tb25kZXJ0ZXJtaW5lPC9idXR0b24+CiAgICAg ICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhZG1pbi1uYXYt Z3J1cHBlIj4KICAgICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9ImFkbWluLW5hdi10aXRlbCI+ S29tbXVuaWthdGlvbjwvaDM+CiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYWRt aW4tbmF2LWJ0biIgZGF0YS1hZG1pbi10YWI9ImVtYWlsdm9ybGFnZW4iIGlkPSJuYXYtZW1haWx2 b3JsYWdlbiI+RS1NYWlsLVZvcmxhZ2VuPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgPGJ1 dHRvbiBjbGFzcz0iYWRtaW4tbmF2LWJ0biIgZGF0YS1hZG1pbi10YWI9Im1pdHRlaWx1bmdlbiIg aWQ9Im5hdi1taXR0ZWlsdW5nZW4iPk1pdHRlaWx1bmdlbjwvYnV0dG9uPgogICAgICAgICAgICAg ICAgICAgIDxidXR0b24gY2xhc3M9ImFkbWluLW5hdi1idG4iIGRhdGEtYWRtaW4tdGFiPSJiZXpl aWNobnVuZ2VuIiBpZD0ibmF2LWJlemVpY2hudW5nZW4iPkJlc2NocmlmdHVuZ2VuICZhbXA7IEhp bGZldGV4dGU8L2J1dHRvbj4KICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAg IDxkaXYgY2xhc3M9ImFkbWluLW5hdi1ncnVwcGUiPgogICAgICAgICAgICAgICAgICAgIDxoMyBj bGFzcz0iYWRtaW4tbmF2LXRpdGVsIj5SZWNodGUgJmFtcDsgUm9sbGVuPC9oMz4KICAgICAgICAg ICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJhZG1pbi1uYXYtYnRuIiBkYXRhLWFkbWluLXRhYj0i c3VwZXJ1c2VyIiBpZD0ibmF2LXN1cGVydXNlciI+UmVjaHRlICZhbXA7IFNpY2h0YmFya2VpdDwv YnV0dG9uPgogICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImFkbWluLW5hdi1idG4i IGRhdGEtYWRtaW4tdGFiPSJzdGFuZGFyZHJlY2h0ZSIgaWQ9Im5hdi1zdGFuZGFyZHJlY2h0ZSI+ U3RhbmRhcmRyZWNodGUgKFVzZXIpPC9idXR0b24+CiAgICAgICAgICAgICAgICA8L2Rpdj4KCiAg ICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhZG1pbi1uYXYtZ3J1cHBlIj4KICAgICAgICAgICAg ICAgICAgICA8aDMgY2xhc3M9ImFkbWluLW5hdi10aXRlbCI+RGFyc3RlbGx1bmc8L2gzPgogICAg ICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImFkbWluLW5hdi1idG4iIGRhdGEtYWRtaW4t dGFiPSJlcnNjaGVpbnVuZ3NiaWxkIiBpZD0ibmF2LWVyc2NoZWludW5nc2JpbGQiPkVyc2NoZWlu dW5nc2JpbGQ8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJhZG1p bi1uYXYtYnRuIiBkYXRhLWFkbWluLXRhYj0ic3RhdGlzdGlrLWxheW91dCIgaWQ9Im5hdi1zdGF0 aXN0aWstbGF5b3V0Ij5TdGF0aXN0aWstTGF5b3V0PC9idXR0b24+CiAgICAgICAgICAgICAgICAg ICAgPGJ1dHRvbiBjbGFzcz0iYWRtaW4tbmF2LWJ0biIgZGF0YS1hZG1pbi10YWI9InN0YXRpc3Rp ay1idWlsZGVyIiBpZD0ibmF2LXN0YXRpc3Rpay1idWlsZGVyIj5TdGF0aXN0aWstQnVpbGRlcjwv YnV0dG9uPgogICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgPGRpdiBjbGFz cz0iYWRtaW4tbmF2LWdydXBwZSI+CiAgICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJhZG1p bi1uYXYtdGl0ZWwiPlN5c3RlbTwvaDM+CiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFz cz0iYWRtaW4tbmF2LWJ0biIgZGF0YS1hZG1pbi10YWI9ImVpbnN0ZWxsdW5nZW4iPktvbmZpZ3Vy YXRpb24gJmFtcDsgRnVua3Rpb25lbjwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgIDxidXR0 b24gY2xhc3M9ImFkbWluLW5hdi1idG4iIGRhdGEtYWRtaW4tdGFiPSJiYWNrdXBzIj5CYWNrdXBz PC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYWRtaW4tbmF2LWJ0 biIgZGF0YS1hZG1pbi10YWI9ImhpbndlaXNlLXByb3Rva29sbCIgaWQ9Im5hdi1oaW53ZWlzZS1w cm90b2tvbGwiPkhpbndlaXNlLVByb3Rva29sbDwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAg IDxidXR0b24gY2xhc3M9ImFkbWluLW5hdi1idG4iIGRhdGEtYWRtaW4tdGFiPSJpbXBvcnQiIGlk PSJuYXYtaW1wb3J0Ij5FeGNlbC1JbXBvcnQ8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICA8 YnV0dG9uIGNsYXNzPSJhZG1pbi1uYXYtYnRuIiBkYXRhLWFkbWluLXRhYj0iZXhwb3J0IiBpZD0i bmF2LWV4cG9ydCI+RXhjZWwtRXhwb3J0PC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgPGJ1 dHRvbiBjbGFzcz0iYWRtaW4tbmF2LWJ0biIgZGF0YS1hZG1pbi10YWI9InRlc3RkYXRlbiI+VGVz dGRhdGVuPC9idXR0b24+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9hc2lk ZT4KCiAgICAgICAgICAgIDwhLS0gQWRtaW4tSW5oYWx0IC0tPgogICAgICAgICAgICA8bWFpbiBj bGFzcz0iYWRtaW4taW5oYWx0Ij4KCiAgICAgICAgICAgICAgICA8IS0tIFJlYWQtb25seS1CYW5u ZXI6IGVyc2NoZWludCwgd2VubiBkZXIgZWluZ2Vsb2dndGUgQmVudXR6ZXIKICAgICAgICAgICAg ICAgICAgICAgZGVuIEFkbWluLUJlcmVpY2ggbnVyIGxlc2VuZCBzZWhlbiBkYXJmIChhbGxlIFJv bGxlbgogICAgICAgICAgICAgICAgICAgICBhdXNzZXIgU3VwZXJVc2VyKS4gV2lyZCB2b24gYWRt aW5CYW5uZXJBa3R1YWxpc2llcmVuKCkKICAgICAgICAgICAgICAgICAgICAgaW4gYWRtaW4uanMg ZWluLS9hdXNnZWJsZW5kZXQgdW5kIG1pdCBSb2xsZSBiZWZ1ZWxsdC4gLS0+CiAgICAgICAgICAg ICAgICA8ZGl2IGlkPSJhZG1pbi1yZWFkb25seS1iYW5uZXIiIGNsYXNzPSJhZG1pbi1iYW5uZXIg YWRtaW4tYmFubmVyLWluZm8gdmVyc3RlY2t0IiByb2xlPSJzdGF0dXMiIGFyaWEtbGl2ZT0icG9s aXRlIj4KICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iYWRtaW4tYmFubmVyLWljb24i IGFyaWEtaGlkZGVuPSJ0cnVlIj4mIzk0MzI7PC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDxk aXYgY2xhc3M9ImFkbWluLWJhbm5lci10ZXh0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGRp diBjbGFzcz0iYWRtaW4tYmFubmVyLXRpdGVsIj5OdXItTGVzZS1Nb2R1czwvZGl2PgogICAgICAg ICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhZG1pbi1iYW5uZXItYm9keSIgaWQ9ImFkbWlu LXJlYWRvbmx5LWJhbm5lci10ZXh0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIER1IHNp ZWhzdCBkaWVzZW4gQmVyZWljaCBudXIgbGVzZW5kLiAmQXVtbDtuZGVydW5nZW4gc2luZCBkZW0g U3VwZXJVc2VyIHZvcmJlaGFsdGVuLgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAg ICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAg ICAgICAgIDwhLS0gRHJhZnQtUmVzdG9yZS1CYW5uZXI6IGVyc2NoZWludCwgd2VubiBiZWltIFRh Yi1XZWNoc2VsIGVpbgogICAgICAgICAgICAgICAgICAgICB1bmdlc2ljaGVydGVyIEF1dG8tU2F2 ZS1EcmFmdCBpbSBsb2NhbFN0b3JhZ2UgZ2VmdW5kZW4gd3VyZGUKICAgICAgICAgICAgICAgICAg ICAgKEJyb3dzZXItQ3Jhc2gsIEY1LVJlbG9hZCwgdmVyc2VoZW50bGljaGVzIFNjaGxpZXNzZW4p LgogICAgICAgICAgICAgICAgICAgICBhZG1pbkRyYWZ0QmFubmVyQW5iaWV0ZW4oKSBpbiBhZG1p bi5qcyBiZXN0dWVja3QgVGV4dCArIEJ1dHRvbnMuIC0tPgogICAgICAgICAgICAgICAgPGRpdiBp ZD0iYWRtaW4tZHJhZnQtYmFubmVyIiBjbGFzcz0iYWRtaW4tYmFubmVyIGFkbWluLWJhbm5lci13 YXJuIHZlcnN0ZWNrdCIgcm9sZT0ic3RhdHVzIiBhcmlhLWxpdmU9InBvbGl0ZSI+CiAgICAgICAg ICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImFkbWluLWJhbm5lci1pY29uIiBhcmlhLWhpZGRlbj0i dHJ1ZSI+JiM5MjAxOzwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhZG1p bi1iYW5uZXItdGV4dCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFkbWlu LWJhbm5lci10aXRlbCI+VW5nZXNpY2hlcnRlICZBdW1sO25kZXJ1bmdlbiB3aWVkZXJoZXJzdGVs bGVuPzwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhZG1pbi1iYW5u ZXItYm9keSIgaWQ9ImFkbWluLWRyYWZ0LWJhbm5lci10ZXh0Ij4KICAgICAgICAgICAgICAgICAg ICAgICAgICAgIER1IGhhc3QgaW4gZGllc2VtIFRhYiAmQXVtbDtuZGVydW5nZW4sIGRpZSBub2No IG5pY2h0IGdlc3BlaWNoZXJ0IHNpbmQuCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2Pgog ICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPSJtYXJnaW4tdG9wOjhweDtkaXNwbGF5 OmZsZXg7Z2FwOjhweCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9 ImJ1dHRvbiIgaWQ9ImFkbWluLWRyYWZ0LXJlc3RvcmUiIGNsYXNzPSJidG4gYnRuLXByaW1hZXIg YnRuLWtsZWluIj5XaWVkZXJoZXJzdGVsbGVuPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAg ICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgaWQ9ImFkbWluLWRyYWZ0LXZlcndlcmZlbiIg Y2xhc3M9ImJ0biBidG4tc2VrIGJ0bi1rbGVpbiI+VmVyd2VyZmVuPC9idXR0b24+CiAgICAgICAg ICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAg ICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgPCEtLSBUYWI6IFBlcnNvbmFsIC0tPgog ICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWRtaW4tdGFiIiBpZD0iYWRtaW4tdGFiLXBlcnNv bmFsIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhZG1pbi1rb3BmIj4KICAgICAg ICAgICAgICAgICAgICAgICAgPGgyPlBlcnNvbmFsdmVyd2FsdHVuZzwvaDI+CiAgICAgICAgICAg ICAgICAgICAgICAgIDxkaXYgc3R5bGU9ImRpc3BsYXk6ZmxleDtnYXA6MTJweDthbGlnbi1pdGVt czpjZW50ZXI7ZmxleC13cmFwOndyYXAiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxh YmVsIHN0eWxlPSJkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDo2cHg7Zm9udC1z aXplOjEzcHg7Y3Vyc29yOnBvaW50ZXIiIHRpdGxlPSJVbWdlc2V0enRlIGluIGRpZXNlciBUYWJl bGxlIGFuemVpZ2VuIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlw ZT0iY2hlY2tib3giIGlkPSJhZG1pbi1wZXJzb25hbC1maWx0ZXIiPiBVbWdlc2V0enRlIGVpbmJs ZW5kZW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+CiAgICAgICAgICAgICAg ICAgICAgICAgICAgICA8bGFiZWwgc3R5bGU9ImRpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50 ZXI7Z2FwOjZweDtmb250LXNpemU6MTNweDtjdXJzb3I6cG9pbnRlciIgdGl0bGU9IlVtZ2VzZXR6 dGUgYXVjaCBpbiBkZXIgUGxhbnVuZ3MtQW5zaWNodCBlaW5ibGVuZGVuIChuaWNodCBlZGl0aWVy YmFyLCBudXIgenVyIFJlY2hlcmNoZSkiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IDxpbnB1dCB0eXBlPSJjaGVja2JveCIgaWQ9ImNoay11bWdlc2V0enRlLWVpbmJsZW5kZW4iPiBJ biBQbGFudW5ncy1BbnNpY2h0IGVpbmJsZW5kZW4KICAgICAgICAgICAgICAgICAgICAgICAgICAg IDwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgaWQ9InBhcGllcmtv cmItZmlsdGVyLXplaWxlIiBjbGFzcz0idmVyc3RlY2t0IiBzdHlsZT0iZGlzcGxheTpmbGV4O2Fs aWduLWl0ZW1zOmNlbnRlcjtnYXA6NnB4O2ZvbnQtc2l6ZToxM3B4O2N1cnNvcjpwb2ludGVyIiB0 aXRsZT0iU29mdC1nZWzDtnNjaHRlIFBlcnNvbmVuIGltIFBhcGllcmtvcmIgYW56ZWlnZW4gKG51 ciBiZWkgYWt0aXZlbSBGZWF0dXJlKSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg PGlucHV0IHR5cGU9ImNoZWNrYm94IiBpZD0iYWRtaW4tcGFwaWVya29yYi1maWx0ZXIiPiBQYXBp ZXJrb3JiIGVpbmJsZW5kZW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+CiAg ICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGlkPSJidG4tbWFudWVsbGUtc29ydGll cnVuZyIgY2xhc3M9ImJ0biBidG4tc2VrIiB0aXRsZT0iRsO8aHJ1bmdza3LDpGZ0ZSAoQeKAk0Mg dW5kIFdEKSBwZXIgRHJhZyAmYW1wOyBEcm9wIGluIG5ldWUgUmVpaGVuZm9sZ2UgYnJpbmdlbiI+ TWFudWVsbGUgU29ydGllcnVuZzwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAg PGJ1dHRvbiBpZD0iYnRuLXBlcnNvbi1uZXUiIGNsYXNzPSJidG4gYnRuLWVyZm9sZyI+TmV1ZSBQ ZXJzb248L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAg ICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPCEtLSBOZXVpbXBvcnQtQmxvY2s6 IGVyc2NoZWludCwgd2VubiBQZXJzb25lbiBtaXQgaW1wb3J0TmV1QW0tTWFya2VyCiAgICAgICAg ICAgICAgICAgICAgICAgICB2b3JoYW5kZW4gc2luZCAoRXhjZWwtSW1wb3J0ICJuZXUgYW5sZWdl biIpLiBVc2VyIGthbm4gZGllIFBlcnNvbmVuCiAgICAgICAgICAgICAgICAgICAgICAgICBoaWVy IGRpcmVrdCBuYWNocGZsZWdlbiB1bmQgZWluemVsbiBhdWYgIkVybGVkaWd0IiBzZXR6ZW4uCiAg ICAgICAgICAgICAgICAgICAgICAgICBCbG9jayB2ZXJzY2h3aW5kZXQgYXV0b21hdGlzY2gsIHNv YmFsZCBhbGxlIE1hcmtlciB3ZWcgc2luZC4gLS0+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBp ZD0icGVyc29uYWwtbmV1aW1wb3J0LWJsb2NrIiBjbGFzcz0idmVyc3RlY2t0Ij48L2Rpdj4KICAg ICAgICAgICAgICAgICAgICA8ZGV0YWlscyBjbGFzcz0iYWRtaW4taW5mbyIgZGF0YS1pbmZvLWtl eT0icGVyc29uYWwiIG9wZW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzdW1tYXJ5PjxzcGFu IGNsYXNzPSJhZG1pbi1pbmZvLWNoZXYiPuKWuDwvc3Bhbj5IaW53ZWlzZSB6dXIgUGVyc29uYWx2 ZXJ3YWx0dW5nPHNwYW4gY2xhc3M9ImFkbWluLWluZm8tYmFkZ2UiPkF1ZmtsYXBwZW4gLyBadWts YXBwZW48L3NwYW4+PC9zdW1tYXJ5PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNz PSJhZG1pbi1pbmZvLWJvZHkiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+PHN0cm9u Zz5ad2Vjazo8L3N0cm9uZz4gWmVudHJhbGUgVmVyd2FsdHVuZyBhbGxlciBNaXRhcmJlaXRlciwg ZGllIGluIGRlciBEaWVuc3RwbGFudW5nIGVyc2NoZWluZW4uIEplZGUgUGVyc29uIGJla29tbXQg U3RhbW1kYXRlbiAoTmFtZSwgRGllbnN0Z3JhZCwgVGVsZWZvbiwgTlctS2VubnVuZywgRGllbnN0 Z3J1cHBlLCBTdGFuZG9ydCkgc293aWUgZWluZW4gYWt0aXZlbiBvZGVyIHVtZ2VzZXR6dGVuIFN0 YXR1cy48L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD48c3Ryb25nPlJhbmdmb2xn ZTo8L3N0cm9uZz4gRGllIFJhbmctU3BhbHRlIHplaWd0IGRlbiByb2hlbiBQb3NpdGlvbnMtV2Vy dCAoei5CLiA8Y29kZT4xMTE8L2NvZGU+IOKAlCDDvGJlcm5vbW1lbiBhdXMgZGVtIEV4Y2VsLUlt cG9ydCkuIFp1bSBVbXNvcnRpZXJlbiBudXR6ZSBkZW4gQnV0dG9uIDxlbT5NYW51ZWxsZSBTb3J0 aWVydW5nPC9lbT4gb2JlbiDigJQgZG9ydCBrw7ZubmVuIEbDvGhydW5nc2tyw6RmdGUgKEHigJND IHVuZCBXRCkgcGVyIERyYWcgJmFtcDsgRHJvcCBuZXUgYW5nZW9yZG5ldCB3ZXJkZW4uPC9wPgog ICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+PHN0cm9uZz5EaWVuc3RncmFkOjwvc3Ryb25n PiBPcHRpb25hbCDigJQgei4gQi4gUEhLLCBQT0ssIFBLLiBXaXJkIGluIGRlciBOYW1lbnNzcGFs dGUgYWxzIFByw6RmaXggdm9yIGRlbSBOYWNobmFtZW4gYW5nZXplaWd0LjwvcD4KICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDxwPjxzdHJvbmc+RGllbnN0Z3J1cHBlIChBL0IvQy9XRC9XTCk6 PC9zdHJvbmc+IEJlc3RpbW10IGRpZSBSb3RhdGlvbiBhbiBkZW4gU3RhbmRvcnRlbi4gQS9CL0Mg cm90aWVyZW4gaW4gQUJDLS9CQ0EtL0NBQi1TY2hpY2h0Zm9sZ2UgZHVyY2ggRnLDvGgvU3DDpHQv TmFjaHQuIFdEIChXYWNoZGllbnN0KSB1bmQgV0wgKFdhY2hsZWl0dW5nKSBzaW5kIGZlc3RlIFNv bmRlcmdydXBwZW4gb2huZSBSb3RhdGlvbi4gS8O8cnplbCB1bmQgQmV6ZWljaG51bmdlbiBsYXNz ZW4gc2ljaCBpbSBUYWIgPGI+RGllbnN0Z3J1cHBlbjwvYj4gYW5wYXNzZW4g4oCUIFVtYmVuZW5u dW5nIGthc2thZGllcnQgYXV0b21hdGlzY2ggYXVmIGFsbGUgUGVyc29uZW4uPC9wPgogICAgICAg ICAgICAgICAgICAgICAgICAgICAgPHA+PHN0cm9uZz5OVy1LZW5udW5nOjwvc3Ryb25nPiBEaWUg TmV0endlcmstS2VubnVuZyAoei5CLiA8Y29kZT5ET01BSU5cbWF4Lm11c3Rlcm1hbm48L2NvZGU+ KSB3aXJkIGF1dG9tYXRpc2NoIGRlbSBhbmdlbWVsZGV0ZW4gV2luZG93cy1CZW51dHplciB6dWdl b3JkbmV0LiBPaG5lIEtlbm51bmcgZXJrZW5udCBkYXMgU3lzdGVtIGRpZSBQZXJzb24gbmljaHQg 4oCUIEZ1bmt0aW9uZW4gd2llIOKAnkZyZW1kLcOEbmRlcnVuZyBXYXJudW5nIiBvZGVyIHBlcnPD tm5saWNoZXIgUGxhbiBmdW5rdGlvbmllcmVuIGRhbm4gbmljaHQuPC9wPgogICAgICAgICAgICAg ICAgICAgICAgICAgICAgPHA+PHN0cm9uZz5FLU1haWw6PC9zdHJvbmc+IE9wdGlvbmFsLiBXaXJk IHZlcndlbmRldCwgd2VubiBkaWUgQmVuYWNocmljaHRpZ3VuZ3NmdW5rdGlvbiBha3RpdmllcnQg aXN0IChUYWIgPGI+RWluc3RlbGx1bmdlbjwvYj4pLjwvcD4KICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDxwPjxzdHJvbmc+VW1nZXNldHp0Ojwvc3Ryb25nPiBQZXJzb25lbiBtaXQgU3RhdHVz IOKAnlVtZ2VzZXR6dCIgd2VyZGVuIGF1cyBkZXIgbGF1ZmVuZGVuIFBsYW51bmcgZW50ZmVybnQs IGlocmUgSGlzdG9yaWUgYmxlaWJ0IGFiZXIgZXJoYWx0ZW4gKHp1ciBSZWNoZXJjaGUpLiBFaW50 csOkZ2Uga8O2bm5lbiB3ZWl0ZXJoaW4gYW5nZXplaWd0IHdlcmRlbiwgc2luZCBhYmVyIG5pY2h0 IG1laHIgZWRpdGllcmJhci4gRGllIENoZWNrYm94IG9iZW4gcmVjaHRzIGJsZW5kZXQgc2llIGJl aSBCZWRhcmYgZWluLjwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPjxzdHJvbmc+ TMO2c2NoZW4gdnMuIFVtc2V0emVuOjwvc3Ryb25nPiBOdXIgYXVzbmFobXN3ZWlzZSBsw7ZzY2hl biDigJQgdmVybG9yZW5lIEhpc3RvcmllLiBJbSBSZWdlbGZhbGwg4oCeVW1zZXR6ZW4iIChkZWFr dGl2aWVyZW4pIGJldm9yenVnZW4uPC9wPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4K ICAgICAgICAgICAgICAgICAgICA8L2RldGFpbHM+CiAgICAgICAgICAgICAgICAgICAgPHRhYmxl IGlkPSJwZXJzb25hbC10YWJlbGxlIiBjbGFzcz0iYWRtaW4tdGFiZWxsZSI+CiAgICAgICAgICAg ICAgICAgICAgICAgIDx0aGVhZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+TmFtZTwvdGg+CiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgPHRoPlZvcm5hbWU8L3RoPgogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDx0aCBzdHlsZT0id2lkdGg6MTIwcHgiIHRpdGxlPSJTdGFtbS1GdW5rdGlvbiAo REdML0RHTGluL1dERi9XREZpbi8zLiBNYW5uLzMuIEZyYXUvV2FjaGxlaXR1bmcvR3J1cHBlbmbD vGhydW5nKS4gQmVzdGltbXQgZGllIFZlcmFudHdvcnR1bmdzLVJlaWhlbmZvbGdlIGluIGRlciBT Y2hpY2h0LiI+RnVua3Rpb248L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0 aCBzdHlsZT0id2lkdGg6ODVweCIgdGl0bGU9IkRpZW5zdGdyYWQgKGbDvHIgU3VwZXJVc2VyIHBl ciBLbGljayBlZGl0aWVyYmFyKSI+RGllbnN0Z3JhZDwvdGg+CiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgPHRoIHN0eWxlPSJ3aWR0aDo2NXB4IiB0aXRsZT0iRGllbnN0cmFuZyDigJQg cm9oZSBQb3NpdGlvbiAoYXVzIEV4Y2VsLUltcG9ydCkuIFVtc29ydGllcmVuIHZpYSDigJ5NYW51 ZWxsZSBTb3J0aWVydW5nIiBvYmVuLiI+RGllbnN0cmFuZzwvdGg+CiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgPHRoIHN0eWxlPSJ3aWR0aDo1MHB4IiB0aXRsZT0iT3JnYW5pc2F0aW9u c2VpbmhlaXQgKFN0YW5kb3J0LUt1ZXJ6ZWwgYXVzIGRlbSBUYWIg4oCeU3RhbmRvcnRlIiDigJQg ei5CLiBLQSwgSEEsIEJPKS4iPk9FPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICA8dGggc3R5bGU9IndpZHRoOjYwcHgiIHRpdGxlPSJUZWxlZm9uLUR1cmNod2FobCAoaW50ZXJu KS4iPlRlbC48L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBzdHlsZT0i d2lkdGg6MTE1cHgiIHRpdGxlPSJOVy1LZW5udW5nIOKAlCBpLmQuUi4gOCBaZWljaGVuLCBsYW5n ZSBET01BSU4tUHJhZWZpeGUgd2VyZGVuIGdnZi4gYWJnZXNjaG5pdHRlbiI+TlctS2VubnVuZzwv dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIHN0eWxlPSJ3aWR0aDo0OHB4 IiB0aXRsZT0iSGV1dGlnZSBTY2hpY2h0cm90YXRpb24gKEZydWVoZGllbnN0IC8gU3BhZXRkaWVu c3QgLyBOYWNodGRpZW5zdCkuIFdpcmQgYXVzIGRlciBTdGFuZG9ydC1TY2hpY2h0Zm9sZ2UgdW5k IGRlciBEaWVuc3RncnVwcGUgZGVyIFBlcnNvbiBhYmdlbGVpdGV0LiBIb3ZlciB6ZWlndCBkZW4g bmFlY2hzdGVuIFdlY2hzZWx0YWcuIj5Sb3RhPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICA8dGggc3R5bGU9IndpZHRoOjkwcHgiPkUtTWFpbDwvdGg+CiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgPHRoIHN0eWxlPSJ3aWR0aDo5NXB4Ij5HZWJ1cnRzdGFnPC90aD4K ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggc3R5bGU9IndpZHRoOjcwcHgiIHRp dGxlPSJRdWFsaWZpa2F0aW9uIGFscyBEaWVuc3RncnVwcGVuLUxlaXRlciAoREdMKSBiencuIOKA njMuIE1hbm4vRnJhdSIgZGVyIFZlcmtlaHJzaW5zcGVrdGlvbiAzLiBNYXJraWVydCBkaWUgUGVy c29uIGFscyB1ZWJlcmJlc2V0enVuZ3MtZmFlaGlnIGZ1ZXIgbGVlcmUgU2NoaWNodGVuIGluIGlo cmVyIERpZW5zdGdydXBwZS4iPlZJMyBER0w8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDx0aCBzdHlsZT0id2lkdGg6OTBweCIgdGl0bGU9IkFuc3ByZWNocGFydG5lciBpbSBJ bmZvLUZlbnN0ZXIg4oCUIG51ciBmw7xyIExlaXR1bmdzLUZ1bmt0aW9uZW4gYWt0aXZpZXJiYXIg KEZ1bmt0aW9uZW4gbWl0IOKAnkluIFBsYW51bmcgc2ljaHRiYXIgPSBuZWluIikiPkFuc3ByZWNo LcKtcGFydG5lcjwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIHN0eWxl PSJ3aWR0aDo2NHB4IiB0aXRsZT0iRGllc2UgUGVyc29uIGVpbnplbG4gYXVzIGRlciBQbGFudW5n c2Fuc2ljaHQgLyBXb2NoZW5wbGFuIC8gUGVycy4gUGxhbiBhdXNibGVuZGVuIChncsO8biA9IHNp Y2h0YmFyLCByb3QgPSBhdXNnZWJsZW5kZXQpLiBTdXBlclVzZXItb25seS4iPkluIFBsYW51bmc8 L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBzdHlsZT0id2lkdGg6ODBw eCI+U3RhdHVzPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggc3R5bGU9 IndpZHRoOjIxMHB4Ij5Ba3Rpb25lbjwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8 L3RyPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RoZWFkPgogICAgICAgICAgICAgICAgICAg ICAgICA8dGJvZHkgaWQ9InBlcnNvbmFsLXRib2R5Ij48L3Rib2R5PgogICAgICAgICAgICAgICAg ICAgIDwvdGFibGU+CiAgICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICA8IS0t IFRhYjogRmVpZXJ0YWdlIC0tPgogICAgICAgICAgICAgICAgPCEtLSBUYWI6IERpZW5zdGdydXBw ZW4gLS0+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhZG1pbi10YWIgdmVyc3RlY2t0IiBp ZD0iYWRtaW4tdGFiLWdydXBwZW4iPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFk bWluLWtvcGYiPgogICAgICAgICAgICAgICAgICAgICAgICA8aDI+RGllbnN0Z3J1cHBlbjwvaDI+ CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRldGFpbHMg Y2xhc3M9ImFkbWluLWluZm8iIGRhdGEtaW5mby1rZXk9ImdydXBwZW4iIG9wZW4+CiAgICAgICAg ICAgICAgICAgICAgICAgIDxzdW1tYXJ5PjxzcGFuIGNsYXNzPSJhZG1pbi1pbmZvLWNoZXYiPuKW uDwvc3Bhbj5IaW53ZWlzZSB6dSBEaWVuc3RncnVwcGVuPHNwYW4gY2xhc3M9ImFkbWluLWluZm8t YmFkZ2UiPkF1ZmtsYXBwZW4gLyBadWtsYXBwZW48L3NwYW4+PC9zdW1tYXJ5PgogICAgICAgICAg ICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhZG1pbi1pbmZvLWJvZHkiPgogICAgICAgICAgICAg ICAgICAgICAgICAgICAgPHA+PHN0cm9uZz5XYXMgc2luZCBEaWVuc3RncnVwcGVuPzwvc3Ryb25n PiBEaWVuc3RncnVwcGVuIGLDvG5kZWxuIE1pdGFyYmVpdGVyIG1pdCBkZW1zZWxiZW4gUm90YXRp b25zcmh5dGhtdXMuIEJlaSBkZXIgVkkzIHNpbmQgZGFzIGRpZSBrbGFzc2lzY2hlbiA8Yj5BIC8g QiAvIEM8L2I+IChXZWNoc2VsZGllbnN0LVJvdGF0aW9uKSwgcGx1cyBTb25kZXJncnVwcGVuIHdp ZSA8Yj5LPC9iPiAoV2FjaGRpZW5zdCkgdW5kIDxiPkw8L2I+IChXYWNobGVpdHVuZykuPC9wPgog ICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+PHN0cm9uZz5Lw7xyemVsIHZzLiBCZXplaWNo bnVuZzo8L3N0cm9uZz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWw+CiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT5EYXMgPGI+S8O8cnplbDwvYj4gKHou Qi4gPGNvZGU+QTwvY29kZT4sIDxjb2RlPldEPC9jb2RlPikgaXN0IGRpZSB0ZWNobmlzY2hlIEtl bm51bmcgaW4gZGVuIERhdGVuIHVuZCB3aXJkIGluIGRlciBQZXJzb25lbi1aZWlsZSBhbmdlemVp Z3QuIFdlbm4gZHUgZXMgw6RuZGVyc3QsIHdlcmRlbiBhdXRvbWF0aXNjaCBhbGxlIFBlcnNvbmVu IGRlciBHcnVwcGUgYXVmIGRhcyBuZXVlIEvDvHJ6ZWwgbWlncmllcnQgKGthc2thZGllcnRlcyBV cGRhdGUgaW4gPGNvZGU+cGxhbnVuZy5qc29uPC9jb2RlPikuPC9saT4KICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgPGxpPkRpZSA8Yj5CZXplaWNobnVuZzwvYj4gKHouQi4g4oCe V2FjaGRpZW5zdCIsIOKAnldhY2hsZWl0dW5nIikgZXJzY2hlaW50IGFscyBUcmVubmVyIGluIGRl ciBOYW1lbnNsaXN0ZSBkZXIgUGxhbnVuZy4gRGllc2Uga2FubnN0IGR1IGZyZWkgYW5wYXNzZW4s IG9obmUgRGF0ZW4genUgdmVybGllcmVuLjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDxwPjxzdHJvbmc+RmFyYmVuOjwvc3Ryb25nPiBIaW50ZXJncnVuZCB1 bmQgU2NocmlmdGZhcmJlIHBybyBHcnVwcGUgZGlyZWt0IGVkaXRpZXJiYXIuIEVpbmUgTGl2ZS1W b3JzY2hhdSB6ZWlndCBkYXMgcmVzdWx0aWVyZW5kZSBCYWRnZS4gRGllIEZhcmJlbiB3ZXJkZW4g w7xiZXJhbGwgaW0gU3lzdGVtIHZlcndlbmRldCAoUGVyc29uZW4tQmFkZ2VzLCBHcnVwcGVuLVRy ZW5uZXIgaW4gZGVyIFBlcnNvbmFsdmVyd2FsdHVuZywgR3J1cHBlbi1MYWJlbCBpbiBkZXIgUGxh bnVuZ3MtWmVpbGUpLjwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPjxzdHJvbmc+ TmV1ZSBHcnVwcGUgYW5sZWdlbjo8L3N0cm9uZz4gQnV0dG9uIDxlbT7igJ5OZXVlIERpZW5zdGdy dXBwZSI8L2VtPiDDtmZmbmV0IGVpbmUgRWluZ2FiZXplaWxlLiBQZmxpY2h0ZmVsZGVyIHNpbmQg S8O8cnplbCB1bmQgQmV6ZWljaG51bmc7IEZhcmJlbiBrw7ZubmVuIHp1bsOkY2hzdCDDvGJlcm5v bW1lbiB3ZXJkZW4gdW5kIHNww6R0ZXIgYW5nZXBhc3N0IHdlcmRlbi48L3A+CiAgICAgICAgICAg ICAgICAgICAgICAgICAgICA8cD48c3Ryb25nPkdydXBwZSBsw7ZzY2hlbjo8L3N0cm9uZz4gTnVy IG3DtmdsaWNoLCB3ZW5uIGtlaW5lIGFrdGl2ZSBQZXJzb24gbWVociBpbiBkZXIgR3J1cHBlIGlz dC4gU2luZCBub2NoIFBlcnNvbmVuIHp1Z2V3aWVzZW4sIHplaWd0IGRlciBEaWFsb2cgZGllIEFu emFobCB1bmQgYnJpY2h0IGFiIOKAlCBkYW5uIGVyc3QgZGllIFBlcnNvbmVuIGF1ZiBlaW5lIGFu ZGVyZSBHcnVwcGUgdW1zZXR6ZW4gb2RlciB1bWdydXBwaWVyZW4uPC9wPgogICAgICAgICAgICAg ICAgICAgICAgICAgICAgPHA+PHN0cm9uZz5TcGVpY2hlcm46PC9zdHJvbmc+IE5hY2ggw4RuZGVy dW5nZW4gYXVmIOKAnkRpZW5zdGdydXBwZW4gc3BlaWNoZXJuIiBrbGlja2VuLiBCZWkgZ2XDpG5k ZXJ0ZW4gS8O8cnplbG4gd2VyZGVuIGFsbGUgdmVya27DvHBmdGVuIFBlcnNvbmVuIGF1dG9tYXRp c2NoIGF1ZiBkYXMgbmV1ZSBLw7xyemVsIHVtZ2VzY2hyaWViZW4gKGtlaW4gRGF0ZW52ZXJsdXN0 KS48L3A+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAg IDwvZGV0YWlscz4KICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9ImFkbWluLXRhYmVs bGUiIGlkPSJncnVwcGVuLXRhYmVsbGUiIHN0eWxlPSJtYXgtd2lkdGg6MTA0MHB4Ij4KICAgICAg ICAgICAgICAgICAgICAgICAgPHRoZWFkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRy PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBzdHlsZT0id2lkdGg6OTBweCI+ S8O8cnplbDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPkJlemVpY2hu dW5nPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggc3R5bGU9IndpZHRo OjcwcHgiPkhpbnRlcmdydW5kPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8 dGggc3R5bGU9IndpZHRoOjcwcHgiPlNjaHJpZnQ8L3RoPgogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDx0aCBzdHlsZT0id2lkdGg6ODBweCI+Vm9yc2NoYXU8L3RoPgogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIDx0aCBzdHlsZT0id2lkdGg6NzBweCI+UGVyc29uZW48L3Ro PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBzdHlsZT0id2lkdGg6MTIwcHg7 dGV4dC1hbGlnbjpjZW50ZXIiIHRpdGxlPSJXZW5uIGRlYWt0aXZpZXJ0LCB3ZXJkZW4gUGVyc29u ZW4gZGllc2VyIEdydXBwZSBOSUNIVCBpbiBkZXIgUGxhbnVuZ3NhbnNpY2h0LCBpbSBXb2NoZW5w bGFuIHVuZCBpbSBQZXJzLiBQbGFuIGFuZ2V6ZWlndCDigJQgYmxlaWJlbiBhYmVyIGluIGRlciBQ ZXJzb25hbHZlcndhbHR1bmcgcGZsZWdiYXIuIj5JbiBQbGFudW5nIHNpY2h0YmFyPC90aD4KICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggc3R5bGU9IndpZHRoOjEzMHB4O3RleHQt YWxpZ246Y2VudGVyIiB0aXRsZT0iV2VubiBha3RpdmllcnQsIGTDvHJmZW4gUGVyc29uZW4gZGll c2VyIEdydXBwZSBpbSBQZXJzb25hbC1UYWIgYWxzIEFuc3ByZWNocGFydG5lciBtYXJraWVydCB3 ZXJkZW4gKGdpbHQgenVzw6R0emxpY2ggenVyIEZ1bmt0aW9ucy1CZWRpbmd1bmcpLiBNYXJraWVy dGUgUGVyc29uZW4gZXJzY2hlaW5lbiBtaXQgTWFpbC1CdXR0b24gaW0gSW5mby1GZW5zdGVyLiI+ QW5zcHJlY2hwYXJ0bmVyIG3DtmdsaWNoPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICA8dGggc3R5bGU9IndpZHRoOjcwcHg7dGV4dC1hbGlnbjpjZW50ZXIiIHRpdGxlPSJSZWlo ZW5mb2xnZSBpbiBkZXIgUGxhbnVuZ3NhbnNpY2h0IMOkbmRlcm4iPlJlaWhlbmZvbGdlPC90aD4K ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggc3R5bGU9IndpZHRoOjYwcHgiPjwv dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAg ICAgICA8L3RoZWFkPgogICAgICAgICAgICAgICAgICAgICAgICA8dGJvZHkgaWQ9ImdydXBwZW4t dGJvZHkiPjwvdGJvZHk+CiAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAg ICAgICAgICA8ZGl2IHN0eWxlPSJtYXJnaW4tdG9wOjE2cHg7ZGlzcGxheTpmbGV4O2dhcDoxMHB4 Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBpZD0iYnRuLWdydXBwZW4tbmV1IiBj bGFzcz0iYnRuIGJ0bi1lcmZvbGciPk5ldWUgRGllbnN0Z3J1cHBlPC9idXR0b24+CiAgICAgICAg ICAgICAgICAgICAgICAgIDxidXR0b24gaWQ9ImJ0bi1ncnVwcGVuLXNwZWljaGVybiIgY2xhc3M9 ImJ0biBidG4tcHJpbWFlciI+RGllbnN0Z3J1cHBlbiBzcGVpY2hlcm48L2J1dHRvbj4KICAgICAg ICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAg ICAgIDwhLS0gVGFiOiBGZWllcnRhZ2UgJiBGZXJpZW4gKE1lcmdlIFBoYXNlIDEg4oCUIGJlaWRl IEthbGVuZGVyLUJsb2NrZXIgYW4gZWluZW0gT3J0KSAtLT4KICAgICAgICAgICAgICAgIDxkaXYg Y2xhc3M9ImFkbWluLXRhYiB2ZXJzdGVja3QiIGlkPSJhZG1pbi10YWItZmVpZXJ0YWdlIj4KICAg ICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhZG1pbi1rb3BmIj4KICAgICAgICAgICAgICAg ICAgICAgICAgPGgyPkthbGVuZGVyIOKAlCBGZWllcnRhZ2UgJmFtcDsgRmVyaWVuPC9oMj4KICAg ICAgICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgPCEtLSBTdWItVGFi LUxlaXN0ZTogdHJlbm50IGRpZSB6d2VpIGxvZ2lzY2ggZGlzanVua3RlbgogICAgICAgICAgICAg ICAgICAgICAgICAgVGhlbWVuIHZpc3VlbGwuIERlZmF1bHQ6IEZlaWVydGFnZSBha3Rpdi4gLS0+ CiAgICAgICAgICAgICAgICAgICAgPG5hdiBjbGFzcz0iYWRtaW4tc3VibmF2IiBhcmlhLWxhYmVs PSJLYWxlbmRlci1TdWItTmF2aWdhdGlvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0 b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYWRtaW4tc3VibmF2LWJ0biBha3RpdiIgZGF0YS1zdWJ0 YWI9ImZlaWVydGFnZSI+RmVpZXJ0YWdlPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAg IDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYWRtaW4tc3VibmF2LWJ0biIgZGF0YS1zdWJ0 YWI9ImZlcmllbiI+U2NodWxmZXJpZW48L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICA8L25h dj4KCiAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9ImFkbWluLXNla3Rpb24iIGlk PSJhZG1pbi1zZWt0aW9uLWZlaWVydGFnZSIgZGF0YS1zdWJ0YWItc2VrdGlvbj0iZmVpZXJ0YWdl Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWRtaW4tc2VrdGlvbi1rb3Bm Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMz5GZWllcnRhZ2U8L2gzPgogICAgICAg ICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBpZD0iYnRuLWZlaWVydGFnLW5ldSIgY2xhc3M9 ImJ0biBidG4tZXJmb2xnIj5OZXVlciBGZWllcnRhZzwvYnV0dG9uPgogICAgICAgICAgICAgICAg ICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRldGFpbHMgY2xhc3M9ImFk bWluLWluZm8iIGRhdGEtaW5mby1rZXk9ImZlaWVydGFnZSIgb3Blbj4KICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDxzdW1tYXJ5PjxzcGFuIGNsYXNzPSJhZG1pbi1pbmZvLWNoZXYiPuKWuDwv c3Bhbj5IaW53ZWlzZSB6dSBGZWllcnRhZ2VuPHNwYW4gY2xhc3M9ImFkbWluLWluZm8tYmFkZ2Ui PkF1ZmtsYXBwZW4gLyBadWtsYXBwZW48L3NwYW4+PC9zdW1tYXJ5PgogICAgICAgICAgICAgICAg ICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWRtaW4taW5mby1ib2R5Ij4KICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICA8cD48c3Ryb25nPldhcyBwYXNzaWVydCBtaXQgRmVpZXJ0YWdlbj88 L3N0cm9uZz4gQW4gYWt0aXZlbiBGZWllcnRhZ2VuIHdpcmQgZGllIGVudHNwcmVjaGVuZGUgRGF0 dW1zLVNwYWx0ZSBpbSBQbGFudW5nc3Jhc3RlciBmYXJibGljaCBoZXJ2b3JnZWhvYmVuIHVuZCBp biBkZXIgQW5sYXNzLVplaWxlIG1pdCBkZXIgQmV6ZWljaG51bmcgZGVzIEZlaWVydGFncyB2ZXJz ZWhlbi4gRGllIFN0YXRpc3Rpay1BdXN3ZXJ0dW5nIOKAnkZlaWVydGFncy1EaWVuc3RlIiBiZXLD vGNrc2ljaHRpZ3QgbnVyIFRhZ2UgYXVzIGRpZXNlciBMaXN0ZSwgZGVyZW4gPGVtPkFrdGl2PC9l bT4tSMOka2NoZW4gZ2VzZXR6dCBpc3QuPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDxwPjxzdHJvbmc+S2F0ZWdvcmllbjo8L3N0cm9uZz4gTmViZW4gZGVuIGdlc2V0emxpY2hl biBGZWllcnRhZ2VuIChTdGFuZGFyZCwgTlJXKSBzaW5kIGrDvGRpc2NoZSwgbXVzbGltaXNjaGUg dW5kIHTDvHJraXNjaGUgRmVpZXJ0YWdlIGFscyBEYXRlbmJhc2lzIGJlcmVpdHMgaGludGVybGVn dCDigJQgZsO8ciAyMDI2IGJpcyAyMDM1LiBEaWVzZSBzaW5kIHBlciBEZWZhdWx0IGRlYWt0aXZp ZXJ0OyBwZXIgPGVtPkFrdGl2PC9lbT4tSMOka2NoZW4gbGFzc2VuIHNpZSBzaWNoIGVpbnplbG4g ZWluYmxlbmRlbi4gSmVkZSBLYXRlZ29yaWUgYmVrb21tdCBpbiBkZXIgQW5sYXNzLVplaWxlIGVp bmUgZWlnZW5lIEZhcmJlIChnZXNldHpsaWNoID0gYmxhdSwgasO8ZGlzY2ggPSBsaWxhLCBtdXNs aW1pc2NoID0gZ3LDvG4sIHTDvHJraXNjaCA9IHJvdCkuPC9wPgogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDxwPjxzdHJvbmc+RmlsdGVyOjwvc3Ryb25nPiDDnGJlciBkZXIgVGFiZWxs ZSBuYWNoIEthdGVnb3JpZSwgSmFociBvZGVyIOKAnm51ciBha3RpdmUiIGZpbHRlcm4g4oCUIGRp ZSB2b2xsZSBMaXN0ZSB1bWZhc3N0IHJ1bmQgMzEyIEVpbnRyw6RnZS48L3A+CiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgPHA+PHN0cm9uZz5XaWNodGlnIChIZXJ2b3JoZWJ1bmcpOjwv c3Ryb25nPiBEaWUgQ2hlY2tib3ggaW4gZGVyIFNwYWx0ZSDigJ5XaWNodGlnIiBtYXJraWVydCBi ZXNvbmRlcnMgaGVydm9yenVoZWJlbmRlIEZlaWVydGFnZSAoei5CLiBIZWlsaWdhYmVuZCwgU2ls dmVzdGVyLCBXZWlobmFjaHRlbikuIFNvbGNoZSBUYWdlIGJla29tbWVuIGltIFBsYW51bmdzLUhl YWRlciBlaW5lIHZlcnN0w6Rya3RlIEVpbmbDpHJidW5nIChyb3QgbWl0IGdvbGRlbmVtIFJhaG1l bikgdW5kIMO8YmVybGFnZXJuIGRpZSBLYXRlZ29yaWUtRmFyYmUuIERpZSBUYWJlbGxlbnplaWxl IGltIEFkbWluIGVyaMOkbHQgZWluZSByw7Z0bGljaGUgVMO2bnVuZy48L3A+CiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgPHA+PHN0cm9uZz5XZWNoc2Vsd2lya3VuZyBtaXQgU29uZGVy dGVybWluZTo8L3N0cm9uZz4gTGllZ3QgenVzw6R0emxpY2ggZWluIFNvbmRlcnRlcm1pbiBhbiBl aW5lbSBGZWllcnRhZywgYmxlaWJ0IGRlciBGZWllcnRhZ3MtSGlud2VpcyBzaWNodGJhciwgZGll IFplbGxlIGlzdCBhYmVyIGtsaWNrYmFyIHVuZCB6ZWlndCBIaW53ZWlzLVRleHQga29tYmluaWVy dCBhbi48L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAg ICAgICAgICAgICAgPC9kZXRhaWxzPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJm ZWllcnRhZ2UtZmlsdGVyIiBjbGFzcz0iZmVpZXJ0YWdlLWZpbHRlciI+CiAgICAgICAgICAgICAg ICAgICAgICAgICAgICA8bGFiZWw+S2F0ZWdvcmllOgogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDxzZWxlY3QgaWQ9ImZlaWVydGFnZS1maWx0ZXIta2F0ZWdvcmllIj4KICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iYWxsZSI+QWxsZTwvb3B0 aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJn ZXNldHpsaWNoIj5HZXNldHpsaWNoIChOUlcpPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9Imp1ZWRpc2NoIj5Kw7xkaXNjaDwvb3B0aW9u PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJtdXNs aW1pc2NoIj5NdXNsaW1pc2NoPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDxvcHRpb24gdmFsdWU9InR1ZXJraXNjaCI+VMO8cmtpc2NoPC9vcHRpb24+CiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+CiAgICAgICAgICAgICAgICAgICAg ICAgICAgICA8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPkphaHI6 CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdCBpZD0iZmVpZXJ0YWdlLWZp bHRlci1qYWhyIj48L3NlbGVjdD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+ CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgc3R5bGU9Im1hcmdpbi1sZWZ0OmF1 dG87ZGlzcGxheTppbmxpbmUtZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjZweCI+CiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImNoZWNrYm94IiBpZD0iZmVp ZXJ0YWdlLWZpbHRlci1udXItYWt0aXYiPiBudXIgYWt0aXZlIHplaWdlbgogICAgICAgICAgICAg ICAgICAgICAgICAgICAgPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAg ICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0iYWRtaW4tdGFiZWxsZSIgaWQ9ImZl aWVydGFnZS10YWJlbGxlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aGVhZD48dHI+ CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIHN0eWxlPSJ3aWR0aDoxMzBweCI+ RGF0dW08L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBzdHlsZT0ibWF4 LXdpZHRoOjI2MHB4Ij5CZXplaWNobnVuZzwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgPHRoIHN0eWxlPSJ3aWR0aDo2MHB4O3RleHQtYWxpZ246Y2VudGVyIiB0aXRsZT0iUHJv IEVpbnRyYWcgd8OkaGxiYXI7IGxlZXIgPSBLYXRlZ29yaWUtRGVmYXVsdCI+SWNvbjwvdGg+CiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIHN0eWxlPSJ3aWR0aDoxNzBweCI+S2F0 ZWdvcmllPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggc3R5bGU9Indp ZHRoOjgwcHg7dGV4dC1hbGlnbjpjZW50ZXIiPkFrdGl2PC90aD4KICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICA8dGggc3R5bGU9IndpZHRoOjE0MHB4O3RleHQtYWxpZ246Y2VudGVyIj5X aWNodGlnPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggc3R5bGU9Indp ZHRoOjE2MHB4Ij5Ba3Rpb25lbjwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3Ry PjwvdGhlYWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGJvZHkgaWQ9ImZlaWVydGFn ZS10Ym9keSI+PC90Ym9keT4KICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAg ICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBpZD0iYnRuLWZlaWVydGFnZS1zcGVpY2hlcm4iIGNs YXNzPSJidG4gYnRuLXByaW1hZXIiIHN0eWxlPSJtYXJnaW4tdG9wOjEycHgiPkZlaWVydGFnZSBz cGVpY2hlcm48L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CgogICAgICAg ICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJhZG1pbi1zZWt0aW9uIHZlcnN0ZWNrdCIgaWQ9 ImFkbWluLXNla3Rpb24tZmVyaWVuIiBkYXRhLXN1YnRhYi1zZWt0aW9uPSJmZXJpZW4iPgogICAg ICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhZG1pbi1zZWt0aW9uLWtvcGYiPgogICAg ICAgICAgICAgICAgICAgICAgICAgICAgPGgzPlNjaHVsZmVyaWVuPC9oMz4KICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDxidXR0b24gaWQ9ImJ0bi1mZXJpZW4tbmV1IiBjbGFzcz0iYnRuIGJ0 bi1lcmZvbGciPk5ldWVyIEZlcmllbnplaXRyYXVtPC9idXR0b24+CiAgICAgICAgICAgICAgICAg ICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGV0YWlscyBjbGFzcz0iYWRt aW4taW5mbyIgZGF0YS1pbmZvLWtleT0iZmVyaWVuIiBvcGVuPgogICAgICAgICAgICAgICAgICAg ICAgICAgICAgPHN1bW1hcnk+PHNwYW4gY2xhc3M9ImFkbWluLWluZm8tY2hldiI+4pa4PC9zcGFu PkhpbndlaXNlIHp1IEZlcmllbjxzcGFuIGNsYXNzPSJhZG1pbi1pbmZvLWJhZGdlIj5BdWZrbGFw cGVuIC8gWnVrbGFwcGVuPC9zcGFuPjwvc3VtbWFyeT4KICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDxkaXYgY2xhc3M9ImFkbWluLWluZm8tYm9keSI+CiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgPHA+PHN0cm9uZz5XYXJ1bSBGZXJpZW4gZXJmYXNzZW4/PC9zdHJvbmc+IE5SVy1T Y2h1bGZlcmllbiB3ZXJkZW4gaW0gV29jaGVucGxhbiBtaXQgZGVtIFN5bWJvbCDwn4+W77iPIHVu ZCBkZXIgQmV6ZWljaG51bmcgbWFya2llcnQ7IGluIGRlciBQbGFudW5nc2Fuc2ljaHQgbGVndCBz aWNoIGVpbmUgZHVyY2hnZWhlbmRlIGdyw7xuZSBCYXIgw7xiZXIgZGVuIFplaXRyYXVtLiBEYXMg aGlsZnQgYmVpIGRlciBVcmxhdWJzdmVyZ2FiZSB1bmQgQmVzZXR6dW5nc3BsYW51bmcsIGJlc29u ZGVycyBiZWkgUGVyc29uYWwgbWl0IHNjaHVscGZsaWNodGlnZW4gS2luZGVybi48L3A+CiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+PHN0cm9uZz5aZWl0cmF1bS1FaW50csOkZ2U6 PC9zdHJvbmc+IEZlcmllbiB3ZXJkZW4gbWl0IDxiPlZvbjwvYj4tIHVuZCA8Yj5CaXM8L2I+LURh dHVtIGVyZmFzc3QgKGlua2x1c2l2ZSBiZWlkZXIgVGFnZSkuIEJlaXNwaWVsOiBPc3RlcmZlcmll biAzMC4wMy7igJMxMS4wNC4gRGllIDxiPkJlemVpY2hudW5nPC9iPiB3aXJkIGltIFRvb2x0aXAg dW5kIGluIGRlciBXb2NoZW5wbGFuLU1hcmtpZXJ1bmcgYW5nZXplaWd0LjwvcD4KICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICA8cD48c3Ryb25nPlBmbGVnZTo8L3N0cm9uZz4gRWlubWFs IHBybyBKYWhyIGFrdHVhbGlzaWVyZW4uIERpZSBvZmZpemllbGxlbiBOUlctRmVyaWVudGVybWlu ZSBzaW5kIGJlaW0gU2NodWxtaW5pc3Rlcml1bSBOUlcgenUgZmluZGVuLiDDnGJlcmxhcHBlbmRl IEVpbnRyw6RnZSB3ZXJkZW4gdm9tIFN5c3RlbSBha3plcHRpZXJ0OyBQcmlvcml0w6R0OiBGZWll cnRhZyA+IEZlcmllbiA+IFdvY2hlbmVuZGUgPiBOb3JtYWwuPC9wPgogICAgICAgICAgICAgICAg ICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGV0YWlscz4KICAg ICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJhZG1pbi10YWJlbGxlIiBpZD0iZmVy aWVuLXRhYmVsbGUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoZWFkPjx0cj48dGg+ Vm9uPC90aD48dGg+QmlzPC90aD48dGg+QmV6ZWljaG51bmc8L3RoPjx0aCBzdHlsZT0id2lkdGg6 ODBweCI+QWt0aW9uZW48L3RoPjwvdHI+PC90aGVhZD4KICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDx0Ym9keSBpZD0iZmVyaWVuLXRib2R5Ij48L3Rib2R5PgogICAgICAgICAgICAgICAgICAg ICAgICA8L3RhYmxlPgogICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGlkPSJidG4tZmVy aWVuLXNwZWljaGVybiIgY2xhc3M9ImJ0biBidG4tcHJpbWFlciIgc3R5bGU9Im1hcmdpbi10b3A6 MTJweCI+RmVyaWVuIHNwZWljaGVybjwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgIDwvc2Vj dGlvbj4KICAgICAgICAgICAgICAgIDwvZGl2PgoKCiAgICAgICAgICAgICAgICA8IS0tIFRhYjog U29uZGVydGVybWluZSAtLT4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFkbWluLXRhYiB2 ZXJzdGVja3QiIGlkPSJhZG1pbi10YWItc29uZGVydGVybWluZSI+CiAgICAgICAgICAgICAgICAg ICAgPGRpdiBjbGFzcz0iYWRtaW4ta29wZiI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxoMj5T b25kZXJ0ZXJtaW5lICZhbXA7IEhpbndlaXNlPC9oMj4KICAgICAgICAgICAgICAgICAgICAgICAg PGJ1dHRvbiBpZD0iYnRuLXNvbmRlcnRlcm1pbi1uZXUiIGNsYXNzPSJidG4gYnRuLWVyZm9sZyI+ TmV1ZXIgSGlud2VpczwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAg ICAgICAgICAgICAgICA8ZGV0YWlscyBjbGFzcz0iYWRtaW4taW5mbyIgZGF0YS1pbmZvLWtleT0i c29uZGVydGVybWluZSIgb3Blbj4KICAgICAgICAgICAgICAgICAgICAgICAgPHN1bW1hcnk+PHNw YW4gY2xhc3M9ImFkbWluLWluZm8tY2hldiI+4pa4PC9zcGFuPkhpbndlaXNlIHp1IFNvbmRlcnRl cm1pbmVuPHNwYW4gY2xhc3M9ImFkbWluLWluZm8tYmFkZ2UiPkF1ZmtsYXBwZW4gLyBadWtsYXBw ZW48L3NwYW4+PC9zdW1tYXJ5PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJh ZG1pbi1pbmZvLWJvZHkiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+PHN0cm9uZz5X YXMgaXN0IGRhcz88L3N0cm9uZz4gU29uZGVydGVybWluZSBzaW5kIEhpbndlaXNlIG9kZXIgV2Fy bnVuZ2VuLCBkaWUgYW4gZWluZW0gYmVzdGltbXRlbiBUYWcgKG9kZXIgWmVpdHJhdW0pIGbDvHIg YWxsZSBOdXR6ZXIgc2ljaHRiYXIgd2VyZGVuIOKAlCB6LkIuIFZlcmFuc3RhbHR1bmdlbiwgZXJo w7ZodGVyIFBlcnNvbmFsYmVkYXJmLCB3aWNodGlnZSBGcmlzdGVuLCBTcGVycnRlcm1pbmUsIEZl aWVybiBvZGVyIEVyaW5uZXJ1bmdlbi48L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8 cD48c3Ryb25nPldpZSBzZWhlbiBkaWUgTnV0emVyIGRhcz88L3N0cm9uZz48L3A+CiAgICAgICAg ICAgICAgICAgICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg PGxpPjxiPkltIFBsYW51bmdzLUhlYWRlcjwvYj4gZXJzY2hlaW50IGluIGRlciBIaW53ZWlzLVpl aWxlICh1bnRlciBkZW0gV29jaGVudGFnKSBkYXMgZ2V3w6RobHRlIEljb24gb2RlciBkZXIgRmFs bGJhY2sgKDxjb2RlPuKEuTwvY29kZT4gZsO8ciBIaW53ZWlzLCA8Y29kZT4hISE8L2NvZGU+IGbD vHIgV2FybnVuZykuIEhvdmVyIHplaWd0IGRlbiBUaXRlbCBhbHMgVG9vbHRpcC48L2xpPgogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48Yj5LbGljayBhdWYgZGllIFplbGxlPC9i PiDDtmZmbmV0IGVpbiBBbnNpY2h0cy1Nb2RhbCBtaXQgSWNvbiwgVGl0ZWwsIGZvcm1hdGllcnRl bSBUZXh0IHVuZCBEYXR1bS4gU3VwZXJVc2VyIGvDtm5uZW4gZGlyZWt0IGJlYXJiZWl0ZW4gb2Rl ciBuZXVlIEhpbndlaXNlIGbDvHIgamVkZXMgRGF0dW0gYW5sZWdlbi48L2xpPgogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIDxsaT48Yj5CZWltIFBsYW5lbi9VbXBsYW5lbiBlaW5lciBT Y2hpY2h0PC9iPiBhbiBlaW5lbSBUYWcgbWl0IEhpbndlaXMgZXJzY2hlaW50IOKAlCBqZSBuYWNo IFdhcm5tb2R1cyDigJQgZWluIFdhcm4tTW9kYWwsIGRhcyB2b3IgZGVyIEVpbmdhYmUgYmVzdMOk dGlndCB3ZXJkZW4gbXVzcy48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4K ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPjxzdHJvbmc+RmVsZGVyIGltIERldGFpbDo8 L3N0cm9uZz48L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWw+CiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgPGxpPjxiPkRhdHVtIChWb24pPC9iPiDigJQgUGZsaWNodGZl bGQuIFN0YXJ0IGRlcyBHw7xsdGlna2VpdHNiZXJlaWNocy48L2xpPgogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDxsaT48Yj5EYXR1bSAoQmlzKTwvYj4g4oCUIG9wdGlvbmFsLiBMZWVy IGxhc3NlbiA9IGdpbHQgbnVyIGbDvHIgZGVuIFN0YXJ0LVRhZy4gR2VzZXR6dCA9IFplaXRyYXVt IChWb24gYmlzIEJpcyBpbmtsdXNpdmUpLiBKZWRlciBUYWcgaW0gWmVpdHJhdW0gemVpZ3QgZGVu IEhpbndlaXMuPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGI+VGl0 ZWw8L2I+IOKAlCBrdXJ6ZSBCZXplaWNobnVuZyAobWF4LiAxMDAgWmVpY2hlbiksIGVyc2NoZWlu dCBpbSBUb29sdGlwIHVuZCBhbHMgw5xiZXJzY2hyaWZ0IGltIE1vZGFsLiBJc3Qga2VpbiBUaXRl bCBnZXNldHp0LCB3aXJkIGRlciBBbmZhbmcgZGVzIFRleHRzIHZlcndlbmRldC48L2xpPgogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48Yj5UZXh0PC9iPiDigJQgYXVzZsO8aHJs aWNoZXIgSW5oYWx0IG1pdCBtaW5pbWFsZW0gUmljaC1UZXh0LUVkaXRvci4gVW50ZXJzdMO8dHp0 IDxiPmZldHQ8L2I+LCA8aT5rdXJzaXY8L2k+LCA8dT51bnRlcnN0cmljaGVuPC91PiwgQXVmesOk aGx1bmdlbiAo4oCiIC8gMS4pIHVuZCBFbnRmZXJuZW4gZGVyIEZvcm1hdGllcnVuZy4gRWluZsO8 Z2VuIGF1cyBhbmRlcmVuIFF1ZWxsZW4gKFdvcmQsIE1haWwpIGZ1bmt0aW9uaWVydCDigJQgRm9y bWF0aWVydW5nIHdpcmQgYXVmIGRhcyBadWzDpHNzaWdlIGJlcmVpbmlndC48L2xpPgogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48Yj5JY29uPC9iPiDigJQgRW1vamkgYXVzIGRl bSBQaWNrZXIgKDUgR3J1cHBlbikgb2RlciDigJ5rZWlucyIuIEVyc2V0enQgaW0gSGVhZGVyLUJh ZGdlIGRhcyBnZW5lcmlzY2hlIFN5bWJvbC48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDxsaT48Yj5UeXA8L2I+IOKAlCA8aT5IaW53ZWlzPC9pPiAobmV1dHJhbCwgYmxhdSkg b2RlciA8aT5XYXJudW5nPC9pPiAocm90LW9yYW5nZSwgZsO8ciB3aWNodGlnZSBUaGVtZW4pLjwv bGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxiPldhcm5tb2R1czwvYj4g 4oCUIHN0ZXVlcnQsIHdhbm4gZGFzIFdhcm4tTW9kYWwgYmVpbSBQbGFuZW4gZXJzY2hlaW50Ogog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGI+SW1tZXI8L2I+IOKAlCBiZWkgamVkZXIgUGxh bnVuZyBpbSBaZWl0cmF1bSBlcnNjaGVpbnQgZGFzIE1vZGFsIGVybmV1dC48L2xpPgogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxiPkVpbm1hbGlnIHBybyBVc2Vy PC9iPiDigJQgZXJzY2hlaW50IG51ciBiZWltIGVyc3RlbiBLbGljayBwcm8gTnV0emVyIHVuZCBU ZXJtaW4gKFNwZWljaGVydW5nIGxva2FsIGltIEJyb3dzZXIsIHBybyBUZXJtaW4tSUQpLjwvbGk+ CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGI+QXVzPC9iPiDi gJQgbnVyIGFscyBIZWFkZXItSWNvbiBzaWNodGJhciwga2VpbiBNb2RhbCBiZWltIFBsYW5lbi48 L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8 L3VsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+PHN0cm9uZz5UaXBwOjwvc3Ryb25n PiBGw7xyIHdpZWRlcmtlaHJlbmRlIEdyb8OfdmVyYW5zdGFsdHVuZ2VuIGVpbmZhY2ggbWl0IFpl aXRyYXVtIGFubGVnZW4gKHouQi4gS2FybmV2YWxzd29jaGUgTW9udGFn4oCTRnJlaXRhZykuIERl ciBIaW53ZWlzIGVyc2NoZWludCBkYW5uIGF1ZiBhbGxlbiBUYWdlbjsgZGFzIFdhcm4tTW9kYWwg ZXJzY2hlaW50IGltIE1vZHVzIOKAnkVpbm1hbGlnIiBudXIgZWlubWFsIHBybyBOdXR6ZXIgdW5k IFRlcm1pbiwgbmljaHQgZsO8ciBqZWRlbiBUYWcgbmV1LjwvcD4KICAgICAgICAgICAgICAgICAg ICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kZXRhaWxzPgoKICAgICAgICAgICAg ICAgICAgICA8dGFibGUgY2xhc3M9ImFkbWluLXRhYmVsbGUiIGlkPSJzb25kZXJ0ZXJtaW5lLXRh YmVsbGUiPgogICAgICAgICAgICAgICAgICAgICAgICA8dGhlYWQ+PHRyPjx0aCBzdHlsZT0id2lk dGg6NTJweCI+SWNvbjwvdGg+PHRoIHN0eWxlPSJ3aWR0aDoxODBweCI+RGF0dW0gLyBaZWl0cmF1 bTwvdGg+PHRoPlRpdGVsPC90aD48dGggc3R5bGU9IndpZHRoOjExMHB4Ij5UeXA8L3RoPjx0aCBz dHlsZT0id2lkdGg6MTYwcHgiPldhcm5tb2R1czwvdGg+PHRoIHN0eWxlPSJ3aWR0aDoxNzBweCI+ QWt0aW9uZW48L3RoPjwvdHI+PC90aGVhZD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRib2R5 IGlkPSJzb25kZXJ0ZXJtaW5lLXRib2R5Ij48L3Rib2R5PgogICAgICAgICAgICAgICAgICAgIDwv dGFibGU+CiAgICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICA8IS0tIFRhYjog U2NoaWNodGNvZGVzICYgRmFyYmNvZGllcnVuZyAtLT4KICAgICAgICAgICAgICAgIDxkaXYgY2xh c3M9ImFkbWluLXRhYiB2ZXJzdGVja3QiIGlkPSJhZG1pbi10YWItc2NoaWNodGNvZGVzIj4KICAg ICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhZG1pbi1rb3BmIj4KICAgICAgICAgICAgICAg ICAgICAgICAgPGgyPlNjaGljaHRjb2RlcyAmYW1wOyBGYXJiY29kaWVydW5nPC9oMj4KICAgICAg ICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBpZD0iYnRuLXNjaGljaHRjb2RlLW5ldSIgY2xhc3M9 ImJ0biBidG4tZXJmb2xnIj5OZXVlciBTY2hpY2h0Y29kZTwvYnV0dG9uPgogICAgICAgICAgICAg ICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkZXRhaWxzIGNsYXNzPSJhZG1pbi1p bmZvIiBkYXRhLWluZm8ta2V5PSJzY2hpY2h0Y29kZXMiIG9wZW4+CiAgICAgICAgICAgICAgICAg ICAgICAgIDxzdW1tYXJ5PjxzcGFuIGNsYXNzPSJhZG1pbi1pbmZvLWNoZXYiPuKWuDwvc3Bhbj5I aW53ZWlzZSB6dSBTY2hpY2h0Y29kZXMgJmFtcDsgRmFyYmNvZGllcnVuZzxzcGFuIGNsYXNzPSJh ZG1pbi1pbmZvLWJhZGdlIj5BdWZrbGFwcGVuIC8gWnVrbGFwcGVuPC9zcGFuPjwvc3VtbWFyeT4K ICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWRtaW4taW5mby1ib2R5Ij4KICAg ICAgICAgICAgICAgICAgICAgICAgICAgIDxwPjxzdHJvbmc+V2FzIGlzdCBlaW4gU2NoaWNodGNv ZGU/PC9zdHJvbmc+IEVpbiBTY2hpY2h0Y29kZSBpc3QgZWluIEvDvHJ6ZWwsIGRhcyBlaW5lbiBi ZXN0aW1tdGVuIERpZW5zdCwgZWluZSBBYndlc2VuaGVpdCBvZGVyIGVpbmVuIGJlc29uZGVyZW4g U3RhdHVzIGVpbmVzIE1pdGFyYmVpdGVycyBhbiBlaW5lbSBUYWcgYmVzY2hyZWlidC4gSmVkZXIg Q29kZSBoYXQgZWluZSA8Yj5GYXJiY29kaWVydW5nPC9iPiAoSGludGVyZ3J1bmQgKyBTY2hyaWZ0 ZmFyYmUpLCBkaWUgaW0gUGxhbnVuZ3NyYXN0ZXIgZGlyZWt0IGFibGVzYmFyIGlzdC48L3A+CiAg ICAgICAgICAgICAgICAgICAgICAgICAgICA8cD48c3Ryb25nPlNwYWx0ZW4gaW4gZGVyIMOcYmVy c2ljaHQ6PC9zdHJvbmc+PC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsPgogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48Yj5GYXJiZmVsZDwvYj4g4oCUIFZvcnNj aGF1IGRlciBoaW50ZXJsZWd0ZW4gSGludGVyZ3J1bmRmYXJiZS48L2xpPgogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDxsaT48Yj5Db2RlPC9iPiDigJQgZGVyIHRlY2huaXNjaGUgU2No bMO8c3NlbCBpbiBkZXIgRGF0ZW5oYWx0dW5nICh6LkIuIDxjb2RlPkYtREdMPC9jb2RlPiwgPGNv ZGU+a3I8L2NvZGU+LCA8Y29kZT5Vcmw8L2NvZGU+KS48L2xpPgogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDxsaT48Yj5Lw7xyemVsPC9iPiDigJQgZGllIEt1cnpmb3JtLCBkaWUgaW0g UGxhbnVuZ3NyYXN0ZXIgaW4gZGVyIFplbGxlIGFuZ2V6ZWlndCB3aXJkICh6LkIuIDxjb2RlPkY8 L2NvZGU+LCA8Y29kZT5rcjwvY29kZT4pLiBLYW5uIG1pdCBkZW0gQ29kZSBpZGVudGlzY2ggc2Vp bi48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48Yj5CZXplaWNobnVu ZzwvYj4g4oCUIGRlciBMYW5nbmFtZSB6dXIgRXJsw6R1dGVydW5nICh6LkIuIOKAnkZyw7xoZGll bnN0IERHTCIpLjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAg ICAgICAgICAgICAgICAgICAgICAgPHA+PHN0cm9uZz5HcnVwcGllcnVuZzo8L3N0cm9uZz4gTWl0 IGRlbSBBdXN3YWhsbWVuw7wgb2JlbiBrYW5uc3QgZHUgendpc2NoZW4gdmVyc2NoaWVkZW5lbiBE YXJzdGVsbHVuZ2VuIHdlY2hzZWxuOjwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1 bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGI+TmFjaCBTY2hpY2h0dHlw PC9iPiAoU3RhbmRhcmQpIOKAlCDDvGJlcnNpY2h0bGljaCBncnVwcGllcnQgbmFjaCBGcsO8aC0v U3DDpHQtL05hY2h0ZGllbnN0LCBGcmVpLCBVcmxhdWIsIEtyYW5raGVpdC9BdXNmYWxsLCBGb3J0 YmlsZHVuZywgRGllbnN0ZS9FaW5zw6R0emUsIFNvbmRlcmZvcm1lbi4gRGllIFp1b3JkbnVuZyBl cmZvbGd0IGF1dG9tYXRpc2NoIGFuaGFuZCBkZXMgQ29kZS1NdXN0ZXJzLjwvbGk+CiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxiPkFscGhhYmV0aXNjaCAoQ29kZSk8L2I+IOKA lCBhbGxlIENvZGVzIGluIGVpbmVyIExpc3RlIG5hY2ggS8O8cnplbCBzb3J0aWVydC48L2xpPgog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48Yj5BbHBoYWJldGlzY2ggKEJlemVp Y2hudW5nKTwvYj4g4oCUIGFsbGUgQ29kZXMgbmFjaCBMYW5nbmFtZSBzb3J0aWVydCAoaGlsZnJl aWNoIHdlbm4gbWFuIG51ciBkZW4gTmFtZW4gZXJpbm5lcnQsIG5pY2h0IGRhcyBLw7xyemVsKS48 L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48Yj5LZWluZSBHcnVwcGll cnVuZzwvYj4g4oCUIHVuc29ydGllcnRlIE9yaWdpbmFscmVpaGVuZm9sZ2Ugd2llIGluIGRlciBE YXRlaS48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDxwPjxzdHJvbmc+UGZsZWdlIGltIFVJOjwvc3Ryb25nPiBNaXQgPGI+ 4oCeTmV1ZXIgU2NoaWNodGNvZGUiPC9iPiBsZWdzdCBkdSBlaW5lbiBuZXVlbiBDb2RlIGFuLiBB dWYgamVkZSBLYXJ0ZSBrbGlja3N0IGR1IGRhcyA8Yj5CZWFyYmVpdGVuLVN5bWJvbCAo4pyOKTwv Yj4sIHVtIEvDvHJ6ZWwsIEJlemVpY2hudW5nLCBIaW50ZXJncnVuZC0gdW5kIFNjaHJpZnRmYXJi ZSB6dSDDpG5kZXJuLiBFaW5lIExpdmUtVm9yc2NoYXUgemVpZ3QgZGlyZWt0IGRhcyBFcmdlYm5p cy4gR2Vsw7ZzY2h0IHdpcmQgw7xiZXIgZGVuIEzDtnNjaGVuLUJ1dHRvbiBpbSBFZGl0LURpYWxv ZyDigJQgYmVzdGVoZW5kZSBFaW50csOkZ2UgaW4gZGVyIFBsYW51bmcgbWl0IGRpZXNlbSBDb2Rl IGJsZWliZW4gZXJoYWx0ZW4sIHdlcmRlbiBhYmVyIG9obmUgRmFyYmUgZGFyZ2VzdGVsbHQuPC9w PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+PHN0cm9uZz5Db2RlIC8gdGVjaG5pc2No ZXIgU2NobMO8c3NlbDo8L3N0cm9uZz4gRGVyIENvZGUgaXN0IGRlciBJZGVudGlmaWVyIGluIGRl ciBEYXRlbmhhbHR1bmcgdW5kIG1pdCBhbGxlbiBQbGFudW5ncy1FaW50csOkZ2VuIHZlcmtuw7xw ZnQuIEJlaW0gTmV1YW5sZWdlbiBmcmVpIHfDpGhsYmFyLCBiZWltIHNww6R0ZXJlbiBCZWFyYmVp dGVuIHNjaHJlaWJnZXNjaMO8dHp0IOKAlCBlaW5lIMOEbmRlcnVuZyB3w7xyZGUgYWxsZSBiZXN0 ZWhlbmRlbiBFaW50csOkZ2UgaW5rb25zaXN0ZW50IG1hY2hlbi4gV2VubiBkZXIgQ29kZSB1bWJl bmFubnQgd2VyZGVuIG11c3M6IG5ldSBhbmxlZ2VuLCBhbHRlIEVpbnRyw6RnZSBtYW51ZWxsIMOk bmRlcm4sIGFsdGVuIENvZGUgbMO2c2NoZW4uPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAg ICAgPHA+PHN0cm9uZz5UaXBwOjwvc3Ryb25nPiBGYXJiZmFtaWxpZW4ga29uc2lzdGVudCBlaW5z ZXR6ZW46IHJvdCA9IEZyw7xoZGllbnN0LCBibGF1ID0gU3DDpHRkaWVuc3QsIGdyw7xuID0gTmFj aHRkaWVuc3QsIGdyYXUgPSBGcmVpL0hPLCByb3PDqSA9IEtyYW5raGVpdCwgbGlsYSA9IExlaHJn YW5nLiBTbyBlcmtlbm50IGRhcyBBdWdlIG9obmUgTGVzZW4gZGllIFNjaGljaHQuPC9wPgogICAg ICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2RldGFpbHM+ CiAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0ic2NoaWNodGNvZGUtdm9yc2NoYXUiPjwvZGl2 PgogICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgPCEtLSBUYWI6IE1pa3Jv dGVhbXMg4oCUIFBlcnNvbmVuLUdydXBwZW4gcHJvIFN0YW5kb3J0K0RpZW5zdGdydXBwZSAtLT4K ICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFkbWluLXRhYiB2ZXJzdGVja3QiIGlkPSJhZG1p bi10YWItbWlrcm90ZWFtcyI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWRtaW4t a29wZiI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxoMj5NaWtyb3RlYW1zPC9oMj4KICAgICAg ICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGV0YWlscyBjbGFzcz0i YWRtaW4taW5mbyIgZGF0YS1pbmZvLWtleT0ibWlrcm90ZWFtcyI+CiAgICAgICAgICAgICAgICAg ICAgICAgIDxzdW1tYXJ5PjxzcGFuIGNsYXNzPSJhZG1pbi1pbmZvLWNoZXYiPuKWuDwvc3Bhbj5X b3p1IE1pa3JvdGVhbXM/PHNwYW4gY2xhc3M9ImFkbWluLWluZm8tYmFkZ2UiPkF1ZmtsYXBwZW4g LyBadWtsYXBwZW48L3NwYW4+PC9zdW1tYXJ5PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2 IGNsYXNzPSJhZG1pbi1pbmZvLWJvZHkiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+ PHN0cm9uZz5XYXMgc2luZCBNaWtyb3RlYW1zPzwvc3Ryb25nPiBFaW5lIE1pa3JvdGVhbS1EZWZp bml0aW9uIGZhc3N0IGRpZSBQZXJzb25lbiB6dXNhbW1lbiwgZGllIGFuIGVpbmVtIFN0YW5kb3J0 IGdlbWVpbnNhbSBlaW5lIERpZW5zdGdydXBwZSBiaWxkZW4gKHouQi4g4oCeS2FtZW4tQSIgPSBk aWUgREdMLVZlcmFudHdvcnRsaWNoZW4gZGVyIEdydXBwZSBBIGFtIFN0YW5kb3J0IEthbWVuKS4g RGllIFN0YXRpc3RpayAoSGVhdG1hcCArIFRhZ2VzLUFudGVpbGUgcHJvIFRlYW0pIHdlcnRldCBk YW1pdCBhdXMsIHdpZSBvZnQgZGllIGVpbnplbG5lbiBUZWFtcyBnZW1laW5zYW0gaW0gRGllbnN0 IHNpbmQuPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+PHN0cm9uZz5QZmxlZ2U6 PC9zdHJvbmc+IFBybyBFaW50cmFnIE5hbWUsIFN0YW5kb3J0LUvDvHJ6ZWwgKDIgQnVjaHN0YWJl biBhdXMgZGVyIFN0YW5kb3J0ZS1MaXN0ZSwgei5CLiBLQS9IQS9CTyksIERpZW5zdGdydXBwZW4t S8O8cnplbCAoQS9CL0MvV0QpIHVuZCBkaWUgenVnZXdpZXNlbmVuIFBlcnNvbmVuLiBSZWloZW5m b2xnZSBpbiBkZXIgVGFiZWxsZSB3aXJrdCBzaWNoIGF1ZiBkaWUgU3RhdGlzdGlrLURhcnN0ZWxs dW5nIGF1cy48L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD48c3Ryb25nPkRlZmF1 bHQtUmVpaGVuZm9sZ2UgbmFjaCBTdGFuZG9ydDo8L3N0cm9uZz4gSGF1cHR3YWNoZW4gb2JlbiAo S0EsIEhBKSwgZGFubiBkaWUgYW5kZXJlbi4gRGllIElEIGlzdCB0ZWNobmlzY2ggdW5kIHNvbGx0 ZSBzcHJlY2hlbmQgYmxlaWJlbiAoei5CLiA8Y29kZT50X0tBX0E8L2NvZGU+KS48L3A+CiAgICAg ICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGV0YWlscz4K CiAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9ImFkbWluLXNla3Rpb24iIGlkPSJh ZG1pbi1zZWt0aW9uLW1pa3JvdGVhbXMiPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNs YXNzPSJhZG1pbi1zZWt0aW9uLWtvcGYiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgz Pk1pa3JvdGVhbS1MaXN0ZTwvaDM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9u IGlkPSJidG4tbWlrcm90ZWFtLW5ldSIgY2xhc3M9ImJ0biBidG4tZXJmb2xnIj5OZXVlcyBNaWty b3RlYW08L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAg ICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0iYWRtaW4tdGFiZWxsZSIgaWQ9Im1pa3JvdGVhbXMt dGFiZWxsZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGhlYWQ+CiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICA8dGggc3R5bGU9IndpZHRoOjUwcHgiPlBvczwvdGg+CiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDx0aCBzdHlsZT0id2lkdGg6MTMwcHgiPklEPC90aD4KICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPk5hbWU8L3RoPgogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICA8dGggc3R5bGU9IndpZHRoOjkwcHgiIHRpdGxlPSJTdGFuZG9y dC1Lw7xyemVsIGF1cyBkZXIgU3RhbmRvcnRlLUxpc3RlIChLQS9IQS9CTy8uLi4pIj5TdGFuZG9y dDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBzdHlsZT0id2lk dGg6OTBweCIgdGl0bGU9IkRpZW5zdGdydXBwZW4tS8O8cnplbCAoQS9CL0MvV0QvLi4uKSI+R3J1 cHBlPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIHN0eWxlPSJ3 aWR0aDo5MHB4IiB0aXRsZT0iQW56YWhsIHp1Z2V3aWVzZW5lIFBlcnNvbmVuIj5QZXJzb25lbjwv dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBzdHlsZT0id2lkdGg6 MjAwcHgiPkFrdGlvbmVuPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3Ry PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aGVhZD4KICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDx0Ym9keSBpZD0ibWlrcm90ZWFtcy10Ym9keSI+PC90Ym9keT4KICAgICAgICAg ICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBp ZD0iYnRuLW1pa3JvdGVhbXMtc3BlaWNoZXJuIiBjbGFzcz0iYnRuIGJ0bi1wcmltYWVyIiBzdHls ZT0ibWFyZ2luLXRvcDoxMnB4Ij5NaWtyb3RlYW1zIHNwZWljaGVybjwvYnV0dG9uPgogICAgICAg ICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAg ICAgICAgIDwhLS0gVGFiOiBTdGFuZG9ydGUgJiBTY2hpY2h0Zm9sZ2UgLS0+CiAgICAgICAgICAg ICAgICA8ZGl2IGNsYXNzPSJhZG1pbi10YWIgdmVyc3RlY2t0IiBpZD0iYWRtaW4tdGFiLXN0YW5k b3J0ZSI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWRtaW4ta29wZiI+CiAgICAg ICAgICAgICAgICAgICAgICAgIDxoMj5TdGFuZG9ydGUgJmFtcDsgU2NoaWNodGZvbGdlPC9oMj4K ICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBpZD0iYnRuLXN0YW5kb3J0LW5ldSIgY2xh c3M9ImJ0biBidG4tZXJmb2xnIj5OZXVlciBTdGFuZG9ydDwvYnV0dG9uPgogICAgICAgICAgICAg ICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkZXRhaWxzIGNsYXNzPSJhZG1pbi1p bmZvIiBkYXRhLWluZm8ta2V5PSJzdGFuZG9ydGUiIG9wZW4+CiAgICAgICAgICAgICAgICAgICAg ICAgIDxzdW1tYXJ5PjxzcGFuIGNsYXNzPSJhZG1pbi1pbmZvLWNoZXYiPuKWuDwvc3Bhbj5IaW53 ZWlzZSB6dSBTdGFuZG9ydGVuICZhbXA7IFNjaGljaHRmb2xnZTxzcGFuIGNsYXNzPSJhZG1pbi1p bmZvLWJhZGdlIj5BdWZrbGFwcGVuIC8gWnVrbGFwcGVuPC9zcGFuPjwvc3VtbWFyeT4KICAgICAg ICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWRtaW4taW5mby1ib2R5Ij4KICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDxwPjxzdHJvbmc+U3RhbmRvcnRlPC9zdHJvbmc+IHNpbmQgZGll IEFyYmVpdHNvcnRlIGRlciBWSTMgKEFybnNiZXJnLCBCb2NodW0sIERvcnRtdW5kIOKApikuIEpl ZGVyIFN0YW5kb3J0IGhhdCBlaW5lIGVpZ2VuZSBTY2hpY2h0cm90YXRpb24gZsO8ciBkaWUgRGll bnN0Z3J1cHBlbiBBL0IvQywgZGllIGltIEhlYWRlciBkZXIgUGxhbnVuZyBhbHMg4oCeU2NoaWNo dGZvbGdlIi1aZWlsZSBhbmdlemVpZ3Qgd2lyZCAoc29mZXJuIGRpZSBBbnplaWdlIGltIFRhYiA8 Yj5GdW5rdGlvbmVuPC9iPiBha3RpdmllcnQgaXN0KS48L3A+CiAgICAgICAgICAgICAgICAgICAg ICAgICAgICA8cD48c3Ryb25nPlJvdGF0aW9ucy1NdXN0ZXI6PC9zdHJvbmc+PC9wPgogICAgICAg ICAgICAgICAgICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IDxsaT48Yj5BQkM8L2I+ID0gQS1GcsO8aCAvIEItU3DDpHQgLyBDLU5hY2h0PC9saT4KICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGI+QkNBPC9iPiA9IEItRnLDvGggLyBDLVNw w6R0IC8gQS1OYWNodDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxi PkNBQjwvYj4gPSBDLUZyw7xoIC8gQS1TcMOkdCAvIEItTmFjaHQ8L2xpPgogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDxsaT48Yj5Qb29sPC9iPiA9IGluZGl2aWR1ZWxsZSBFaW50ZWls dW5nLCBrZWluZSBmZXN0ZSBSb3RhdGlvbiAoZsO8ciBmbGV4aWJsZSBFaW5zYXR6cG9vbHMpPC9s aT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAg ICAgICAgICA8cD48c3Ryb25nPlJoeXRobXVzIHBmbGVnZW46PC9zdHJvbmc+IERlciBrb25rcmV0 ZSBaeWtsdXMgKHouQi4gd8O2Y2hlbnRsaWNoIHdlY2hzZWxuZCBvZGVyIDMtVGFnZS1SaHl0aG11 cykgd2lyZCDDvGJlciBkZW4gUmh5dGhtdXMtR2VuZXJhdG9yIHBybyBTdGFuZG9ydCBlaW5nZXN0 ZWxsdC4gRGVyIEdlbmVyYXRvciBzY2hyZWlidCBmw7xyIGplZGVzIERhdHVtIGVpbmUgU2NoaWNo dGZvbGdlIGluIGRpZSBKU09OIOKAlCBkaWUgQW56ZWlnZSBpbSBIZWFkZXIgemllaHQgZGFubiBm w7xyIGplZGVuIFRhZyBkZW4gaGludGVybGVndGVuIFdlcnQuPC9wPgogICAgICAgICAgICAgICAg ICAgICAgICAgICAgPHA+PHN0cm9uZz5TcGFsdGVuOjwvc3Ryb25nPjwvcD4KICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+ PGI+TmFtZTwvYj4g4oCUIHZvbGxlciBTdGFuZG9ydC1OYW1lICh6LkIuIOKAnkFybnNiZXJnIiku PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGI+S8O8cnplbDwvYj4g 4oCUIEt1cnpmb3JtIGbDvHIgZGllIE9FLVp1b3JkbnVuZyBpbiBkZXIgUGVyc29uYWwtTGlzdGUg KHouQi4g4oCeQVIiKS48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48 Yj5Qb29sPC9iPiDigJQgQ2hlY2tib3g7IHNjaGFsdGV0IGRpZSBmZXN0ZSBSb3RhdGlvbiBhdXMu PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGI+U2NoaWNodGZvbGdl ICgxNCBUYWdlKTwvYj4g4oCUIFZvcnNjaGF1IGRlciBuw6RjaHN0ZW4gMTQgVGFnZSwgZmFyYmxp Y2ggY29kaWVydC48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48Yj5B a3Rpb25lbjwvYj4g4oCUIFJoeXRobXVzLUdlbmVyYXRvciDDtmZmbmVuIG9kZXIgU3RhbmRvcnQg bMO2c2NoZW4uPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAg ICAgICAgICAgICAgICAgICAgICA8cD48c3Ryb25nPkhpbndlaXM6PC9zdHJvbmc+IERpZSBSZWlo ZW5mb2xnZSBkZXIgU3RhbmRvcnRlIGluIGRlciBUYWJlbGxlIGJlc3RpbW10IGF1Y2ggZGllIFJl aWhlbmZvbGdlIGRlciBaZWlsZW4gaW0gSGVhZGVyIChvYmVuID0gZXJzdGUgWmVpbGUpLjwvcD4K ICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kZXRh aWxzPgogICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0iYWRtaW4tdGFiZWxsZSIgaWQ9 InN0YW5kb3J0ZS10YWJlbGxlIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRoZWFkPgogICAg ICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDx0aD5OYW1lPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggc3R5 bGU9IndpZHRoOjYwcHgiPkvDvHJ6ZWw8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDx0aCBzdHlsZT0id2lkdGg6NzBweCI+UG9vbDwvdGg+CiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgPHRoPlNjaGljaHRmb2xnZSAoZXJzdGUgMTQgVGFnZSBhYiBoZXV0ZSk8L3Ro PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBzdHlsZT0id2lkdGg6MTYwcHgi PkFrdGlvbmVuPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAg ICAgICAgICAgICAgICAgIDwvdGhlYWQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0Ym9keSBp ZD0ic3RhbmRvcnRlLXRib2R5Ij48L3Rib2R5PgogICAgICAgICAgICAgICAgICAgIDwvdGFibGU+ CiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBpZD0iYnRuLXN0YW5kb3J0ZS1zcGVpY2hlcm4i IGNsYXNzPSJidG4gYnRuLXByaW1hZXIiIHN0eWxlPSJtYXJnaW4tdG9wOjE2cHgiPlN0YW5kb3J0 ZSBzcGVpY2hlcm48L2J1dHRvbj4KICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAg ICAgIDwhLS0gVGFiOiBFcnNjaGVpbnVuZ3NiaWxkIOKAlCBNYXJraWVydW5ncy1FZGl0b3IgbWl0 IExpdmUtVm9yc2NoYXUgLS0+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhZG1pbi10YWIg dmVyc3RlY2t0IiBpZD0iYWRtaW4tdGFiLWVyc2NoZWludW5nc2JpbGQiPgogICAgICAgICAgICAg ICAgICAgIDxkaXYgY2xhc3M9ImFkbWluLWtvcGYiPgogICAgICAgICAgICAgICAgICAgICAgICA8 aDI+RXJzY2hlaW51bmdzYmlsZDwvaDI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwIHN0eWxl PSJtYXJnaW46NnB4IDAgMCAwO2ZvbnQtc2l6ZToxMnB4O2NvbG9yOnZhcigtLXRleHQtbXV0ZWQp Ij5WaXN1ZWxsZSBNYXJraWVydW5nZW4gaW0gUGxhbnRhZmVsLUtvcGYgdW5kIGJlaW0gTGl2ZS1T eW5jIGluZGl2aWR1ZWxsIGFucGFzc2VuLiDDhG5kZXJ1bmdlbiBzaW5kIHNvZm9ydCBzaWNodGJh cjsgc2llIHdlcmRlbiBlcnN0IGJlaW0gS2xpY2sgYXVmIOKAnlNwZWljaGVybiIgcGVyc2lzdGll cnQuPC9wPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxk aXYgaWQ9ImVyc2NoZWludW5nc2JpbGQtaW5oYWx0Ij48L2Rpdj4KICAgICAgICAgICAgICAgIDwv ZGl2PgoKICAgICAgICAgICAgICAgIDwhLS0gVGFiOiBTdGF0aXN0aWstTGF5b3V0IChTVS1vbmx5 KSDigJQgUmVpaGVuZm9sZ2UvQnJlaXRlL1NpY2h0YmFya2VpdAogICAgICAgICAgICAgICAgICAg ICBhbGxlciBTdGF0aXN0aWstS2FjaGVsbiBpbSB2aXN1ZWxsZW4gNi1TcGFsdGVuLVJhc3Rlci4g LS0+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhZG1pbi10YWIgdmVyc3RlY2t0IiBpZD0i YWRtaW4tdGFiLXN0YXRpc3Rpay1sYXlvdXQiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xh c3M9ImFkbWluLWtvcGYiPgogICAgICAgICAgICAgICAgICAgICAgICA8aDI+U3RhdGlzdGlrLUxh eW91dDwvaDI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwIHN0eWxlPSJtYXJnaW46NnB4IDAg MCAwO2ZvbnQtc2l6ZToxMnB4O2NvbG9yOnZhcigtLXRleHQtbXV0ZWQpIj5CcmVpdGUgKDE6MSB2 b2xsIMK3IDE6MiBoYWxiIMK3IDE6MyBkcml0dGVsKSB1bmQgUmVpaGVuZm9sZ2UgZGVyIFN0YXRp c3Rpay1LYWNoZWxuIGbDvHIgPHN0cm9uZz5hbGxlPC9zdHJvbmc+IGZlc3RsZWdlbi4gS2xpY2sg YXVmIGVpbmUgS2FjaGVsIHdlY2hzZWx0IGRpZSBCcmVpdGUsIFppZWhlbiDDpG5kZXJ0IGRpZSBS ZWloZW5mb2xnZSwgZGFzIEF1Z2Ugc2NoYWx0ZXQgc2llIHNpY2h0YmFyL3Vuc2ljaHRiYXIuIFNj aHdlcmUgUGFuZWxzIChIZWF0bWFwcywgRGV0YWlsYW5hbHlzZSkgYmxlaWJlbiBhdWYgdm9sbGVy IEJyZWl0ZS48L3A+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAg ICAgPGRpdiBpZD0ic3RhdGlzdGlrLWxheW91dC1pbmhhbHQiPjwvZGl2PgogICAgICAgICAgICAg ICAgPC9kaXY+CgogICAgICAgICAgICAgICAgPCEtLSBUYWI6IFN0YXRpc3Rpay1CdWlsZGVyIOKA lCBtZWhyZGltZW5zaW9uYWxlciBOb0NvZGUtWnVzYW1tZW5iYXUKICAgICAgICAgICAgICAgICAg ICAgZWlnZW5lciBBdXN3ZXJ0dW5nZW4gKEZpbHRlciAtPiBEaW1lbnNpb25lbiAtPiBLZW5uemFo bCAtPgogICAgICAgICAgICAgICAgICAgICBEaWFncmFtbXR5cCkgbWl0IExpdmUtRmx1c3NkaWFn cmFtbSwgVGVzdGVuLVZvcnNjaGF1IHVuZAogICAgICAgICAgICAgICAgICAgICBTcGVpY2hlcm4g YWxzIEthY2hlbC4gLS0+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhZG1pbi10YWIgdmVy c3RlY2t0IiBpZD0iYWRtaW4tdGFiLXN0YXRpc3Rpay1idWlsZGVyIj4KICAgICAgICAgICAgICAg ICAgICA8ZGl2IGNsYXNzPSJhZG1pbi1rb3BmIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGgy PlN0YXRpc3Rpay1CdWlsZGVyPC9oMj4KICAgICAgICAgICAgICAgICAgICAgICAgPHAgc3R5bGU9 Im1hcmdpbjo2cHggMCAwIDA7Zm9udC1zaXplOjEycHg7Y29sb3I6dmFyKC0tdGV4dC1tdXRlZCki PkVpZ2VuZSBBdXN3ZXJ0dW5nZW4genVzYW1tZW5rbGlja2VuOiBEYXRlbiBmaWx0ZXJuLCBEaW1l bnNpb25lbiB3w6RobGVuLCBLZW5uemFobCArIERpYWdyYW1tdHlwIGJlc3RpbW1lbi4gRGFzIEZs dXNzZGlhZ3JhbW0gemVpZ3QgZGllIExvZ2lrIGxpdmUsIOKAnlRlc3RlbiIgYmF1dCBkaWUgU3Rh dGlzdGlrIHNvZm9ydC4g4oCeQWxzIEthY2hlbCBzcGVpY2hlcm4iIG1hY2h0IHNpZSBmw7xyIGFs bGUgaW0gU3RhdGlzdGlrLVRhYiBzaWNodGJhciAoQW5vcmRudW5nIGltIFN0YXRpc3Rpay1MYXlv dXQpLjwvcD4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8 ZGl2IGlkPSJzdGF0aXN0aWstYnVpbGRlci1pbmhhbHQiPjwvZGl2PgogICAgICAgICAgICAgICAg PC9kaXY+CgogICAgICAgICAgICAgICAgPCEtLSBUYWI6IEtvbmZpZ3VyYXRpb24gKyBGdW5rdGlv bmVuIChwZXIgU3ViLU5hdiB1bXNjaGFsdGJhcikgLS0+CiAgICAgICAgICAgICAgICA8ZGl2IGNs YXNzPSJhZG1pbi10YWIgdmVyc3RlY2t0IiBpZD0iYWRtaW4tdGFiLWVpbnN0ZWxsdW5nZW4iPgog ICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFkbWluLWtvcGYiPgogICAgICAgICAgICAg ICAgICAgICAgICA8aDI+S29uZmlndXJhdGlvbiAmYW1wOyBGdW5rdGlvbmVuPC9oMj4KICAgICAg ICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgPG5hdiBjbGFzcz0iYWRt aW4tc3VibmF2IiBhcmlhLWxhYmVsPSJTeXN0ZW0tS29uZmlndXJhdGlvbi1TdWItTmF2aWdhdGlv biI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0i YWRtaW4tc3VibmF2LWJ0biBha3RpdiIgZGF0YS1zdWJ0YWI9ImVpbnN0ZWxsdW5nZW4iPkdsb2Jh bGUgRWluc3RlbGx1bmdlbjwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9u IHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImFkbWluLXN1Ym5hdi1idG4iIGRhdGEtc3VidGFiPSJmZWF0 dXJlcyI+RnVua3Rpb25lbiBlaW4tL2F1c2JsZW5kZW48L2J1dHRvbj4KICAgICAgICAgICAgICAg ICAgICA8L25hdj4KCiAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9ImFkbWluLXNl a3Rpb24iIGlkPSJhZG1pbi1zZWt0aW9uLWVpbnN0ZWxsdW5nZW4iIGRhdGEtc3VidGFiLXNla3Rp b249ImVpbnN0ZWxsdW5nZW4iPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJh ZG1pbi1zZWt0aW9uLWtvcGYiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgzPkdsb2Jh bGUgRWluc3RlbGx1bmdlbjwvaDM+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAg ICAgICAgICAgICAgICAgICAgICA8ZGV0YWlscyBjbGFzcz0iYWRtaW4taW5mbyIgZGF0YS1pbmZv LWtleT0iZWluc3RlbGx1bmdlbiIgb3Blbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxz dW1tYXJ5PjxzcGFuIGNsYXNzPSJhZG1pbi1pbmZvLWNoZXYiPuKWuDwvc3Bhbj5IaW53ZWlzZSB6 dSBkZW4gZ2xvYmFsZW4gRWluc3RlbGx1bmdlbjxzcGFuIGNsYXNzPSJhZG1pbi1pbmZvLWJhZGdl Ij5BdWZrbGFwcGVuIC8gWnVrbGFwcGVuPC9zcGFuPjwvc3VtbWFyeT4KICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFkbWluLWluZm8tYm9keSI+CiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgPHA+PHN0cm9uZz5QbGFudW5nc2phaHI6PC9zdHJvbmc+IERhcyBK YWhyLCBmw7xyIGRhcyBkaWUgUGxhbnVuZyBha3R1ZWxsIGdlcGZsZWd0IHdpcmQuIEJlZWluZmx1 c3N0IGRpZSBHZWJ1cnRzdGFnLUFuemVpZ2UgKHJlY2huZXQgQWx0ZXIgYmFzaWVyZW5kIGF1ZiBk aWVzZW0gSmFocikgdW5kIGRpZSBWb3JzY2hsw6RnZSBiZWltIEFubGVnZW4gdm9uIEZlaWVydGFn ZW4vRmVyaWVuLiBadW0gSmFocmVzd2VjaHNlbCBoaWVyIGFrdHVhbGlzaWVyZW4uPC9wPgogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPjxzdHJvbmc+SW5mb3RleHQ6PC9zdHJvbmc+ IEt1cnplciBIaW53ZWlzdGV4dCAoei5CLiDigJ5SZWloZW5mb2xnZSBhdWYgV3Vuc2NoIGRlciBG w7xzdCBhbmdlcGFzc3QuIC9XaXQiKSwgZGVyIGltIEluZm9ybWF0aW9uc2ZlbnN0ZXIgb2JlbiBw cm9taW5lbnQgZXJzY2hlaW50LiBHdXQgZ2VlaWduZXQgZsO8ciBrdXJ6ZSDigJ5CcmVha2luZyBO ZXdzIiBhbiBkaWUgTnV0emVyLjwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8 cD48c3Ryb25nPlN1cHBvcnRpbmZvOjwvc3Ryb25nPiBBbnNwcmVjaHBhcnRuZXIgYmVpIGZhY2hs aWNoZW4gb2RlciB0ZWNobmlzY2hlbiBGcmFnZW4uIEVyc2NoZWludCBpbSBJbmZvcm1hdGlvbnNm ZW5zdGVyIGRhcnVudGVyLiBIaWVyIFRlbGVmb25udW1tZXJuLCBNYWlsYWRyZXNzZW4gdW5kIGRp ZSBmYWNobGljaGUgVmVyYW50d29ydHVuZyBhbmdlYmVuLjwvcD4KICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICA8cD48c3Ryb25nPlNjaGxpZcOfaW5mbzo8L3N0cm9uZz4gSGlud2VpcyB6 dW0gQXV0by1TaHV0ZG93bi1WZXJoYWx0ZW4sIGRlciBpbSBJbmZvcm1hdGlvbnNmZW5zdGVyIGFu Z2V6ZWlndCB3aXJkLiBQbGF0emhhbHRlciA8Y29kZT57bWludXRlbn08L2NvZGU+IHdpcmQgYXV0 b21hdGlzY2ggZXJzZXR6dC48L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+ PHN0cm9uZz5TcGVpY2hlcm46PC9zdHJvbmc+IMOEbmRlcnVuZ2VuIHdlcmRlbiBudXIgZHVyY2gg ZGVuIFNwZWljaGVybi1CdXR0b24gw7xiZXJub21tZW4uIEVpbiBSZWxvYWQgZGVyIFNlaXRlIGlz dCBkYW5hY2ggbmljaHQgbsO2dGlnLjwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwv ZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2RldGFpbHM+CiAgICAgICAgICAgICAgICAg ICAgICAgIDxkaXYgY2xhc3M9ImVpbnN0ZWxsdW5nZW4tZm9ybSI+CiAgICAgICAgICAgICAgICAg ICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb3JtLWdydXBwZSI+CiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgPGxhYmVsIGZvcj0iZWlucy1qYWhyIj5QbGFudW5nc2phaHI8L2xhYmVsPgog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9ImRpc3BsYXk6ZmxleDtn YXA6MTJweDthbGlnbi1pdGVtczpjZW50ZXI7ZmxleC13cmFwOndyYXAiPgogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0ibnVtYmVyIiBpZD0iZWlucy1qYWhy IiBjbGFzcz0iZm9ybS1pbnB1dCIgbWluPSIyMDIwIiBtYXg9IjIwOTkiIHN0eWxlPSJ3aWR0aDox MjBweCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gaWQ9ImJ0 bi1qYWhyZXN3ZWNoc2VsIiBjbGFzcz0iYnRuIGJ0bi1zZWsiIHR5cGU9ImJ1dHRvbiIgdGl0bGU9 IldlY2hzZWx0IGRhcyBQbGFudW5nc2phaHIgYXVmIGRhcyBsaW5rcyBlaW5nZXN0ZWxsdGUgSmFo ciDigJQgdm9yIG9kZXIgenVyw7xjay4gQmVzdMOkdGlndW5nICsgUmVsb2FkLCBrZWluIERhdGVu dmVybHVzdC4iPkF1ZiBlaW5nZXN0ZWxsdGVzIEphaHIgd2VjaHNlbG48L2J1dHRvbj4KICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICA8c21hbGwgc3R5bGU9ImRpc3BsYXk6YmxvY2s7Y29sb3I6dmFyKC0tdGV4dC1tdXRl ZCk7bWFyZ2luLXRvcDo2cHgiPkdld8O8bnNjaHRlcyBKYWhyIGxpbmtzIGVpbnN0ZWxsZW4gdW5k IGF1ZiDigJ5BdWYgZWluZ2VzdGVsbHRlcyBKYWhyIHdlY2hzZWxuIiBrbGlja2VuIOKAlCBkaWUg QW5zaWNodCBzcHJpbmd0IGF1ZiBkYXMgZ2V3w6RobHRlIEphaHIgKDxiPnZvciBvZGVyIHp1csO8 Y2s8L2I+KSB1bmQgd2lyZCBuZXUgZ2VsYWRlbi4gRGFzIGJsb8OfZSDDhG5kZXJuIGRlcyBGZWxk ZXMgc3BlaWNoZXJ0IG5vY2ggbmljaHRzOyBlcnN0IGRlciBCdXR0b24gd2VjaHNlbHQuIERpZSBQ bGFudW5nc2Fuc2ljaHQgemVpZ3QgenVzw6R0emxpY2ggZGVuIEphbnVhciBkZXMgRm9sZ2VqYWhy ZXMgYWxzIFZvcnBsYW51bmdzYmVyZWljaDsgYmVyZWl0cyBkb3J0IGdlcGxhbnRlIERpZW5zdGUg YmxlaWJlbiB1bnRlciBpaHJlbSBEYXR1bSBlcmhhbHRlbi4gS2VpbiBEYXRlbnZlcmx1c3QuPC9z bWFsbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAg ICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9ybS1ncnVwcGUiPgogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDxsYWJlbCBmb3I9ImVpbnMtcGFwaWVya29yYi10YWdlIj5QYXBpZXJrb3Ji LUF1ZmJld2FocnVuZyAoVGFnZSk8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDxpbnB1dCB0eXBlPSJudW1iZXIiIGlkPSJlaW5zLXBhcGllcmtvcmItdGFnZSIgY2xhc3M9 ImZvcm0taW5wdXQiIG1pbj0iMCIgbWF4PSIzNjUiIHN0eWxlPSJ3aWR0aDoxMjBweCI+CiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNtYWxsIHN0eWxlPSJkaXNwbGF5OmJsb2NrO2Nv bG9yOnZhcigtLXRleHQtbXV0ZWQpO21hcmdpbi10b3A6NHB4Ij5XaWUgdmllbGUgVGFnZSBzb2Z0 LWdlbMO2c2NodGUgUGVyc29uZW4gaW0gUGFwaWVya29yYiB2ZXJibGVpYmVuLCBiZXZvciBzaWUg YmVpbSBuw6RjaHN0ZW4gTMO2c2NoLVZvcmdhbmcgZW5kZ8O8bHRpZyBlbnRmZXJudCB3ZXJkZW4u IDxjb2RlPjA8L2NvZGU+ID0gc29mb3J0IGJlaW0gbsOkY2hzdGVuIEzDtnNjaC1Wb3JnYW5nIGF1 ZnLDpHVtZW4uPC9zbWFsbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAg ICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9ybS1ncnVwcGUiPgogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9ImVpbnMtZW1haWwtZG9tYWluIj5F LU1haWwgQXV0by1TdWZmaXggRG9tYWluPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgaWQ9ImVpbnMtZW1haWwtZG9tYWluIiBjbGFzcz0i Zm9ybS1pbnB1dCIgcGxhY2Vob2xkZXI9IkBwb2xpemVpLm5ydy5kZSIgc3R5bGU9IndpZHRoOjI0 MHB4Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c21hbGwgc3R5bGU9ImRpc3Bs YXk6YmxvY2s7Y29sb3I6dmFyKC0tdGV4dC1tdXRlZCk7bWFyZ2luLXRvcDo0cHgiPkRpZXNlIERv bWFpbiB3aXJkIGF1dG9tYXRpc2NoIGFuZ2Vow6RuZ3QsIHdlbm4gYmVpbSBCZWFyYmVpdGVuIGVp bmVyIFBlcnNvbmVuLUUtTWFpbCBudXIgZGVyIGxva2FsZSBUZWlsIGVpbmdlZ2ViZW4gd2lyZCAo ei4gQi4gPGVtPk11ZWxsZXI8L2VtPiDihpIgPGVtPk11ZWxsZXJAcG9saXplaS5ucncuZGU8L2Vt PikuIFdpcmt0IG51ciwgd2VubiBkYXMgRmVhdHVyZSA8ZW0+4oCeRS1NYWlsOiBBdXRvLVN1ZmZp eCI8L2VtPiBha3RpdiBpc3QuPC9zbWFsbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwv ZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9ybS1ncnVwcGUi PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9ImVpbnMtYXZhdGFy LWdyb2Vzc2UiPlByb2ZpbGJpbGQtWmllbGdyw7bDn2UgKFBpeGVsLCBxdWFkcmF0aXNjaCk8L2xh YmVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJudW1iZXIi IGlkPSJlaW5zLWF2YXRhci1ncm9lc3NlIiBjbGFzcz0iZm9ybS1pbnB1dCIgbWluPSIxMDAiIG1h eD0iNjAwIiBzdGVwPSIyMCIgc3R5bGU9IndpZHRoOjEyMHB4Ij4KICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICA8c21hbGwgc3R5bGU9ImRpc3BsYXk6YmxvY2s7Y29sb3I6dmFyKC0tdGV4 dC1tdXRlZCk7bWFyZ2luLXRvcDo0cHgiPkJlaW0gVXBsb2FkIHdpcmQgZGFzIGhvY2hnZWxhZGVu ZSBCaWxkIGF1ZiBkaWVzZSBLYW50ZW5sw6RuZ2UgaGVydW50ZXJnZXJlY2huZXQgdW5kIGFscyBK UEVHIGdlc3BlaWNoZXJ0LiBHcsO2w59lciA9IHNjaMOkcmZlciwgYWJlciBtZWhyIFNwZWljaGVy IHBybyBCaWxkLiBTdGFuZGFyZDogPGNvZGU+MjAwPC9jb2RlPiAofjEw4oCTMjUmbmJzcDtLQiBw cm8gRGF0ZWkpLiBXZXJ0ZSB6d2lzY2hlbiAxMDAgdW5kIDYwMCBlcmxhdWJ0Ljwvc21hbGw+CiAg ICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDxkaXYgY2xhc3M9ImZvcm0tZ3J1cHBlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICA8bGFiZWwgZm9yPSJlaW5zLWVkaXRvci10cmlnZ2VyIj5TY2hpY2h0LUVkaXRvciDDtmZm bmVuIG1pdDwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdCBp ZD0iZWlucy1lZGl0b3ItdHJpZ2dlciIgY2xhc3M9ImZvcm0taW5wdXQiIHN0eWxlPSJ3aWR0aDoy NDBweCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9 InJlY2h0cyI+UmVjaHRza2xpY2sgKFN0YW5kYXJkKTwvb3B0aW9uPgogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJsaW5rcyI+TGlua3NrbGljazwvb3B0 aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJt aXR0ZSI+TWF1c3JhZC1LbGljayAoTWl0dGUpPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9ImRvcHBlbCI+RG9wcGVsa2xpY2s8L29wdGlv bj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD4KICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICA8c21hbGwgc3R5bGU9ImRpc3BsYXk6YmxvY2s7Y29sb3I6dmFy KC0tdGV4dC1tdXRlZCk7bWFyZ2luLXRvcDo0cHgiPkxlZ3QgZmVzdCwgd2VsY2hlIE1hdXMtQWt0 aW9uIGluIGRlciBQbGFudGFmZWwgZGFzIERyb3Bkb3duIHp1ciBTY2hpY2h0YXVzd2FobCDDtmZm bmV0LiBFaW4gZWluZmFjaGVyIDxzdHJvbmc+TGlua3NrbGljayBtYXJraWVydDwvc3Ryb25nPiBk aWUgWmVsbGUgaW1tZXIgbnVyIChhdcOfZXIg4oCeTGlua3NrbGljayIgaXN0IGhpZXIgZ2V3w6Ro bHQpLiBXaXJrdCBmw7xyIGFsbGUgTnV0emVyOyBncmVpZnQgbmFjaCBkZW0gbsOkY2hzdGVuIE5l dWxhZGVuIGRlciBTZWl0ZS48L3NtYWxsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9k aXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb3JtLWdydXBwZSIg c3R5bGU9InBhZGRpbmc6MTJweCAxNHB4O2JhY2tncm91bmQ6dmFyKC0tYmctY2FyZCk7Ym9yZGVy OjFweCBzb2xpZCB2YXIoLS1ib3JkZXItbGlnaHQpO2JvcmRlci1yYWRpdXM6NnB4Ij4KICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPkluZm8tL1N1cHBvcnR0ZXh0ZSB1bmQg QmVkaWVudW5ncy1IaW53ZWlzZTwvc3Ryb25nPiB3ZXJkZW4gaW0gVGFiIDxlbT7igJ5CZXNjaHJp ZnR1bmdlbiAmYW1wOyBUZXh0ZSI8L2VtPiBnZXBmbGVndCAobWl0IEZvcm1hdGllcnVuZ3MtRWRp dG9yKS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAg ICAgICAgICAgICAgPGJ1dHRvbiBpZD0iYnRuLWVpbnN0ZWxsdW5nZW4tc3BlaWNoZXJuIiBjbGFz cz0iYnRuIGJ0bi1wcmltYWVyIiBzdHlsZT0ibWFyZ2luLXRvcDoxMnB4Ij5FaW5zdGVsbHVuZ2Vu IHNwZWljaGVybjwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAg ICAgICAgICAgICAgICA8L3NlY3Rpb24+CgogICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNs YXNzPSJhZG1pbi1zZWt0aW9uIHZlcnN0ZWNrdCIgaWQ9ImFkbWluLXNla3Rpb24tZmVhdHVyZXMi IGRhdGEtc3VidGFiLXNla3Rpb249ImZlYXR1cmVzIj4KICAgICAgICAgICAgICAgICAgICAgICAg PGRpdiBjbGFzcz0iYWRtaW4tc2VrdGlvbi1rb3BmIj4KICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDxoMz5GdW5rdGlvbmVuIGVpbi0vYXVzYmxlbmRlbjwvaDM+CiAgICAgICAgICAgICAgICAg ICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGV0YWlscyBjbGFzcz0iYWRt aW4taW5mbyIgZGF0YS1pbmZvLWtleT0iZmVhdHVyZXMiIG9wZW4+CiAgICAgICAgICAgICAgICAg ICAgICAgICAgICA8c3VtbWFyeT48c3BhbiBjbGFzcz0iYWRtaW4taW5mby1jaGV2Ij7ilrg8L3Nw YW4+SGlud2Vpc2UgenUgZGVuIEZ1bmt0aW9uZW48c3BhbiBjbGFzcz0iYWRtaW4taW5mby1iYWRn ZSI+QXVma2xhcHBlbiAvIFp1a2xhcHBlbjwvc3Bhbj48L3N1bW1hcnk+CiAgICAgICAgICAgICAg ICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhZG1pbi1pbmZvLWJvZHkiPgogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDxwPjxzdHJvbmc+WndlY2s6PC9zdHJvbmc+IEhpZXIga8O2bm5l biBlaW56ZWxuZSwga29tcGxleGVyZSBGdW5rdGlvbmVuIGRlciBBbndlbmR1bmcgZWluLSBvZGVy IGF1c2dlc2NoYWx0ZXQgd2VyZGVuLiBEYXMgaGlsZnQsIGRpZSBVSSBqZSBuYWNoIEFud2VuZHVu Z3NiZWRhcmYgenUgZW50c2NobGFja2VuIOKAlCB3YXMgbmljaHQgZ2VicmF1Y2h0IHdpcmQsIHdp cmQgYXVzZ2VibGVuZGV0LjwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD48 c3Ryb25nPlZlcmbDvGdiYXJlIFNjaGFsdGVyOjwvc3Ryb25nPjwvcD4KICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IDxsaT48Yj5TY2hpY2h0Zm9sZ2VuLUFuemVpZ2U8L2I+IOKAlCB6ZWlndCBpbSBIZWFkZXIgcHJv IFN0YW5kb3J0IGRpZSBBQkMvQkNBL0NBQi1Sb3RhdGlvbi4gV2VyIGRpZSBSb3RhdGlvbiBuaWNo dCBha3RpdiBwZmxlZ3QsIGthbm4gZGFzIGF1c2JsZW5kZW4uPC9saT4KICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgPGxpPjxiPlN0w6Rya2UtQW56ZWlnZTwvYj4g4oCUIEZ8U3xO LUJlc2V0enVuZ3N6YWhsIHBybyBUYWcgaW0gSGVhZGVyLiBLZXJuLUZlYXR1cmUgZsO8ciBkaWUg QmVzZXR6dW5nc3BsYW51bmcuPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgPGxpPjxiPlJ1aGV6ZWl0LVByw7xmdW5nPC9iPiDigJQgd2FybnQgYmVpICZsdDsgMTFoIFJ1 aGV6ZWl0IHp3aXNjaGVuIHp3ZWkgU2NoaWNodGVuIGRlcnNlbGJlbiBQZXJzb24uIEF1cyBBcmJa Ry1TaWNodCB3aWNodGlnLjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IDxsaT48Yj5GcmVtZC3DhG5kZXJ1bmcgV2FybnVuZzwvYj4g4oCUIEJlc3TDpHRpZ3VuZywgd2Vu biBtYW4gZGllIFNjaGljaHQgZWluZXIgYW5kZXJlbiBQZXJzb24gw6RuZGVydC4gU2Now7x0enQg dm9yIHZlcnNlaGVudGxpY2hlbiDDhG5kZXJ1bmdlbi48L2xpPgogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICA8bGk+PGI+RmFpcm5lc3MtQW56ZWlnZTwvYj4g4oCUIHplaWd0IHBy byBQZXJzb24gZGFzIFZlcmjDpGx0bmlzIHZvbiBXb2NoZW5lbmQtL0ZlaWVydGFnc2RpZW5zdGVu IGluIGRlciBTdGF0aXN0aWstQXVzd2VydHVuZy48L2xpPgogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICA8bGk+PGI+TXVzdGVyLUFuYWx5c2U8L2I+IOKAlCBlcmtlbm50IEF1ZmbD pGxsaWdrZWl0ZW4gKHouQi4gd2llZGVyaG9sdGUgRnLDvGgtbmFjaC1OYWNodC1Gb2xnZW4sIHVu Z2xlaWNoZSBWZXJ0ZWlsdW5nKS48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICA8bGk+PGI+QWJ3ZXNlbmhlaXRzLUthY2hlbG48L2I+IOKAlCB6ZWlndCBwcm8gUGVyc29u IGVpbmUga29tcGFrdGUgQWJ3ZXNlbmhlaXRzLcOcYmVyc2ljaHQgKEtyYW5rL1VybGF1Yi9MRy9B WkEpLjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48Yj5EZXRh aWwtVGFiZWxsZTwvYj4g4oCUIGF1c2tsYXBwYmFyZSBTdGF0aXN0aWstVGFiZWxsZSBtaXQgYWxs ZW4gRWluemVsd2VydGVuLjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91 bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD48c3Ryb25nPlNvZm9ydC1XaXJr dW5nOjwvc3Ryb25nPiDDhG5kZXJ1bmdlbiB3ZXJkZW4gc29mb3J0IGdlc3BlaWNoZXJ0IHVuZCBn cmVpZmVuIGRpcmVrdCAob2huZSBTZWl0ZW4tUmVsb2FkKSDigJQgZGVyIGVudHNwcmVjaGVuZGUg QmVyZWljaCBlcnNjaGVpbnQvdmVyc2Nod2luZGV0IHVtZ2VoZW5kLjwvcD4KICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2RldGFpbHM+ CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9ImZlYXR1cmVzLWluaGFsdCI+PC9kaXY+ CiAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgPC9kaXY+CgoK CiAgICAgICAgICAgICAgICA8IS0tIFRhYjogQmFja3VwcyAtLT4KICAgICAgICAgICAgICAgIDxk aXYgY2xhc3M9ImFkbWluLXRhYiB2ZXJzdGVja3QiIGlkPSJhZG1pbi10YWItYmFja3VwcyI+CiAg ICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWRtaW4ta29wZiI+CiAgICAgICAgICAgICAg ICAgICAgICAgIDxoMj5CYWNrdXBzICZhbXA7IFdpZWRlcmhlcnN0ZWxsdW5nPC9oMj4KICAgICAg ICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBpZD0iYnRuLWJhY2t1cC1uZXUiIGNsYXNzPSJidG4g YnRuLWVyZm9sZyI+TmV1ZXMgQmFja3VwIGpldHp0IGVyc3RlbGxlbjwvYnV0dG9uPgogICAgICAg ICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkZXRhaWxzIGNsYXNzPSJh ZG1pbi1pbmZvIiBkYXRhLWluZm8ta2V5PSJiYWNrdXBzIiBvcGVuPgogICAgICAgICAgICAgICAg ICAgICAgICA8c3VtbWFyeT48c3BhbiBjbGFzcz0iYWRtaW4taW5mby1jaGV2Ij7ilrg8L3NwYW4+ SGlud2Vpc2UgenUgQmFja3VwczxzcGFuIGNsYXNzPSJhZG1pbi1pbmZvLWJhZGdlIj5BdWZrbGFw cGVuIC8gWnVrbGFwcGVuPC9zcGFuPjwvc3VtbWFyeT4KICAgICAgICAgICAgICAgICAgICAgICAg PGRpdiBjbGFzcz0iYWRtaW4taW5mby1ib2R5Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAg IDxwPjxzdHJvbmc+V2FzIGlzdCBpbiBlaW5lbSBCYWNrdXA/PC9zdHJvbmc+IEVpbmUgMToxLUtv cGllIGRlciBEYXRlaSA8Y29kZT5wbGFudW5nLmpzb248L2NvZGU+IOKAlCBhbHNvIGFsbGUgU2No aWNodC1FaW50csOkZ2UgdW5kIEtvbW1lbnRhcmUgenVtIFplaXRwdW5rdCBkZXMgQmFja3Vwcy4g UGVyc29uZW5saXN0ZSwgRmVpZXJ0YWdlLCBGZXJpZW4gdW5kIGFuZGVyZSBBZG1pbi1Lb25maWd1 cmF0aW9uIHNpbmQgPGVtPm5pY2h0PC9lbT4gVGVpbCBkZXMgQmFja3VwcyAoZGllIGxpZWdlbiBp biA8Y29kZT5hZG1pbi5qc29uPC9jb2RlPikuPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAg ICAgPHA+PHN0cm9uZz5XYW5uIHdlcmRlbiBCYWNrdXBzIGVyc3RlbGx0Pzwvc3Ryb25nPjwvcD4K ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICA8bGk+PGI+TWFudWVsbDwvYj4g4oCUIEtsaWNrIGF1ZiDigJ5OZXVlcyBCYWNrdXAg amV0enQgZXJzdGVsbGVuIiBvZGVyIGF1ZiBkYXMgQmFja3VwLVN5bWJvbCBpbiBkZXIgSGF1cHQt VG9vbGJhci48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48Yj5Wb3Ig RHVtbXlkYXRlbjwvYj4g4oCUIGF1dG9tYXRpc2NoIHZvciBkZW0gRWluc3BpZWxlbiB2b24gVGVz dGRhdGVuLjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxiPlZvciBS ZXNldDwvYj4g4oCUIGF1dG9tYXRpc2NoIHZvciBkZW0g4oCeUGxhbnVuZyB6dXLDvGNrc2V0emVu Ii48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48Yj5Wb3IgV2llZGVy aGVyc3RlbGx1bmc8L2I+IOKAlCBhdXRvbWF0aXNjaCBiZXZvciBlaW4gQmFja3VwIGVpbmdlc3Bp ZWx0IHdpcmQgKFNpY2hlcmhlaXRza29waWUgZGVyIGFrdHVlbGxlbiBQbGFudW5nKS48L2xpPgog ICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDxwPjxzdHJvbmc+U3BlaWNoZXJvcnQ6PC9zdHJvbmc+IDxjb2RlPlZJMy9kYXRhL3BsYW51 bmdfYmFja3VwXyouanNvbjwvY29kZT4gKGJlaW0gV2luZG93cy1EZXBsb3ltZW50OiA8Y29kZT4l TldfSE9NRSVcVkkzX0RHTF9TZXJ2ZXJcZGF0YVw8L2NvZGU+KS4gRGllIEJhY2t1cHMgbGllZ2Vu IG51ciBsb2thbCBpbSBEYXRlbm9yZG5lciB1bmQgd2VyZGVuIG5pY2h0IGluIGdlbWVpbnNhbWVu IEFibGFnZW4gbWl0Z2Vmw7xocnQuPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+ PHN0cm9uZz5Ba3Rpb25lbiBwcm8gQmFja3VwOjwvc3Ryb25nPjwvcD4KICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGI+ V2llZGVyaGVyc3RlbGxlbjwvYj4g4oCUIGVyc2V0enQgZGllIGFrdHVlbGxlIFBsYW51bmcgZHVy Y2ggZGFzIEJhY2t1cC4gVm9yaGVyIHdpcmQgZWluZSBTaWNoZXJoZWl0c2tvcGllIGRlciBqZXR6 aWdlbiBQbGFudW5nIGVyc3RlbGx0ICg8Y29kZT5wbGFudW5nX2JhY2t1cF92b3Jfd2llZGVyaGVy c3RlbGx1bmdf4oCmPC9jb2RlPiksIGZhbGxzIGR1IHZlcnNlaGVudGxpY2ggZGFzIGZhbHNjaGUg QmFja3VwIGVpbmdlc3BpZWx0IGhhc3QuPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICA8bGk+PGI+SGVydW50ZXJsYWRlbjwvYj4g4oCUIGzDpGR0IGRpZSBKU09OLURhdGVpIGFs cyBEb3dubG9hZC4gTsO8dHpsaWNoIGbDvHIgQXJjaGl2aWVydW5nIG9kZXIgV2VpdGVyZ2FiZS48 L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48Yj5Mw7ZzY2hlbjwvYj4g 4oCUIGVudGZlcm50IGRpZSBCYWNrdXAtRGF0ZWkgcGVybWFuZW50LjwvbGk+CiAgICAgICAgICAg ICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+PHN0 cm9uZz5XaWNodGlnIHZvciBkZW0gV2llZGVyaGVyc3RlbGxlbjo8L3N0cm9uZz4gQW0gYmVzdGVu IHZvcmhlciBhbGxlIEJlYXJiZWl0ZXIgaW5mb3JtaWVyZW4uIEVpbmUgV2llZGVyaGVyc3RlbGx1 bmcgw7xiZXJzY2hyZWlidCBkaWUgYWt0aXZlIFBsYW51bmcgc29mb3J0IOKAlCDDhG5kZXJ1bmdl biwgZGllIG5hY2ggZGVtIFplaXRwdW5rdCBkZXMgQmFja3VwcyBnZW1hY2h0IHd1cmRlbiwgc2lu ZCBkYW5uIGluIGRlciBTaWNoZXJoZWl0c2tvcGllIGFicnVmYmFyLCBhYmVyIG5pY2h0IG1laHIg aW4gZGVyIGFrdGl2ZW4gUGxhbnVuZy48L3A+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2 PgogICAgICAgICAgICAgICAgICAgIDwvZGV0YWlscz4KICAgICAgICAgICAgICAgICAgICA8ZGl2 IGlkPSJiYWNrdXAtbGlzdGUtZXJnZWJuaXMiIGNsYXNzPSJnZW4taW5mbyB2ZXJzdGVja3QiIHN0 eWxlPSJtYXJnaW4tYm90dG9tOjEycHgiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDx0YWJs ZSBjbGFzcz0iYWRtaW4tdGFiZWxsZSIgaWQ9ImJhY2t1cC10YWJlbGxlIj4KICAgICAgICAgICAg ICAgICAgICAgICAgPHRoZWFkPjx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBz dHlsZT0id2lkdGg6MTgwcHgiPkVyc3RlbGx0IGFtPC90aD4KICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDx0aCBzdHlsZT0id2lkdGg6MTMwcHgiPlR5cDwvdGg+CiAgICAgICAgICAgICAgICAg ICAgICAgICAgICA8dGggc3R5bGU9IndpZHRoOjIwMHB4Ij5JbmhhbHQ8L3RoPgogICAgICAgICAg ICAgICAgICAgICAgICAgICAgPHRoPkRhdGVpbmFtZTwvdGg+CiAgICAgICAgICAgICAgICAgICAg ICAgICAgICA8dGggc3R5bGU9IndpZHRoOjkwcHg7dGV4dC1hbGlnbjpyaWdodCI+R3LDtsOfZTwv dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggc3R5bGU9IndpZHRoOjMwMHB4Ij5B a3Rpb25lbjwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+PC90aGVhZD4KICAgICAg ICAgICAgICAgICAgICAgICAgPHRib2R5IGlkPSJiYWNrdXAtdGJvZHkiPjwvdGJvZHk+CiAgICAg ICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAg ICAgICAgIDwhLS0gVGFiOiBIaW53ZWlzZS1Qcm90b2tvbGwgKG51ciBTdXBlclVzZXIpIC0tPgog ICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWRtaW4tdGFiIHZlcnN0ZWNrdCIgaWQ9ImFkbWlu LXRhYi1oaW53ZWlzZS1wcm90b2tvbGwiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9 ImFkbWluLWtvcGYiPgogICAgICAgICAgICAgICAgICAgICAgICA8aDI+SGlud2Vpc2UtUHJvdG9r b2xsPC9oMj4KICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9ImFkbWluLWtvcGYtc3Vi Ij5BbGxlIGFrdGl2ZW4gSW4tQXBwLUhpbndlaXNlIG1pdCBFbXBmw6RuZ2VyLUxpc3RlIHVuZCBM ZXNlLVN0YXR1cy4gTnVyIHNpY2h0YmFyIGbDvHIgU3VwZXJVc2VyLiDDhGx0ZXJlIEhpbndlaXNl ICgmZ3Q7IDMwIFRhZ2UgVU5EIHZvbiBhbGxlbiBFbXBmw6RuZ2VybiBnZWxlc2VuKSB3ZXJkZW4g YXV0b21hdGlzY2ggYXVzZ2Vyw6R1bXQuPC9wPgogICAgICAgICAgICAgICAgICAgIDwvZGl2Pgog ICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImhpbndlaXNlLXByb3Rva29sbC10b29sYmFy Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlR5cDoKICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDxzZWxlY3QgaWQ9ImhwLWZpbHRlci10eXAiIGNsYXNzPSJmb3JtLWlucHV0IiBz dHlsZT0id2lkdGg6MjAwcHgiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRp b24gdmFsdWU9IiI+4oCUIGFsbGUg4oCUPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iaWRlbnRpdGFldF9nZWFlbmRlcnQiPklkZW50aXTDpHQg Z2XDpG5kZXJ0PC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlv biB2YWx1ZT0icm9sbGVfZ2VhZW5kZXJ0Ij5Sb2xsZSBnZcOkbmRlcnQ8L29wdGlvbj4KICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJiYWNrdXBfd2llZGVyaGVy Z2VzdGVsbHQiPkJhY2t1cCB3aWVkZXJoZXJnZXN0ZWxsdDwvb3B0aW9uPgogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9InBsYW51bmdfcmVzZXQiPlBsYW51bmcg enVyw7xja2dlc2V0enQ8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8 b3B0aW9uIHZhbHVlPSJrcmFua21lbGR1bmciPktyYW5rbWVsZHVuZzwvb3B0aW9uPgogICAgICAg ICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+CiAgICAgICAgICAgICAgICAgICAgICAgIDwv bGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD5BYjogICAgPGlucHV0IHR5cGU9 ImRhdGUiIGlkPSJocC1maWx0ZXItdm9uIiBjbGFzcz0iZm9ybS1pbnB1dCIgc3R5bGU9IndpZHRo OjE0MHB4Ij48L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+QmlzOiAgIDxp bnB1dCB0eXBlPSJkYXRlIiBpZD0iaHAtZmlsdGVyLWJpcyIgY2xhc3M9ImZvcm0taW5wdXQiIHN0 eWxlPSJ3aWR0aDoxNDBweCI+PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRv biB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4gYnRuLXNlayBidG4ta2xlaW4iIGlkPSJocC1ha3R1 YWxpc2llcmVuIj5Ba3R1YWxpc2llcmVuPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgPC9k aXY+CiAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJhZG1pbi10YWJlbGxlIGhpbndl aXNlLXByb3Rva29sbC10YWJlbGxlIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRoZWFkPjx0 cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBzdHlsZT0id2lkdGg6MTIwcHgiPldh bm48L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIHN0eWxlPSJ3aWR0aDoxNTBw eCI+VHlwPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBzdHlsZT0id2lkdGg6 MTIwcHgiPkF1c2dlbMO2c3Qgdm9uPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0 aD5Lb250ZXh0PC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBzdHlsZT0id2lk dGg6MzAwcHgiPkVtcGbDpG5nZXIgJmFtcDsgTGVzZXN0YXR1czwvdGg+CiAgICAgICAgICAgICAg ICAgICAgICAgIDwvdHI+PC90aGVhZD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRib2R5IGlk PSJoaW53ZWlzZS1wcm90b2tvbGwtdGJvZHkiPjwvdGJvZHk+CiAgICAgICAgICAgICAgICAgICAg PC90YWJsZT4KICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgIDwhLS0gVGFi OiBJbXBvcnQgKEV4Y2VsKSAtLT4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFkbWluLXRh YiB2ZXJzdGVja3QiIGlkPSJhZG1pbi10YWItaW1wb3J0Ij4KICAgICAgICAgICAgICAgICAgICA8 ZGl2IGNsYXNzPSJhZG1pbi1rb3BmIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGgyPkV4Y2Vs LUltcG9ydDwvaDI+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAg ICAgPGRldGFpbHMgY2xhc3M9ImFkbWluLWluZm8iIGRhdGEtaW5mby1rZXk9ImltcG9ydCIgb3Bl bj4KICAgICAgICAgICAgICAgICAgICAgICAgPHN1bW1hcnk+PHNwYW4gY2xhc3M9ImFkbWluLWlu Zm8tY2hldiI+4pa4PC9zcGFuPkhpbndlaXNlIHp1bSBFeGNlbC1JbXBvcnQ8c3BhbiBjbGFzcz0i YWRtaW4taW5mby1iYWRnZSI+QXVma2xhcHBlbiAvIFp1a2xhcHBlbjwvc3Bhbj48L3N1bW1hcnk+ CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFkbWluLWluZm8tYm9keSI+CiAg ICAgICAgICAgICAgICAgICAgICAgICAgICA8cD48c3Ryb25nPldhcyB3aXJkIGltcG9ydGllcnQ/ PC9zdHJvbmc+IFNjaGljaHRlaW50csOkZ2UgdW5kIEtvbW1lbnRhcmUgYXVzIGVpbmVyIEV4Y2Vs LURhdGVpIGltIEZvcm1hdCBkZXIgYmlzaGVyaWdlbiA8Y29kZT4yMDI2LVZJMy1ER0wtUGxhbnVu Zy54bHNtPC9jb2RlPi4gRGllIERhdGVpIHdpcmQgaW0gQnJvd3NlciBnZWxlc2VuIOKAlCBlcyB3 ZXJkZW4ga2VpbmUgRGF0ZW4gYW4gZWluZW4gZXh0ZXJuZW4gU2VydmVyIGdlc2VuZGV0LjwvcD4K ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPjxzdHJvbmc+RXJ3YXJ0ZXRlcyBTaGVldC1M YXlvdXQ6PC9zdHJvbmc+PC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsPgogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT5TaGVldCBtaXQgTmFtZW4gPGI+4oCeUGxh bnVuZyI8L2I+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+RGF0dW1z LVNwYWx0ZW4gYWIgU3BhbHRlIDxiPko8L2I+IChFeGNlbC1TZXJpYWwtRGF0ZXMgaW4gWmVpbGUg MSk8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT5QZXJzb25lbi1aZWls ZW4gYWIgWmVpbGUgPGI+MjE8L2I+LCA8Yj5OYWNobmFtZSBpbiBTcGFsdGUgQzwvYj48L2xpPgog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT5aZWxsd2VydGUgPSBTY2hpY2h0Y29k ZXMgKDxjb2RlPkYtREdMPC9jb2RlPiwgPGNvZGU+VXJsPC9jb2RlPiwg4oCmKTwvbGk+CiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPlplbGwtS29tbWVudGFyZSAoRXhjZWwtS29t bWVudGFyZSkgd2VyZGVuIGFscyBLb21tZW50YXIgw7xiZXJub21tZW48L2xpPgogICAgICAgICAg ICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPjxz dHJvbmc+QWJnbGVpY2g6PC9zdHJvbmc+PC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAg PHVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48Yj5QZXJzb25lbjwvYj4g d2VyZGVuIMO8YmVyIGRlbiA8Yj5OYWNobmFtZW48L2I+IGdlbWF0Y2h0LiBVbmJla2FubnRlIFBl cnNvbmVuIG9kZXIgTmFtZW4gbWl0IG1laHJlcmVuIFRyZWZmZXJuIG3DvHNzZW4gbWFudWVsbCB6 dWdlb3JkbmV0IG9kZXIgaWdub3JpZXJ0IHdlcmRlbi48L2xpPgogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDxsaT48Yj5TY2hpY2h0Y29kZXM8L2I+IHdlcmRlbiBnZWdlbiBkaWUgYWt0 aXZlbiBDb2RlcyBhYmdlZ2xpY2hlbi4gQmVrYW5udGUgPGNvZGU+aW1wb3J0QWxpYXNlPC9jb2Rl PiAoei5CLiA8Y29kZT5GV0RGPC9jb2RlPiDihpIgPGNvZGU+Ri1XREY8L2NvZGU+KSB3ZXJkZW4g YXV0b21hdGlzY2ggZXJzZXR6dC4gVW5iZWthbm50ZSBDb2RlcyB6ZWlndCBkZXIgRGlhbG9nIG1p dCBlaW5lbSBEcm9wZG93biB6dW0gTWFwcGluZyBvZGVyIOKAnmlnbm9yaWVyZW4iLjwvbGk+CiAg ICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgICAgICAg ICAgPHA+PHN0cm9uZz5Nb2R1czo8L3N0cm9uZz4gRGVyIEltcG9ydCBlcnNldHp0IDxiPmFsbGU8 L2I+IEVpbnRyw6RnZSB1bmQgS29tbWVudGFyZSBpbSBnZXfDpGhsdGVuIFplaXRyYXVtIGtvbXBs ZXR0LiBWb3IgZGVtIFNjaHJlaWJlbiB3aXJkIGF1dG9tYXRpc2NoIGVpbiBCYWNrdXAgZGVyIDxj b2RlPnBsYW51bmcuanNvbjwvY29kZT4gZXJzdGVsbHQuPC9wPgogICAgICAgICAgICAgICAgICAg ICAgICAgICAgPHA+PHN0cm9uZz5BYmxhdWY6PC9zdHJvbmc+IDxlbT5EYXRlaSBhdXN3w6RobGVu IOKGkiBBbmFseXNlIGzDpHVmdCDihpIgTWFwcGluZy1EaWFsb2cg4oaSIEltcG9ydCBzdGFydGVu LjwvZW0+PC9wPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAg ICAgICA8L2RldGFpbHM+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaW1wLXVwbG9h ZC1ib3giPgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJpbXAtZGF0ZWkiIGNs YXNzPSJidG4gYnRuLXByaW1hZXIiIHN0eWxlPSJkaXNwbGF5OmlubGluZS1ibG9jayI+CiAgICAg ICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iZmlsZSIgaWQ9ImltcC1kYXRlaSIg YWNjZXB0PSIueGxzeCwueGxzbSwueGxzIiBzdHlsZT0iZGlzcGxheTpub25lIj4KICAgICAgICAg ICAgICAgICAgICAgICAgICAgIEV4Y2VsLURhdGVpIHfDpGhsZW4KICAgICAgICAgICAgICAgICAg ICAgICAgPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gaWQ9ImltcC1kYXRl aS1uYW1lIiBzdHlsZT0ibWFyZ2luLWxlZnQ6MTJweDtmb250LXNpemU6MTNweDtjb2xvcjp2YXIo LS10ZXh0LW11dGVkKSI+4oCUIG5vY2gga2VpbmUgRGF0ZWkgZ2V3w6RobHQg4oCUPC9zcGFuPgog ICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImhpbGZl LWljb24iIGFyaWEtbGFiZWw9IkhpbGZlIEV4Y2VsLUZvcm1hdCBhbnplaWdlbiIgdGl0bGU9IkVy d2FydGV0IGRpZSBWSTMtREdMLUV4Y2VsLVZvcmxhZ2UiIGRhdGEtaGlsZmU9IkVyd2FydGV0IGRp ZSBWSTMtREdMLUV4Y2VsLVZvcmxhZ2U6IFBlcnNvbmVuIGFiIFplaWxlIDIxIChOYWNobmFtZSBp biBTcGFsdGUgQyksIERhdHVtc2FuZ2FiZW4gaW4gWmVpbGUgMSAoYWIgU3BhbHRlIEopLiBTcHJl Y2hibGFzZW4tS29tbWVudGFyZSB3ZXJkZW4gYWxzIFRhZy1Lb21tZW50YXJlIHVlYmVybm9tbWVu LiBGb3JtYXQgLnhsc3gvLnhsc20vLnhscy4iPj88L2J1dHRvbj4KICAgICAgICAgICAgICAgICAg ICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJpbXAtc3RhdHVzIiBzdHlsZT0i bWFyZ2luLXRvcDoyMHB4Ij48L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAg ICAgICAgIDwhLS0gVGFiOiBFeHBvcnQgKEV4Y2VsL0NTVikgLS0+CiAgICAgICAgICAgICAgICA8 ZGl2IGNsYXNzPSJhZG1pbi10YWIgdmVyc3RlY2t0IiBpZD0iYWRtaW4tdGFiLWV4cG9ydCI+CiAg ICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWRtaW4ta29wZiI+CiAgICAgICAgICAgICAg ICAgICAgICAgIDxoMj5FeGNlbC1FeHBvcnQ8L2gyPgogICAgICAgICAgICAgICAgICAgIDwvZGl2 PgogICAgICAgICAgICAgICAgICAgIDxkZXRhaWxzIGNsYXNzPSJhZG1pbi1pbmZvIiBkYXRhLWlu Zm8ta2V5PSJleHBvcnQiIG9wZW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzdW1tYXJ5Pjxz cGFuIGNsYXNzPSJhZG1pbi1pbmZvLWNoZXYiPuKWuDwvc3Bhbj5IaW53ZWlzZSB6dW0gRXhwb3J0 PHNwYW4gY2xhc3M9ImFkbWluLWluZm8tYmFkZ2UiPkF1ZmtsYXBwZW4gLyBadWtsYXBwZW48L3Nw YW4+PC9zdW1tYXJ5PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhZG1pbi1p bmZvLWJvZHkiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+PHN0cm9uZz5XYXMgd2ly ZCBleHBvcnRpZXJ0Pzwvc3Ryb25nPiBQcm8gUGVyc29uIHVuZCBUYWcgbWl0IEVpbnRyYWcgZWlu ZSBaZWlsZSBtaXQgPGI+TmFtZSwgRGllbnN0Z3J1cHBlLCBEYXR1bSwgTW9uYXQsIFRhZywgV29j aGVudGFnLCBLVywgU2NoaWNodDwvYj4gKENvZGUpIHVuZCA8Yj5TY2hpY2h0LUtsYXJ0ZXh0PC9i Pi4gRXMgd2VyZGVuIG51ciBUYWdlIG1pdCBoaW50ZXJsZWd0ZXIgU2NoaWNodCBhdXNnZWdlYmVu LjwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPjxzdHJvbmc+SW5mb2JveCB1bnRl cmhhbGI6PC9zdHJvbmc+IE9wdGlvbmFsIGZvbGd0IHVudGVyIGRlciBUYWJlbGxlIGVpbiB6d2Vp dGVyIEJsb2NrIOKAnkhpbndlaXNlIHp1IFRhZ2VuIG1pdCBCZXNvbmRlcmhlaXRlbiIg4oCUIGRp ZSBpbSBQbGFuLUhlYWRlciBlcmthbm50ZW4gPGI+RmVpZXJ0YWdlLCBGZXJpZW4gdW5kIFNvbmRl cnRlcm1pbmU8L2I+IGRlcyBleHBvcnRpZXJ0ZW4gWmVpdHJhdW1zIChEYXR1bSwgVHlwLCBCZXpl aWNobnVuZywgQmVzY2hyZWlidW5nKS48L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8 cD48c3Ryb25nPlVtZmFuZzo8L3N0cm9uZz4gR2FuemVzIFBsYW51bmdzamFociwgZWluemVsbmUv bWVocmVyZSBLYWxlbmRlcndvY2hlbiAodm9u4oCTYmlzKSBvZGVyIGVpbiBmcmVpZXIgRGF0dW1z YmVyZWljaC4gPHN0cm9uZz5QZXJzb25lbmtyZWlzOjwvc3Ryb25nPiBhbGxlLCBiZXN0aW1tdGUg RGllbnN0Z3J1cHBlbiBvZGVyIGVpbnplbG5lIFBlcnNvbmVuICg9IGluZGl2aWR1ZWxsZXIgRXhw b3J0KS48L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD48c3Ryb25nPkZvcm1hdDo8 L3N0cm9uZz4gRm9ybWF0aWVydGVzIDxiPlhMU1g8L2I+IChwYXNzZW5kZSBTcGFsdGVuYnJlaXRl biwgVGl0ZWx6ZWlsZSwgQXV0by1GaWx0ZXIgw7xiZXIgZGVyIFRhYmVsbGUpIG9kZXIgPGI+Q1NW PC9iPiAoVVRGLTggbWl0IEJPTSwgU2VtaWtvbG9uLWdldHJlbm50IOKAlCBkaXJla3QgaW4gRXhj ZWwtREUgbGVzYmFyKS4gQWxsZXMgbMOkdWZ0IGltIEJyb3dzZXI7IGVzIHdlcmRlbiBrZWluZSBE YXRlbiBhbiBlaW5lbiBleHRlcm5lbiBTZXJ2ZXIgZ2VzZW5kZXQuPC9wPgogICAgICAgICAgICAg ICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2RldGFpbHM+CiAgICAgICAg ICAgICAgICAgICAgPGRpdiBpZD0iZXhwb3J0LWluaGFsdCI+PC9kaXY+CiAgICAgICAgICAgICAg ICA8L2Rpdj4KCiAgICAgICAgICAgICAgICA8IS0tIFRhYjogVGVzdGRhdGVuIC0tPgogICAgICAg ICAgICAgICAgPGRpdiBjbGFzcz0iYWRtaW4tdGFiIHZlcnN0ZWNrdCIgaWQ9ImFkbWluLXRhYi10 ZXN0ZGF0ZW4iPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFkbWluLWtvcGYiPgog ICAgICAgICAgICAgICAgICAgICAgICA8aDI+VGVzdGRhdGVuIC8gRHVtbXlkYXRlbjwvaDI+CiAg ICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRldGFpbHMgY2xh c3M9ImFkbWluLWluZm8iIGRhdGEtaW5mby1rZXk9InRlc3RkYXRlbiIgb3Blbj4KICAgICAgICAg ICAgICAgICAgICAgICAgPHN1bW1hcnk+PHNwYW4gY2xhc3M9ImFkbWluLWluZm8tY2hldiI+4pa4 PC9zcGFuPkhpbndlaXNlIHp1IFRlc3RkYXRlbiAvIFJlc2V0PHNwYW4gY2xhc3M9ImFkbWluLWlu Zm8tYmFkZ2UiPkF1ZmtsYXBwZW4gLyBadWtsYXBwZW48L3NwYW4+PC9zdW1tYXJ5PgogICAgICAg ICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhZG1pbi1pbmZvLWJvZHkiPgogICAgICAgICAg ICAgICAgICAgICAgICAgICAgPHA+PHN0cm9uZz5Xb2bDvHI/PC9zdHJvbmc+IERpZXNlIEZ1bmt0 aW9uZW4gc2luZCBhdXNzY2hsaWXDn2xpY2ggZsO8ciBUZXN0LSwgRGVtby0gdW5kIEVpbmFyYmVp dHVuZ3N6d2Vja2UgZ2VkYWNodC4gQmVpZGUgZXJzdGVsbGVuIDxiPmF1dG9tYXRpc2NoIGVpbiBC YWNrdXA8L2I+IGRlciBha3R1ZWxsZW4gUGxhbnVuZywgYmV2b3Igc2llIGF1c2dlZsO8aHJ0IHdl cmRlbiDigJQgZGllIEJhY2t1cHMgbGllZ2VuIGluIDxjb2RlPlZJMy9kYXRhL3BsYW51bmdfYmFj a3VwX3Zvcl8qLmpzb248L2NvZGU+LjwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxw PjxzdHJvbmc+RHVtbXlkYXRlbiBlaW5zcGllbGVuOjwvc3Ryb25nPiBGw7xsbHQgZGVuIFplaXRy YXVtIChha3R1ZWxsIEphbnVhciBiaXMgQXByaWwgMjAyNikgbWl0IHJlYWxpc3Rpc2NoZW4gU2No aWNodHBsw6RuZW4sIFVybGF1YiwgS3JhbmtoZWl0LCBMZWhyZ8OkbmdlbiwgRWluc2F0enRyYWlu aW5nIHVuZCBBWi1BdXNnbGVpY2guIERpZSBHcnVwcGVuIEEvQi9DIHJvdGllcmVuIHfDtmNoZW50 bGljaCBkdXJjaCBGcsO8aC0vU3DDpHQtL05hY2h0ZGllbnN0LiBQZXJzb25lbmxpc3RlLCBHcnVw cGVuYmV6ZWljaG51bmdlbiB1bmQgRWluc3RlbGx1bmdlbiBibGVpYmVuIHVudmVyw6RuZGVydC48 L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD48c3Ryb25nPlBsYW51bmcgenVyw7xj a3NldHplbjo8L3N0cm9uZz4gTMO2c2NodCA8Yj5hbGxlPC9iPiBTY2hpY2h0LUVpbnRyw6RnZSB1 bmQgS29tbWVudGFyZS4gRGllIFBlcnNvbmVubGlzdGUsIEdydXBwZW4sIEZlaWVydGFnZSB1bmQg YWxsZSBhbmRlcmVuIEVpbnN0ZWxsdW5nZW4gYmxlaWJlbiBlcmhhbHRlbi4gQmFja3VwIHdpcmQg dm9yaGVyIGVyc3RlbGx0LjwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPjxzdHJv bmc+V2llZGVyaGVyc3RlbGx1bmc6PC9zdHJvbmc+IEF1cyBCYWNrdXAtRGF0ZWllbiBrYW5uIGFr dHVlbGwgbnVyIHBlciBEYXRlaW1hbmlwdWxhdGlvbiAoPGNvZGU+cGxhbnVuZ19iYWNrdXBfLi4u PC9jb2RlPiB1bWJlbmVubmVuIHp1IDxjb2RlPnBsYW51bmcuanNvbjwvY29kZT4pIHdpZWRlcmhl cmdlc3RlbGx0IHdlcmRlbi4gQmFja3VwcyB3ZXJkZW4gbnVyIGltIERhdGVub3JkbmVyIGxva2Fs IGdlaGFsdGVuLjwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPjxzdHJvbmc+Vm9y c2ljaHQgaW0gUHJvZHVrdGl2YmV0cmllYjo8L3N0cm9uZz4gSW0gbGF1ZmVuZGVuIFBsYW51bmdz YmV0cmllYiBkaWVzZSBCdXR0b25zIG51ciBtaXQgQWJzcHJhY2hlIG51dHplbiEgQXVjaCB3ZW5u IEJhY2t1cHMgZXJzdGVsbHQgd2VyZGVuIOKAlCBiZWkgYWt0aXZlbiBCZWFyYmVpdGVybiBlbnRz dGVoZW4gS29uZmxpa3RlLjwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAg ICAgICAgICAgICAgICAgPC9kZXRhaWxzPgogICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9 ImRpc3BsYXk6ZmxleDsgZ2FwOjE2cHg7IGZsZXgtd3JhcDp3cmFwOyBtYXJnaW4tdG9wOjE2cHgi PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPSJmbGV4OjE7IG1pbi13aWR0aDoy ODBweDsgYm9yZGVyOjFweCBzb2xpZCB2YXIoLS1yYWhtZW4pOyBib3JkZXItcmFkaXVzOjhweDsg cGFkZGluZzoyMHB4Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMyBzdHlsZT0ibWFy Z2luOjAgMCA4cHggMCI+RHVtbXlkYXRlbiBlaW5zcGllbGVuPC9oMz4KICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDxwIHN0eWxlPSJjb2xvcjp2YXIoLS10ZXh0LWdlZGltbXQpOyBtYXJnaW46 MCAwIDE2cHggMCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRsO8bGx0IEphbnVh ciBiaXMgQXByaWwgMjAyNiBtaXQgcmVhbGlzdGlzY2hlbiBTY2hpY2h0cGzDpG5lbiwgVXJsYXVi LCBLcmFua2hlaXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGVocmfDpG5nZW4s IEVpbnNhdHp0cmFpbmluZyB1bmQgQVotQXVzZ2xlaWNoLiBHcnVwcGVuIEEvQi9DIHJvdGllcmVu IHfDtmNoZW50bGljaAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGR1cmNoIEZyw7xo LS9TcMOkdC0vTmFjaHRkaWVuc3QuIERpZSBiZXN0ZWhlbmRlbiBQZXJzb25lbiB1bmQgQmV6ZWlj aG51bmdlbiBibGVpYmVuIGVyaGFsdGVuLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9w PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBpZD0iYnRuLWR1bW15ZGF0ZW4i IGNsYXNzPSJidG4gYnRuLXByaW1hZXIiPkR1bW15ZGF0ZW4gZWluc3BpZWxlbjwvYnV0dG9uPgog ICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRp diBzdHlsZT0iZmxleDoxOyBtaW4td2lkdGg6MjgwcHg7IGJvcmRlcjoxcHggc29saWQgdmFyKC0t cmFobWVuKTsgYm9yZGVyLXJhZGl1czo4cHg7IHBhZGRpbmc6MjBweCI+CiAgICAgICAgICAgICAg ICAgICAgICAgICAgICA8aDMgc3R5bGU9Im1hcmdpbjowIDAgOHB4IDAiPlBsYW51bmcgenVyw7xj a3NldHplbjwvaDM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBzdHlsZT0iY29sb3I6 dmFyKC0tdGV4dC1nZWRpbW10KTsgbWFyZ2luOjAgMCAxNnB4IDAiPgogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIEzDtnNjaHQgPHN0cm9uZz5hbGxlPC9zdHJvbmc+IEVpbnRyw6RnZSB1 bmQgS29tbWVudGFyZS4gRGllIFBlcnNvbmVubGlzdGUsIEdydXBwZW4sCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgRmVpZXJ0YWdlIHVuZCBhbGxlIGFuZGVyZW4gRWluc3RlbGx1bmdl biBibGVpYmVuIGVyaGFsdGVuLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPgogICAg ICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBpZD0iYnRuLXJlc2V0IiBjbGFzcz0iYnRu IGJ0bi1nZWZhaHIiPlBsYW51bmcgenVyw7xja3NldHplbjwvYnV0dG9uPgogICAgICAgICAgICAg ICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT0iZmxl eDoxOyBtaW4td2lkdGg6MjgwcHg7IGJvcmRlcjoxcHggc29saWQgdmFyKC0tcmFobWVuKTsgYm9y ZGVyLXJhZGl1czo4cHg7IHBhZGRpbmc6MjBweCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAg ICA8aDMgc3R5bGU9Im1hcmdpbjowIDAgOHB4IDAiPlByb3Rva29sbCBsw7ZzY2hlbjwvaDM+CiAg ICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBzdHlsZT0iY29sb3I6dmFyKC0tdGV4dC1nZWRp bW10KTsgbWFyZ2luOjAgMCAxNnB4IDAiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IExlZXJ0IGRhcyA8c3Ryb25nPkxvZ2J1Y2g8L3N0cm9uZz4gdW5kIGRpZSA8c3Ryb25nPkFQSS1M b2ctRGF0ZWk8L3N0cm9uZz4uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2lubnZv bGwgdm9yIGRlbSBMaXZlLUdhbmcgb2RlciBuYWNoIFRlc3RzLCB1bSBEaWFnbm9zZS1TcHVyZW4g enUgZW50ZmVybmVuLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVpbiBlaW56ZWxu ZXIgTG9nYnVjaC1FaW50cmFnIDxjb2RlPnByb3Rva29sbC5nZWxvZXNjaHQ8L2NvZGU+IGJsZWli dAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVyaGFsdGVuLCBkYW1pdCBkYXMgRXJl aWduaXMgc2VsYnN0IG5hY2h2b2xsemllaGJhciBibGVpYnQuCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGlkPSJidG4t cHJvdG9rb2xsLWxvZXNjaGVuIiBjbGFzcz0iYnRuIGJ0bi1nZWZhaHIiPlByb3Rva29sbCBsw7Zz Y2hlbjwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAg ICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJ0ZXN0ZGF0ZW4tZXJn ZWJuaXMiIGNsYXNzPSJ2ZXJzdGVja3QiIHN0eWxlPSJtYXJnaW4tdG9wOjE2cHgiPjwvZGl2Pgog ICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgPCEtLSBUYWI6IEJlc2Nocmlm dHVuZ2VuICYgVGV4dGUgKE1lcmdlIOKAlCBCZXplaWNobnVuZ2VuICsgSW5mb3JtYXRpb24gJiBI aWxmZSkgLS0+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhZG1pbi10YWIgdmVyc3RlY2t0 IiBpZD0iYWRtaW4tdGFiLWJlemVpY2hudW5nZW4iPgogICAgICAgICAgICAgICAgICAgIDxkaXYg Y2xhc3M9ImFkbWluLWtvcGYiPgogICAgICAgICAgICAgICAgICAgICAgICA8aDI+QmVzY2hyaWZ0 dW5nZW4gJmFtcDsgVGV4dGU8L2gyPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAg ICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0iYWRtaW4tc2VrdGlvbiIgaWQ9ImFkbWluLXNl a3Rpb24tYmV6ZWljaG51bmdlbiI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9 ImFkbWluLXNla3Rpb24ta29wZiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDM+VUkt QmV6ZWljaG51bmdlbjwvaDM+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAg ICAgICAgICAgICAgICAgICA8ZGV0YWlscyBjbGFzcz0iYWRtaW4taW5mbyIgZGF0YS1pbmZvLWtl eT0iYmV6ZWljaG51bmdlbiIgb3Blbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdW1t YXJ5PjxzcGFuIGNsYXNzPSJhZG1pbi1pbmZvLWNoZXYiPuKWuDwvc3Bhbj5IaW53ZWlzZSB6dSBC ZXplaWNobnVuZ2VuPHNwYW4gY2xhc3M9ImFkbWluLWluZm8tYmFkZ2UiPkF1ZmtsYXBwZW4gLyBa dWtsYXBwZW48L3NwYW4+PC9zdW1tYXJ5PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRp diBjbGFzcz0iYWRtaW4taW5mby1ib2R5Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICA8cD48c3Ryb25nPldhcyBpc3QgZGFzPzwvc3Ryb25nPiBBbGxlIGhhcnQgaW0gQ29kZSBoaW50 ZXJsZWd0ZW4gVUktTGFiZWxzIChUaXRlbCBkZXIgQXBwLCBOYW1lbiBkZXIgUmVpdGVyIGltIEhl YWRlciwg4oCmKSBsYXNzZW4gc2ljaCBoaWVyIGluZGl2aWR1ZWxsIGJlbmVubmVuLiBOw7x0emxp Y2gsIHdlbm4gaW50ZXJuIGFuZGVyZSBCZWdyaWZmZSDDvGJsaWNoIHNpbmQgb2RlciBlaW4gVGFi IHVtYmVuYW5udCB3ZXJkZW4gc29sbC48L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgPHA+PHN0cm9uZz5GdW5rdGlvbjo8L3N0cm9uZz4gTGVlcmUgRmVsZGVyIGZhbGxlbiB6dXLD vGNrIGF1ZiBkZW4gRGVmYXVsdC1XZXJ0LiA8ZW0+U3BlaWNoZXJuPC9lbT4gbGVndCBkaWUgV2Vy dGUgaW4gPGNvZGU+YWRtaW4uanNvbi5iZXplaWNobnVuZ2VuPC9jb2RlPiBhYiDigJQgc2ljaHRi YXIgd2lyZCBkaWUgw4RuZGVydW5nIG5hY2ggZWluZW0gU2VpdGVuLVJlbG9hZCAoRjUpIGbDvHIg YWxsZSBOdXR6ZXIuPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPjxzdHJv bmc+WnVyw7xja3NldHplbjwvc3Ryb25nPiBsw7ZzY2h0IGFsbGUgaW5kaXZpZHVlbGxlbiBXZXJ0 ZSB1bmQgc3RlbGx0IGRpZSBEZWZhdWx0cyB3aWVkZXIgaGVyLjwvcD4KICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2RldGFpbHM+CiAg ICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0iYWRtaW4tdGFiZWxsZSIgaWQ9ImJl emVpY2hudW5nZW4tdGFiZWxsZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGhlYWQ+ CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICA8dGggc3R5bGU9IndpZHRoOjE4MHB4Ij5TY2hsw7xzc2VsPC90aD4K ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIHN0eWxlPSJ3aWR0aDoyMjBw eCI+RGVmYXVsdDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5F aWdlbmUgQmV6ZWljaG51bmc8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwv dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoZWFkPgogICAgICAgICAgICAgICAg ICAgICAgICAgICAgPHRib2R5IGlkPSJiZXplaWNobnVuZ2VuLXRib2R5Ij48L3Rib2R5PgogICAg ICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2 IHN0eWxlPSJkaXNwbGF5OmZsZXg7Z2FwOjhweDttYXJnaW4tdG9wOjEycHgiPgogICAgICAgICAg ICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBpZD0iYnRuLWJlemVpY2hudW5nZW4tcmVzZXQiIGNs YXNzPSJidG4gYnRuLXNlayIgdGl0bGU9IkFsbGUgV2VydGUgYXVmIGRlbiBEZWZhdWx0IHp1csO8 Y2tzZXR6ZW4iPlp1csO8Y2tzZXR6ZW48L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDxidXR0b24gaWQ9ImJ0bi1iZXplaWNobnVuZ2VuLXNwZWljaGVybiIgY2xhc3M9ImJ0biBi dG4tcHJpbWFlciI+QmV6ZWljaG51bmdlbiBzcGVpY2hlcm48L2J1dHRvbj4KICAgICAgICAgICAg ICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgoKICAgICAg ICAgICAgICAgICAgICA8aHIgY2xhc3M9ImFkbWluLXNla3Rpb24tdHJlbm5lciI+CgogICAgICAg ICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJhZG1pbi1zZWt0aW9uIiBpZD0iYWRtaW4tc2Vr dGlvbi1pbmZvaGlsZmUiPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhZG1p bi1zZWt0aW9uLWtvcGYiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgzPkluZm9ybWF0 aW9uICZhbXA7IEhpbGZlPC9oMz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAg ICAgICAgICAgICAgICAgICAgIDxkZXRhaWxzIGNsYXNzPSJhZG1pbi1pbmZvIiBkYXRhLWluZm8t a2V5PSJpbmZvaGlsZmUiIG9wZW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3VtbWFy eT48c3BhbiBjbGFzcz0iYWRtaW4taW5mby1jaGV2Ij7ilrg8L3NwYW4+SGlud2Vpc2UgenUgSW5m b3JtYXRpb24gJmFtcDsgSGlsZmU8c3BhbiBjbGFzcz0iYWRtaW4taW5mby1iYWRnZSI+QXVma2xh cHBlbiAvIFp1a2xhcHBlbjwvc3Bhbj48L3N1bW1hcnk+CiAgICAgICAgICAgICAgICAgICAgICAg ICAgICA8ZGl2IGNsYXNzPSJhZG1pbi1pbmZvLWJvZHkiPgogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDxwPjxzdHJvbmc+V2FzIHdpcmQgaGllciBnZXBmbGVndD88L3N0cm9uZz4gQWxs ZSBUZXh0ZSwgZGllIGltIEluZm8tRmVuc3RlciBlcnNjaGVpbmVuIChLbGljayBhdWYg4oCeSW5m byIgb2JlbiByZWNodHMgaW4gZGVyIEtvcGZsZWlzdGUpLiBEaWUgRWRpdG9yZW4gdW50ZXJzdMO8 dHplbiBlaW5mYWNoZSBGb3JtYXRpZXJ1bmcgw7xiZXIgZGllIFRvb2xiYXI6IDxiPkZldHQ8L2I+ LCA8ZW0+S3Vyc2l2PC9lbT4sIDx1PlVudGVyc3RyaWNoZW48L3U+LCBBdWZ6w6RobHVuZ2VuLCBF aW5yw7xja2VuL0F1c3LDvGNrZW4uPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IDxwPjxzdHJvbmc+UmVpaGVuZm9sZ2UgaW0gSW5mby1GZW5zdGVyOjwvc3Ryb25nPiBJbmZvdGV4 dCDihpIgU3VwcG9ydC1JbmZvIOKGkiBTdXBlclVzZXItTGlzdGUg4oaSIEFsbGdlbWVpbmUgSGls ZmUg4oaSIEJlZGllbnVuZ3MtSGlud2Vpc2Ug4oaSIFNjaGljaHRjb2RlLUxlZ2VuZGUgKGF1dG9t YXRpc2NoIGdlbmVyaWVydCkuPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxw PjxzdHJvbmc+QmVkaWVudW5ncy1IaW53ZWlzZTo8L3N0cm9uZz4gSmVkZXIgTGlzdGVuZWludHJh ZyB3aXJkIGFscyBlaWdlbmVyIEJ1bGxldCBnZXJlbmRlcnQuIEZvcm1hdCA8Y29kZT5UaXRlbDog QmVzY2hyZWlidW5nPC9jb2RlPiAoZWluIERvcHBlbHB1bmt0IHp3aXNjaGVuIFRpdGVsIHVuZCBF cmtsw6RydW5nKSBsw6Rzc3QgZGVuIFRpdGVsIGF1dG9tYXRpc2NoIGZldHQgd2VyZGVuLjwvcD4K ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD48c3Ryb25nPlNjaGxpZcOfLUluZm86 PC9zdHJvbmc+IFdpcmQgaW0gSW5mby1GZW5zdGVyIDxiPm5pY2h0PC9iPiBhbmdlemVpZ3QsIHNv bmRlcm4gYmVpbSBhdXRvbWF0aXNjaGVuIFNlcnZlci1TdG9wIG5hY2ggSW5ha3Rpdml0w6R0LiBQ bGF0emhhbHRlciA8Y29kZT57bWludXRlbn08L2NvZGU+IHdpcmQgZHVyY2ggZGllIGtvbmZpZ3Vy aWVydGUgU2NobGllw596ZWl0IGVyc2V0enQuPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAg ICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGV0YWlscz4KCiAgICAgICAgICAg ICAgICAgICAgPGRpdiBzdHlsZT0iZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtn YXA6MThweDttYXgtd2lkdGg6OTAwcHgiPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2Pgog ICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIHN0eWxlPSJkaXNwbGF5OmJsb2NrO2Zv bnQtd2VpZ2h0OjYwMDttYXJnaW4tYm90dG9tOjZweCI+SW5mb3RleHQgKGVyc2NoZWludCBpbSBJ bmZvLUZlbnN0ZXIpPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xh c3M9InJ0ZS10b29sYmFyIiBkYXRhLXJ0ZS1mb3I9ImloLWluZm90ZXh0Ij4KICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9InJ0ZS1idG4i IGRhdGEtY21kPSJib2xkIiB0aXRsZT0iRmV0dCAoQ3RybCtCKSI+PHN0cm9uZz5CPC9zdHJvbmc+ PC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJi dXR0b24iIGNsYXNzPSJydGUtYnRuIiBkYXRhLWNtZD0iaXRhbGljIiB0aXRsZT0iS3Vyc2l2IChD dHJsK0kpIj48ZW0+STwvZW0+PC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJydGUtYnRuIiBkYXRhLWNtZD0idW5kZXJs aW5lIiB0aXRsZT0iVW50ZXJzdHJpY2hlbiAoQ3RybCtVKSI+PHU+VTwvdT48L2J1dHRvbj4KICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0icnRlLXNlcCI+PC9zcGFu PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBj bGFzcz0icnRlLWJ0biIgZGF0YS1jbWQ9Imluc2VydFVub3JkZXJlZExpc3QiIHRpdGxlPSJBdWZ6 w6RobHVuZyI+4oCiPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1 dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJydGUtYnRuIiBkYXRhLWNtZD0iaW5zZXJ0T3JkZXJl ZExpc3QiIHRpdGxlPSJOdW1tZXJpZXJ0Ij4xLjwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJydGUtc2VwIj48L3NwYW4+CiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJydGUtYnRuIiBk YXRhLWNtZD0ib3V0ZGVudCIgdGl0bGU9IkF1c3LDvGNrZW4iPuKHpDwvYnV0dG9uPgogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0icnRl LWJ0biIgZGF0YS1jbWQ9ImluZGVudCIgdGl0bGU9IkVpbnLDvGNrZW4iPuKHpTwvYnV0dG9uPgog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJydGUtc2VwIj48L3Nw YW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24i IGNsYXNzPSJydGUtYnRuIiBkYXRhLWNtZD0icmVtb3ZlRm9ybWF0IiB0aXRsZT0iRm9ybWF0aWVy dW5nIGVudGZlcm5lbiI+4pyVPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8 L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9ImloLWluZm90ZXh0IiBj bGFzcz0icnRlLWVkaXRvciIgY29udGVudGVkaXRhYmxlPSJ0cnVlIiBzcGVsbGNoZWNrPSJ0cnVl IiBzdHlsZT0ibWluLWhlaWdodDo4MHB4Ij48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAg PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAg ICAgICAgICA8bGFiZWwgc3R5bGU9ImRpc3BsYXk6YmxvY2s7Zm9udC13ZWlnaHQ6NjAwO21hcmdp bi1ib3R0b206NnB4Ij5TdXBwb3J0LUluZm8gKEFuc3ByZWNocGFydG5lciBiZWkgRnJhZ2VuKTwv bGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJydGUtdG9vbGJh ciIgZGF0YS1ydGUtZm9yPSJpaC1zdXBwb3J0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9InJ0ZS1idG4iIGRhdGEtY21kPSJib2xk IiB0aXRsZT0iRmV0dCAoQ3RybCtCKSI+PHN0cm9uZz5CPC9zdHJvbmc+PC9idXR0b24+CiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJy dGUtYnRuIiBkYXRhLWNtZD0iaXRhbGljIiB0aXRsZT0iS3Vyc2l2IChDdHJsK0kpIj48ZW0+STwv ZW0+PC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBl PSJidXR0b24iIGNsYXNzPSJydGUtYnRuIiBkYXRhLWNtZD0idW5kZXJsaW5lIiB0aXRsZT0iVW50 ZXJzdHJpY2hlbiAoQ3RybCtVKSI+PHU+VTwvdT48L2J1dHRvbj4KICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0icnRlLXNlcCI+PC9zcGFuPgogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0icnRlLWJ0biIg ZGF0YS1jbWQ9Imluc2VydFVub3JkZXJlZExpc3QiIHRpdGxlPSJBdWZ6w6RobHVuZyI+4oCiPC9i dXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0 b24iIGNsYXNzPSJydGUtYnRuIiBkYXRhLWNtZD0iaW5zZXJ0T3JkZXJlZExpc3QiIHRpdGxlPSJO dW1tZXJpZXJ0Ij4xLjwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxz cGFuIGNsYXNzPSJydGUtc2VwIj48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJydGUtYnRuIiBkYXRhLWNtZD0ib3V0ZGVu dCIgdGl0bGU9IkF1c3LDvGNrZW4iPuKHpDwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0icnRlLWJ0biIgZGF0YS1jbWQ9 ImluZGVudCIgdGl0bGU9IkVpbnLDvGNrZW4iPuKHpTwvYnV0dG9uPgogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJydGUtc2VwIj48L3NwYW4+CiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJydGUtYnRu IiBkYXRhLWNtZD0icmVtb3ZlRm9ybWF0IiB0aXRsZT0iRm9ybWF0aWVydW5nIGVudGZlcm5lbiI+ 4pyVPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9ImloLXN1cHBvcnQiIGNsYXNzPSJydGUtZWRpdG9y IiBjb250ZW50ZWRpdGFibGU9InRydWUiIHNwZWxsY2hlY2s9InRydWUiIHN0eWxlPSJtaW4taGVp Z2h0OjEwMHB4Ij48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAg ICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwg c3R5bGU9ImRpc3BsYXk6YmxvY2s7Zm9udC13ZWlnaHQ6NjAwO21hcmdpbi1ib3R0b206NnB4Ij5B bGxnZW1laW5lIEhpbGZlIChmcmVpZXIgVGV4dCk8L2xhYmVsPgogICAgICAgICAgICAgICAgICAg ICAgICAgICAgPGRpdiBjbGFzcz0icnRlLXRvb2xiYXIiIGRhdGEtcnRlLWZvcj0iaWgtaGlsZmUi PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBj bGFzcz0icnRlLWJ0biIgZGF0YS1jbWQ9ImJvbGQiIHRpdGxlPSJGZXR0IChDdHJsK0IpIj48c3Ry b25nPkI8L3N0cm9uZz48L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8 YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9InJ0ZS1idG4iIGRhdGEtY21kPSJpdGFsaWMiIHRp dGxlPSJLdXJzaXYgKEN0cmwrSSkiPjxlbT5JPC9lbT48L2J1dHRvbj4KICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9InJ0ZS1idG4iIGRh dGEtY21kPSJ1bmRlcmxpbmUiIHRpdGxlPSJVbnRlcnN0cmljaGVuIChDdHJsK1UpIj48dT5VPC91 PjwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJy dGUtc2VwIj48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0 eXBlPSJidXR0b24iIGNsYXNzPSJydGUtYnRuIiBkYXRhLWNtZD0iaW5zZXJ0VW5vcmRlcmVkTGlz dCIgdGl0bGU9IkF1ZnrDpGhsdW5nIj7igKI8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9InJ0ZS1idG4iIGRhdGEtY21k PSJpbnNlcnRPcmRlcmVkTGlzdCIgdGl0bGU9Ik51bW1lcmllcnQiPjEuPC9idXR0b24+CiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InJ0ZS1zZXAiPjwvc3Bhbj4K ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xh c3M9InJ0ZS1idG4iIGRhdGEtY21kPSJvdXRkZW50IiB0aXRsZT0iQXVzcsO8Y2tlbiI+4oekPC9i dXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0 b24iIGNsYXNzPSJydGUtYnRuIiBkYXRhLWNtZD0iaW5kZW50IiB0aXRsZT0iRWlucsO8Y2tlbiI+ 4oelPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9 InJ0ZS1zZXAiPjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9u IHR5cGU9ImJ1dHRvbiIgY2xhc3M9InJ0ZS1idG4iIGRhdGEtY21kPSJyZW1vdmVGb3JtYXQiIHRp dGxlPSJGb3JtYXRpZXJ1bmcgZW50ZmVybmVuIj7inJU8L2J1dHRvbj4KICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0i aWgtaGlsZmUiIGNsYXNzPSJydGUtZWRpdG9yIiBjb250ZW50ZWRpdGFibGU9InRydWUiIHNwZWxs Y2hlY2s9InRydWUiIHN0eWxlPSJtaW4taGVpZ2h0OjEyMHB4Ij48L2Rpdj4KICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDxzbWFsbCBzdHlsZT0iZGlzcGxheTpibG9jaztjb2xvcjp2YXIoLS10 ZXh0LW11dGVkKTttYXJnaW4tdG9wOjRweCI+UGxhdHogZsO8ciBnZW5lcmVsbGUgSGlsZmV0ZXh0 ZSwgRkFRcywgVmVyd2Vpc2UuIEVyc2NoZWludCBpbSBJbmZvLUZlbnN0ZXIgw7xiZXIgZGVuIEJl ZGllbnVuZ3MtSGlud2Vpc2VuLjwvc21hbGw+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2 PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAg ICAgPGxhYmVsIHN0eWxlPSJkaXNwbGF5OmJsb2NrO2ZvbnQtd2VpZ2h0OjYwMDttYXJnaW4tYm90 dG9tOjZweCI+QmVkaWVudW5ncy1IaW53ZWlzZSAoamVkZXIgQnVsbGV0ID0gZWluZSBaZWlsZSAv IGVpbiBMaXN0ZW5wdW5rdCk8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRp diBjbGFzcz0icnRlLXRvb2xiYXIiIGRhdGEtcnRlLWZvcj0iaWgtYmVkaWVudW5nIj4KICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9InJ0 ZS1idG4iIGRhdGEtY21kPSJib2xkIiB0aXRsZT0iRmV0dCAoQ3RybCtCKSI+PHN0cm9uZz5CPC9z dHJvbmc+PC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0 eXBlPSJidXR0b24iIGNsYXNzPSJydGUtYnRuIiBkYXRhLWNtZD0iaXRhbGljIiB0aXRsZT0iS3Vy c2l2IChDdHJsK0kpIj48ZW0+STwvZW0+PC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJydGUtYnRuIiBkYXRhLWNtZD0i dW5kZXJsaW5lIiB0aXRsZT0iVW50ZXJzdHJpY2hlbiAoQ3RybCtVKSI+PHU+VTwvdT48L2J1dHRv bj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0icnRlLXNlcCI+ PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0 dG9uIiBjbGFzcz0icnRlLWJ0biIgZGF0YS1jbWQ9Imluc2VydFVub3JkZXJlZExpc3QiIHRpdGxl PSJBdWZ6w6RobHVuZyI+4oCiPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJydGUtYnRuIiBkYXRhLWNtZD0iaW5zZXJ0 T3JkZXJlZExpc3QiIHRpdGxlPSJOdW1tZXJpZXJ0Ij4xLjwvYnV0dG9uPgogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJydGUtc2VwIj48L3NwYW4+CiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJydGUt YnRuIiBkYXRhLWNtZD0ib3V0ZGVudCIgdGl0bGU9IkF1c3LDvGNrZW4iPuKHpDwvYnV0dG9uPgog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFz cz0icnRlLWJ0biIgZGF0YS1jbWQ9ImluZGVudCIgdGl0bGU9IkVpbnLDvGNrZW4iPuKHpTwvYnV0 dG9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJydGUtc2Vw Ij48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJi dXR0b24iIGNsYXNzPSJydGUtYnRuIiBkYXRhLWNtZD0icmVtb3ZlRm9ybWF0IiB0aXRsZT0iRm9y bWF0aWVydW5nIGVudGZlcm5lbiI+4pyVPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAg ICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9ImloLWJlZGll bnVuZyIgY2xhc3M9InJ0ZS1lZGl0b3IiIGNvbnRlbnRlZGl0YWJsZT0idHJ1ZSIgc3BlbGxjaGVj az0idHJ1ZSIgc3R5bGU9Im1pbi1oZWlnaHQ6MTYwcHgiPjwvZGl2PgogICAgICAgICAgICAgICAg ICAgICAgICAgICAgPHNtYWxsIHN0eWxlPSJkaXNwbGF5OmJsb2NrO2NvbG9yOnZhcigtLXRleHQt bXV0ZWQpO21hcmdpbi10b3A6NHB4Ij5adXLDvGNrc2V0emVuIGF1ZiBEZWZhdWx0OiBFZGl0b3Ig bGVlcmVuIHVuZCBzcGVpY2hlcm4g4oCUIGRlciBJbmZvLUJsb2NrIHplaWd0IGRhbm4gZGllIGVp bmdlYmF1dGVuIERlZmF1bHQtSGlud2Vpc2UuPC9zbWFsbD4KICAgICAgICAgICAgICAgICAgICAg ICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAg ICAgICAgICAgICA8bGFiZWwgc3R5bGU9ImRpc3BsYXk6YmxvY2s7Zm9udC13ZWlnaHQ6NjAwO21h cmdpbi1ib3R0b206NnB4Ij5TY2hsaWXDny1JbmZvIChIaW53ZWlzIGJlaW0gQXV0by1TaHV0ZG93 bik8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRleHRhcmVhIGlkPSJpaC1z Y2hsaWVzc2luZm8iIGNsYXNzPSJmb3JtLWlucHV0IiByb3dzPSIzIiBzdHlsZT0id2lkdGg6MTAw JSIgcGxhY2Vob2xkZXI9InouQi4gJ0RpZXNlIEFud2VuZHVuZyBzY2hsaWXDn3QgbmFjaCB7bWlu dXRlbn0gTWludXRlbiBJbmFrdGl2aXTDpHQgYXV0b21hdGlzY2guJyI+PC90ZXh0YXJlYT4KICAg ICAgICAgICAgICAgICAgICAgICAgICAgIDxzbWFsbCBzdHlsZT0iZGlzcGxheTpibG9jaztjb2xv cjp2YXIoLS10ZXh0LW11dGVkKTttYXJnaW4tdG9wOjRweCI+UGxhdHpoYWx0ZXIgPGNvZGU+e21p bnV0ZW59PC9jb2RlPiB3aXJkIGR1cmNoIGRpZSBTY2hsaWXDn3plaXQgZXJzZXR6dC4gS2VpbiBS aWNoLVRleHQg4oCUIHdpcmQgYWxzIHJlaW5lciBUZXh0IHZlcndlbmRldC48L3NtYWxsPgogICAg ICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4K ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBzdHlsZT0iZGlzcGxheTpibG9jaztm b250LXdlaWdodDo2MDA7bWFyZ2luLWJvdHRvbTo2cHgiPkltcHJlc3N1bSAoZXJzY2hlaW50IMO8 YmVyIGRlbiBCdXR0b24g4oCeSW1wcmVzc3VtIiBpbSBJbmZvLUZlbnN0ZXIpPC9sYWJlbD4KICAg ICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJ0ZS10b29sYmFyIiBkYXRhLXJ0 ZS1mb3I9ImloLWltcHJlc3N1bSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1 dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJydGUtYnRuIiBkYXRhLWNtZD0iYm9sZCIgdGl0bGU9 IkZldHQgKEN0cmwrQikiPjxzdHJvbmc+Qjwvc3Ryb25nPjwvYnV0dG9uPgogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0icnRlLWJ0biIg ZGF0YS1jbWQ9Iml0YWxpYyIgdGl0bGU9Ikt1cnNpdiAoQ3RybCtJKSI+PGVtPkk8L2VtPjwvYnV0 dG9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9u IiBjbGFzcz0icnRlLWJ0biIgZGF0YS1jbWQ9InVuZGVybGluZSIgdGl0bGU9IlVudGVyc3RyaWNo ZW4gKEN0cmwrVSkiPjx1PlU8L3U+PC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgPHNwYW4gY2xhc3M9InJ0ZS1zZXAiPjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9InJ0ZS1idG4iIGRhdGEtY21k PSJpbnNlcnRVbm9yZGVyZWRMaXN0IiB0aXRsZT0iQXVmesOkaGx1bmciPuKAojwvYnV0dG9uPgog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFz cz0icnRlLWJ0biIgZGF0YS1jbWQ9Imluc2VydE9yZGVyZWRMaXN0IiB0aXRsZT0iTnVtbWVyaWVy dCI+MS48L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFz cz0icnRlLXNlcCI+PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0 b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0icnRlLWJ0biIgZGF0YS1jbWQ9Im91dGRlbnQiIHRpdGxl PSJBdXNyw7xja2VuIj7ih6Q8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9InJ0ZS1idG4iIGRhdGEtY21kPSJpbmRlbnQi IHRpdGxlPSJFaW5yw7xja2VuIj7ih6U8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICA8c3BhbiBjbGFzcz0icnRlLXNlcCI+PC9zcGFuPgogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0icnRlLWJ0biIgZGF0YS1j bWQ9InJlbW92ZUZvcm1hdCIgdGl0bGU9IkZvcm1hdGllcnVuZyBlbnRmZXJuZW4iPuKclTwvYnV0 dG9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAg ICAgICAgICAgICA8ZGl2IGlkPSJpaC1pbXByZXNzdW0iIGNsYXNzPSJydGUtZWRpdG9yIiBjb250 ZW50ZWRpdGFibGU9InRydWUiIHNwZWxsY2hlY2s9InRydWUiIHN0eWxlPSJtaW4taGVpZ2h0OjE4 MHB4Ij48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzbWFsbCBzdHlsZT0iZGlz cGxheTpibG9jaztjb2xvcjp2YXIoLS10ZXh0LW11dGVkKTttYXJnaW4tdG9wOjRweCI+SW5pdGlh bCBtaXQgZWluZW0gc2lubnZvbGxlbiBEZWZhdWx0IGJlZsO8bGx0IChQb2xpemVpcHLDpHNpZGl1 bSBEb3J0bXVuZCAvIFZJIDMgLyB0ZWNobmlzY2hlIEtvbnplcHRpb24gLyBMaXplbnpoaW53ZWlz ZSAvIEhhZnR1bmdzYXVzc2NobHVzcykuIEJpdHRlIEFuc2NocmlmdCBlcmfDpG56ZW4gdW5kIGdn Zi4gYW4gZGllIHRhdHPDpGNobGljaGUgRGllbnN0c3RlbGxlIGFucGFzc2VuLiA8c3Ryb25nPk5p Y2h0IGdlbMO2c2NodDwvc3Ryb25nPiB3aXJkIGRlciBOb3RmYWxsLUhpbndlaXMgYXVmIFBISyBS b2VzZ2VuIOKAlCBkZXIgaXN0IGltIEltcHJlc3N1bXMtTW9kYWwgZmVzdCB1bnRlbiB2ZXJhbmtl cnQgdW5kIGthbm4gaGllciBuaWNodCBlbnRmZXJudCB3ZXJkZW4uPC9zbWFsbD4KICAgICAgICAg ICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAg ICAgICAgICAgICAgPGJ1dHRvbiBpZD0iYnRuLWluZm9oaWxmZS1zcGVpY2hlcm4iIGNsYXNzPSJi dG4gYnRuLXByaW1hZXIiIHN0eWxlPSJtYXJnaW4tdG9wOjEycHgiPkluZm9ybWF0aW9uICZhbXA7 IEhpbGZlIHNwZWljaGVybjwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4K ICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgIDwhLS0gVGFiOiBCZXplaWNo bnVuZ2VuICYgTGlzdGVuIOKAlCBlZGl0aWVyYmFyZSBTdGFtbWRhdGVuLUxpc3RlbgogICAgICAg ICAgICAgICAgICAgICAoRGllbnN0Z3JhZGUsIEZ1bmt0aW9uZW4pIHN0YXR0IGhhcnRjb2RpZXJ0 ZSBDb2RlLUtvbnN0YW50ZW4uIC0tPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWRtaW4t dGFiIHZlcnN0ZWNrdCIgaWQ9ImFkbWluLXRhYi1saXN0ZW4iPgogICAgICAgICAgICAgICAgICAg IDxkaXYgY2xhc3M9ImFkbWluLWtvcGYiPgogICAgICAgICAgICAgICAgICAgICAgICA8aDI+QmV6 ZWljaG51bmdlbiAmYW1wOyBMaXN0ZW48L2gyPgogICAgICAgICAgICAgICAgICAgIDwvZGl2Pgog ICAgICAgICAgICAgICAgICAgIDxkZXRhaWxzIGNsYXNzPSJhZG1pbi1pbmZvIiBkYXRhLWluZm8t a2V5PSJsaXN0ZW4iPgogICAgICAgICAgICAgICAgICAgICAgICA8c3VtbWFyeT48c3BhbiBjbGFz cz0iYWRtaW4taW5mby1jaGV2Ij7ilrg8L3NwYW4+V2FzIHdpcmQgaGllciBnZXBmbGVndD88c3Bh biBjbGFzcz0iYWRtaW4taW5mby1iYWRnZSI+QXVma2xhcHBlbiAvIFp1a2xhcHBlbjwvc3Bhbj48 L3N1bW1hcnk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFkbWluLWluZm8t Ym9keSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD48c3Ryb25nPkRpZW5zdGdyYWRl PC9zdHJvbmc+IOKAlCBkaWUgRGllbnN0Z3JhZC1BdXN3YWhsIGluIGRlciBQZXJzb25hbHZlcndh bHR1bmcgKHouQi4gUE9LLCBQSEssIEVQSEspLiBSZWloZW5mb2xnZSBiZXN0aW1tdCBkaWUgU29y dGllcnVuZyBpbSBEcm9wZG93bjogPGVtPm9iZW4gPSBow7ZoZXIgZ2VzdGVsbHQ8L2VtPi4gVmVy d2VuZGUgZGVuIFN0ZXJuIDxjb2RlPio8L2NvZGU+IGbDvHIgWndpc2NoZW5zdHVmZW4gd2llIDxj b2RlPlBISyo8L2NvZGU+IChBMTIgendpc2NoZW4gUEhLIEExMSB1bmQgRVBISyBBMTMpLjwvcD4K ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPjxzdHJvbmc+RnVua3Rpb25lbjwvc3Ryb25n PiDigJQgU3RhbW0tRnVua3Rpb24gZWluZXIgUGVyc29uIChER0wsIFdERiwgV2FjaGxlaXR1bmcs IC4uLikuIERlciA8c3Ryb25nPlJhbmc8L3N0cm9uZz4gYmVzdGltbXQgZGllIFZlcmFudHdvcnR1 bmdzLVJlaWhlbmZvbGdlIGluIGRlciBTY2hpY2h0ICgwID0gaMO2Y2hzdGUgVmVyYW50d29ydHVu ZykuIFBlcnNvbmVuIG1pdCBnbGVpY2hlbSBSYW5nIHdlcmRlbiDDvGJlciBpaHJlIHJvaGUgUG9z aXRpb25zLVphaGwgc29ydGllcnQuPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+ PHN0cm9uZz5Wb3JzaWNodCBiZWltIEzDtnNjaGVuOjwvc3Ryb25nPiBQZXJzb25lbiwgZGllIGVp bmVuIGVudGZlcm50ZW4gRGllbnN0Z3JhZCBvZGVyIGVpbmUgZW50ZmVybnRlIEZ1bmt0aW9uIHRy YWdlbiwgYmVoYWx0ZW4gZGVuIGFsdGVuIFdlcnQsIGvDtm5uZW4gaWhuIGFiZXIgbmljaHQgbWVo ciBuZXUgYXVzd8OkaGxlbiwgYmlzIGVyIHdpZWRlciBpbiBkZXIgTGlzdGUgc3RlaHQuPC9wPgog ICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2RldGFp bHM+CgogICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJhZG1pbi1zZWt0aW9uIiBp ZD0iYWRtaW4tc2VrdGlvbi1saXN0ZW4tZGllbnN0Z3JhZGUiPgogICAgICAgICAgICAgICAgICAg ICAgICA8ZGl2IGNsYXNzPSJhZG1pbi1zZWt0aW9uLWtvcGYiPgogICAgICAgICAgICAgICAgICAg ICAgICAgICAgPGgzPkRpZW5zdGdyYWRlPC9oMz4KICAgICAgICAgICAgICAgICAgICAgICAgICAg IDxidXR0b24gaWQ9ImJ0bi1kaWVuc3RncmFkLW5ldSIgY2xhc3M9ImJ0biBidG4tZXJmb2xnIj5O ZXVlciBEaWVuc3RncmFkPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2Pgog ICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9ImFkbWluLXRhYmVsbGUiIGlkPSJk aWVuc3RncmFkZS10YWJlbGxlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aGVhZD4K ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDx0aCBzdHlsZT0id2lkdGg6NjBweCI+UmFuZzwvdGg+CiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5CZXplaWNobnVuZzwvdGg+CiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBzdHlsZT0id2lkdGg6MTMwcHgiPkFrdGlv bmVuPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAg ICAgICAgICAgICAgICAgICAgPC90aGVhZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0 Ym9keSBpZD0iZGllbnN0Z3JhZGUtdGJvZHkiPjwvdGJvZHk+CiAgICAgICAgICAgICAgICAgICAg ICAgIDwvdGFibGU+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJhZG1pbi1oaW53 ZWlzIj48ZW0+UmVpaGVuZm9sZ2UgcGVyIOKGkSDihpMgw6RuZGVybi4gSG9lY2hzdGVyIERpZW5z dGdyYWQgenVlcnN0LjwvZW0+PC9wPgogICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGlk PSJidG4tZGllbnN0Z3JhZGUtc3BlaWNoZXJuIiBjbGFzcz0iYnRuIGJ0bi1wcmltYWVyIiBzdHls ZT0ibWFyZ2luLXRvcDoxMnB4Ij5EaWVuc3RncmFkZSBzcGVpY2hlcm48L2J1dHRvbj4KICAgICAg ICAgICAgICAgICAgICA8L3NlY3Rpb24+CgogICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNs YXNzPSJhZG1pbi1zZWt0aW9uIiBpZD0iYWRtaW4tc2VrdGlvbi1saXN0ZW4tZnVua3Rpb25lbiI+ CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFkbWluLXNla3Rpb24ta29wZiI+ CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDM+RnVua3Rpb25lbjwvaDM+CiAgICAgICAg ICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGlkPSJidG4tZnVua3Rpb24tbmV1IiBjbGFzcz0i YnRuIGJ0bi1lcmZvbGciPk5ldWUgRnVua3Rpb248L2J1dHRvbj4KICAgICAgICAgICAgICAgICAg ICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0iYWRtaW4t dGFiZWxsZSIgaWQ9ImZ1bmt0aW9uZW4tdGFiZWxsZSI+CiAgICAgICAgICAgICAgICAgICAgICAg ICAgICA8dGhlYWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggc3R5bGU9IndpZHRoOjYwcHgiPlBvczwv dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5CZXplaWNobnVuZzwv dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBzdHlsZT0id2lkdGg6 ODBweCIgdGl0bGU9IjAgPSBob2VjaHN0ZSBWZXJhbnR3b3J0dW5nLCA5OSA9IHVucmVsZXZhbnQu IFBlcnNvbmVuIG1pdCBnbGVpY2hlbSBSYW5nIHdlcmRlbiBkdXJjaCBkaWUgcm9oZSBQb3NpdGlv bnMtWmFobCBzb3J0aWVydC4iPlJhbmc8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICA8dGggc3R5bGU9IndpZHRoOjE0MHB4O3RleHQtYWxpZ246Y2VudGVyIiB0aXRsZT0i V2VubiBkZWFrdGl2aWVydCwgd2VyZGVuIFBlcnNvbmVuIG1pdCBkaWVzZXIgRnVua3Rpb24gTklD SFQgaW4gZGVyIFBsYW51bmdzYW5zaWNodCwgaW0gV29jaGVucGxhbiB1bmQgaW0gUGVycy4gUGxh biBhbmdlemVpZ3Qg4oCUIGJsZWliZW4gYWJlciBpbiBkZXIgUGVyc29uYWx2ZXJ3YWx0dW5nIHBm bGVnYmFyLiI+SW4gUGxhbnVuZyBzaWNodGJhcjwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDx0aCBzdHlsZT0id2lkdGg6MTMwcHgiPkFrdGlvbmVuPC90aD4KICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAg ICAgPC90aGVhZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0Ym9keSBpZD0iZnVua3Rp b25lbi10Ym9keSI+PC90Ym9keT4KICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAg ICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9ImFkbWluLWhpbndlaXMiPjxlbT5SZWloZW5m b2xnZSBwZXIg4oaRIOKGkyDDpG5kZXJuLjwvZW0+PC9wPgogICAgICAgICAgICAgICAgICAgICAg ICA8YnV0dG9uIGlkPSJidG4tZnVua3Rpb25lbi1zcGVpY2hlcm4iIGNsYXNzPSJidG4gYnRuLXBy aW1hZXIiIHN0eWxlPSJtYXJnaW4tdG9wOjEycHgiPkZ1bmt0aW9uZW4gc3BlaWNoZXJuPC9idXR0 b24+CiAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgPC9kaXY+ CgoKICAgICAgICAgICAgICAgIDwhLS0gVGFiOiBFLU1haWwtVm9ybGFnZW4g4oCUIEthcnRlbi1M YXlvdXQgKEZpbmRpbmcgQy43IC8gU3BlYyBGLjEpIC0tPgogICAgICAgICAgICAgICAgPGRpdiBj bGFzcz0iYWRtaW4tdGFiIHZlcnN0ZWNrdCIgaWQ9ImFkbWluLXRhYi1lbWFpbHZvcmxhZ2VuIj4K ICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhZG1pbi1rb3BmIj4KICAgICAgICAgICAg ICAgICAgICAgICAgPGgyPkUtTWFpbC1Wb3JsYWdlbjwvaDI+CiAgICAgICAgICAgICAgICAgICAg PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRldGFpbHMgY2xhc3M9ImFkbWluLWluZm8iIGRh dGEtaW5mby1rZXk9ImVtYWlsdm9ybGFnZW4iIG9wZW4+CiAgICAgICAgICAgICAgICAgICAgICAg IDxzdW1tYXJ5PjxzcGFuIGNsYXNzPSJhZG1pbi1pbmZvLWNoZXYiPuKWuDwvc3Bhbj5Xb3p1IGRp ZXNlIFZvcmxhZ2VuPzxzcGFuIGNsYXNzPSJhZG1pbi1pbmZvLWJhZGdlIj5BdWZrbGFwcGVuIC8g WnVrbGFwcGVuPC9zcGFuPjwvc3VtbWFyeT4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBj bGFzcz0iYWRtaW4taW5mby1ib2R5Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPkhp ZXIgd2VyZGVuIEJldHJlZmYgdW5kIFRleHQgYWxsZXIgRS1NYWlsLVZvcmxhZ2VuIGdlcGZsZWd0 LiBWYXJpYWJsZW4gd2llIDxjb2RlPntkYXR1bX08L2NvZGU+IG9kZXIgPGNvZGU+e3BlcnNvbl9u YW1lfTwvY29kZT4gd2VyZGVuIGJlaW0gw5ZmZm5lbiBkZXIgTWFpbCBhdXRvbWF0aXNjaCBkdXJj aCBrb25rcmV0ZSBXZXJ0ZSBlcnNldHp0LjwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAg IDxwPjxzdHJvbmc+VmVyc2FuZCBhdXNzY2hsaWXDn2xpY2ggw7xiZXIgZGFzIFN0YW5kYXJkLU1h aWxwcm9ncmFtbSAoT3V0bG9vayk8L3N0cm9uZz4g4oCUIGJlaW0gYXVzbMO2c2VuZGVuIEVyZWln bmlzICh6LkIuIEVpbnRyYWcgZWluZXIgS3JhbmttZWxkdW5nKSDDtmZmbmV0IHNpY2ggZWluZSB2 b3JhdXNnZWbDvGxsdGUgTWFpbCBtaXQgRW1wZsOkbmdlcm4sIEJldHJlZmYgdW5kIFRleHQuIER1 IHByw7xmc3QgZGllIE1haWwgdW5kIHZlcnNjaGlja3N0IHNpZSBtYW51ZWxsIHBlciBLbGljayBh dWYg4oCeU2VuZGVuIi4gS2VpbiBhdXRvbWF0aXNjaGVyIFZlcnNhbmQuPC9wPgogICAgICAgICAg ICAgICAgICAgICAgICAgICAgPHA+PHN0cm9uZz5BdXRvLVRyaWdnZXIgYWt0aXZpZXJlbjwvc3Ry b25nPiDigJQgaW0gRWRpdG9yLU1vZGFsIGVpbmVyIFZvcmxhZ2UgcHJvIFRyaWdnZXIgZWluc3Rl bGxiYXIgKEFrdGl2aWVyZW4gKyBFbXBmw6RuZ2VyIHfDpGhsZW4pLiBTb2xhbmdlIGVpbiBUcmln Z2VyIGRlYWt0aXZpZXJ0IGlzdCwgw7ZmZm5ldCBzaWNoIGJlaW0gRXJlaWduaXMga2VpbiBQb3B1 cC48L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD48c3Ryb25nPkRlZml6aXQtQnJp ZWZpbmc8L3N0cm9uZz4g4oCUIHdpcmQgbWFudWVsbCBwZXIgQnV0dG9uIGltIFRhYiA8ZW0+UHLD vGZ1bmc8L2VtPiBhdXNnZWzDtnN0IChrZWluIFNjaGVkdWxlcikuIERlciBCdXR0b24gw7ZmZm5l dCBPdXRsb29rIG1pdCBlaW5lciDDnGJlcnNpY2h0IGFsbGVyIFVudGVyYmVzZXR6dW5nZW4gZGVy IG7DpGNoc3RlbiA0IFdvY2hlbi48L3A+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2Pgog ICAgICAgICAgICAgICAgICAgIDwvZGV0YWlscz4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGlk PSJlbWFpbHZvcmxhZ2VuLWluaGFsdCI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgIDwhLS0g U3VwcG9ydC1NYWlsLVZvcmxhZ2U6IG51ciBmdWVyIFBoaWxpcHAgUm9lc2dlbiBzaWNodGJhci4K ICAgICAgICAgICAgICAgICAgICAgICAgIFdpcmQgcGVyIEpTIGluIGFwcC5qcyAvIGFkbWluLmpz IGVpbmdlYmxlbmRldCwKICAgICAgICAgICAgICAgICAgICAgICAgIHdlbm4gWi5iZW51dHplciBt aXQgTlcwNTM2MDkgbWF0Y2hlZC4gLS0+CiAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xh c3M9ImFkbWluLXNla3Rpb24gdmVyc3RlY2t0IiBpZD0iYWRtaW4tc2VrdGlvbi1zdXBwb3J0bWFp bCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFkbWluLXNla3Rpb24ta29w ZiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDM+U3VwcG9ydC1NYWlsLVZvcmxhZ2Ug KEltcHJlc3N1bXMtTW9kYWwpPC9oMz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFu IGNsYXNzPSJyZWNodGUtZGlydHktaGlud2VpcyIgc3R5bGU9ImZvbnQtc3R5bGU6aXRhbGljIj5O dXIgZsO8ciBQSEsgUm9lc2dlbiBzaWNodGJhcjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAg ICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkZXRhaWxzIGNsYXNzPSJhZG1pbi1p bmZvIiBkYXRhLWluZm8ta2V5PSJzdXBwb3J0bWFpbCI+CiAgICAgICAgICAgICAgICAgICAgICAg ICAgICA8c3VtbWFyeT48c3BhbiBjbGFzcz0iYWRtaW4taW5mby1jaGV2Ij7ilrg8L3NwYW4+V2Fz IGlzdCBkYXM/PHNwYW4gY2xhc3M9ImFkbWluLWluZm8tYmFkZ2UiPkF1ZmtsYXBwZW4gLyBadWts YXBwZW48L3NwYW4+PC9zdW1tYXJ5PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBj bGFzcz0iYWRtaW4taW5mby1ib2R5Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8 cD5IaWVyIGthbm5zdCBkdSBkZW4gQm9keSBkZXIgU3VwcG9ydC1NYWlsIGFucGFzc2VuLCBkaWUg YmVpbSBLbGljayBhdWYgPGVtPuKAnlN1cHBvcnQtQW5mcmFnZSBwZXIgRS1NYWlsIjwvZW0+IGlt IEltcHJlc3N1bXMtTW9kYWwgdm9yYXVzZ2Vmw7xsbHQgd2lyZC4gUGxhaW4tVGV4dCwga2VpbiBI VE1MIOKAlCBPdXRsb29rIMO8YmVybmltbXQncyAxOjEuPC9wPgogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDxwPjxzdHJvbmc+UGxhdHpoYWx0ZXI8L3N0cm9uZz4gKHdlcmRlbiBiZWlt IFNlbmRlbiBhdXRvbWF0aXNjaCBlcnNldHp0KTo8L3A+CiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgPHVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGNv ZGU+e253X2tlbm51bmd9PC9jb2RlPiDigJQgV2luZG93cy1Vc2VyIGRlcyBBYnNlbmRlcnMgKHou Jm5ic3A7Qi4gPGNvZGU+UE9MSVpFSVxOVzA1NTgwMTwvY29kZT4pPC9saT4KICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxjb2RlPntha3R1ZWxsZV9hbnNpY2h0fTwvY29k ZT4g4oCUIFRhYiwgZGVuIGRlciBVc2VyIHp1bGV0enQgb2ZmZW4gaGF0dGU8L2xpPgogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGNvZGU+e2RhdHVtfTwvY29kZT4g4oCU IGhldXRlLCA8Y29kZT5kZC5tbS5qampqPC9jb2RlPjwvbGk+CiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDxsaT48Y29kZT57dWhyemVpdH08L2NvZGU+IOKAlCBqZXR6dCwgPGNv ZGU+aGg6bW08L2NvZGU+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg PGxpPjxjb2RlPnthdWZsb2VzdW5nfTwvY29kZT4g4oCUIFZpZXdwb3J0LCB6LiZuYnNwO0IuIDxj b2RlPjE5MjB4MTA4MDwvY29kZT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICA8bGk+PGNvZGU+e2FwcF9qYWhyfTwvY29kZT4g4oCUIFdlcnQgYXVzIGFkbWluLmpzb248 L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGNvZGU+e2Jyb3dz ZXJ9PC9jb2RlPiDigJQgQnJvd3Nlci1Vc2VyLUFnZW50IChtYXggMTIwIFplaWNoZW4pPC9saT4K ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDxwPjxzdHJvbmc+RW1wZsOkbmdlciB1bmQgQmV0cmVmZjwvc3Ryb25nPiBz aW5kIGhhcnRjb2RpZXJ0ICg8Y29kZT5waGlsaXBwLnJvZXNnZW5AcG9saXplaS5ucncuZGU8L2Nv ZGU+IC8gPGNvZGU+VkkzIERHTCBQbGFudW5nIC0gRG9ydG11bmQ8L2NvZGU+KSDigJQgbmljaHQg w7xiZXIgZGllc2VuIEVkaXRvciDDpG5kZXJiYXIuPC9wPgogICAgICAgICAgICAgICAgICAgICAg ICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGV0YWlscz4KICAgICAgICAg ICAgICAgICAgICAgICAgPHRleHRhcmVhIGlkPSJzdXBwb3J0bWFpbC10ZXh0IiBjbGFzcz0iZm9y bS1pbnB1dCIgcm93cz0iMjIiIHN0eWxlPSJ3aWR0aDoxMDAlO2ZvbnQtZmFtaWx5OnVpLW1vbm9z cGFjZSxTRk1vbm8tUmVndWxhcixNZW5sbyxDb25zb2xhcyxtb25vc3BhY2U7Zm9udC1zaXplOjEy cHg7bGluZS1oZWlnaHQ6MS41IiBwbGFjZWhvbGRlcj0iKGxlZXIgPSBlaW5nZWJhdXRlciBEZWZh dWx0IHdpcmQgdmVyd2VuZGV0KSI+PC90ZXh0YXJlYT4KICAgICAgICAgICAgICAgICAgICAgICAg PGRpdiBzdHlsZT0ibWFyZ2luLXRvcDoxMHB4O2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50 ZXI7Z2FwOjEwcHg7ZmxleC13cmFwOndyYXAiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAg PGJ1dHRvbiBpZD0iYnRuLXN1cHBvcnRtYWlsLXNwZWljaGVybiIgY2xhc3M9ImJ0biBidG4tcHJp bWFlciI+Vm9ybGFnZSBzcGVpY2hlcm48L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDxidXR0b24gaWQ9ImJ0bi1zdXBwb3J0bWFpbC1kZWZhdWx0IiBjbGFzcz0iYnRuIGJ0bi1z ZWsgYnRuLWtsZWluIj5BdWYgRGVmYXVsdCB6dXLDvGNrc2V0emVuPC9idXR0b24+CiAgICAgICAg ICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGlkPSJidG4tc3VwcG9ydG1haWwtdm9yc2NoYXUi IGNsYXNzPSJidG4gYnRuLXNlayBidG4ta2xlaW4iIHRpdGxlPSJPdXRsb29rIG1pdCBha3R1ZWxs ZXIgVm9ybGFnZSArIExpdmUtV2VydGVuIMO2ZmZuZW4iPk91dGxvb2stVm9yc2NoYXUgw7ZmZm5l bjwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gaWQ9InN1cHBvcnRt YWlsLWRpcnR5LWhpbndlaXMiIGNsYXNzPSJyZWNodGUtZGlydHktaGlud2VpcyIgc3R5bGU9ImRp c3BsYXk6bm9uZSI+4pePIFVuZ2VzcGVpY2hlcnRlIMOEbmRlcnVuZ2VuPC9zcGFuPgogICAgICAg ICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAg ICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICA8IS0tIFRhYjogTWl0dGVpbHVu Z2VuIChTcHJpbnQgRC0zYywgMjAyNi0wNS0yOSkg4oCUIFNVLW9ubHkuCiAgICAgICAgICAgICAg ICAgICAgIFZvbSBTdXBlclVzZXIgZ2VwZmxlZ3RlIE1vZGFsZS1IaW53ZWlzZSBhbiBQZXJzb25l bi8KICAgICAgICAgICAgICAgICAgICAgR3J1cHBlbi9Sb2xsZW4gbWl0IFRyaWdnZXIgKyBBbmhh ZW5nZW4uIEtvbXBsZXR0ZSBVSQogICAgICAgICAgICAgICAgICAgICB3aXJkIHp1ciBMYXVmemVp dCBhdXMganMvYWRtaW5fbWl0dGVpbHVuZ2VuLmpzIGdlcmVuZGVydC4gLS0+CiAgICAgICAgICAg ICAgICA8ZGl2IGNsYXNzPSJhZG1pbi10YWIgdmVyc3RlY2t0IiBpZD0iYWRtaW4tdGFiLW1pdHRl aWx1bmdlbiI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWRtaW4ta29wZiI+CiAg ICAgICAgICAgICAgICAgICAgICAgIDxoMj5NaXR0ZWlsdW5nZW48L2gyPgogICAgICAgICAgICAg ICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkZXRhaWxzIGNsYXNzPSJhZG1pbi1p bmZvIiBkYXRhLWluZm8ta2V5PSJtaXR0ZWlsdW5nZW4iPgogICAgICAgICAgICAgICAgICAgICAg ICA8c3VtbWFyeT48c3BhbiBjbGFzcz0iYWRtaW4taW5mby1jaGV2Ij7ilrg8L3NwYW4+V2FzIHNp bmQgTWl0dGVpbHVuZ2VuPzxzcGFuIGNsYXNzPSJhZG1pbi1pbmZvLWJhZGdlIj5BdWZrbGFwcGVu IC8gWnVrbGFwcGVuPC9zcGFuPjwvc3VtbWFyeT4KICAgICAgICAgICAgICAgICAgICAgICAgPGRp diBjbGFzcz0iYWRtaW4taW5mby1ib2R5Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxw PjxzdHJvbmc+V296dT88L3N0cm9uZz4gU3VwZXJVc2VyIGvDtm5uZW4gaGllciBIaW53ZWlzZSBm w7xyIGF1c2dld8OkaGx0ZSBQZXJzb25lbiwgR3J1cHBlbiBvZGVyIFJvbGxlbiBhbmxlZ2VuLiBE aWVzZSBlcnNjaGVpbmVuIGJlaW0gbsOkY2hzdGVuIEFwcC1TdGFydCBhbHMgTW9kYWwtU3RhY2sg KG9iZW4gZHVyY2hnZWhlbmQsIG9kZXIgZWlubWFsIHBybyBUYWcg4oCUIGplIG5hY2ggVHJpZ2dl cikuPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+PHN0cm9uZz5FbXBmw6RuZ2Vy PC9zdHJvbmc+IHNpbmQga29tYmluaWVyYmFyOiBlaW56ZWxuZSBQZXJzb25lbiwgZ2FuemUgRGll bnN0Z3J1cHBlbiwgUm9sbGVuIChER0wvV0RGL+KApiwgU1UsIEdlc2FtdHZlcmFudHdvcnRsaWNo KSBvZGVyIOKAnkFsbGUiIChqZWRlciBlaW5nZWxvZ2d0ZSBVc2VyKS48L3A+CiAgICAgICAgICAg ICAgICAgICAgICAgICAgICA8cD48c3Ryb25nPlRyaWdnZXI6PC9zdHJvbmc+IDxlbT5laW5tYWw8 L2VtPiA9IFVzZXIgc2llaHQgZGllIE1pdHRlaWx1bmcgZ2VuYXUgZWluIE1hbCB1bmQgbmllIHdp ZWRlci4gPGVtPmplZGVzIE1hbDwvZW0+ID0gYmVpIGplZGVtIExvZ2luIChtYXguIDHDlyBwcm8g S2FsZW5kZXJ0YWcpLiA8ZW0+YmlzIERhdHVtPC9lbT4gPSB0w6RnbGljaCBiaXMgenVtIFN0aWNo dGFnLCBkYW5hY2ggbmllIHdpZWRlci48L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8 cD48c3Ryb25nPkFuaMOkbmdlOjwvc3Ryb25nPiBlaW4gVGh1bWJuYWlsLUJpbGQgKG1heC4gMiBN QiwgSlBHL1BORy9XZWJQKSB1bmQvb2RlciBlaW4gUERGIChtYXguIDEwIE1CKSBrw7ZubmVuIGJl aWdlZsO8Z3Qgd2VyZGVuLiBLbGljayBhdWYgZGVuIEFuaGFuZyDDtmZmbmV0IGlobiBpbSBWb2xs YmlsZC1TdWItTW9kYWwuPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+PHN0cm9u Zz5XYXMncyBuZXUgbWFjaHQ6PC9zdHJvbmc+IGVpbmUgZ2xvYmFsZSBNaXR0ZWlsdW5nIG1pdCBF bXBmw6RuZ2VyIOKAnkFsbGUiIHVuZCBUcmlnZ2VyIOKAnmVpbm1hbCIgaXN0IGVmZmVrdGl2IGVp biDigJ5XaGF0J3MgTmV3Ii1FaW50cmFnLjwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgPC9k aXY+CiAgICAgICAgICAgICAgICAgICAgPC9kZXRhaWxzPgogICAgICAgICAgICAgICAgICAgIDxk aXYgY2xhc3M9ImFkbWluLWtvcGYiIHN0eWxlPSJtYXJnaW4tdG9wOjhweDtqdXN0aWZ5LWNvbnRl bnQ6ZmxleC1lbmQiPgogICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGlkPSJidG4tbWl0 dGVpbHVuZy1uZXUiIGNsYXNzPSJidG4gYnRuLWVyZm9sZyI+KyBOZXVlIE1pdHRlaWx1bmc8L2J1 dHRvbj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2 IGlkPSJtaXR0ZWlsdW5nZW4taW5oYWx0Ij48L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgoK ICAgICAgICAgICAgICAgIDwhLS0gVGFiOiBSZWNodGUgJiBTaWNodGJhcmtlaXQgKE1lcmdlIOKA lCBTdXBlclVzZXIgKyBGYWNoYXVmc2ljaHQgKyBTaWNodGJhcmtlaXQpIC0tPgogICAgICAgICAg ICAgICAgPGRpdiBjbGFzcz0iYWRtaW4tdGFiIHZlcnN0ZWNrdCIgaWQ9ImFkbWluLXRhYi1zdXBl cnVzZXIiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFkbWluLWtvcGYiPgogICAg ICAgICAgICAgICAgICAgICAgICA8aDI+UmVjaHRlICZhbXA7IFNpY2h0YmFya2VpdDwvaDI+CiAg ICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJyZWNodGUtdGFiLXN1YiI+Um9sbGVuLVNs b3RzIG1pdCBrb25maWd1cmllcmJhcmVyIFNlaGVuLS9CZWFyYmVpdGVuLVNpY2h0YmFya2VpdC4g U3VwZXJVc2VyIHN0aWNodCBhbGxlIGFuZGVyZW4g4oCUIHNpZSBzZWhlbiB1bmQga8O2bm5lbiBp bW1lciBhbGxlcy4gV2VyIGluIGtlaW5lciBkaWVzZXIgTGlzdGVuIHN0ZWh0LCBzaWVodCB3ZWRl ciBTdGF0aXN0aWsgbm9jaCBMb2didWNoIG5vY2ggQWRtaW5pc3RyYXRpb24uPC9wPgogICAgICAg ICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0i YWRtaW4tc2VrdGlvbiByZWNodGUtY2FyZCByZWNodGUtY2FyZC1zdSIgaWQ9ImFkbWluLXNla3Rp b24tc3VwZXJ1c2VyIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRldGFpbHMgY2xhc3M9InJl Y2h0ZS1yb2xsZSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzdW1tYXJ5IGNsYXNzPSJyZWNo dGUtcm9sbGUtc3VtbWFyeSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFz cz0icmVjaHRlLWNhcmQtaWNvbiIgYXJpYS1oaWRkZW49InRydWUiPvCfm6E8L3NwYW4+CiAgICAg ICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0icmVjaHRlLXJvbGxlLXRpdGVsIj48 c3Ryb25nPlN1cGVyVXNlcjwvc3Ryb25nPjxzcGFuIGNsYXNzPSJyZWNodGUtY2FyZC1zdWIiPlZv bGx6dWdyaWZmIGF1ZiBhbGxlIEZ1bmt0aW9uZW4uIFZlcndhbHRldCBhbmRlcmUgUm9sbGVuLjwv c3Bhbj48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0icmVj aHRlLXJvbGxlLWNoZXYiIGFyaWEtaGlkZGVuPSJ0cnVlIj7ilrg8L3NwYW4+CiAgICAgICAgICAg ICAgICAgICAgICAgIDwvc3VtbWFyeT4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFz cz0icmVjaHRlLXJvbGxlLWJvZHkiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBj bGFzcz0icmVjaHRlLXJvbGxlLWFrdGlvbiI+PGJ1dHRvbiBpZD0iYnRuLXN1cGVydXNlci1uZXUi IGNsYXNzPSJidG4gYnRuLWVyZm9sZyI+TmV1ZXIgU3VwZXJVc2VyPC9idXR0b24+PC9kaXY+CiAg ICAgICAgICAgICAgICAgICAgICAgIDxkZXRhaWxzIGNsYXNzPSJhZG1pbi1pbmZvIiBkYXRhLWlu Zm8ta2V5PSJzdXBlcnVzZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN1bW1hcnk+ PHNwYW4gY2xhc3M9ImFkbWluLWluZm8tY2hldiI+4pa4PC9zcGFuPkhpbndlaXNlIHp1IFN1cGVy VXNlcm48c3BhbiBjbGFzcz0iYWRtaW4taW5mby1iYWRnZSI+QXVma2xhcHBlbiAvIFp1a2xhcHBl bjwvc3Bhbj48L3N1bW1hcnk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNz PSJhZG1pbi1pbmZvLWJvZHkiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPjxz dHJvbmc+V2FzIGlzdCBlaW4gU3VwZXJVc2VyPzwvc3Ryb25nPiBTdXBlclVzZXIgaGFiZW4gdW5l aW5nZXNjaHLDpG5rdGVuIFp1Z3JpZmYgYXVmIGFsbGUgQWRtaW5pc3RyYXRpb25zZnVua3Rpb25l biwgZWluc2NobGllw59saWNoIGRlciBWZXJ3YWx0dW5nIGFuZGVyZXIgU3VwZXJVc2VyLCBkZW0g U2V0emVuIHZvbiBTb25kZXJ0ZXJtaW5lLUhpbndlaXNlbiBkaXJla3QgaW4gZGVyIFBsYW51bmcg dW5kIGRlciBQZmxlZ2UgZGVyIGdsb2JhbGVuIEVpbnN0ZWxsdW5nZW4uPC9wPgogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIDxwPjxzdHJvbmc+U2ljaGVyaGVpdHNoaW53ZWlzOjwvc3Ry b25nPiBOdXIgYmVzdGVoZW5kZSBTdXBlclVzZXIga8O2bm5lbiBkaWVzZSBMaXN0ZSBiZWFyYmVp dGVuLiBEYW1pdCB3aXJkIHZlcmhpbmRlcnQsIGRhc3MgQWRtaW4tUmVjaHRlIHZlcmxvcmVuIGdl aGVuIG9kZXIgdW5iZXJlY2h0aWd0IGVyd2VpdGVydCB3ZXJkZW4uIDxiPk1pbmRlc3RlbnMgZWlu IFN1cGVyVXNlciBtdXNzIGltbWVyIGVpbmdldHJhZ2VuIHNlaW48L2I+IOKAlCBzb25zdCBpc3Qg bmllbWFuZCBtZWhyIGluIGRlciBMYWdlLCBhZG1pbmlzdHJhdGl2ZSDDhG5kZXJ1bmdlbiB2b3J6 dW5laG1lbi48L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+PHN0cm9uZz5G ZWxkZXI6PC9zdHJvbmc+IE5hbWUgKEtsYXJ0ZXh0IHp1ciBJZGVudGlmaWthdGlvbiksIE5XLUtl bm51bmcgKFdpbmRvd3MtQmVudXR6ZXJuYW1lLCB3aXJkIGF1dG9tYXRpc2NoIGJlaW0gTG9naW4g YWJnZWdsaWNoZW4pLCBPRSAoT3JnYW5pc2F0aW9uc2VpbmhlaXQpLCBUZWxlZm9uL0R1cmNod2Fo bC48L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+PHN0cm9uZz5BbnplaWdl IGltIEluZm8tRmVuc3Rlcjo8L3N0cm9uZz4gQWxsZSBTdXBlclVzZXIgd2VyZGVuIGltIEluZm9y bWF0aW9uc2ZlbnN0ZXIgKEJ1dHRvbiDigJ7ihLkiIG9iZW4gcmVjaHRzKSBhbHMgQW5zcHJlY2hw YXJ0bmVyIGF1ZmdlZsO8aHJ0LjwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2 PgogICAgICAgICAgICAgICAgICAgICAgICA8L2RldGFpbHM+CiAgICAgICAgICAgICAgICAgICAg ICAgIDxkaXYgY2xhc3M9ImluZm8tYm94IHJlY2h0ZS1ub3RmYWxsLWJveCI+CiAgICAgICAgICAg ICAgICAgICAgICAgICAgICA8c3Ryb25nPk5vdGZhbGwtUsO8Y2tmYWxsZWJlbmU6PC9zdHJvbmc+ IERpZSBOVy1LZW5udW5nIDxjb2RlPk5XMDUzNjA5PC9jb2RlPiAoUEhLIFJvZXNnZW4pIGlzdCBp bSBTZXJ2ZXIgaGFydCBhbHMgU3VwZXJVc2VyIGhpbnRlcmxlZ3QgdW5kIGdpbHQgYXVjaCBkYW5u LCB3ZW5uIGRpZSBTdXBlclVzZXItTGlzdGUgbGVlciBvZGVyIHVubGVzYmFyIGlzdC4KICAgICAg ICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBj bGFzcz0iYWRtaW4tdGFiZWxsZSIgaWQ9InN1cGVydXNlci10YWJlbGxlIj4KICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDx0aGVhZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8 dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5OYW1lPC90aD4KICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPk5XLUtlbm51bmc8L3RoPgogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+T3JnYW5pc2F0aW9uc2VpbmhlaXQ8 L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggc3R5bGU9IndpZHRo OjE1MHB4Ij5UZWxlZm9uIC8gRHVyY2h3YWhsPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgPHRoIHN0eWxlPSJ3aWR0aDo4MHB4Ij5Ba3Rpb25lbjwvdGg+CiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAg IDwvdGhlYWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGJvZHkgaWQ9InN1cGVydXNl ci10Ym9keSI+PC90Ym9keT4KICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAg ICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icmVjaHRlLWNhcmQtZnVzcyI+CiAgICAgICAg ICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGlkPSJidG4tc3VwZXJ1c2VyLXNwZWljaGVybiIg Y2xhc3M9ImJ0biBidG4tcHJpbWFlciI+U3VwZXJVc2VyIHNwZWljaGVybjwvYnV0dG9uPgogICAg ICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBp ZD0ic3VwZXJ1c2VyLWtlaW4tcmVjaHQiIGNsYXNzPSJ2ZXJzdGVja3QgcmVjaHRlLWtlaW4tcmVj aHQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaW5mby1ib3giIHN0 eWxlPSJib3JkZXItbGVmdC1jb2xvcjp2YXIoLS1mYXJiZS1mZWhsZXIpIj4KICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPktlaW4gWnVncmlmZjo8L3N0cm9uZz4gTnVyIGJl c3RlaGVuZGUgU3VwZXJVc2VyIGvDtm5uZW4gZGllc2UgTGlzdGUgYmVhcmJlaXRlbi4KICAgICAg ICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rp dj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+PC9kZXRhaWxzPgogICAgICAgICAgICAg ICAgICAgIDwvc2VjdGlvbj4KCiAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9ImFk bWluLXNla3Rpb24gcmVjaHRlLWNhcmQgcmVjaHRlLWNhcmQtZmEiIGlkPSJhZG1pbi1zZWt0aW9u LWZhY2hhdWZzaWNodCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkZXRhaWxzIGNsYXNzPSJy ZWNodGUtcm9sbGUiPgogICAgICAgICAgICAgICAgICAgICAgICA8c3VtbWFyeSBjbGFzcz0icmVj aHRlLXJvbGxlLXN1bW1hcnkiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xh c3M9InJlY2h0ZS1jYXJkLWljb24iIGFyaWEtaGlkZGVuPSJ0cnVlIj7wn5GBPC9zcGFuPgogICAg ICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InJlY2h0ZS1yb2xsZS10aXRlbCI+ PHN0cm9uZz5GYWNoYXVmc2ljaHQ8L3N0cm9uZz48c3BhbiBjbGFzcz0icmVjaHRlLWNhcmQtc3Vi Ij5LbGFzc2lzY2hlIEF1ZnNpY2h0cy1Sb2xsZSBtaXQgZ3JhbnVsYXJlbiBTZWhlbi0gdW5kIFBs YW51bmdzLVJlY2h0ZW4uIE9wdGlvbmFsIOKAnkdlc2FtdHZlcmFudHdvcnRsaWNoIiBmw7xyIFNj aGljaHRiZXNldHp1bmcuPC9zcGFuPjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAg IDxzcGFuIGNsYXNzPSJyZWNodGUtcm9sbGUtY2hldiIgYXJpYS1oaWRkZW49InRydWUiPuKWuDwv c3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9zdW1tYXJ5PgogICAgICAgICAgICAgICAg ICAgICAgICA8ZGl2IGNsYXNzPSJyZWNodGUtcm9sbGUtYm9keSI+CiAgICAgICAgICAgICAgICAg ICAgICAgICAgICA8ZGl2IGNsYXNzPSJyZWNodGUtcm9sbGUtYWt0aW9uIj48YnV0dG9uIGlkPSJi dG4tZmFjaGF1ZnNpY2h0LW5ldSIgY2xhc3M9ImJ0biBidG4tZXJmb2xnIj5OZXVlciBGYWNoYXVm c2ljaHQtRWludHJhZzwvYnV0dG9uPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGV0 YWlscyBjbGFzcz0iYWRtaW4taW5mbyIgZGF0YS1pbmZvLWtleT0iZmFjaGF1ZnNpY2h0Ij4KICAg ICAgICAgICAgICAgICAgICAgICAgICAgIDxzdW1tYXJ5PjxzcGFuIGNsYXNzPSJhZG1pbi1pbmZv LWNoZXYiPuKWuDwvc3Bhbj5IaW53ZWlzZSB6dXIgRmFjaGF1ZnNpY2h0PHNwYW4gY2xhc3M9ImFk bWluLWluZm8tYmFkZ2UiPkF1ZmtsYXBwZW4gLyBadWtsYXBwZW48L3NwYW4+PC9zdW1tYXJ5Pgog ICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWRtaW4taW5mby1ib2R5Ij4K ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD48c3Ryb25nPlJvbGxlbi1IaWVyYXJj aGllOjwvc3Ryb25nPiA8Y29kZT5TdXBlclVzZXIg4oaSIEZhY2hhdWZzaWNodCAvIERpcmVrdGlv bnNsZWl0dW5nIC8gRsO8aHJ1bmdzc3RlbGxlIOKGkiBVc2VyPC9jb2RlPi4gU3VwZXJVc2VyIHN0 aWNodCBhbGxlcy4gV2VyIGluIGtlaW5lciBSb2xsZW4tTGlzdGUgc3RlaHQsIHNpZWh0IHdlZGVy IFN0YXRpc3RpayBub2NoIExvZ2J1Y2ggbm9jaCBBZG1pbmlzdHJhdGlvbi48L3A+CiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgPHA+PHN0cm9uZz5TZWhlbi1CZXJlaWNoZTwvc3Ryb25n PiAoSGFrZW4gPSBUYWIgaXN0IGbDvHIgZGllc2UgUGVyc29uIHNpY2h0YmFyKTo8L3A+CiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICA8bGk+PGI+QWRtaW5pc3RyYXRpb248L2I+IOKAlCBrb21wbGV0dGVyIEFkbWlu LVRhYi4gPGI+QXVzZ2Vub21tZW46PC9iPiBTdXBlclVzZXItIHVuZCBSb2xsZW4tTGlzdGVuIChi bGVpYmVuIFN1cGVyVXNlci1vbmx5KS48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICA8bGk+PGI+U3RhdGlzdGlrPC9iPiwgPGI+TG9nYnVjaDwvYj4sIDxiPkJhY2t1cHM8 L2I+IOKAlCBqZXdlaWxzIGRlciBnYW56ZSBUYWIuPC9saT4KICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPjxzdHJv bmc+UGxhbnVuZzo8L3N0cm9uZz4gUHJvIEZhY2hhdWZzaWNodCBmZXN0bGVnYmFyLCB3ZWxjaGUg UGVyc29uZW4vR3J1cHBlbi9TdGFuZG9ydGUgZWRpdGllcnQgd2VyZGVuIGTDvHJmZW4g4oCUIGRp ZSBlaWdlbmUgWmVpbGUgaXN0IGltbWVyIGltcGxpeml0IGVybGF1YnQuPC9wPgogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIDxwPjxzdHJvbmc+R2VzYW10dmVyYW50d29ydHVuZzo8L3N0 cm9uZz4gQmVrb21tdCBkZW4gSGVhZGVyLVRhYiA8ZW0+UHLDvGZ1bmc8L2VtPiBtaXQgNC1Xb2No ZW4tw5xiZXJzaWNodCBpbmtsLiB2b3JnZWZlcnRpZ3RlciBFLU1haWwgYW4gYmV0cm9mZmVuZSBQ ZXJzb25lbi48L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAg ICAgICAgICAgICAgICAgPC9kZXRhaWxzPgogICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUg Y2xhc3M9ImFkbWluLXRhYmVsbGUiIGlkPSJmYWNoYXVmc2ljaHQtdGFiZWxsZSI+CiAgICAgICAg ICAgICAgICAgICAgICAgICAgICA8dGhlYWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+TmFtZTwvdGg+ CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5OVy1LZW5udW5nPC90aD4K ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIHN0eWxlPSJ3aWR0aDo2MHB4 O3RleHQtYWxpZ246Y2VudGVyIiB0aXRsZT0iQWRtaW4tVGFiIHNlaGVuIj5BZG1pbjwvdGg+CiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBzdHlsZT0id2lkdGg6NzBweDt0 ZXh0LWFsaWduOmNlbnRlciIgdGl0bGU9IkJlcmVpY2gtQS1UYWIgc2VoZW4iIGRhdGEtYmV6PSJm YS5zcGFsdGVBIj5BdXN3ZXJ0dW5nPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgPHRoIHN0eWxlPSJ3aWR0aDo3MHB4O3RleHQtYWxpZ246Y2VudGVyIiB0aXRsZT0iQmVy ZWljaC1CLVRhYiBzZWhlbiIgZGF0YS1iZXo9ImZhLnNwYWx0ZUIiPlByb3Rva29sbDwvdGg+CiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBzdHlsZT0id2lkdGg6NzBweDt0 ZXh0LWFsaWduOmNlbnRlciIgdGl0bGU9IkJhY2t1cC1UYWIgc2VoZW4iPkJhY2t1cHM8L3RoPgog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggc3R5bGU9IndpZHRoOjkwcHg7 dGV4dC1hbGlnbjpjZW50ZXIiIHRpdGxlPSJHZXNhbXR2ZXJhbnR3b3J0bGljaCBmw7xyIGRpZSBC ZXNldHp1bmcgYWxsZXIgRGllbnN0ZSI+R2VzYW10dmVyYW50dy48L3RoPgogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICA8dGggc3R5bGU9IndpZHRoOjIyMHB4IiB0aXRsZT0iR3Jh bnVsYXJlIFNpY2h0YmFya2VpdCBwcm8gU3ViLVRhYiBkZXMgQWRtaW4tQmVyZWljaHMgKyBwcm8g QmVyZWljaC1BIj5TdWItU2ljaHQ8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICA8dGggc3R5bGU9IndpZHRoOjIwMHB4Ij5QbGFudW5nPC90aD4KICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgPHRoIHN0eWxlPSJ3aWR0aDo4MHB4Ij5Ba3Rpb25lbjwvdGg+ CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDwvdGhlYWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGJvZHkgaWQ9 ImZhY2hhdWZzaWNodC10Ym9keSI+PC90Ym9keT4KICAgICAgICAgICAgICAgICAgICAgICAgPC90 YWJsZT4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icmVjaHRlLWNhcmQtZnVz cyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGlkPSJidG4tZmFjaGF1ZnNp Y2h0LXNwZWljaGVybiIgY2xhc3M9ImJ0biBidG4tcHJpbWFlciI+RmFjaGF1ZnNpY2h0IHNwZWlj aGVybjwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gaWQ9ImZhY2hh dWZzaWNodC1kaXJ0eS1oaW53ZWlzIiBjbGFzcz0icmVjaHRlLWRpcnR5LWhpbndlaXMiIHN0eWxl PSJkaXNwbGF5Om5vbmUiPuKXjyBVbmdlc3BlaWNoZXJ0ZSDDhG5kZXJ1bmdlbjwvc3Bhbj4KICAg ICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gaWQ9ImJ0bi10ZXN0LXJlZ3VsYWVyIiBj bGFzcz0iYnRuIGJ0bi1zZWsgYnRuLWtsZWluIiBzdHlsZT0ibWFyZ2luLWxlZnQ6YXV0byIgdGl0 bGU9Ik9iZXJmbMOkY2hlIGF1cyBTaWNodCBlaW5lcyBVc2VycyBvaG5lIFJvbGxlIHRlc3RlbiAo a2VpbiBTVSwga2VpbmUgRmFjaGF1ZnNpY2h0L0RpcmVrdGlvbnNsZWl0dW5nL0bDvGhydW5nc3N0 ZWxsZSkiPkFscyBVc2VyIG9obmUgUm9sbGUgdGVzdGVuPC9idXR0b24+CiAgICAgICAgICAgICAg ICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJmYWNoYXVm c2ljaHQta2Vpbi1yZWNodCIgY2xhc3M9InZlcnN0ZWNrdCByZWNodGUta2Vpbi1yZWNodCI+CiAg ICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJpbmZvLWJveCIgc3R5bGU9ImJv cmRlci1sZWZ0LWNvbG9yOnZhcigtLWZhcmJlLWZlaGxlcikiPgogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDxzdHJvbmc+S2VpbiBadWdyaWZmOjwvc3Ryb25nPiBOdXIgU3VwZXJVc2Vy IGvDtm5uZW4gRmFjaGF1ZnNpY2h0LUVpbnRyw6RnZSBiZWFyYmVpdGVuLgogICAgICAgICAgICAg ICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAg ICAgICAgICAgICAgICAgICAgICA8L2Rpdj48L2RldGFpbHM+CiAgICAgICAgICAgICAgICAgICAg PC9zZWN0aW9uPgoKICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0iYWRtaW4tc2Vr dGlvbiByZWNodGUtY2FyZCByZWNodGUtY2FyZC1kbCIgaWQ9ImFkbWluLXNla3Rpb24tZGlyZWt0 aW9uc2xlaXR1bmciPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGV0YWlscyBjbGFzcz0icmVj aHRlLXJvbGxlIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHN1bW1hcnkgY2xhc3M9InJlY2h0 ZS1yb2xsZS1zdW1tYXJ5Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNz PSJyZWNodGUtY2FyZC1pY29uIiBhcmlhLWhpZGRlbj0idHJ1ZSI+4piFPC9zcGFuPgogICAgICAg ICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InJlY2h0ZS1yb2xsZS10aXRlbCI+PHN0 cm9uZz5EaXJla3Rpb25zbGVpdHVuZzwvc3Ryb25nPjxzcGFuIGNsYXNzPSJyZWNodGUtY2FyZC1z dWIiPk1pdGdsaWVkZXIgZGVyIERpcmVrdGlvbnNsZWl0dW5nICh6LiBCLiBML0RpclYsIExQRGlu KSDigJQgZ2xlaWNoZSBHcmFudWxhcml0w6R0IHdpZSBGYWNoYXVmc2ljaHQuPC9zcGFuPjwvc3Bh bj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJyZWNodGUtcm9sbGUt Y2hldiIgYXJpYS1oaWRkZW49InRydWUiPuKWuDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAg ICAgPC9zdW1tYXJ5PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyZWNodGUt cm9sbGUtYm9keSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyZWNo dGUtcm9sbGUtYWt0aW9uIj48YnV0dG9uIGlkPSJidG4tZGlyZWt0aW9uc2xlaXR1bmctbmV1IiBj bGFzcz0iYnRuIGJ0bi1lcmZvbGciPk5ldWVyIERpcmVrdGlvbnNsZWl0dW5nLUVpbnRyYWc8L2J1 dHRvbj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRldGFpbHMgY2xhc3M9ImFkbWlu LWluZm8iIGRhdGEtaW5mby1rZXk9ImRpcmVrdGlvbnNsZWl0dW5nIj4KICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDxzdW1tYXJ5PjxzcGFuIGNsYXNzPSJhZG1pbi1pbmZvLWNoZXYiPuKWuDwv c3Bhbj5IaW53ZWlzZSB6dXIgRGlyZWt0aW9uc2xlaXR1bmc8c3BhbiBjbGFzcz0iYWRtaW4taW5m by1iYWRnZSI+QXVma2xhcHBlbiAvIFp1a2xhcHBlbjwvc3Bhbj48L3N1bW1hcnk+CiAgICAgICAg ICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhZG1pbi1pbmZvLWJvZHkiPgogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIDxwPlBlcnNvbmVuIHdlcmRlbiDDvGJlciBkYXMgRHJv cGRvd24gPGVtPlBlcnNvbjwvZW0+IGRpcmVrdCBhdXMgZGVyIFBlcnNvbmFsdmVyd2FsdHVuZyBn ZXfDpGhsdCDigJQgTmFtZSB1bmQgTlctS2VubnVuZyB3ZXJkZW4gYXV0b21hdGlzY2ggw7xiZXJu b21tZW4uIFN1Yi1TaWNodC0gdW5kIFBsYW51bmdzLVJlY2h0ZSBmdW5rdGlvbmllcmVuIHdpZSBi ZWkgZGVyIEZhY2hhdWZzaWNodC48L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rp dj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kZXRhaWxzPgogICAgICAgICAgICAgICAgICAg ICAgICA8dGFibGUgY2xhc3M9ImFkbWluLXRhYmVsbGUgcm9sbGVuLXRhYmVsbGUiIGlkPSJkaXJl a3Rpb25zbGVpdHVuZy10YWJlbGxlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aGVh ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDx0aD5QZXJzb248L3RoPgogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICA8dGggc3R5bGU9IndpZHRoOjYwcHg7dGV4dC1hbGlnbjpjZW50ZXIiIHRp dGxlPSJBZG1pbi1UYWIgc2VoZW4iPkFkbWluPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgPHRoIHN0eWxlPSJ3aWR0aDo3MHB4O3RleHQtYWxpZ246Y2VudGVyIiB0aXRs ZT0iU3RhdGlzdGlrLVRhYiBzZWhlbiI+U3RhdGlzdGlrPC90aD4KICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgPHRoIHN0eWxlPSJ3aWR0aDo3MHB4O3RleHQtYWxpZ246Y2VudGVy IiB0aXRsZT0iTG9nYnVjaC1UYWIgc2VoZW4iPkxvZ2J1Y2g8L3RoPgogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICA8dGggc3R5bGU9IndpZHRoOjcwcHg7dGV4dC1hbGlnbjpjZW50 ZXIiIHRpdGxlPSJCYWNrdXAtVGFiIHNlaGVuIj5CYWNrdXBzPC90aD4KICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgPHRoIHN0eWxlPSJ3aWR0aDoyMjBweCIgdGl0bGU9IkdyYW51 bGFyZSBTaWNodGJhcmtlaXQgcHJvIFN1Yi1UYWIiPlN1Yi1TaWNodDwvdGg+CiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBzdHlsZT0id2lkdGg6MjAwcHgiPlBsYW51bmc8 L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggc3R5bGU9IndpZHRo OjgwcHgiPkFrdGlvbmVuPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3Ry PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aGVhZD4KICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDx0Ym9keSBpZD0iZGlyZWt0aW9uc2xlaXR1bmctdGJvZHkiPjwvdGJvZHk+CiAg ICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgICAgICAgICAgICAgIDxk aXYgY2xhc3M9InJlY2h0ZS1jYXJkLWZ1c3MiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAg PGJ1dHRvbiBpZD0iYnRuLWRpcmVrdGlvbnNsZWl0dW5nLXNwZWljaGVybiIgY2xhc3M9ImJ0biBi dG4tcHJpbWFlciI+RGlyZWt0aW9uc2xlaXR1bmcgc3BlaWNoZXJuPC9idXR0b24+CiAgICAgICAg ICAgICAgICAgICAgICAgICAgICA8c3BhbiBpZD0iZGlyZWt0aW9uc2xlaXR1bmctZGlydHktaGlu d2VpcyIgY2xhc3M9InJlY2h0ZS1kaXJ0eS1oaW53ZWlzIiBzdHlsZT0iZGlzcGxheTpub25lIj7i l48gVW5nZXNwZWljaGVydGUgw4RuZGVydW5nZW48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAg ICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJkaXJla3Rpb25zbGVp dHVuZy1rZWluLXJlY2h0IiBjbGFzcz0idmVyc3RlY2t0IHJlY2h0ZS1rZWluLXJlY2h0Ij4KICAg ICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImluZm8tYm94IiBzdHlsZT0iYm9y ZGVyLWxlZnQtY29sb3I6dmFyKC0tZmFyYmUtZmVobGVyKSI+CiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgPHN0cm9uZz5LZWluIFp1Z3JpZmY6PC9zdHJvbmc+IE51ciBTdXBlclVzZXIg a8O2bm5lbiBEaXJla3Rpb25zbGVpdHVuZ3MtRWludHLDpGdlIGJlYXJiZWl0ZW4uCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+ CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PjwvZGV0YWlscz4KICAgICAgICAgICAgICAg ICAgICA8L3NlY3Rpb24+CgogICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJhZG1p bi1zZWt0aW9uIHJlY2h0ZS1jYXJkIHJlY2h0ZS1jYXJkLWZzIiBpZD0iYWRtaW4tc2VrdGlvbi1m dWVocnVuZ3NzdGVsbGUiPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGV0YWlscyBjbGFzcz0i cmVjaHRlLXJvbGxlIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHN1bW1hcnkgY2xhc3M9InJl Y2h0ZS1yb2xsZS1zdW1tYXJ5Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNs YXNzPSJyZWNodGUtY2FyZC1pY29uIiBhcmlhLWhpZGRlbj0idHJ1ZSI+4peGPC9zcGFuPgogICAg ICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InJlY2h0ZS1yb2xsZS10aXRlbCI+ PHN0cm9uZz5Gw7xocnVuZ3NzdGVsbGU8L3N0cm9uZz48c3BhbiBjbGFzcz0icmVjaHRlLWNhcmQt c3ViIj5NaXRhcmJlaXRlbmRlIGRlciBGw7xocnVuZ3NzdGVsbGUgKHouIEIuIEwvVkkzIHVuZCBT dGFiKSDigJQgZ2xlaWNoZSBHcmFudWxhcml0w6R0IHdpZSBGYWNoYXVmc2ljaHQuPC9zcGFuPjwv c3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJyZWNodGUtcm9s bGUtY2hldiIgYXJpYS1oaWRkZW49InRydWUiPuKWuDwvc3Bhbj4KICAgICAgICAgICAgICAgICAg ICAgICAgPC9zdW1tYXJ5PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyZWNo dGUtcm9sbGUtYm9keSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJy ZWNodGUtcm9sbGUtYWt0aW9uIj48YnV0dG9uIGlkPSJidG4tZnVlaHJ1bmdzc3RlbGxlLW5ldSIg Y2xhc3M9ImJ0biBidG4tZXJmb2xnIj5OZXVlciBGw7xocnVuZ3NzdGVsbGUtRWludHJhZzwvYnV0 dG9uPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGV0YWlscyBjbGFzcz0iYWRtaW4t aW5mbyIgZGF0YS1pbmZvLWtleT0iZnVlaHJ1bmdzc3RlbGxlIj4KICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDxzdW1tYXJ5PjxzcGFuIGNsYXNzPSJhZG1pbi1pbmZvLWNoZXYiPuKWuDwvc3Bh bj5IaW53ZWlzZSB6dXIgRsO8aHJ1bmdzc3RlbGxlPHNwYW4gY2xhc3M9ImFkbWluLWluZm8tYmFk Z2UiPkF1ZmtsYXBwZW4gLyBadWtsYXBwZW48L3NwYW4+PC9zdW1tYXJ5PgogICAgICAgICAgICAg ICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWRtaW4taW5mby1ib2R5Ij4KICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICA8cD5QZXJzb25lbiB3ZXJkZW4gw7xiZXIgZGFzIERyb3Bkb3du IDxlbT5QZXJzb248L2VtPiBkaXJla3QgYXVzIGRlciBQZXJzb25hbHZlcndhbHR1bmcgZ2V3w6Ro bHQuIFNjaGVtYSB1bmQgR3JhbnVsYXJpdMOkdCBhbmFsb2cgenVyIERpcmVrdGlvbnNsZWl0dW5n LjwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAg ICAgICAgICA8L2RldGFpbHM+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0i YWRtaW4tdGFiZWxsZSByb2xsZW4tdGFiZWxsZSIgaWQ9ImZ1ZWhydW5nc3N0ZWxsZS10YWJlbGxl Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aGVhZD4KICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0 aD5QZXJzb248L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggc3R5 bGU9IndpZHRoOjYwcHg7dGV4dC1hbGlnbjpjZW50ZXIiIHRpdGxlPSJBZG1pbi1UYWIgc2VoZW4i PkFkbWluPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIHN0eWxl PSJ3aWR0aDo3MHB4O3RleHQtYWxpZ246Y2VudGVyIiB0aXRsZT0iU3RhdGlzdGlrLVRhYiBzZWhl biI+U3RhdGlzdGlrPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRo IHN0eWxlPSJ3aWR0aDo3MHB4O3RleHQtYWxpZ246Y2VudGVyIiB0aXRsZT0iTG9nYnVjaC1UYWIg c2VoZW4iPkxvZ2J1Y2g8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8 dGggc3R5bGU9IndpZHRoOjcwcHg7dGV4dC1hbGlnbjpjZW50ZXIiIHRpdGxlPSJCYWNrdXAtVGFi IHNlaGVuIj5CYWNrdXBzPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg PHRoIHN0eWxlPSJ3aWR0aDoyMjBweCIgdGl0bGU9IkdyYW51bGFyZSBTaWNodGJhcmtlaXQgcHJv IFN1Yi1UYWIiPlN1Yi1TaWNodDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDx0aCBzdHlsZT0id2lkdGg6MjAwcHgiPlBsYW51bmc8L3RoPgogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICA8dGggc3R5bGU9IndpZHRoOjgwcHgiPkFrdGlvbmVuPC90aD4K ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAg ICAgICAgICAgPC90aGVhZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0Ym9keSBpZD0i ZnVlaHJ1bmdzc3RlbGxlLXRib2R5Ij48L3Rib2R5PgogICAgICAgICAgICAgICAgICAgICAgICA8 L3RhYmxlPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyZWNodGUtY2FyZC1m dXNzIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gaWQ9ImJ0bi1mdWVocnVu Z3NzdGVsbGUtc3BlaWNoZXJuIiBjbGFzcz0iYnRuIGJ0bi1wcmltYWVyIj5Gw7xocnVuZ3NzdGVs bGUgc3BlaWNoZXJuPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBp ZD0iZnVlaHJ1bmdzc3RlbGxlLWRpcnR5LWhpbndlaXMiIGNsYXNzPSJyZWNodGUtZGlydHktaGlu d2VpcyIgc3R5bGU9ImRpc3BsYXk6bm9uZSI+4pePIFVuZ2VzcGVpY2hlcnRlIMOEbmRlcnVuZ2Vu PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAg ICAgICAgPGRpdiBpZD0iZnVlaHJ1bmdzc3RlbGxlLWtlaW4tcmVjaHQiIGNsYXNzPSJ2ZXJzdGVj a3QgcmVjaHRlLWtlaW4tcmVjaHQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBj bGFzcz0iaW5mby1ib3giIHN0eWxlPSJib3JkZXItbGVmdC1jb2xvcjp2YXIoLS1mYXJiZS1mZWhs ZXIpIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPktlaW4gWnVncmlm Zjo8L3N0cm9uZz4gTnVyIFN1cGVyVXNlciBrw7ZubmVuIEbDvGhydW5nc3N0ZWxsZW4tRWludHLD pGdlIGJlYXJiZWl0ZW4uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAg ICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2Pjwv ZGV0YWlscz4KICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CgogICAgICAgICAgICAgICAg PC9kaXY+CgogICAgICAgICAgICAgICAgPCEtLSBUYWI6IFN0YW5kYXJkcmVjaHRlIHJlZ3VsYWVy ZXIgVXNlciAoU1Utb25seSkg4oCUIGdydW5kc2FldHpsaWNoZQogICAgICAgICAgICAgICAgICAg ICBQbGFudW5nc3JlY2h0ZSBmdWVyIGFsbGUgb2huZSBSb2xsZSAoZ2VnZW5zZWl0aWdlIFBsYW51 bmcgamUKICAgICAgICAgICAgICAgICAgICAgRGllbnN0Z3J1cHBlL1N0YW5kb3J0KSArIExpc3Rl IGRlciBVc2VyIG1pdCBadXNhdHpyZWNodGVuLiAtLT4KICAgICAgICAgICAgICAgIDxkaXYgY2xh c3M9ImFkbWluLXRhYiB2ZXJzdGVja3QiIGlkPSJhZG1pbi10YWItc3RhbmRhcmRyZWNodGUiPgog ICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFkbWluLWtvcGYiPgogICAgICAgICAgICAg ICAgICAgICAgICA8aDI+U3RhbmRhcmRyZWNodGUgcmVndWzDpHJlciBVc2VyPC9oMj4KICAgICAg ICAgICAgICAgICAgICAgICAgPHAgc3R5bGU9Im1hcmdpbjo2cHggMCAwIDA7Zm9udC1zaXplOjEy cHg7Y29sb3I6dmFyKC0tdGV4dC1tdXRlZCkiPkdydW5kcmVnZWxuLCBkaWUgZsO8ciA8c3Ryb25n PmFsbGU8L3N0cm9uZz4gTWl0YXJiZWl0ZW5kZW4gb2huZSBlaWdlbmUgUm9sbGUgZ2VsdGVuIOKA lCB6LkIuIOKAnmFsbGUgZWluZXIgRGllbnN0Z3J1cHBlIHBsYW5lbiBzaWNoIGdlZ2Vuc2VpdGln IiBvZGVyIOKAnmFsbGUgZWluZXMgU3RhbmRvcnRzIHBsYW5lbiBzaWNoIGdlZ2Vuc2VpdGlnIi4g RGFydW50ZXI6IMOcYmVyc2ljaHQgYWxsZXIgVXNlciwgZGllIGluIGRlciBQZXJzb25hbHZlcndh bHR1bmcgPHN0cm9uZz56dXPDpHR6bGljaGU8L3N0cm9uZz4gaW5kaXZpZHVlbGxlIFJlY2h0ZSBi ZWtvbW1lbiBoYWJlbi48L3A+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAg ICAgICAgICAgPGRpdiBpZD0ic3RhbmRhcmRyZWNodGUtaW5oYWx0Ij48L2Rpdj4KICAgICAgICAg ICAgICAgIDwvZGl2PgoKCiAgICAgICAgICAgIDwvbWFpbj4KICAgICAgICA8L2Rpdj4KICAgIDwv ZGl2PgoKICAgIDwhLS0gPT09PT09PT09PSBNb2RhbGVyIERpYWxvZyAod2llZGVydmVyd2VuZGJh cikgPT09PT09PT09PSAtLT4KICAgIDwhLS0gYTExeSAoU3ByaW50IDZhIDIwMjYtMDUtMjkpOiBy b2xlPWRpYWxvZyArIGFyaWEtbW9kYWwgKyBsYWJlbGxlZGJ5CiAgICAgICAgIG1hY2h0IGRlbiBN b2RhbC1Lb250ZXh0IGZ1ZXIgU2NyZWVucmVhZGVyIGV4cGxpeml0LiBhcmlhLWhpZGRlbiB3aXJk CiAgICAgICAgIHZvbSBtb2RhbFplaWdlbigpLUNvZGUgYmVpbSBPcGVuL0Nsb3NlIGdlc2V0enQu IC0tPgogICAgPGRpdiBpZD0ibW9kYWwtb3ZlcmxheSIgY2xhc3M9Im1vZGFsIHZlcnN0ZWNrdCIg cm9sZT0iZGlhbG9nIiBhcmlhLW1vZGFsPSJ0cnVlIiBhcmlhLWxhYmVsbGVkYnk9Im1vZGFsLXRp dGVsIiBhcmlhLWhpZGRlbj0idHJ1ZSI+CiAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtaW5oYWx0 IiBpZD0ibW9kYWwtYm94Ij4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwta29wZiI+CiAg ICAgICAgICAgICAgICA8aDIgaWQ9Im1vZGFsLXRpdGVsIj48L2gyPgogICAgICAgICAgICAgICAg PGJ1dHRvbiBjbGFzcz0ibW9kYWwtc2NobGllc3NlbiIgaWQ9Im1vZGFsLXNjaGxpZXNzZW4tYnRu IiBhcmlhLWxhYmVsPSJTY2hsaWXDn2VuIj4mdGltZXM7PC9idXR0b24+CiAgICAgICAgICAgIDwv ZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1rb2VycGVyIiBpZD0ibW9kYWwta29l cnBlciI+PC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWZ1c3MiIGlkPSJtb2Rh bC1mdXNzIj48L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2PgoKICAgIDwhLS0gQ29uZmly bS1PdmVybGF5IChTcHJpbnQgNSDigJQgTW9kYWwtU3RhY2sgMjAyNi0wNS0yOSk6CiAgICAgICAg IEVpZ2VuZXIgQ29udGFpbmVyIG1pdCBob2VoZXJlbSB6LWluZGV4LCBkYW1pdCBiZXN0YWV0aWdl bigpLURpYWxvZ2UKICAgICAgICAgSU5ORVJIQUxCIGVpbmVzIGdlb2VmZm5ldGVuIEhhdXB0bW9k YWxzIGVyc2NoZWluZW4ga29lbm5lbiwgb2huZQogICAgICAgICBkZXNzZW4gSW5oYWx0IHp1IHVl YmVyc2NocmVpYmVuLiBWb3JoZXIgaGFiZW4gQ29uZmlybS1BdWZydWZlCiAgICAgICAgICh6LkIu ICJXaXJrbGljaCBsb2VzY2hlbj8iIGJlaW0gUGVyc29uLUJlYXJiZWl0ZW4pIGRhcyB1bWdlYmVu ZGUKICAgICAgICAgTW9kYWwgemVyc3RvZXJ0OyBuYWNoICJBYmJyZWNoZW4iIHdhciBkaWUgQmVh cmJlaXR1bmcgd2VnLiAtLT4KICAgIDxkaXYgaWQ9ImNvbmZpcm0tb3ZlcmxheSIgY2xhc3M9Im1v ZGFsIHZlcnN0ZWNrdCIgcm9sZT0iZGlhbG9nIiBhcmlhLW1vZGFsPSJ0cnVlIiBhcmlhLWxhYmVs bGVkYnk9ImNvbmZpcm0tdGl0ZWwiIGFyaWEtaGlkZGVuPSJ0cnVlIiBzdHlsZT0iei1pbmRleDpj YWxjKHZhcigtLXotb3ZlcmxheSkgKyAxMCkiPgogICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWlu aGFsdCIgaWQ9ImNvbmZpcm0tYm94IiBzdHlsZT0ibWF4LXdpZHRoOjQ4MHB4Ij4KICAgICAgICAg ICAgPGRpdiBjbGFzcz0ibW9kYWwta29wZiI+CiAgICAgICAgICAgICAgICA8aDIgaWQ9ImNvbmZp cm0tdGl0ZWwiPkJlc3TDpHRpZ3VuZzwvaDI+CiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNz PSJtb2RhbC1zY2hsaWVzc2VuIiBpZD0iY29uZmlybS1zY2hsaWVzc2VuLWJ0biIgYXJpYS1sYWJl bD0iU2NobGllw59lbiI+JnRpbWVzOzwvYnV0dG9uPgogICAgICAgICAgICA8L2Rpdj4KICAgICAg ICAgICAgPGRpdiBjbGFzcz0ibW9kYWwta29lcnBlciIgaWQ9ImNvbmZpcm0ta29lcnBlciI+PC9k aXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWZ1c3MiIGlkPSJjb25maXJtLWZ1c3Mi PjwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CgogICAgPCEtLSBUb2FzdC1Db250YWlu ZXIgLS0+CiAgICA8ZGl2IGlkPSJ0b2FzdC1jb250YWluZXIiIHJvbGU9InN0YXR1cyIgYXJpYS1s aXZlPSJwb2xpdGUiIGFyaWEtYXRvbWljPSJmYWxzZSI+PC9kaXY+CgogICAgPHNjcmlwdCB0eXBl PSJtb2R1bGUiIHNyYz0iYXBwLmpzIj48L3NjcmlwdD4KPC9ib2R5Pgo8L2h0bWw+Cg== ### FILE: info.html | 12765 PCFkb2N0eXBlIGh0bWw+CjxodG1sIGxhbmc9ImRlIj4KPGhlYWQ+CjxtZXRhIGNoYXJzZXQ9InV0 Zi04Ij4KPHRpdGxlPlZJMyBER0wtUGxhbnVuZyDigJQgS3VyemluZm9ybWF0aW9uPC90aXRsZT4K PG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCxpbml0aWFs LXNjYWxlPTEiPgo8c3R5bGU+CiAgOnJvb3QgewogICAgLS1iZzogI0VFRjFGMjsKICAgIC0tY2Fy ZDogI0ZGRkZGRjsKICAgIC0tY2FyZC1hbHQ6ICNGN0Y5Rjk7CiAgICAtLXRleHQ6ICMxRTJBMzA7 CiAgICAtLW11dGVkOiAjNjE3MjdCOwogICAgLS1saW5lOiAjRERFM0U1OwogICAgLS1hY2NlbnQ6 ICMxRjRFNUY7CiAgICAtLWFjY2VudC0yOiAjMkU3Mjg2OwogICAgLS1vazogIzJFN0QzMjsKICAg IC0td2FybjogI0M3NzgwMDsKICAgIC0tZXJyOiAjQjcxQzFDOwogICAgLS1yYWRpdXM6IDEwcHg7 CiAgfQogICogeyBib3gtc2l6aW5nOiBib3JkZXItYm94OyB9CiAgaHRtbCB7IC13ZWJraXQtdGV4 dC1zaXplLWFkanVzdDogMTAwJTsgfQogIGJvZHkgewogICAgZm9udC1mYW1pbHk6ICJTZWdvZSBV SSIsIFJvYm90bywgLWFwcGxlLXN5c3RlbSwgVGFob21hLCBzYW5zLXNlcmlmOwogICAgYmFja2dy b3VuZDogdmFyKC0tYmcpOwogICAgY29sb3I6IHZhcigtLXRleHQpOwogICAgbWFyZ2luOiAwOwog ICAgcGFkZGluZzogMjhweCAxNnB4IDcycHg7CiAgICBsaW5lLWhlaWdodDogMS41NTsKICAgIGZv bnQtc2l6ZTogMTVweDsKICB9CiAgLmNvbnRhaW5lciB7IG1heC13aWR0aDogOTIwcHg7IG1hcmdp bjogMCBhdXRvOyB9CgogIC8qIC0tLS0gS29wZiAtLS0tICovCiAgaGVhZGVyIHsKICAgIGJhY2tn cm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLWFjY2VudCkgMCUsICMxNjM2M2Yg MTAwJSk7CiAgICBjb2xvcjogI2ZmZjsKICAgIHBhZGRpbmc6IDMwcHggMzJweCAyNnB4OwogICAg Ym9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzKSB2YXIoLS1yYWRpdXMpIDAgMDsKICB9CiAgLmtp Y2tlciB7CiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOwogICAgbGV0dGVyLXNwYWNpbmc6 IDEuNXB4OwogICAgZm9udC1zaXplOiAxMXB4OwogICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgIGNv bG9yOiByZ2JhKDI1NSwyNTUsMjU1LDAuNzIpOwogICAgbWFyZ2luOiAwIDAgOHB4OwogIH0KICBo ZWFkZXIgaDEgeyBtYXJnaW46IDAgMCA2cHg7IGZvbnQtc2l6ZTogMjdweDsgZm9udC13ZWlnaHQ6 IDcwMDsgbGV0dGVyLXNwYWNpbmc6IDAuMnB4OyB9CiAgaGVhZGVyIC5zdWIgeyBtYXJnaW46IDA7 IGNvbG9yOiByZ2JhKDI1NSwyNTUsMjU1LDAuODgpOyBmb250LXNpemU6IDE0LjVweDsgbWF4LXdp ZHRoOiA2NDBweDsgfQogIC5jaGlwcyB7IGRpc3BsYXk6IGZsZXg7IGZsZXgtd3JhcDogd3JhcDsg Z2FwOiA4cHg7IG1hcmdpbi10b3A6IDE4cHg7IH0KICAuY2hpcCB7CiAgICBiYWNrZ3JvdW5kOiBy Z2JhKDI1NSwyNTUsMjU1LDAuMTMpOwogICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgyNTUsMjU1 LDI1NSwwLjIyKTsKICAgIGNvbG9yOiAjZmZmOwogICAgZm9udC1zaXplOiAxMnB4OwogICAgcGFk ZGluZzogNHB4IDExcHg7CiAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICB3aGl0ZS1zcGFjZTog bm93cmFwOwogIH0KCiAgbWFpbiB7CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jYXJkKTsKICAgIGJv cmRlci1yYWRpdXM6IDAgMCB2YXIoLS1yYWRpdXMpIHZhcigtLXJhZGl1cyk7CiAgICBwYWRkaW5n OiA4cHggMzJweCAzMHB4OwogICAgYm94LXNoYWRvdzogMCAycHggMTBweCByZ2JhKDAsMCwwLDAu MDcpOwogIH0KCiAgaDIgewogICAgY29sb3I6IHZhcigtLWFjY2VudCk7CiAgICBmb250LXNpemU6 IDE3cHg7CiAgICBtYXJnaW46IDM0cHggMCAxNHB4OwogICAgcGFkZGluZy1ib3R0b206IDdweDsK ICAgIGJvcmRlci1ib3R0b206IDJweCBzb2xpZCB2YXIoLS1saW5lKTsKICAgIGRpc3BsYXk6IGZs ZXg7IGFsaWduLWl0ZW1zOiBiYXNlbGluZTsgZ2FwOiAxMHB4OwogIH0KICBoMiAubnVtIHsKICAg IGZvbnQtc2l6ZTogMTJweDsgZm9udC13ZWlnaHQ6IDcwMDsgY29sb3I6ICNmZmY7CiAgICBiYWNr Z3JvdW5kOiB2YXIoLS1hY2NlbnQtMik7CiAgICBib3JkZXItcmFkaXVzOiA1cHg7IHBhZGRpbmc6 IDJweCA3cHg7IGxpbmUtaGVpZ2h0OiAxLjQ7CiAgfQogIHAgeyBtYXJnaW46IDEwcHggMDsgfQog IC5sZWFkIHsgZm9udC1zaXplOiAxNS41cHg7IGNvbG9yOiB2YXIoLS10ZXh0KTsgfQogIC5tdXRl ZCB7IGNvbG9yOiB2YXIoLS1tdXRlZCk7IH0KCiAgLyogLS0tLSBLYXJ0ZW4tUmFzdGVyIC0tLS0g Ki8KICAuZ3JpZCB7CiAgICBkaXNwbGF5OiBncmlkOwogICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5z OiByZXBlYXQoYXV0by1maXQsIG1pbm1heCgyNTBweCwgMWZyKSk7CiAgICBnYXA6IDE0cHg7CiAg ICBtYXJnaW46IDE2cHggMDsKICB9CiAgLmNhcmQgewogICAgYm9yZGVyOiAxcHggc29saWQgdmFy KC0tbGluZSk7CiAgICBib3JkZXItcmFkaXVzOiA4cHg7CiAgICBwYWRkaW5nOiAxNXB4IDE3cHg7 CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jYXJkLWFsdCk7CiAgfQogIC5jYXJkIGgzIHsgbWFyZ2lu OiAwIDAgOXB4OyBmb250LXNpemU6IDE0LjVweDsgY29sb3I6IHZhcigtLWFjY2VudCk7IGRpc3Bs YXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGdhcDogOHB4OyB9CiAgLmNhcmQgdWwgeyBt YXJnaW46IDA7IHBhZGRpbmctbGVmdDogMThweDsgfQogIC5jYXJkIGxpIHsgbWFyZ2luOiA1cHgg MDsgZm9udC1zaXplOiAxMy41cHg7IH0KICAuY2FyZC5yb2xsZSBwIHsgZm9udC1zaXplOiAxMy41 cHg7IG1hcmdpbjogMDsgY29sb3I6ICMzNjQ3NGY7IH0KCiAgLmJhZGdlIHsKICAgIGRpc3BsYXk6 IGlubGluZS1ibG9jazsgcGFkZGluZzogMnB4IDlweDsgYm9yZGVyLXJhZGl1czogNHB4OwogICAg Zm9udC1zaXplOiAxMXB4OyBmb250LXdlaWdodDogNjAwOyBjb2xvcjogI2ZmZjsgbGluZS1oZWln aHQ6IDEuNTsKICB9CiAgLmItc3UgICB7IGJhY2tncm91bmQ6IHZhcigtLWFjY2VudCk7IH0KICAu Yi1mYSAgIHsgYmFja2dyb3VuZDogdmFyKC0tYWNjZW50LTIpOyB9CiAgLmItdXNlciB7IGJhY2tn cm91bmQ6IHZhcigtLW11dGVkKTsgfQoKICAuaW5mby1ib3ggewogICAgYmFja2dyb3VuZDogI0VB RjJGNTsKICAgIGJvcmRlci1sZWZ0OiA0cHggc29saWQgdmFyKC0tYWNjZW50LTIpOwogICAgcGFk ZGluZzogMTFweCAxNXB4OyBtYXJnaW46IDE2cHggMDsgYm9yZGVyLXJhZGl1czogMCA2cHggNnB4 IDA7CiAgICBmb250LXNpemU6IDEzLjVweDsKICB9CgogIHVsLmZsYXQgeyBtYXJnaW46IDhweCAw OyBwYWRkaW5nOiAwOyBsaXN0LXN0eWxlOiBub25lOyB9CiAgdWwuZmxhdCBsaSB7IHBhZGRpbmc6 IDdweCAwOyBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tbGluZSk7IGZvbnQtc2l6ZTog MTMuNXB4OyB9CiAgdWwuZmxhdCBsaTpsYXN0LWNoaWxkIHsgYm9yZGVyLWJvdHRvbTogbm9uZTsg fQoKICBjb2RlIHsKICAgIGJhY2tncm91bmQ6ICNFN0VDRUU7IGNvbG9yOiAjMjQ0MDQ5OyBwYWRk aW5nOiAxcHggNnB4OwogICAgYm9yZGVyLXJhZGl1czogNHB4OyBmb250LXNpemU6IDEyLjVweDsK ICAgIGZvbnQtZmFtaWx5OiB1aS1tb25vc3BhY2UsICJDYXNjYWRpYSBDb2RlIiwgQ29uc29sYXMs IG1vbm9zcGFjZTsKICB9CgogIHRhYmxlIHsgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTsgd2lk dGg6IDEwMCU7IGZvbnQtc2l6ZTogMTMuNXB4OyBtYXJnaW46IDEwcHggMDsgfQogIHRoLCB0ZCB7 IHBhZGRpbmc6IDhweCAxMXB4OyB0ZXh0LWFsaWduOiBsZWZ0OyBib3JkZXItYm90dG9tOiAxcHgg c29saWQgdmFyKC0tbGluZSk7IH0KICB0aCB7IGJhY2tncm91bmQ6IHZhcigtLWNhcmQtYWx0KTsg Y29sb3I6IHZhcigtLWFjY2VudCk7IGZvbnQtd2VpZ2h0OiA2MDA7IH0KICB0ZCBjb2RlIHsgYmFj a2dyb3VuZDogI0U3RUNFRTsgfQoKICBmb290ZXIgewogICAgdGV4dC1hbGlnbjogY2VudGVyOyBj b2xvcjogdmFyKC0tbXV0ZWQpOyBmb250LXNpemU6IDEycHg7CiAgICBtYXJnaW4tdG9wOiAzMHB4 OyBwYWRkaW5nLXRvcDogMTRweDsgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHZhcigtLWxpbmUpOwog IH0KICBAbWVkaWEgKG1heC13aWR0aDogNTYwcHgpIHsKICAgIG1haW4sIGhlYWRlciB7IHBhZGRp bmctbGVmdDogMjBweDsgcGFkZGluZy1yaWdodDogMjBweDsgfQogICAgaGVhZGVyIGgxIHsgZm9u dC1zaXplOiAyM3B4OyB9CiAgfQo8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgogIDxkaXYgY2xhc3M9 ImNvbnRhaW5lciI+CiAgICA8aGVhZGVyPgogICAgICA8cCBjbGFzcz0ia2lja2VyIj5BbndlbmR1 bmdzLUluZm9ybWF0aW9uPC9wPgogICAgICA8aDE+VkkzIERHTC1QbGFudW5nPC9oMT4KICAgICAg PHAgY2xhc3M9InN1YiI+V2ViLWJhc2llcnRlIERpZW5zdHBsYW51bmcgZGVyIFZlcmtlaHJzaW5z cGVrdGlvbiAzIOKAlCBBYmzDtnN1bmcgZGVyIGZyw7xoZXJlbiBFeGNlbC1NYWtyby1Mw7ZzdW5n LCBhdXNnZWxlZ3QgZsO8ciBtZWhyZXJlIGdsZWljaHplaXRpZ2UgQmVhcmJlaXRlciBvaG5lIERh dGVpLUtvbmZsaWt0ZS48L3A+CiAgICAgIDxkaXYgY2xhc3M9ImNoaXBzIj4KICAgICAgICA8c3Bh biBjbGFzcz0iY2hpcCI+TMOkdWZ0IG9mZmxpbmUgYXVmIGxvY2FsaG9zdDwvc3Bhbj4KICAgICAg ICA8c3BhbiBjbGFzcz0iY2hpcCI+S2VpbmUgQ2xvdWQsIGtlaW4gSW50ZXJuZXQ8L3NwYW4+CiAg ICAgICAgPHNwYW4gY2xhc3M9ImNoaXAiPn40NiBQZXJzb25lbiDCtyA2IERpZW5zdGdydXBwZW48 L3NwYW4+CiAgICAgICAgPHNwYW4gY2xhc3M9ImNoaXAiPkpTT04tRGF0ZW5oYWx0dW5nPC9zcGFu PgogICAgICA8L2Rpdj4KICAgIDwvaGVhZGVyPgogICAgPG1haW4+CgogICAgICA8aDI+PHNwYW4g Y2xhc3M9Im51bSI+MTwvc3Bhbj4gw5xiZXJibGljazwvaDI+CiAgICAgIDxwIGNsYXNzPSJsZWFk Ij4KICAgICAgICBEaWUgVkkzIERHTC1QbGFudW5nIHZlcndhbHRldCBkaWUgU2NoaWNodHBsYW51 bmcgdm9uIHJ1bmQgNDYgUGVyc29uZW4KICAgICAgICBpbiA2IERpZW5zdGdydXBwZW4gw7xiZXIg bWVocmVyZSBTdGFuZG9ydGUuIFNpZSBsw6R1ZnQgbG9rYWw6IERlciBCcm93c2VyCiAgICAgICAg dmVyYmluZGV0IHNpY2ggYXVzc2NobGllw59saWNoIG1pdCA8Y29kZT5sb2NhbGhvc3Q8L2NvZGU+ LCBkaWUgRGF0ZW4KICAgICAgICBsaWVnZW4gYWxzIEpTT04tRGF0ZWllbiBhdWYgZGVtIGRpZW5z dGxpY2hlbiBOZXR6bGF1ZndlcmsuIE1laHJlcmUKICAgICAgICBCZWFyYmVpdGVyIGFyYmVpdGVu IGdsZWljaHplaXRpZyDigJQgw4RuZGVydW5nZW4gd2VyZGVuIGxpdmUgYWJnZWdsaWNoZW4sCiAg ICAgICAgS29uZmxpa3RlIGVya2FubnQgdW5kIGdlbWVsZGV0LgogICAgICA8L3A+CgogICAgICA8 aDI+PHNwYW4gY2xhc3M9Im51bSI+Mjwvc3Bhbj4gUm9sbGVuICZhbXA7IFJlY2h0ZTwvaDI+CiAg ICAgIDxkaXYgY2xhc3M9ImdyaWQiPgogICAgICAgIDxkaXYgY2xhc3M9ImNhcmQgcm9sbGUiPgog ICAgICAgICAgPGgzPjxzcGFuIGNsYXNzPSJiYWRnZSBiLXN1Ij5TdXBlclVzZXI8L3NwYW4+PC9o Mz4KICAgICAgICAgIDxwPlZvbGxlciBadWdyaWZmLiBQZmxlZ3QgU3RhbW1kYXRlbiwgRGllbnN0 Z3J1cHBlbiwgU3RhbmRvcnRlLAogICAgICAgICAgU2NoaWNodGNvZGVzLCBLYWxlbmRlciB1bmQg 4oCUIGV4a2x1c2l2IOKAlCBkaWUgU3VwZXJVc2VyLSB1bmQKICAgICAgICAgIEZhY2hhdWZzaWNo dC1MaXN0ZW4uIE1pbmRlc3RlbnMgZWluIFN1cGVyVXNlciBpc3QgaW1tZXIgYWt0aXYuPC9wPgog ICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9ImNhcmQgcm9sbGUiPgogICAgICAgICAg PGgzPjxzcGFuIGNsYXNzPSJiYWRnZSBiLWZhIj5GYWNoYXVmc2ljaHQ8L3NwYW4+PC9oMz4KICAg ICAgICAgIDxwPkdyYW51bGFyIGZyZWlzY2hhbHRiYXI6IEFkbWluaXN0cmF0aW9uLCBTdGF0aXN0 aWssIExvZ2J1Y2gsCiAgICAgICAgICBCYWNrdXBzIOKAlCBzb3dpZSB3ZWxjaGUgUGVyc29uZW4s IERpZW5zdGdydXBwZW4gb2RlciBTdGFuZG9ydGUgZWRpdGllcnQKICAgICAgICAgIHdlcmRlbiBk w7xyZmVuLiBPcHRpb25hbCDigJ5nZXNhbXR2ZXJhbnR3b3J0bGljaCIgKGVyaMOkbHQgSGlud2Vp c2UpLjwvcD4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkIHJvbGxlIj4K ICAgICAgICAgIDxoMz48c3BhbiBjbGFzcz0iYmFkZ2UgYi11c2VyIj5SZWd1bMOkcmVyIFVzZXI8 L3NwYW4+PC9oMz4KICAgICAgICAgIDxwPlNpZWh0IFBsYW51bmcsIFdvY2hlbnBsYW4gdW5kIHBl cnPDtm5saWNoZW4gUGxhbi4gQmVhcmJlaXRldCBkaWUKICAgICAgICAgIGVpZ2VuZSBaZWlsZSB1 bmQgZGFzIGVpZ2VuZSBNaWtyb3RlYW0uIEFkbWluL1N0YXRpc3Rpay9Mb2didWNoIGJsZWliZW4K ICAgICAgICAgIGF1c2dlYmxlbmRldCDigJQgYmVpIEJlZGFyZiBnZXppZWx0IGVyd2VpdGVyYmFy LjwvcD4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9ImluZm8t Ym94Ij4KICAgICAgICA8Yj5QcmluemlwOjwvYj4gU3VwZXJVc2VyJm5ic3A7Jmd0OyZuYnNwO0Zh Y2hhdWZzaWNodCZuYnNwOyZndDsmbmJzcDtyZWd1bMOkcmVyJm5ic3A7VXNlci4KICAgICAgICBK ZWRlciBaZWxsLUtsaWNrIHdpcmQgc2VydmVyc2VpdGlnIGdlZ2VuIGRpZSBlaWdlbmVuIFJlY2h0 ZSBnZXByw7xmdDsKICAgICAgICBuaWNodCBlZGl0aWVyYmFyZSBaZWxsZW4gZXJzY2hlaW5lbiBn ZWTDpG1wZnQgdW5kIHNpbmQgZ2VzcGVycnQuCiAgICAgIDwvZGl2PgoKICAgICAgPGgyPjxzcGFu IGNsYXNzPSJudW0iPjM8L3NwYW4+IEZ1bmt0aW9uZW48L2gyPgogICAgICA8ZGl2IGNsYXNzPSJn cmlkIj4KCiAgICAgICAgPGRpdiBjbGFzcz0iY2FyZCI+CiAgICAgICAgICA8aDM+UGxhbnVuZyAm YW1wOyBBbnNpY2h0ZW48L2gzPgogICAgICAgICAgPHVsPgogICAgICAgICAgICA8bGk+SmFocmVz cGxhbnVuZyBtaXQgcnVuZCAzMCBmYXJiY29kaWVydGVuIFNjaGljaHRjb2RlcyAoRnLDvGgtL1Nw w6R0LS9OYWNodC1ER0wsIFdERiwgRkJQLCBBYndlc2VuaGVpdGVuLCBTb25kZXJkaWVuc3RlKTwv bGk+CiAgICAgICAgICAgIDxsaT5UYWdlcy1TdMOkcmtlIGplIFNjaGljaHQsIFVudGVyYmVzZXR6 dW5nIGZhcmJsaWNoIG1hcmtpZXJ0PC9saT4KICAgICAgICAgICAgPGxpPkF1dG9tYXRpc2NoZXIg 4oCedmVyYW50d29ydGxpY2hlciBER0wiIG5hY2ggUmFuZzwvbGk+CiAgICAgICAgICAgIDxsaT5T Y2hpY2h0cm90YXRpb24gcHJvIFN0YW5kb3J0IChBQkMvQkNBL0NBQik8L2xpPgogICAgICAgICAg ICA8bGk+V29jaGVucGxhbiBpbiBBdXNoYW5nLU9wdGlrICZhbXA7IHBlcnPDtm5saWNoZXIgMTIt TW9uYXRzLVBsYW48L2xpPgogICAgICAgICAgICA8bGk+4oCeTWVpbiBTY2hpY2h0LVRlYW0iIOKA lCAxNC1UYWdlLcOcYmVyc2ljaHQgZGVyIGVpZ2VuZW4gU2NoaWNodC1Lb2hvcnRlIHBlciBLbm9w ZmRydWNrPC9saT4KICAgICAgICAgIDwvdWw+CiAgICAgICAgPC9kaXY+CgogICAgICAgIDxkaXYg Y2xhc3M9ImNhcmQiPgogICAgICAgICAgPGgzPlN0ZXVlcnVuZyAmYW1wOyBSZWNodGU8L2gzPgog ICAgICAgICAgPHVsPgogICAgICAgICAgICA8bGk+TWlrcm90ZWFtcyBmw7xyIGdlbWVpbnNhbWUg UGxhbnVuZyBkZWZpbmllcnRlciBQZXJzb25lbmdydXBwZW48L2xpPgogICAgICAgICAgICA8bGk+ VGVzdGFuc2ljaHQ6IFN1cGVyVXNlciBwcsO8ZnQgZGllIE9iZXJmbMOkY2hlIGF1cyBTaWNodCBq ZWRlciBQZXJzb24gb2RlciBGYWNoYXVmc2ljaHQgKHJlaW4gbG9rYWwpPC9saT4KICAgICAgICAg ICAgPGxpPlNpY2h0YmFya2VpdCBzdGV1ZXJuOiBlaW56ZWxuZSBQZXJzb25lbiwgRGllbnN0Z3J1 cHBlbiBvZGVyIEZ1bmt0aW9uZW4gYXVzIGRlciBQbGFudW5nIGF1c2JsZW5kZW48L2xpPgogICAg ICAgICAgICA8bGk+RXJzY2hlaW51bmdzYmlsZC1FZGl0b3I6IE1hcmtpZXJ1bmdlbiBmw7xyIFNv bmRlcnRhZ2UsIHdpY2h0aWdlIEZlaWVydGFnZSwgRmVyaWVuIHVuZCBIZXV0ZS1TcGFsdGUgZnJl aSBrb25maWd1cmllcmJhcjwvbGk+CiAgICAgICAgICA8L3VsPgogICAgICAgIDwvZGl2PgoKICAg ICAgICA8ZGl2IGNsYXNzPSJjYXJkIj4KICAgICAgICAgIDxoMz5Lb21tdW5pa2F0aW9uICZhbXA7 IEhpbndlaXNlPC9oMz4KICAgICAgICAgIDx1bD4KICAgICAgICAgICAgPGxpPkluLUFwcC1IaW53 ZWlzc3lzdGVtIGbDvHIgU3VwZXJVc2VyICZhbXA7IEdlc2FtdHZlcmFudHdvcnRsaWNoZSAoS3Jh bmttZWxkdW5nLCBSb2xsZW4tL1ZlcmFudHdvcnR1bmdzwq13ZWNoc2VsLCBCYWNrdXAtUmVzdG9y ZSwgUGxhbnVuZ3MtUmVzZXQpIHN0YXR0IEUtTWFpbC1GbHV0PC9saT4KICAgICAgICAgICAgPGxp PkdlemllbHRlIG1haWx0by1Wb3JsYWdlbiBmw7xyIFZlcmFudHdvcnR1bmdzwq3DvGJlcmdhbmcg JmFtcDsgQmVzZXR6dW5nc2FuZnJhZ2VuPC9saT4KICAgICAgICAgICAgPGxpPkFuc3ByZWNocGFy dG5lciBpbSBJbmZvLUZlbnN0ZXIgZGVyIEFwcCBoaW50ZXJsZWdiYXI8L2xpPgogICAgICAgICAg ICA8bGk+QmVpIGVpbmVtIFZlcmFudHdvcnR1bmdzd2VjaHNlbCBlaW5lIGVpbnppZ2UgU2FtbWVs LUUtTWFpbCBhbiBhbGxlIEJldHJvZmZlbmVuIChBdWZyw7xja2VyICZhbXA7IFZlcmRyw6RuZ3Rl KSBtaXQgbnVyIGVpbmVtIEtsaWNrPC9saT4KICAgICAgICAgIDwvdWw+CiAgICAgICAgPC9kaXY+ CgogICAgICAgIDxkaXYgY2xhc3M9ImNhcmQiPgogICAgICAgICAgPGgzPkF1c3dlcnR1bmcgJmFt cDsgQmVzZXR6dW5nPC9oMz4KICAgICAgICAgIDx1bD4KICAgICAgICAgICAgPGxpPlN0YXRpc3Rp ay1EYXNoYm9hcmQgbWl0IEtQSXMsIEZhaXJuZXNzLVZlcnRlaWx1bmcgKFdvY2hlbmVuZGUvRmVp ZXJ0YWcpLCBBYndlc2VuaGVpdGVuICZhbXA7IEF1ZnLDvGNrZXI8L2xpPgogICAgICAgICAgICA8 bGk+QmVzZXR6dW5nc2tvbnRyb2xsZSBtaXQgRGVmaXppdC1Wb3JzY2hhdSDDvGJlciBtZWhyZXJl IFdvY2hlbjwvbGk+CiAgICAgICAgICAgIDxsaT7igJ5LYW5kaWRhdGVuIGFuc2NocmVpYmVuIiBi ZWkgdW50ZXJiZXNldHp0ZW4gU2NoaWNodGVuPC9saT4KICAgICAgICAgICAgPGxpPkxvZ2J1Y2gg YWxsZXIgw4RuZGVydW5nZW4gbWl0IFplaXRzdGVtcGVsICZhbXA7IEJlbnV0emVyPC9saT4KICAg ICAgICAgIDwvdWw+CiAgICAgICAgPC9kaXY+CgogICAgICAgIDxkaXYgY2xhc3M9ImNhcmQiPgog ICAgICAgICAgPGgzPkRhdGVuICZhbXA7IEJldHJpZWI8L2gzPgogICAgICAgICAgPHVsPgogICAg ICAgICAgICA8bGk+RXhjZWwtSW1wb3J0IGF1cyBkZXIgYWx0ZW4gVm9ybGFnZSAoaW5rbC4gQXV0 by1Lb3JyZWt0dXJlbik8L2xpPgogICAgICAgICAgICA8bGk+QXV0b21hdGlzY2hlIEJhY2t1cHMg dm9yIFJlc2V0LCBEZW1vLURhdGVuICZhbXA7IFdpZWRlcmhlcnN0ZWxsdW5nOyBtYW51ZWxsZSBC YWNrdXBzIGplZGVyemVpdDwvbGk+CiAgICAgICAgICAgIDxsaT5MaXZlLVN5bmMgbWVocmVyZXIg QmVhcmJlaXRlcjsgZ2xlaWNoemVpdGlnZSBaZWxsLUJlYXJiZWl0dW5nIHdpcmQgZXJrYW5udDwv bGk+CiAgICAgICAgICAgIDxsaT5UYWctL05hY2h0LU1vZHVzLCBBdmF0YXJlICZhbXA7IFBlcnNv bmVuLVNjaG5lbGxpbmZvPC9saT4KICAgICAgICAgICAgPGxpPkRpYWdub3NlLVNlaXRlIDxjb2Rl PnN5bmMtY2hlY2suaHRtbDwvY29kZT4gbWl0IFN0YXJ0LURpYWdub3NlIChNb2R1bC1MYWRldGVz dCk8L2xpPgogICAgICAgICAgPC91bD4KICAgICAgICA8L2Rpdj4KCiAgICAgIDwvZGl2PgoKICAg ICAgPGgyPjxzcGFuIGNsYXNzPSJudW0iPjQ8L3NwYW4+IFNpY2hlcmhlaXQgJmFtcDsgRGF0ZW5z Y2h1dHo8L2gyPgogICAgICA8cD4KICAgICAgICBHZXNwZWljaGVydCB3aXJkIG51ciwgd2FzIGRp ZSBEaWVuc3RwbGFudW5nIGVyZm9yZGVydDogTmFtZSwgVm9ybmFtZSwKICAgICAgICBEaWVuc3Rn cmFkIChvcHRpb25hbCksIERpZW5zdGdydXBwZSwgU3RhbmRvcnQsIERpZW5zdC1UZWxlZm9uLAog ICAgICAgIE5XLUtlbm51bmcgc293aWUgb3B0aW9uYWwgRS1NYWlsIHVuZCBHZWJ1cnRzZGF0dW0u IERpZSBEYXRlbiB2ZXJsYXNzZW4KICAgICAgICBkYXMgZGllbnN0bGljaGUgTmV0emxhdWZ3ZXJr IG5pY2h0IOKAlCBrZWluZSDDnGJlcnRyYWd1bmcgaW5zIEludGVybmV0IG9kZXIKICAgICAgICBh biBEcml0dGUuCiAgICAgIDwvcD4KICAgICAgPHVsIGNsYXNzPSJmbGF0Ij4KICAgICAgICA8bGk+ PGI+WnVncmlmZnNzY2h1dHo6PC9iPiBqZWRlciBaZWxsLUtsaWNrIHdpcmQgc2VydmVyc2VpdGln IGdlZ2VuIGRpZSBlaWdlbmVuIFJlY2h0ZSBnZXByw7xmdCDigJQgUmVjaHRlIGxhc3NlbiBzaWNo IG5pY2h0IGNsaWVudHNlaXRpZyBlcndlaXRlcm4uPC9saT4KICAgICAgICA8bGk+PGI+TmFjaHZv bGx6aWVoYmFya2VpdDo8L2I+IGRhcyBMb2didWNoIGRva3VtZW50aWVydCDDhG5kZXJ1bmdlbiBt aXQgWmVpdHN0ZW1wZWwgdW5kIE5XLUtlbm51bmc7IGVpbnNlaGJhciBudXIgZsO8ciBTdXBlclVz ZXIgdW5kIGZyZWlnZXNjaGFsdGV0ZSBGYWNoYXVmc2ljaHQuPC9saT4KICAgICAgICA8bGk+PGI+ S2VpbmUgTmV0emZyZWlnYWJlOjwvYj4gZGVyIFNlcnZlciBiaW5kZXQgYXVzc2NobGllw59saWNo IGF1ZiA8Y29kZT5sb2NhbGhvc3Q8L2NvZGU+OyBTZWN1cml0eS1IZWFkZXIgKDxjb2RlPlgtQ29u dGVudC1UeXBlLU9wdGlvbnM8L2NvZGU+LCA8Y29kZT5YLUZyYW1lLU9wdGlvbnM8L2NvZGU+LCA8 Y29kZT5SZWZlcnJlci1Qb2xpY3k8L2NvZGU+KSBhdWYgYWxsZW4gQW50d29ydGVuLjwvbGk+CiAg ICAgIDwvdWw+CgogICAgICA8aDI+PHNwYW4gY2xhc3M9Im51bSI+NTwvc3Bhbj4gVGVjaG5pazwv aDI+CiAgICAgIDx1bCBjbGFzcz0iZmxhdCI+CiAgICAgICAgPGxpPjxiPkZyb250ZW5kOjwvYj4g VmFuaWxsYSBIVE1ML0NTUy9KUyBhbHMgRVMtTW9kdWxlIOKAlCBrZWluIEJ1aWxkLVN0ZXAsIGtl aW5lIGV4dGVybmVuIEFiaMOkbmdpZ2tlaXRlbi48L2xpPgogICAgICAgIDxsaT48Yj5CYWNrZW5k OjwvYj4gbG9rYWxlciBQb3dlclNoZWxsLVNlcnZlciAoPGNvZGU+c2VydmVyLnBzMTwvY29kZT4p IGF1ZiBkZW0gZWlnZW5lbiBSZWNobmVyLCBnZWJ1bmRlbiBhbiA8Y29kZT5sb2NhbGhvc3Q8L2Nv ZGU+LjwvbGk+CiAgICAgICAgPGxpPjxiPkRhdGVuOjwvYj4gSlNPTi1EYXRlaWVuIGbDvHIgS29u ZmlndXJhdGlvbiwgUGxhbnVuZywgTG9nYnVjaCB1bmQgSGlud2Vpc2Ug4oCUIGtlaW5lIERhdGVu YmFuaywga2VpbmUgQ2xvdWQuPC9saT4KICAgICAgICA8bGk+PGI+QXV0by1TaHV0ZG93bjo8L2I+ IGRlciBTZXJ2ZXIgYmVlbmRldCBzaWNoIGJlaW0gU2NobGllw59lbiBkZXMgQnJvd3Nlci1UYWJz IChwZXIgPGNvZGU+c2VuZEJlYWNvbjwvY29kZT4pIGJ6dy4gc3DDpHRlc3RlbnMgMzAmbmJzcDtz IG5hY2ggZGVtIGxldHp0ZW4gSGVhcnRiZWF0LjwvbGk+CiAgICAgICAgPGxpPjxiPkhlYXJ0YmVh dDo8L2I+IGzDpHVmdCBpbiBlaW5lbSBXZWItV29ya2VyIOKAlCBXZWNoc2VsIGluIGVpbmVuIEhp bnRlcmdydW5kLVRhYiBiZWVuZGV0IGRlbiBTZXJ2ZXIgbmljaHQsIGVyc3QgZGFzIHRhdHPDpGNo bGljaGUgU2NobGllw59lbi48L2xpPgogICAgICA8L3VsPgoKICAgICAgPGgyPjxzcGFuIGNsYXNz PSJudW0iPjY8L3NwYW4+IFN0YXJ0LVZhcmlhbnRlbjwvaDI+CiAgICAgIDx0YWJsZT4KICAgICAg ICA8dHI+PHRoIHN0eWxlPSJ3aWR0aDozNCUiPlZhcmlhbnRlPC90aD48dGg+WndlY2s8L3RoPjwv dHI+CiAgICAgICAgPHRyPjx0ZD48Y29kZT5zdGFydC52YnM8L2NvZGU+PC90ZD48dGQ+U3RhbmRh cmQgcGVyIERvcHBlbGtsaWNrIOKAlCBzdGFydGV0IHVuc2ljaHRiYXIsIEJyb3dzZXIgw7ZmZm5l dCBhdXRvbWF0aXNjaDwvdGQ+PC90cj4KICAgICAgICA8dHI+PHRkPjxjb2RlPmRnbC5iYXQ8L2Nv ZGU+PC90ZD48dGQ+TGF1bmNoZXIgbWl0IHNpY2h0YmFyZW0gRmVuc3RlciB3w6RocmVuZCBkZXMg U3RhcnRzPC90ZD48L3RyPgogICAgICAgIDx0cj48dGQ+PGNvZGU+ZGdsLmJhdCAvZGVidWc8L2Nv ZGU+PC90ZD48dGQ+UG93ZXJTaGVsbC1GZW5zdGVyIG1pdCBMaXZlLUxvZyB6dXIgRmVobGVyc3Vj aGU8L3RkPjwvdHI+CiAgICAgIDwvdGFibGU+CgogICAgICA8aDI+PHNwYW4gY2xhc3M9Im51bSI+ Nzwvc3Bhbj4gQW5zcHJlY2hwYXJ0bmVyPC9oMj4KICAgICAgPHA+CiAgICAgICAgRnJhZ2VuIHp1 IEFud2VuZHVuZywgU2NoaWNodGNvZGVzLCBSZWNodGV2ZXJnYWJlIG9kZXIgUGxhbnVuZ3PCrWVu dHNjaGVpZHVuZ2VuCiAgICAgICAgcmljaHRlbiBTaWUgYW4gZGllIFN1cGVyVXNlciDigJQgZXJy ZWljaGJhciBpbiBkZXIgQW53ZW5kdW5nIG9iZW4gcmVjaHRzIMO8YmVyCiAgICAgICAgZGFzIElu Zm8tU3ltYm9sIDxjb2RlPuKEuTwvY29kZT4uCiAgICAgIDwvcD4KCiAgICAgIDxmb290ZXI+CiAg ICAgICAgVkkzIERHTC1QbGFudW5nIMK3IFZlcmtlaHJzaW5zcGVrdGlvbiAzIMK3IERpZXNlIFNl aXRlIGlzdCByZWluIGluZm9ybWF0aXYgdW5kIHNwZWljaGVydCBzZWxic3Qga2VpbmUgRGF0ZW4u CiAgICAgIDwvZm9vdGVyPgogICAgPC9tYWluPgogIDwvZGl2Pgo8L2JvZHk+CjwvaHRtbD4K ### FILE: js/admin.js | 77365 Ly8gPT09IGFkbWluL2FkbWluLmpzID09PQovLyBLb25zb2xpZGllcnRlcyBBZG1pbi1Nb2R1bDog RGlzcGF0Y2hlciwgU2ljaHRiYXJrZWl0LCBCYWNrdXBzLCBHcnVwcGVuLAovLyBCZXplaWNobnVu Z2VuLCBCZWRpZW51bmdzLUhpbGZlLCBFaW5zdGVsbHVuZ2VuLCBTdGFuZG9ydGUrU2NoaWNodGZv bGdlLAovLyBQZXJzb25hbC1WZXJ3YWx0dW5nIChpbmtsLiBJbmxpbmUtRWRpdHMpLCBGZWllcnRh Z2UsIEZlcmllbiwgU29uZGVydGVybWluZSwKLy8gU2NoaWNodGNvZGVzLCBGZWF0dXJlcywgU3Vw ZXJVc2VyLUxpc3RlLCBGYWNoYXVmc2ljaHQtVmVyd2FsdHVuZwovLyAoaW5rbC4gU3ViLVNpY2h0 YmFya2VpdCkuIEJld3Vzc3RlIEtvbnNvbGlkaWVydW5nIGdlZ2VuIEZMRDogVkkzIGVudGZhbGxl bgovLyBNZWRpZW4vUm90YXRpb24vSW5mby1SVEUsIFBlcnNvbmVuLUxpc3RlIGRldXRsaWNoIGts ZWluZXIgYWxzIEZMRC4KLy8KLy8gSG9va3MtS29uc3VtZW50ZW4gaW4gYW5kZXJlbiBNb2R1bGVu IChQaGFzZSA0LTcpIGJla29tbWVuIGlocmUgVmVyd2Vpc2UKLy8gdWViZXIgZGllIGpld2VpbGln ZW4gKi1Ib29rcy1PYmpla3RlIGdlc2V0enQ7IHNpZWhlIGFwcC5qcyBpbml0LgoKaW1wb3J0IHsg WiB9IGZyb20gJy4vY29yZV9zdGF0ZS5qcyc7CmltcG9ydCB7CiAgICBlc2NhcGVIVE1MLCBlc2Nh cGVBdHRyLAogICAgZGF0dW1TdHIsIGRhdHVtRm9ybWF0REUsIGRhdHVtS3VyekRFLCB3b2NoZW50 YWdLdXJ6LCBpc3RXb2NoZW5lbmRlLAogICAgZnVua3Rpb25zUmFuZywgZ2V0RnVua3Rpb25lbiwg Z2V0RGllbnN0Z3JhZGUsCiAgICBGVU5LVElPTkVOX0RFRkFVTFQsIERJRU5TVEdSQURFX0RFRkFV TFQsCiAgICBfcGVyc29uQW56ZWlnZSwgYWJzZW5kZXJOYW1lRXJtaXR0ZWxuCn0gZnJvbSAnLi9j b3JlX3V0aWwuanMnOwppbXBvcnQgeyBhcGksIGFwaVBvc3QsIGFwaVB1dCB9IGZyb20gJy4vY29y ZV9hcGkuanMnOwppbXBvcnQgewogICAgdG9hc3QsIGJlc3RhZXRpZ2VuLAogICAgbW9kYWxaZWln ZW4sIG1vZGFsU2NobGllc3NlbiwgbW9kYWxEaXJ0eVRyYWNraW5nQWt0aXZpZXJlbiwKICAgIGVu dHd1cmZGdWVyLCBlbnR3dXJmU3BlaWNoZXJuLCBlbnR3dXJmTG9lc2NoZW4sCiAgICBkaXJ0eVJl Z2lzdHJpZXJlLCBkaXJ0eVNldHplbiwgZGlydHlJc3QsIGRpcnR5S2VubnQsIGRpcnR5QWt0aXZl LAogICAgZGlydHlFaW50cmFnLAogICAgdGFiRHJhZnRGdWVyLCB0YWJEcmFmdFNwZWljaGVybiwg dGFiRHJhZnRMb2VzY2hlbiwgdGFiRHJhZnRBdXRvQ2xlYW51cAp9IGZyb20gJy4vdWlfZGlhbG9n LmpzJzsKaW1wb3J0IHsKICAgIHNhbml0aXplUmljaEh0bWwsIEVNT0pJX1NFVCwKICAgIGVtb2pp UGlja2VyWmVpZ2VuLCBlbW9qaVBpY2tlclNjaGxpZXNzZW4sCiAgICBydGVJbml0LCBydGVCdXR0 b25TdGF0ZXMKfSBmcm9tICcuL3VpX3J0ZS5qcyc7CmltcG9ydCB7CiAgICBkYXJmQWRtaW5TdWJ0 YWIsIGRhdHVtSW5WZXJiaW5kbGljaGtlaXQKfSBmcm9tICcuL2NvcmVfcGVybWlzc2lvbnMuanMn OwppbXBvcnQgewogICAgQURNSU5fTElTVF9GRUxERVIsIGFkbWluTGlzdGVuTm9ybWFsaXNpZXJl biwKICAgIHBlcnNvbmVuTmV1QXVmYmF1ZW4KfSBmcm9tICcuL2NvcmVfZGF0ZW5MYWRlbi5qcyc7 CmltcG9ydCB7CiAgICB0YWdlRXJ6ZXVnZW4sIHRhZ0luZm9zQmVyZWNobmVuLAogICAgZ3JpZFJl bmRlcm4sIGtvcGZSZW5kZXJuLCBhbnNpY2h0V2VjaHNlbG4sCiAgICBuYW1lblJlbmRlcm4sIGRh dGVuR3JpZFJlbmRlcm4sCiAgICBLQVRFR09SSUVfSUNPTl9ERUZBVUxUCn0gZnJvbSAnLi9ncmlk X3JlbmRlci5qcyc7CmltcG9ydCB7IGZ1ZWhydW5nc1phZWhsZW4gfSBmcm9tICcuL2dyaWRfZWRp dG9yLmpzJzsKaW1wb3J0IHsKICAgIGJlc2V0enVuZ3NUYWJGYXJiZUFrdHVhbGlzaWVyZW4sIGJl c2V0enVuZ3Nrb250cm9sbGVSZW5kZXJuCn0gZnJvbSAnLi9iZXNldHp1bmcuanMnOwppbXBvcnQg ewogICAgRU1BSUxfVk9STEFHRU5fREVGQVVMVCwgRU1BSUxfVk9STEFHRU5fTUVUQSwKICAgIGVt YWlsVm9ybGFnZW5Ib2xlbiwgZW1haWxWb3JsYWdlblJlbmRlcm4sIGVtYWlsVm9ybGFnZUJlYXJi ZWl0ZW5Nb2RhbAp9IGZyb20gJy4vZW1haWxfdm9ybGFnZW4uanMnOwppbXBvcnQgeyBtaXR0ZWls dW5nZW5UYWJSZW5kZXJuLCBtaXR0ZWlsdW5nTmV1T2VmZm5lbiB9IGZyb20gJy4vYWRtaW5fbWl0 dGVpbHVuZ2VuLmpzJzsKLy8gTG9rYWxlIEF1ZnJ1ZmVyIHZvbiBzdXBlclVzZXJSZW5kZXJuICsg ZmFjaGF1ZnNpY2h0UmVuZGVybiBicmF1Y2hlbgovLyBuYWNoIFBoYXNlIDktQiBDMSBleHBsaXpp dGUgSW1wb3J0cyDigJQgZGFzIFBhc3MtVGhyb3VnaC1SZS1FeHBvcnQgYW0KLy8gRGF0ZWktRW5k ZSBzdGVsbHQgZGllIFN5bWJvbGUgbnVyIGZ1ZXIgZXh0ZXJuZSBLb25zdW1lbnRlbiBiZXJlaXQs Ci8vIG5pY2h0IGltIE1vZHVsLVNjb3BlIHZvbiBhZG1pbi5qcyBzZWxic3QuCmltcG9ydCB7IHN1 cGVyVXNlclJlbmRlcm4sIGZhY2hhdWZzaWNodFJlbmRlcm4sIHJvbGxlblRhYmVsbGVSZW5kZXJu IH0gZnJvbSAnLi9hZG1pbl9yb2xsZW4uanMnOwovLyBBbmFsb2cgUGhhc2UgOS1CIEMyOiBzY2hp Y2h0Y29kZVZvcnNjaGF1UmVuZGVybiB3aXJkIGF1cwovLyBhZG1pblJlbmRlcm4oKSBoZXJhdXMg YXVmZ2VydWZlbiwgZGFoZXIgZXhwbGl6aXQgbG9rYWwgaW1wb3J0aWVyZW4uCmltcG9ydCB7IHNj aGljaHRjb2RlVm9yc2NoYXVSZW5kZXJuIH0gZnJvbSAnLi9hZG1pbl9jb2Rlcy5qcyc7Ci8vIFBo YXNlIDktQiBDMzogZmVpZXJ0YWdlVGFiZWxsZVJlbmRlcm4sIGZlcmllblRhYmVsbGVSZW5kZXJu LAovLyBzb25kZXJ0ZXJtaW5lUmVuZGVybiB3ZXJkZW4gdm9uIGFkbWluUmVuZGVybigpIGF1Zmdl cnVmZW4uCmltcG9ydCB7CiAgICBmZWllcnRhZ2VUYWJlbGxlUmVuZGVybiwgZmVyaWVuVGFiZWxs ZVJlbmRlcm4sIHNvbmRlcnRlcm1pbmVSZW5kZXJuLAogICAgZmVyaWVuQXVzVGFiZWxsZUxlc2Vu Cn0gZnJvbSAnLi9hZG1pbl9rYWxlbmRlci5qcyc7Ci8vIFBoYXNlIDktQiBDNDogcGVyc29uYWxU YWJlbGxlUmVuZGVybiB3aXJkIHZvbiBhZG1pblJlbmRlcm4oKSBhdWZnZXJ1ZmVuLgppbXBvcnQg eyBwZXJzb25hbFRhYmVsbGVSZW5kZXJuIH0gZnJvbSAnLi9hZG1pbl9wZXJzb25hbC5qcyc7Cmlt cG9ydCB7IHN0YXRpc3Rpa0xheW91dFJlbmRlcm4gfSBmcm9tICcuL2FkbWluX3N0YXRpc3Rpay5q cyc7CmltcG9ydCB7IHN0YXRpc3Rpa0J1aWxkZXJSZW5kZXJuIH0gZnJvbSAnLi9hZG1pbl9zdGF0 aXN0aWtfYnVpbGRlci5qcyc7CmltcG9ydCB7CiAgICBlcnNjaGVpbnVuZ3NiaWxkUmVuZGVybiwg ZXJzY2hlaW51bmdzYmlsZFNwZWljaGVybiwgZXJzY2hlaW51bmdzYmlsZFp1cnVlY2tzZXR6ZW4s CiAgICB2b3JzY2hhdUFrdHVhbGlzaWVyZW4sIHN5bmNGbGFzaFZvcnNjaGF1LCBtYXJraWVydW5n ZW5BbndlbmRlbgp9IGZyb20gJy4vYWRtaW5fZXJzY2hlaW51bmdzYmlsZC5qcyc7CgovLyA9PT09 PSBIb29rcyA9PT09PQoKZXhwb3J0IHZhciBhZG1pbkhvb2tzID0gewogICAgYmVkaWVudW5nWmVp bGVuUmVuZGVybjogbnVsbCAgIC8vIGJsZWlidCBpbiBhcHAuanMgKEluZm8tRmVuc3RlcikKfTsK Ci8vIEJFRElFTlVOR19ERUZBVUxUIOKAlCBEZWZhdWx0LUJlZGllbnVuZ3MtSGlud2Vpc2UsIGdy ZWlmZW4gd2VubgovLyBhZG1pbi5iZWRpZW51bmdzdGV4dGUgbGVlciBpc3QuIEZvcm1hdCAiVGl0 ZWw6IFRleHQiIHBybyBaZWlsZS4KdmFyIEJFRElFTlVOR19ERUZBVUxUID0KICAgICdQbGFudW5n OiBFaW5mYWNoLUtsaWNrIGFrdGl2aWVydCBkaWUgWmVsbGUgKGtsZWluZXMgZHVua2Vscm90ZXMg UXVhZHJhdCB1bnRlbiByZWNodHMpLiBEb3BwZWxrbGljayDDtmZmbmV0IGRlbiBTY2hpY2h0Y29k ZS1FZGl0b3IuIEtvbW1lbnRhciDDvGJlciBkYXMgRWluZ2FiZWZlbGQgaW0gRWRpdG9yLlxuJyAr CiAgICAnRHJhZy1GaWxsIChFeGNlbC1Gw7xsbGvDpHN0Y2hlbik6IEF1ZiBkYXMgZHVua2Vscm90 ZSBRdWFkcmF0IGtsaWNrZW4sIGdlZHLDvGNrdCBoYWx0ZW4gdW5kIHNlaXRsaWNoIMO8YmVyIGRp ZSBaZWxsZW4gZGVyc2VsYmVuIFBlcnNvbiB6aWVoZW4g4oCUIGRlciBXZXJ0IHdpcmQgYXVmIGFs bGUgw7xiZXJzdHJpY2hlbmVuIFRhZ2Ugw7xiZXJ0cmFnZW4uXG4nICsKICAgICdXb2NoZW5wbGFu OiBER0wgdW5kIFdERi9GQlAgZ2V0cmVubnQgZGFyZ2VzdGVsbHQsIG1pdCBEaWVuc3RudW1tZXJu LiAqIG1hcmtpZXJ0IEJlc2V0enVuZyBhdXMgZGVtIEZ1bmt0aW9uc2Jlc2V0enVuZ3NwbGFuLlxu JyArCiAgICAnUGVycy4gUGxhbjogSmFocmVzw7xiZXJzaWNodCBmw7xyIGVpbmUgZWluemVsbmUg UGVyc29uIG1pdCBNb25hdHNrYWxlbmRlcm4uXG4nICsKICAgICdIZXV0ZS1CdXR0b246IFNjcm9s bHQgenVtIGhldXRpZ2VuIERhdHVtLlxuJyArCiAgICAnQmFja3VwOiBFcnN0ZWxsdCBlaW5lIFNp Y2hlcnVuZ3Nrb3BpZSBkZXIgYWt0dWVsbGVuIFBsYW51bmcuXG4nICsKICAgICdWZXJhbnR3b3J0 bGljaDogRGllIHJhbmdow7ZjaHN0ZSBQZXJzb24gcHJvIFNjaGljaHQgd2lyZCBnb2xkZmFyYmVu IG1hcmtpZXJ0LlxuJyArCiAgICAnS29tbWVudGFyZTogWmVsbGVuIG1pdCBLb21tZW50YXIgaGFi ZW4gZWluIGdvbGRlbmVzIERyZWllY2sgb2JlbiByZWNodHMuXG4nICsKICAgICdCYWRnZXMgaW0g SGVhZGVyOiDwn46CIEdlYnVydHN0YWcsIOKaoCBXYXJudW5nLCDihLkgSGlud2VpcyDigJQgZGly ZWt0IGFtIGpld2VpbGlnZW4gVGFnLic7CgovLyA9PT09PSBBZG1pbjogRW1wdHktU3RhdGUtSGVs cGVyID09PT09Ci8vCi8vIFJlbmRlcnQgZWluZSAuYWRtaW4tZW1wdHktS2FydGUgYWxzIDx0cj4g aW5uZXJoYWxiIGVpbmVyIGxlZXJlbiBUYWJlbGxlLgovLyBQYXR0ZXJuIGZ1ZXIgYWxsZSBBZG1p bi1MaXN0ZW4sIGRpZSBub2NoIGtlaW5lIEVpbnRyYWVnZSBoYWJlbiDigJQgc3RhdHQKLy8gZWlu ZXIga2FsdGVuIGxlZXJlbiBUYWJlbGxlIGJla29tbWVuIE51dHplciBlaW5lIGt1cnplIE9uYm9h cmRpbmctS2FydGUKLy8gbWl0IEljb24sIFRpdGVsLCBFcmtsYWVydW5nIHVuZCBvcHRpb25hbCBl aW5lbSBBa3Rpb25zLUhpbndlaXMuCi8vICJoaW53ZWlzIiB2ZXJ3ZWlzdCBtZWlzdCBhdWYgZWlu ZW4gZXhpc3RpZXJlbmRlbiAiTmV1Ii1CdXR0b24gaW0gVGFiLUtvcGYKLy8g4oCUIGtlaW4gQnV0 dG9uIGltIEVtcHR5LVN0YXRlLCBkYW1pdCBlcyBrZWluZSBEb3BwZWx1bmcgZ2lidC4KZXhwb3J0 IGZ1bmN0aW9uIGFkbWluRW1wdHlaZWlsZShjb2xzcGFuLCBpY29uLCB0aXRlbCwgdGV4dCkgewog ICAgcmV0dXJuICc8dHIgY2xhc3M9ImFkbWluLWVtcHR5LXplaWxlIj48dGQgY29sc3Bhbj0iJyAr IGNvbHNwYW4gKwogICAgICAgICciIHN0eWxlPSJiYWNrZ3JvdW5kOnRyYW5zcGFyZW50O2JvcmRl cjowO3BhZGRpbmc6OHB4IDAiPicgKwogICAgICAgICc8ZGl2IGNsYXNzPSJhZG1pbi1lbXB0eSI+ JyArCiAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJhZG1pbi1lbXB0eS1pY29uIiBhcmlhLWhpZGRl bj0idHJ1ZSI+JyArIGljb24gKyAnPC9kaXY+JyArCiAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJh ZG1pbi1lbXB0eS10aXRlbCI+JyArIGVzY2FwZUhUTUwodGl0ZWwpICsgJzwvZGl2PicgKwogICAg ICAgICAgICAnPGRpdiBjbGFzcz0iYWRtaW4tZW1wdHktdGV4dCI+JyArIGVzY2FwZUhUTUwodGV4 dCkgKyAnPC9kaXY+JyArCiAgICAgICAgJzwvZGl2PicgKwogICAgJzwvdGQ+PC90cj4nOwp9Cgov LyA9PT09PSBBZG1pbjogUmVhZC1vbmx5LUJhbm5lciA9PT09PQovLwovLyBCbGVuZGV0IGltIEFk bWluLUJlcmVpY2ggb2JlbiBlaW5lbiBIaW53ZWlzIGVpbiwgd2VubiBkZXIgZWluZ2Vsb2dndGUK Ly8gVXNlciBrZWluZSBCZWFyYmVpdHVuZ3MtUmVjaHRlIGhhdCAoYWxsZSBSb2xsZW4gYXVzc2Vy IFN1cGVyVXNlcikuCi8vIEF1ZnJ1ZjogYW0gRW5kZSB2b24gYWRtaW5SZW5kZXJuKCkgdW5kIG5h Y2ggamVkZW0gVGFiLVN3aXRjaCAoYXBwLmpzKS4KZXhwb3J0IGZ1bmN0aW9uIGFkbWluQmFubmVy QWt0dWFsaXNpZXJlbigpIHsKICAgIHZhciBiYW5uZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ ZCgnYWRtaW4tcmVhZG9ubHktYmFubmVyJyk7CiAgICBpZiAoIWJhbm5lcikgcmV0dXJuOwogICAg aWYgKCFaLnJlY2h0ZSB8fCBaLnJlY2h0ZS5pc3RTdXBlclVzZXIpIHsKICAgICAgICBiYW5uZXIu Y2xhc3NMaXN0LmFkZCgndmVyc3RlY2t0Jyk7CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgLy8g Um9sbGUgaW4gbGVzYmFyZW4gVGV4dCB1bXNldHplbiDigJQga2VpbiBHbG9zc2FyLUxlaHJnYW5n LCBudXIgS29udGV4dAogICAgLy8gZGFtaXQgZGVyIFVzZXIgdmVyc3RlaHQsICp3YXJ1bSogZXIg bmljaHQgZWRpdGllcmVuIGRhcmYuCiAgICB2YXIgcm9sbGVUZXh0ID0gJ0ZhY2hhdWZzaWNodCc7 CiAgICBpZiAoWi5yZWNodGUucm9sbGUgPT09ICdkaXJla3Rpb25zbGVpdHVuZycpIHJvbGxlVGV4 dCA9ICdEaXJla3Rpb25zbGVpdHVuZyc7CiAgICBlbHNlIGlmIChaLnJlY2h0ZS5yb2xsZSA9PT0g J2Z1ZWhydW5nc3N0ZWxsZScpIHJvbGxlVGV4dCA9ICdGdWVocnVuZ3NzdGVsbGUnOwogICAgZWxz ZSBpZiAoIVoucmVjaHRlLmlzdEZhY2hhdWZzaWNodCkgcm9sbGVUZXh0ID0gJ01pdGFyYmVpdGVy JzsKICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FkbWluLXJlYWRvbmx5 LWJhbm5lci10ZXh0Jyk7CiAgICBpZiAodGV4dCkgewogICAgICAgIHRleHQuaW5uZXJIVE1MID0g J0R1IHNpZWhzdCBkaWVzZW4gQmVyZWljaCBudXIgbGVzZW5kIChSb2xsZTogPHN0cm9uZz4nICsK ICAgICAgICAgICAgZXNjYXBlSFRNTChyb2xsZVRleHQpICsKICAgICAgICAgICAgJzwvc3Ryb25n PikuIEJlYXJiZWl0dW5nIGltIEFkbWluLUJlcmVpY2ggaXN0IGF1ZiBTdXBlclVzZXIgYmVzY2hy JmF1bWw7bmt0Lic7CiAgICB9CiAgICBiYW5uZXIuY2xhc3NMaXN0LnJlbW92ZSgndmVyc3RlY2t0 Jyk7Cn0KCi8vID09PT09IEFkbWluOiBQZXJzb25hbHZlcndhbHR1bmcgPT09PT0KCmZ1bmN0aW9u IGFkbWluUmVuZGVybigpIHsKICAgIGlmICghZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Fuc2lj aHQtYWRtaW4nKSkgcmV0dXJuOwogICAgYWRtaW5CYW5uZXJBa3R1YWxpc2llcmVuKCk7CiAgICBw ZXJzb25hbFRhYmVsbGVSZW5kZXJuKCk7CiAgICBncnVwcGVuVGFiZWxsZVJlbmRlcm4oKTsKICAg IGZlaWVydGFnZVRhYmVsbGVSZW5kZXJuKCk7CiAgICBmZXJpZW5UYWJlbGxlUmVuZGVybigpOwog ICAgc29uZGVydGVybWluZVJlbmRlcm4oKTsKICAgIHNjaGljaHRjb2RlVm9yc2NoYXVSZW5kZXJu KCk7CiAgICBzdGFuZG9ydGVSZW5kZXJuKCk7CiAgICBmZWF0dXJlc1JlbmRlcm4oKTsKICAgIHN1 cGVyVXNlclJlbmRlcm4oKTsKICAgIGZhY2hhdWZzaWNodFJlbmRlcm4oKTsKICAgIHJvbGxlblRh YmVsbGVSZW5kZXJuKCdkaXJla3Rpb25zbGVpdHVuZycpOwogICAgcm9sbGVuVGFiZWxsZVJlbmRl cm4oJ2Z1ZWhydW5nc3N0ZWxsZScpOwogICAgZWluc3RlbGx1bmdlblJlbmRlcm4oKTsKICAgIGVy c2NoZWludW5nc2JpbGRSZW5kZXJuKCk7CiAgICBzdGF0aXN0aWtMYXlvdXRSZW5kZXJuKCk7CiAg ICBiZXplaWNobnVuZ2VuUmVuZGVybigpOwogICAgbGlzdGVuUmVuZGVybigpOwogICAgbWlrcm90 ZWFtc1JlbmRlcm4oKTsKICAgIGluZm9IaWxmZVJlbmRlcm4oKTsKICAgIGVtYWlsVm9ybGFnZW5S ZW5kZXJuKCk7CiAgICBzdXBwb3J0TWFpbFNla3Rpb25SZW5kZXJuKCk7CiAgICBtaXR0ZWlsdW5n ZW5UYWJSZW5kZXJuKCk7CiAgICBiYWNrdXBUYWJlbGxlTGFkZW4oKTsKICAgIGFkbWluSW5mb0lu aXQoKTsKfQoKLy8gR2xvYmFsZSBTaWNodGJhcmtlaXRzLVNla3Rpb24gZnVlciAicmVndWxhZXJl IEFkbWlucyIgd3VyZGUgMjAyNi0wNS0yMwovLyBlbnRmZXJudC4gS29uemVwdCBleGlzdGllcnQg bmljaHQgbWVociDigJQgU3RhdGlzdGlrL0xvZ2J1Y2gvCi8vIEFkbWluaXN0cmF0aW9uIHNpbmQg bnVyIGZ1ZXIgU1UgKyBSb2xsZW4tTGlzdGVuIHNpY2h0YmFyIChGYWNoLQovLyBhdWZzaWNodCAv IERpcmVrdGlvbnNsZWl0dW5nIC8gRnVlaHJ1bmdzc3RlbGxlKSwgdW5kIGdyYW51bGFyIHBybwov LyBQZXJzb24vUm9sbGUgdWViZXIgZGllIGpld2VpbGlnZSBTdWItU2ljaHQtTWFwLiBFeHBvcnQt U3R1YiBibGVpYnQKLy8gaGllciBudXIsIGZhbGxzIGV4dGVybmUgTW9kdWxlIG5vY2ggZGVuIE5h bWVuIGltcG9ydGllcmVuIChuby1vcCkuCmZ1bmN0aW9uIHNpY2h0YmFya2VpdFJlbmRlcm4oKSB7 IC8qIGVudGZlcm50ICovIH0KZnVuY3Rpb24gc2ljaHRiYXJrZWl0V2VydCgpICAgIHsgcmV0dXJu IGZhbHNlOyB9CgovLyA9PT09PSBBZG1pbjogQmFja3VwcyA9PT09PQpmdW5jdGlvbiBiYWNrdXBU YWJlbGxlTGFkZW4oKSB7CiAgICB2YXIgdGJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn YmFja3VwLXRib2R5Jyk7CiAgICBpZiAoIXRib2R5KSByZXR1cm47CiAgICBhcGkoJy9hcGkvcGxh bnVuZy9iYWNrdXBzJykudGhlbihmdW5jdGlvbihsaXN0ZSkgewogICAgICAgIGJhY2t1cFRhYmVs bGVSZW5kZXJuKGxpc3RlIHx8IFtdKTsKICAgIH0pLmNhdGNoKGZ1bmN0aW9uKGUpIHsKICAgICAg ICB0Ym9keS5pbm5lckhUTUwgPSAnPHRyPjx0ZCBjb2xzcGFuPSI1IiBzdHlsZT0idGV4dC1hbGln bjpjZW50ZXI7cGFkZGluZzoxNnB4O2NvbG9yOnZhcigtLWZhcmJlLWZlaGxlcikiPkZlaGxlciBi ZWltIExhZGVuOiAnICsgZXNjYXBlSFRNTChlLm1lc3NhZ2UpICsgJzwvdGQ+PC90cj4nOwogICAg fSk7Cn0KCmZ1bmN0aW9uIGJhY2t1cEdyb2Vzc2VGb3JtYXQoYnl0ZXMpIHsKICAgIGlmIChieXRl cyA8IDEwMjQpIHJldHVybiBieXRlcyArICcgQic7CiAgICBpZiAoYnl0ZXMgPCAxMDQ4NTc2KSBy ZXR1cm4gKGJ5dGVzIC8gMTAyNCkudG9GaXhlZCgxKSArICcgS0InOwogICAgcmV0dXJuIChieXRl cyAvIDEwNDg1NzYpLnRvRml4ZWQoMSkgKyAnIE1CJzsKfQoKZnVuY3Rpb24gYmFja3VwWmVpdHB1 bmt0Rm9ybWF0KGlzbykgewogICAgaWYgKCFpc28pIHJldHVybiAn4oCUJzsKICAgIHZhciBkID0g bmV3IERhdGUoaXNvKTsKICAgIGlmIChpc05hTihkLmdldFRpbWUoKSkpIHJldHVybiBpc287CiAg ICB2YXIgcGFkID0gZnVuY3Rpb24obikgeyByZXR1cm4gKG4gPCAxMCA/ICcwJyA6ICcnKSArIG47 IH07CiAgICByZXR1cm4gcGFkKGQuZ2V0RGF0ZSgpKSArICcuJyArIHBhZChkLmdldE1vbnRoKCkg KyAxKSArICcuJyArIGQuZ2V0RnVsbFllYXIoKSArCiAgICAgICAgICAgJyAnICsgcGFkKGQuZ2V0 SG91cnMoKSkgKyAnOicgKyBwYWQoZC5nZXRNaW51dGVzKCkpICsgJzonICsgcGFkKGQuZ2V0U2Vj b25kcygpKTsKfQoKZnVuY3Rpb24gYmFja3VwVGFiZWxsZVJlbmRlcm4obGlzdGUpIHsKICAgIHZh ciB0Ym9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdiYWNrdXAtdGJvZHknKTsKICAgIGlm ICghdGJvZHkpIHJldHVybjsKICAgIGlmICghbGlzdGUubGVuZ3RoKSB7CiAgICAgICAgdGJvZHku aW5uZXJIVE1MID0gYWRtaW5FbXB0eVplaWxlKDYsICdcdXsxRjRFNn0nLAogICAgICAgICAgICAn Tm9jaCBrZWluZSBCYWNrdXBzIHZvcmhhbmRlbicsCiAgICAgICAgICAgICdCYWNrdXBzIHNpY2hl cm4gZGVuIHZvbGxzdGFlbmRpZ2VuIFBsYW51bmdzLSB1bmQgQWRtaW4tU3RhbmQuIEF1dG9tYXRp c2NoIHdlcmRlbiBCYWNrdXBzIHZvciByaXNrYW50ZW4gQWt0aW9uZW4gKFJlc2V0LCBEdW1teWRh dGVuLCBXaWVkZXJoZXJzdGVsbHVuZykgYW5nZWxlZ3QuIE1hbnVlbGwgbWl0IOKAnk5ldWVzIEJh Y2t1cCBqZXR6dCBlcnN0ZWxsZW4iLicpOwogICAgICAgIHJldHVybjsKICAgIH0KICAgIHZhciBo dG1sID0gJyc7CiAgICBsaXN0ZS5mb3JFYWNoKGZ1bmN0aW9uKGIpIHsKICAgICAgICB2YXIgdHlw QmFkZ2UgPSAnYmstdHlwLW1hbnVlbGwnOwogICAgICAgIGlmIChiLnR5cCA9PT0gJ3ZvciBEdW1t eWRhdGVuJykgdHlwQmFkZ2UgPSAnYmstdHlwLWF1dG8nOwogICAgICAgIGVsc2UgaWYgKGIudHlw ID09PSAndm9yIFJlc2V0JykgdHlwQmFkZ2UgPSAnYmstdHlwLWF1dG8nOwogICAgICAgIGVsc2Ug aWYgKGIudHlwID09PSAndm9yIFdpZWRlcmhlcnN0ZWxsdW5nJykgdHlwQmFkZ2UgPSAnYmstdHlw LXNpY2hlcnVuZyc7CiAgICAgICAgLy8gaW5oYWx0OiBLb21wbGV0dCAoQnVuZGxlKSB2cyBOdXIg UGxhbnVuZyAoTGVnYWN5KSDigJQgRmluZGluZyBDLjUKICAgICAgICB2YXIgaW5oYWx0ID0gYi5p bmhhbHQgfHwgKGIuaXN0QnVuZGxlID8gJ0tvbXBsZXR0IChQbGFudW5nICsgQWRtaW4pJyA6ICdO dXIgUGxhbnVuZycpOwogICAgICAgIHZhciBpbmhhbHRDbHMgPSBiLmlzdEJ1bmRsZSA/ICdiay1p bmhhbHRzdHlwLWtvbXBsZXR0JyA6ICdiay1pbmhhbHRzdHlwLXBsYW51bmcnOwogICAgICAgIHZh ciByZXN0b3JlVGl0bGUgPSBiLmlzdEJ1bmRsZQogICAgICAgICAgICA/ICdBa3R1ZWxsZSBQbGFu dW5nIFVORCBBZG1pbi1Lb25maWd1cmF0aW9uIGR1cmNoIGRpZXNlcyBCdW5kbGUtQmFja3VwIGVy c2V0emVuJwogICAgICAgICAgICA6ICdBa3R1ZWxsZSBQbGFudW5nIGR1cmNoIGRpZXNlcyBCYWNr dXAgZXJzZXR6ZW4gKEFkbWluLUtvbmZpZ3VyYXRpb24gYmxlaWJ0IHVudmVyYWVuZGVydCknOwog ICAgICAgIC8vIEFrdGlvbnMtQnV0dG9ucyAoQ2hlcnJ5LVBpY2sgNGRiNjQ5Myk6IGluIGVpbmVy IFplaWxlLCBuaWNodAogICAgICAgIC8vIHVtYnJlY2hlbmQuIERhdGVpbmFtZS9Hcm9lc3NlIG1p dCBlbGxpcHNpcywgZmFsbHMgZW5nLiBLZWluZQogICAgICAgIC8vIEZ1bmt0aW9uc2FlbmRlcnVu ZyDigJQgbnVyIGtvbXBha3RlcmUgRGFyc3RlbGx1bmcuCiAgICAgICAgaHRtbCArPSAnPHRyPicg KwogICAgICAgICAgICAnPHRkPjxjb2RlIHN0eWxlPSJmb250LXNpemU6MTFweCI+JyArIGVzY2Fw ZUhUTUwoYmFja3VwWmVpdHB1bmt0Rm9ybWF0KGIuZXJzdGVsbHRBbSkpICsgJzwvY29kZT48L3Rk PicgKwogICAgICAgICAgICAnPHRkPjxzcGFuIGNsYXNzPSJiay10eXAgJyArIHR5cEJhZGdlICsg JyI+JyArIGVzY2FwZUhUTUwoYi50eXApICsgJzwvc3Bhbj48L3RkPicgKwogICAgICAgICAgICAn PHRkPjxzcGFuIGNsYXNzPSJiay1pbmhhbHRzdHlwICcgKyBpbmhhbHRDbHMgKyAnIj4nICsgZXNj YXBlSFRNTChpbmhhbHQpICsgJzwvc3Bhbj48L3RkPicgKwogICAgICAgICAgICAnPHRkIHN0eWxl PSJmb250LWZhbWlseTptb25vc3BhY2U7Zm9udC1zaXplOjExcHg7b3ZlcmZsb3c6aGlkZGVuO3Rl eHQtb3ZlcmZsb3c6ZWxsaXBzaXM7d2hpdGUtc3BhY2U6bm93cmFwO21heC13aWR0aDoyODBweCIg dGl0bGU9IicgKyBlc2NhcGVBdHRyKGIuZGF0ZWluYW1lKSArICciPicgKyBlc2NhcGVIVE1MKGIu ZGF0ZWluYW1lKSArICc8L3RkPicgKwogICAgICAgICAgICAnPHRkIHN0eWxlPSJ0ZXh0LWFsaWdu OnJpZ2h0O2ZvbnQtZmFtaWx5Om1vbm9zcGFjZTtmb250LXNpemU6MTFweDt3aGl0ZS1zcGFjZTpu b3dyYXAiPicgKyBlc2NhcGVIVE1MKGJhY2t1cEdyb2Vzc2VGb3JtYXQoYi5ncm9lc3NlKSkgKyAn PC90ZD4nICsKICAgICAgICAgICAgJzx0ZD48ZGl2IHN0eWxlPSJkaXNwbGF5OmZsZXg7Z2FwOjZw eDtmbGV4LXdyYXA6bm93cmFwO3doaXRlLXNwYWNlOm5vd3JhcCI+JyArCiAgICAgICAgICAgICAg ICAnPGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1wcmltYWVyIGJ0bi1rbGVpbiIgZGF0YS1ha3Rpb249 ImJhY2t1cC13aWVkZXJoZXJzdGVsbGVuIiBkYXRhLWRhdGVpPSInICsgZXNjYXBlQXR0cihiLmRh dGVpbmFtZSkgKyAnIiB0aXRsZT0iJyArIGVzY2FwZUF0dHIocmVzdG9yZVRpdGxlKSArICciIHN0 eWxlPSJ3aGl0ZS1zcGFjZTpub3dyYXAiPuKGuiBXaWVkZXJoZXJzdGVsbGVuPC9idXR0b24+JyAr CiAgICAgICAgICAgICAgICAnPGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1zZWsgYnRuLWtsZWluIiBk YXRhLWFrdGlvbj0iYmFja3VwLWRvd25sb2FkIiBkYXRhLWRhdGVpPSInICsgZXNjYXBlQXR0cihi LmRhdGVpbmFtZSkgKyAnIiB0aXRsZT0iSlNPTi1EYXRlaSBoZXJ1bnRlcmxhZGVuIiBzdHlsZT0i d2hpdGUtc3BhY2U6bm93cmFwIj7ipJMgRG93bmxvYWQ8L2J1dHRvbj4nICsKICAgICAgICAgICAg ICAgICc8YnV0dG9uIGNsYXNzPSJidG4gYnRuLWdlZmFociBidG4ta2xlaW4gYnRuLWxvZXNjaGVu IiBkYXRhLWFrdGlvbj0iYmFja3VwLWxvZXNjaGVuIiBkYXRhLWRhdGVpPSInICsgZXNjYXBlQXR0 cihiLmRhdGVpbmFtZSkgKyAnIiB0aXRsZT0iQmFja3VwIGVuZGfDvGx0aWcgbMO2c2NoZW4iIHN0 eWxlPSJ3aGl0ZS1zcGFjZTpub3dyYXAiPkzDtnNjaGVuPC9idXR0b24+JyArCiAgICAgICAgICAg ICc8L2Rpdj48L3RkPicgKwogICAgICAgICc8L3RyPic7CiAgICB9KTsKICAgIHRib2R5LmlubmVy SFRNTCA9IGh0bWw7Cn0KCi8vID09PT09IEFkbWluOiBEaWVuc3RncnVwcGVuID09PT09CgovLyBa YWVobHQgd2llIHZpZWxlIGFrdGl2ZSBQZXJzb25lbiBlaW5lciBHcnVwcGUgenVnZW9yZG5ldCBz aW5kLgovLyBXaXJkIGZ1ZXIgZGllIExvZXNjaC1TcGVycmUgdW5kIGRpZSBTcGFsdGUgIlBlcnNv bmVuIiBnZW51dHp0LgpmdW5jdGlvbiBncnVwcGVuUGVyc29uZW5aYWVobGVuKCkgewogICAgdmFy IG1hcCA9IHt9OwogICAgKFoucGxhbnVuZy5wZXJzb25lbiB8fCBbXSkuZm9yRWFjaChmdW5jdGlv bihwKSB7CiAgICAgICAgaWYgKCFwLmFrdGl2IHx8ICFwLmdydXBwZSkgcmV0dXJuOwogICAgICAg IG1hcFtwLmdydXBwZV0gPSAobWFwW3AuZ3J1cHBlXSB8fCAwKSArIDE7CiAgICB9KTsKICAgIHJl dHVybiBtYXA7Cn0KCmZ1bmN0aW9uIGdydXBwZW5UYWJlbGxlUmVuZGVybigpIHsKICAgIHZhciB0 Ym9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdncnVwcGVuLXRib2R5Jyk7CiAgICBpZiAo IXRib2R5KSByZXR1cm47CiAgICB2YXIgemFlaGwgPSBncnVwcGVuUGVyc29uZW5aYWVobGVuKCk7 CiAgICBpZiAoIShaLmFkbWluLmdydXBwZW4gfHwgW10pLmxlbmd0aCkgewogICAgICAgIHRib2R5 LmlubmVySFRNTCA9IGFkbWluRW1wdHlaZWlsZSg3LCAnXHV7MUY0NjV9JywKICAgICAgICAgICAg J05vY2gga2VpbmUgRGllbnN0Z3J1cHBlbiBhbmdlbGVndCcsCiAgICAgICAgICAgICdEaWVuc3Rn cnVwcGVuIHNpbmQgZGllIG9yZ2FuaXNhdG9yaXNjaGUgS2xhbW1lciBmdWVyIFBlcnNvbmVuICh6 LkIuIEEvQi9DLCBXTCwgVkQpLiBLbGlja2Ugb2JlbiBhdWYg4oCeTmV1ZSBEaWVuc3RncnVwcGUi LCB1bSB6dSBiZWdpbm5lbi4nKTsKICAgICAgICByZXR1cm47CiAgICB9CiAgICB2YXIgaHRtbCA9 ICcnOwogICAgdmFyIGxldHp0ZXJJZHggPSAoWi5hZG1pbi5ncnVwcGVuIHx8IFtdKS5sZW5ndGgg LSAxOwogICAgKFouYWRtaW4uZ3J1cHBlbiB8fCBbXSkuZm9yRWFjaChmdW5jdGlvbihnciwgaWR4 KSB7CiAgICAgICAgdmFyIGFuemFobCA9IHphZWhsW2dyLm5hbWVdIHx8IDA7CiAgICAgICAgdmFy IGhnID0gZ3IuaGludGVyZ3J1bmQgfHwgJyM4ODgnOwogICAgICAgIHZhciBzZiA9IGdyLnNjaHJp ZnQgfHwgJyNmZmZmZmYnOwogICAgICAgIC8vIEJhY2t3YXJkcy1Db21wYXQ6IGZlaGxlbmRlcyBp blBsYW51bmctRmVsZCA9IHNpY2h0YmFyIChBbHRkYXRlbgogICAgICAgIC8vIGhhYmVuIGRhcyBG ZWxkIG5pY2h0OyBudXIgZXhwbGl6aXQgZmFsc2UgYmxlbmRldCBhdXMpLgogICAgICAgIHZhciBp blBsYW51bmcgPSBnci5pblBsYW51bmcgIT09IGZhbHNlOwogICAgICAgIC8vIEJhY2t3YXJkcy1D b21wYXQgZnVlciBkYXJmQW5zcHJlY2hwYXJ0bmVyOiBmZWhsZW5kZXMgRmVsZCA9IGVybGF1YnQu CiAgICAgICAgLy8gU3VwZXJVc2VyIGthbm4gcHJvIEdydXBwZSBzcGVycmVuIOKAlCBkYW5uIGZh bGxlbiBQZXJzb25lbiBkZXIgR3J1cHBlCiAgICAgICAgLy8gYXVzIGRlbSBBbnNwcmVjaHBhcnRu ZXItUG9vbCwgYmVzdGVoZW5kZSBNYXJraWVydW5nZW4gc2luZCB1bndpcmtzYW0uCiAgICAgICAg dmFyIGRhcmZBcCA9IGdyLmRhcmZBbnNwcmVjaHBhcnRuZXIgIT09IGZhbHNlOwogICAgICAgIGh0 bWwgKz0gJzx0ciBkYXRhLWlkeD0iJyArIGlkeCArICciJyArIChpblBsYW51bmcgPyAnJyA6ICcg Y2xhc3M9ImdydXBwZS16ZWlsZS12ZXJzdGVja3QiJykgKyAnPicgKwogICAgICAgICAgICAnPHRk PjxpbnB1dCB0eXBlPSJ0ZXh0IiBjbGFzcz0iZ3J1cHBlLWt1ZXJ6ZWwtaW5wdXQiIGRhdGEtaWR4 PSInICsgaWR4ICsgJyIgZGF0YS1hbHQ9IicgKyBlc2NhcGVBdHRyKGdyLm5hbWUpICsgJyIgdmFs dWU9IicgKyBlc2NhcGVBdHRyKGdyLm5hbWUpICsgJyIgc3R5bGU9IndpZHRoOjEwMCU7Zm9udC1m YW1pbHk6bW9ub3NwYWNlO2ZvbnQtd2VpZ2h0OjcwMDt0ZXh0LWFsaWduOmNlbnRlciIgbWF4bGVu Z3RoPSI0IiB0aXRsZT0iS8O8cnplbCDDpG5kZXJuIOKAlCBhbGxlIFBlcnNvbmVuIGRpZXNlciBH cnVwcGUgd2VyZGVuIGF1dG9tYXRpc2NoIG1pZ3JpZXJ0Ij48L3RkPicgKwogICAgICAgICAgICAn PHRkPjxpbnB1dCB0eXBlPSJ0ZXh0IiBjbGFzcz0iZ3J1cHBlLWJlei1pbnB1dCIgZGF0YS1pZHg9 IicgKyBpZHggKyAnIiB2YWx1ZT0iJyArIGVzY2FwZUF0dHIoZ3IuYmV6ZWljaG51bmcgfHwgJycp ICsgJyIgc3R5bGU9IndpZHRoOjEwMCUiIHBsYWNlaG9sZGVyPSJ6LkIuIFdhY2hsZWl0dW5nIj48 L3RkPicgKwogICAgICAgICAgICAnPHRkPjxpbnB1dCB0eXBlPSJjb2xvciIgY2xhc3M9ImdydXBw ZS1oZy1pbnB1dCIgZGF0YS1pZHg9IicgKyBpZHggKyAnIiB2YWx1ZT0iJyArIGVzY2FwZUF0dHIo aGcpICsgJyIgc3R5bGU9IndpZHRoOjUwcHg7aGVpZ2h0OjI4cHg7cGFkZGluZzoycHg7Y3Vyc29y OnBvaW50ZXIiPjwvdGQ+JyArCiAgICAgICAgICAgICc8dGQ+PGlucHV0IHR5cGU9ImNvbG9yIiBj bGFzcz0iZ3J1cHBlLXNmLWlucHV0IiBkYXRhLWlkeD0iJyArIGlkeCArICciIHZhbHVlPSInICsg ZXNjYXBlQXR0cihzZikgKyAnIiBzdHlsZT0id2lkdGg6NTBweDtoZWlnaHQ6MjhweDtwYWRkaW5n OjJweDtjdXJzb3I6cG9pbnRlciI+PC90ZD4nICsKICAgICAgICAgICAgJzx0ZCBzdHlsZT0idGV4 dC1hbGlnbjpjZW50ZXIiPicgKwogICAgICAgICAgICAgICAgJzxzcGFuIGNsYXNzPSJncnVwcGVu LWJhZGdlIGdydXBwZS12b3JzY2hhdSIgZGF0YS1pZHg9IicgKyBpZHggKyAnIiBzdHlsZT0iYmFj a2dyb3VuZDonICsgZXNjYXBlQXR0cihoZykgKyAnO2NvbG9yOicgKyBlc2NhcGVBdHRyKHNmKSAr ICciPicgKyBlc2NhcGVIVE1MKGdyLm5hbWUpICsgJzwvc3Bhbj4nICsKICAgICAgICAgICAgJzwv dGQ+JyArCiAgICAgICAgICAgICc8dGQgc3R5bGU9InRleHQtYWxpZ246Y2VudGVyO2ZvbnQtc2l6 ZToxMnB4O2NvbG9yOnZhcigtLXRleHQtbXV0ZWQpIiB0aXRsZT0iQW56YWhsIGFrdGl2ZSBQZXJz b25lbiBpbiBkaWVzZXIgR3J1cHBlIj4nICsgYW56YWhsICsgJzwvdGQ+JyArCiAgICAgICAgICAg ICc8dGQgc3R5bGU9InRleHQtYWxpZ246Y2VudGVyIj4nICsKICAgICAgICAgICAgICAgICc8bGFi ZWwgY2xhc3M9ImdydXBwZS1pbnBsYW51bmctbGFiZWwiIHRpdGxlPSJXZW5uIGF1c2dlc2NoYWx0 ZXQsIHdlcmRlbiBQZXJzb25lbiBkaWVzZXIgR3J1cHBlIG5pY2h0IGluIGRlciBQbGFudW5nc2Fu c2ljaHQgLyBpbSBXb2NoZW5wbGFuIC8gaW0gUGVycy4gUGxhbiBhbmdlemVpZ3Qg4oCUIGJsZWli ZW4gYWJlciBpbiBkZXIgUGVyc29uYWx2ZXJ3YWx0dW5nIHBmbGVnYmFyLiI+JyArCiAgICAgICAg ICAgICAgICAgICAgJzxpbnB1dCB0eXBlPSJjaGVja2JveCIgY2xhc3M9ImdydXBwZS1pbnBsYW51 bmctaW5wdXQiIGRhdGEtaWR4PSInICsgaWR4ICsgJyInICsgKGluUGxhbnVuZyA/ICcgY2hlY2tl ZCcgOiAnJykgKyAnPicgKwogICAgICAgICAgICAgICAgJzwvbGFiZWw+JyArCiAgICAgICAgICAg ICc8L3RkPicgKwogICAgICAgICAgICAnPHRkIHN0eWxlPSJ0ZXh0LWFsaWduOmNlbnRlciI+JyAr CiAgICAgICAgICAgICAgICAnPGxhYmVsIGNsYXNzPSJncnVwcGUtaW5wbGFudW5nLWxhYmVsIiB0 aXRsZT0iV2VubiBha3RpdmllcnQsIGTDvHJmZW4gUGVyc29uZW4gZGllc2VyIEdydXBwZSBpbSBQ ZXJzb25hbC1UYWIgYWxzIEFuc3ByZWNocGFydG5lciBtYXJraWVydCB3ZXJkZW4gKHp1c8OkdHps aWNoIHp1ciBGdW5rdGlvbnMtQmVkaW5ndW5nKS4gTWFya2llcnRlIFBlcnNvbmVuIGVyc2NoZWlu ZW4gbWl0IE1haWwtQnV0dG9uIGltIEluZm8tRmVuc3Rlci4iPicgKwogICAgICAgICAgICAgICAg ICAgICc8aW5wdXQgdHlwZT0iY2hlY2tib3giIGNsYXNzPSJncnVwcGUtZGFyZmFwLWlucHV0IiBk YXRhLWlkeD0iJyArIGlkeCArICciJyArIChkYXJmQXAgPyAnIGNoZWNrZWQnIDogJycpICsgJz4n ICsKICAgICAgICAgICAgICAgICc8L2xhYmVsPicgKwogICAgICAgICAgICAnPC90ZD4nICsKICAg ICAgICAgICAgJzx0ZCBzdHlsZT0idGV4dC1hbGlnbjpjZW50ZXI7d2hpdGUtc3BhY2U6bm93cmFw Ij4nICsKICAgICAgICAgICAgICAgICc8YnV0dG9uIGNsYXNzPSJidG4gYnRuLXNlayBidG4ta2xl aW4iIGRhdGEtYWt0aW9uPSJncnVwcGUtcmF1ZiIgZGF0YS1pZHg9IicgKyBpZHggKyAnIiB0aXRs ZT0iTmFjaCBvYmVuIHZlcnNjaGllYmVuIicgKyAoaWR4ID09PSAwID8gJyBkaXNhYmxlZCcgOiAn JykgKyAnPiYjOTY1MDs8L2J1dHRvbj4nICsKICAgICAgICAgICAgICAgICcgJyArCiAgICAgICAg ICAgICAgICAnPGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1zZWsgYnRuLWtsZWluIiBkYXRhLWFrdGlv bj0iZ3J1cHBlLXJ1bnRlciIgZGF0YS1pZHg9IicgKyBpZHggKyAnIiB0aXRsZT0iTmFjaCB1bnRl biB2ZXJzY2hpZWJlbiInICsgKGlkeCA9PT0gbGV0enRlcklkeCA/ICcgZGlzYWJsZWQnIDogJycp ICsgJz4mIzk2NjA7PC9idXR0b24+JyArCiAgICAgICAgICAgICc8L3RkPicgKwogICAgICAgICAg ICAnPHRkIHN0eWxlPSJ0ZXh0LWFsaWduOmNlbnRlciI+JyArCiAgICAgICAgICAgICAgICAnPGJ1 dHRvbiBjbGFzcz0iYnRuIGJ0bi1nZWZhaHIgYnRuLWtsZWluIGJ0bi1sb2VzY2hlbiIgZGF0YS1h a3Rpb249ImdydXBwZS1sb2VzY2hlbiIgZGF0YS1pZHg9IicgKyBpZHggKyAnIiB0aXRsZT0iR3J1 cHBlIGzDtnNjaGVuIChudXIgd2VubiBrZWluZSBQZXJzb25lbiBtZWhyIHp1Z2VvcmRuZXQpIicg KyAoYW56YWhsID4gMCA/ICcgZGlzYWJsZWQnIDogJycpICsgJz5Mw7ZzY2hlbjwvYnV0dG9uPicg KwogICAgICAgICAgICAnPC90ZD4nICsKICAgICAgICAnPC90cj4nOwogICAgfSk7CiAgICB0Ym9k eS5pbm5lckhUTUwgPSBodG1sOwoKICAgIC8vIExpdmUtVm9yc2NoYXU6IEZhcmJlbi9Lw7xyemVs LcOEbmRlcnVuZ2VuIHNvZm9ydCBpbSBCYWRnZSBzcGllZ2VsbgogICAgZnVuY3Rpb24gdm9yc2No YXVVcGRhdGUoaWR4KSB7CiAgICAgICAgdmFyIHJvdyA9IHRib2R5LnF1ZXJ5U2VsZWN0b3IoJ3Ry W2RhdGEtaWR4PSInICsgaWR4ICsgJyJdJyk7CiAgICAgICAgaWYgKCFyb3cpIHJldHVybjsKICAg ICAgICB2YXIgayA9IHJvdy5xdWVyeVNlbGVjdG9yKCcuZ3J1cHBlLWt1ZXJ6ZWwtaW5wdXQnKS52 YWx1ZSB8fCAnJzsKICAgICAgICB2YXIgaCA9IHJvdy5xdWVyeVNlbGVjdG9yKCcuZ3J1cHBlLWhn LWlucHV0JykudmFsdWU7CiAgICAgICAgdmFyIHMgPSByb3cucXVlcnlTZWxlY3RvcignLmdydXBw ZS1zZi1pbnB1dCcpLnZhbHVlOwogICAgICAgIHZhciB2ID0gcm93LnF1ZXJ5U2VsZWN0b3IoJy5n cnVwcGUtdm9yc2NoYXUnKTsKICAgICAgICBpZiAodikgeyB2LnN0eWxlLmJhY2tncm91bmQgPSBo OyB2LnN0eWxlLmNvbG9yID0gczsgdi50ZXh0Q29udGVudCA9IGs7IH0KICAgIH0KICAgIHRib2R5 LnF1ZXJ5U2VsZWN0b3JBbGwoJy5ncnVwcGUta3VlcnplbC1pbnB1dCwgLmdydXBwZS1oZy1pbnB1 dCwgLmdydXBwZS1zZi1pbnB1dCcpLmZvckVhY2goZnVuY3Rpb24oaW5wKSB7CiAgICAgICAgaW5w LmFkZEV2ZW50TGlzdGVuZXIoJ2lucHV0JywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHZvcnNj aGF1VXBkYXRlKGlucC5nZXRBdHRyaWJ1dGUoJ2RhdGEtaWR4JykpOwogICAgICAgIH0pOwogICAg fSk7Cn0KCi8vID09PT09IEFkbWluOiBHbG9iYWxlIEVpbnN0ZWxsdW5nZW4gPT09PT0KCi8vID09 PT09IEFkbWluOiBJbmZvcm1hdGlvbiAmIEhpbGZlID09PT09CgovLyBEZWZhdWx0LUltcHJlc3N1 bSAoSFRNTCkuIFdpcmQgaW0gUlRFLUVkaXRvciBhbmdlemVpZ3QsIHdlbm4KLy8gYWRtaW4uanNv bi5pbXByZXNzdW0gbGVlciBpc3Qg4oCUIGRlciBVc2VyIGthbm4gZnJlaSB1ZWJlcnNjaHJlaWJl bgovLyB1bmQgbWl0ICJTcGVpY2hlcm4iIHBlcnNpc3RpZXJlbi4gVGV4dGUgc2luZCBiZXd1c3N0 IG5ldXRyYWwKLy8gZm9ybXVsaWVydCB1bmQgYXVmIGRpZSBWSTMtREdMLVJlYWxpdGFldCB6dWdl c2Nobml0dGVuLgovLyA9PT09PSBTdXBwb3J0LU1haWwtVm9ybGFnZSAoU2VrdGlvbiBpbSBFLU1h aWwtVm9ybGFnZW4tVGFiKSA9PT09PQovLwovLyBOdXIgZnVlciBQaGlsaXBwIFJvZXNnZW4gc2lj aHRiYXIgKE5XLUtlbm51bmcgZW50aGFlbHQgTlcwNTM2MDkpLgovLyBFZGl0aWVydCB3aXJkIGRh cyByYXcgUGxhaW4tVGV4dC1UZW1wbGF0ZSBpbmtsLiBQbGF0emhhbHRlcm47IGFwcC5qcwovLyBz dXBwb3J0TWFpbEJvZHlCYXVlbigpIG1hY2h0IGRpZSBTdWJzdGl0dXRpb24gYmVpbSBCYXVlbiBk ZXIgbWFpbHRvLVVSTC4KCmZ1bmN0aW9uIGlzdFBoaWxpcHBSb2VzZ2VuKCkgewogICAgdmFyIGIg PSAoWi5iZW51dHplciB8fCAnJykudG9Mb3dlckNhc2UoKTsKICAgIHJldHVybiBiLmluZGV4T2Yo J253MDUzNjA5JykgPj0gMDsKfQoKZXhwb3J0IGZ1bmN0aW9uIHN1cHBvcnRNYWlsU2VrdGlvblJl bmRlcm4oKSB7CiAgICB2YXIgc2VrID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FkbWluLXNl a3Rpb24tc3VwcG9ydG1haWwnKTsKICAgIGlmICghc2VrKSByZXR1cm47CiAgICBpZiAoIWlzdFBo aWxpcHBSb2VzZ2VuKCkpIHsKICAgICAgICBzZWsuY2xhc3NMaXN0LmFkZCgndmVyc3RlY2t0Jyk7 CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgc2VrLmNsYXNzTGlzdC5yZW1vdmUoJ3ZlcnN0ZWNr dCcpOwogICAgdmFyIHRhID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3N1cHBvcnRtYWlsLXRl eHQnKTsKICAgIGlmICh0YSkgdGEudmFsdWUgPSAoWi5hZG1pbiAmJiBaLmFkbWluLnN1cHBvcnRN YWlsVGV4dCkgfHwgJyc7CiAgICB2YXIgaGlud2VpcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk KCdzdXBwb3J0bWFpbC1kaXJ0eS1oaW53ZWlzJyk7CiAgICBpZiAoaGlud2VpcykgaGlud2Vpcy5z dHlsZS5kaXNwbGF5ID0gJ25vbmUnOwp9CgovLyBEZWZhdWx0LVZvcmxhZ2UgZnVlciBkaWUgU3Vw cG9ydC1NYWlsIGltIEltcHJlc3N1bXMtTW9kYWwuIFBsYXR6aGFsdGVyCi8vIGluIHtnZXNjaHdl aWZ0ZW4ga2xhbW1lcm59IHdlcmRlbiB2b20gQ2xpZW50IGJlaW0gbWFpbHRvOi1CYXUgZHVyY2gK Ly8gTGl2ZS1XZXJ0ZSBlcnNldHp0IOKAlCBzaWVoZSBhcHAuanMgc3VwcG9ydE1haWxCb2R5QmF1 ZW4uIEVkaXRpZXJiYXIgbnVyCi8vIGZ1ZXIgUGhpbGlwcCBSb2VzZ2VuIChOVzA1MzYwOSkgaW0g QWRtaW4tVGFiIEUtTWFpbC1Wb3JsYWdlbi4KLy8KLy8gVmVyZnVlZ2JhcmUgUGxhdHpoYWx0ZXI6 Ci8vICAge253X2tlbm51bmd9ICAgICAgICDigJQgWi5iZW51dHplciAoei5CLiBQT0xJWkVJXE5X MDU1ODAxKQovLyAgIHtha3R1ZWxsZV9hbnNpY2h0fSAg4oCUIGFrdGl2ZXIgVGFiIChwbGFudW5n L3dvY2hlbnBsYW4vcGVyc3BsYW4vLi4uKQovLyAgIHtkYXR1bX0gICAgICAgICAgICAg4oCUIGhl dXRlLCBGb3JtYXQgZGQubW0uampqagovLyAgIHt1aHJ6ZWl0fSAgICAgICAgICAg4oCUIGpldHp0 LCBGb3JtYXQgaGg6bW0KLy8gICB7YXVmbG9lc3VuZ30gICAgICAgIOKAlCBWaWV3cG9ydCwgei5C LiAxOTIweDEwODAKLy8gICB7YXBwX2phaHJ9ICAgICAgICAgIOKAlCBaLmFkbWluLmphaHIKLy8g ICB7YnJvd3Nlcn0gICAgICAgICAgIOKAlCBuYXZpZ2F0b3IudXNlckFnZW50IChtYXggMTIwIFpl aWNoZW4pCmV4cG9ydCB2YXIgU1VQUE9SVF9NQUlMX0RFRkFVTFQgPQogICAgJ0hhbGxvIFBoaWxp cHAsXG5cbicgKwogICAgJ1toaWVyIGJpdHRlIGt1cnogZGFzIEFubGllZ2VuIGluIDHigJMyIFPD pHR6ZW4gYmVzY2hyZWliZW5dXG5cblxuJyArCiAgICAn4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQXG4nICsK ICAgICcxKSBXQVMgSVNUIFBBU1NJRVJUIC8gV0FTIFfDnE5TQ0hTVCBEVSBESVI/XG4nICsKICAg ICfilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilIDilIDilIBcbicgKwogICAgJ1tEZXRhaWxsaWVydGUgQmVzY2hyZWlidW5n OiBCdWctQmVyaWNodCBPREVSIFZlcmJlc3NlcnVuZ3MtXG4nICsKICAgICcgdm9yc2NobGFnLiBC aXR0ZSBrb25rcmV0IOKAlCAiZ2VodCBuaWNodCIgaXN0IHp1IHdlbmlnLl1cblxuXG4nICsKICAg ICfilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDi lZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDi lZDilZDilZDilZDilZDilZDilZBcbicgKwogICAgJzIpIFdPIElNIFBST0dSQU1NXG4nICsKICAg ICfilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilIDilIDilIBcbicgKwogICAgJ1RhYiAvIEFuc2ljaHQ6IFtQbGFudW5nIHwg V29jaGVucGxhbiB8IFBlcnMuIFBsYW4gfCBQcsO8ZnVuZyB8XG4nICsKICAgICcgICAgICAgICAg ICAgICAgU3RhdGlzdGlrIHwgTG9nYnVjaCB8IEFkbWluaXN0cmF0aW9uXVxuJyArCiAgICAnR2Vu YXVlcmUgU3RlbGxlOiBbei4gQi4gQWRtaW5pc3RyYXRpb24g4oaSIFBlcnNvbmFsdmVyd2FsdHVu ZyDihpJcbicgKwogICAgJyAgICAgICAgICAgICAgICAgIFBlcnNvbiBiZWFyYmVpdGVuIOKGkiBH ZWJ1cnRzdGFnLU1vZGFsXVxuXG5cbicgKwogICAgJ+KVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKV kOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKV kOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkFxuJyArCiAg ICAnMykgV0lFIEtBTk4gSUNIIERBUyBSRVBST0RVWklFUkVOP1xuJyArCiAgICAn4pSA4pSA4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pSA4pSA4pSAXG4nICsKICAgICdTY2hyaXR0IDE6IFsuLi5dXG4nICsKICAgICdTY2hyaXR0IDI6 IFsuLi5dXG4nICsKICAgICdTY2hyaXR0IDM6IFsuLi5dXG4nICsKICAgICfihpIgV2FzIHBhc3Np ZXJ0IHRhdHPDpGNobGljaDogWy4uLl1cbicgKwogICAgJ+KGkiBXYXMgaMOkdHRlIHN0YXR0ZGVz c2VuIHBhc3NpZXJlbiBzb2xsZW46IFsuLi5dXG5cblxuJyArCiAgICAn4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQXG4nICsKICAgICc0KSBXRVIgLyBXQVMgSVNUIEJFVFJPRkZFTlxuJyArCiAgICAn4pSA4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pSA4pSA4pSA4pSAXG4nICsKICAgICdCZXRyb2ZmZW5lIFBlcnNvbiAvIERhdGVuc2F0eiAoZmFs bHMgcmVsZXZhbnQpOiBbLi4uXVxuJyArCiAgICAnVHJpdHQgZXMgbnVyIGJlaSBtaXIgYXVmIOKA lCBvZGVyIGF1Y2ggYmVpIEtvbGxlZzppbm5lbj8gWy4uLl1cbicgKwogICAgJ1JlcHJvZHV6aWVy YmFyIG5hY2ggQnJvd3Nlci1SZWZyZXNoIC8gTmV1c3RhcnQ/IFsuLi5dXG5cblxuJyArCiAgICAn 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQXG4nICsKICAgICc1KSBXSUUgRFJJTkdFTkQgSVNUIERBUz9cbicg KwogICAgJ+KUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuJyArCiAgICAnWyBdIEJsb2NraWVydCBtZWluZSBB cmJlaXQga29tcGxldHRcbicgKwogICAgJ1sgXSBTdMO2cnQsIGljaCBoYWJlIGFiZXIgZWluZW4g V29ya2Fyb3VuZFxuJyArCiAgICAnWyBdIFZlcmJlc3NlcnVuZ3N2b3JzY2hsYWcg4oCUIGtlaW4g YWt1dGVyIEJlZGFyZlxuXG5cbicgKwogICAgJ+KVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKV kOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKV kOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkFxuJyArCiAgICAn NikgU0NSRUVOU0hPVFMgLyBBTkjDhE5HRSDigJQgQklUVEUgQkVJTEVHRU4hXG4nICsKICAgICfi lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilIDilIBcbicgKwogICAgJ01pbmRlc3RlbnMgMSBTY3JlZW5zaG90IGRlciBy ZWxldmFudGVuIFN0ZWxsZS4gU28gZ2VodHM6XG4nICsKICAgICcgIOKAoiBTdHJnICsgRHJ1Y2sg ICAgIOKGkiBnYW56ZXIgQmlsZHNjaGlybSBpbiBkaWUgWndpc2NoZW5hYmxhZ2VcbicgKwogICAg JyAg4oCiIEFsdCArIERydWNrICAgICAg4oaSIG51ciBkYXMgYWt0aXZlIEZlbnN0ZXJcbicgKwog ICAgJyAg4oCiIFBhaW50IMO2ZmZuZW4gICAgIOKGkiBTdHJnICsgViBlaW5mw7xnZW4g4oaSIFNw ZWljaGVybiBhbHMgUE5HXG4nICsKICAgICcgIOKAoiBEYXRlaShlbikgYW4gZGllc2UgTWFpbCBh bmjDpG5nZW5cbicgKwogICAgJ0JpdHRlIGRlbiBHQU5aRU4gQnJvd3Nlci1UYWIgZWluZmFuZ2Vu IChuaWNodCBudXIgZGFzIE1vZGFsKSxcbicgKwogICAgJ2RhbWl0IGRlciBLb250ZXh0IChUYWIs IERhdHVtLCBhbmRlcmUgSGlud2Vpc2UpIHNpY2h0YmFyIGlzdC5cblxuXG4nICsKICAgICdWaWVs ZSBHcsO8w59lXG4nICsKICAgICdbVm9yLSB1bmQgTmFjaG5hbWUsIERpZW5zdGdyYWRdXG4nICsK ICAgICdbRGllbnN0c3RlbGxlIC8gSGF1c2R1cmNod2FobF1cblxuXG4nICsKICAgICfilZDilZDi lZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDi lZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDi lZDilZDilZDilZBcbicgKwogICAgJ1RFQ0hOSVNDSEUgSU5GTyDigJQgYml0dGUgdW52ZXLDpG5k ZXJ0IGxhc3NlbiAodm9tIFN5c3RlbSBlcmfDpG56dClcbicgKwogICAgJ+KUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgFxuJyArCiAgICAnTlctS2VubnVuZzogICAgICAge253X2tlbm51bmd9XG4nICsKICAgICdB a3R1ZWxsZSBBbnNpY2h0OiB7YWt0dWVsbGVfYW5zaWNodH1cbicgKwogICAgJ0RhdHVtIC8gVWhy emVpdDogIHtkYXR1bX0ge3VocnplaXR9XG4nICsKICAgICdBdWZsw7ZzdW5nOiAgICAgICAge2F1 ZmxvZXN1bmd9XG4nICsKICAgICdBcHAtSmFocjogICAgICAgICB7YXBwX2phaHJ9XG4nICsKICAg ICdCcm93c2VyOiAgICAgICAgICB7YnJvd3Nlcn1cbicgKwogICAgJ+KVkOKVkOKVkOKVkOKVkOKV kOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKV kOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKV kFxuJzsKCi8vIFZvcnN0cnVrdHVyaWVydGUgVm9ybGFnZSBmdWVyIGRlbiBIZWFkZXItQnV0dG9u IOKAnkJ1Z1JlcG9ydCIg4oCUIHdpZSBkaWUKLy8gU3VwcG9ydC1Wb3JsYWdlLCBhYmVyIHp1Z2Vz cGl0enQgYXVmIGVya2FubnRlIEJVR1MgLyBGZWhsZnVua3Rpb25lbiAoa2VpbmUKLy8gVmVyYmVz c2VydW5nc3ZvcnNjaGxhZWdlKS4gR2xlaWNoZSBQbGF0emhhbHRlciB3aWUgU1VQUE9SVF9NQUlM X0RFRkFVTFQ7Ci8vIGFwcC5qcyBidWdSZXBvcnRNYWlsQm9keUJhdWVuKCkgZXJzZXR6dCBzaWUg YmVpbSBtYWlsdG86LUJhdS4KZXhwb3J0IHZhciBCVUdSRVBPUlRfTUFJTF9ERUZBVUxUID0KICAg ICdIYWxsbyBQaGlsaXBwLFxuXG4nICsKICAgICdpY2ggbWVsZGUgZWluZW4gQnVnIC8gZWluIFBy b2JsZW0gaW4gZGVyIFZJMyBER0wtUGxhbnVuZy5cblxuXG4nICsKICAgICfilZDilZDilZDilZDi lZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDi lZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDi lZDilZBcbicgKwogICAgJzEpIFdBUyBHRUhUIE5JQ0hUPyAoa3VyeiBpbiAx4oCTMiBTw6R0emVu KVxuJyArCiAgICAn4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG4nICsKICAgICdbV2FzIGZ1bmt0aW9uaWVy dCBuaWNodCB3aWUgZXJ3YXJ0ZXQ/IEJpdHRlIGtvbmtyZXQg4oCUXG4nICsKICAgICcgImdlaHQg bmljaHQiIGlzdCB6dSB3ZW5pZy5dXG5cblxuJyArCiAgICAn4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQXG4n ICsKICAgICcyKSBXTyBJTSBQUk9HUkFNTSBUUklUVCBERVIgRkVITEVSIEFVRj9cbicgKwogICAg J+KUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgFxuJyArCiAgICAnVGFiIC8gQW5zaWNodDogW1BsYW51bmcgfCBX b2NoZW5wbGFuIHwgUGVycy4gUGxhbiB8IFByw7xmdW5nIHxcbicgKwogICAgJyAgICAgICAgICAg ICAgICBTdGF0aXN0aWsgfCBMb2didWNoIHwgQWRtaW5pc3RyYXRpb25dXG4nICsKICAgICdHZW5h dWVyZSBTdGVsbGU6IFt6LiBCLiBBZG1pbmlzdHJhdGlvbiDihpIgUGVyc29uYWx2ZXJ3YWx0dW5n IOKGklxuJyArCiAgICAnICAgICAgICAgICAgICAgICAgUGVyc29uIGJlYXJiZWl0ZW4g4oaSIEdl YnVydHN0YWctTW9kYWxdXG5cblxuJyArCiAgICAn4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQXG4nICsKICAg ICczKSBTQ0hSSVRURSBaVU0gUkVQUk9EVVpJRVJFTlxuJyArCiAgICAn4pSA4pSA4pSA4pSA4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pSAXG4nICsKICAgICdTY2hyaXR0IDE6IFsuLi5dXG4nICsKICAgICdTY2hyaXR0IDI6IFsuLi5d XG4nICsKICAgICdTY2hyaXR0IDM6IFsuLi5dXG4nICsKICAgICfihpIgV2FzIHBhc3NpZXJ0IHRh dHPDpGNobGljaCAoZGVyIEZlaGxlcik6IFsuLi5dXG4nICsKICAgICfihpIgV2FzIGjDpHR0ZSBz dGF0dGRlc3NlbiBwYXNzaWVyZW4gc29sbGVuOiBbLi4uXVxuJyArCiAgICAn4oaSIEthbSBlaW5l IEZlaGxlcm1lbGR1bmc/IFdlbm4gamEsIFdvcnRsYXV0OiBbLi4uXVxuXG5cbicgKwogICAgJ+KV kOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKV kOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKV kOKVkOKVkOKVkOKVkOKVkFxuJyArCiAgICAnNCkgV0VSIC8gV0FTIElTVCBCRVRST0ZGRU5cbicg KwogICAgJ+KUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuJyArCiAgICAnQmV0cm9mZmVuZSBQZXJzb24gLyBE YXRlbnNhdHogKGZhbGxzIHJlbGV2YW50KTogWy4uLl1cbicgKwogICAgJ1RyaXR0IGVzIG51ciBi ZWkgbWlyIGF1ZiDigJQgb2RlciBhdWNoIGJlaSBLb2xsZWc6aW5uZW4/IFsuLi5dXG4nICsKICAg ICdSZXByb2R1emllcmJhciBuYWNoIEJyb3dzZXItUmVmcmVzaCAvIE5ldXN0YXJ0PyBbLi4uXVxu XG5cbicgKwogICAgJ+KVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKV kOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKV kOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkFxuJyArCiAgICAnNSkgV0lFIFNUQVJLIEJM T0NLSUVSVCBERVIgQlVHP1xuJyArCiAgICAn4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG4nICsKICAgICdb IF0gQmxvY2tpZXJ0IG1laW5lIEFyYmVpdCBrb21wbGV0dFxuJyArCiAgICAnWyBdIFN0w7ZydCwg aWNoIGhhYmUgYWJlciBlaW5lbiBXb3JrYXJvdW5kXG4nICsKICAgICdbIF0gS2xlaW5lciBTY2jD tm5oZWl0c2ZlaGxlclxuXG5cbicgKwogICAgJ+KVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKV kOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKV kOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkFxuJyArCiAgICAn NikgU0NSRUVOU0hPVFMg4oCUIEJJVFRFIFVOQkVESU5HVCBCRUlMRUdFTiFcbicgKwogICAgJ+KU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgFxuJyArCiAgICAnTWluZGVzdGVucyAxIFNjcmVlbnNob3QgZGVyIEZl aGxlcnN0ZWxsZS4gU28gZ2VodHM6XG4nICsKICAgICcgIOKAoiBTdHJnICsgRHJ1Y2sgICAgIOKG kiBnYW56ZXIgQmlsZHNjaGlybSBpbiBkaWUgWndpc2NoZW5hYmxhZ2VcbicgKwogICAgJyAg4oCi IEFsdCArIERydWNrICAgICAg4oaSIG51ciBkYXMgYWt0aXZlIEZlbnN0ZXJcbicgKwogICAgJyAg 4oCiIFBhaW50IMO2ZmZuZW4gICAgIOKGkiBTdHJnICsgViBlaW5mw7xnZW4g4oaSIFNwZWljaGVy biBhbHMgUE5HXG4nICsKICAgICcgIOKAoiBEYXRlaShlbikgYW4gZGllc2UgTWFpbCBhbmjDpG5n ZW5cbicgKwogICAgJ0JpdHRlIGRlbiBHQU5aRU4gQnJvd3Nlci1UYWIgZWluZmFuZ2VuIChuaWNo dCBudXIgZGFzIE1vZGFsKSxcbicgKwogICAgJ2RhbWl0IGRlciBLb250ZXh0IChUYWIsIERhdHVt LCBhbmRlcmUgSGlud2Vpc2UpIHNpY2h0YmFyIGlzdC5cblxuXG4nICsKICAgICdWaWVsZSBHcsO8 w59lXG4nICsKICAgICdbVm9yLSB1bmQgTmFjaG5hbWUsIERpZW5zdGdyYWRdXG4nICsKICAgICdb RGllbnN0c3RlbGxlIC8gSGF1c2R1cmNod2FobF1cblxuXG4nICsKICAgICfilZDilZDilZDilZDi lZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDi lZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDi lZDilZBcbicgKwogICAgJ1RFQ0hOSVNDSEUgSU5GTyDigJQgYml0dGUgdW52ZXLDpG5kZXJ0IGxh c3NlbiAodm9tIFN5c3RlbSBlcmfDpG56dClcbicgKwogICAgJ+KUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxu JyArCiAgICAnTlctS2VubnVuZzogICAgICAge253X2tlbm51bmd9XG4nICsKICAgICdBa3R1ZWxs ZSBBbnNpY2h0OiB7YWt0dWVsbGVfYW5zaWNodH1cbicgKwogICAgJ0RhdHVtIC8gVWhyemVpdDog IHtkYXR1bX0ge3VocnplaXR9XG4nICsKICAgICdBdWZsw7ZzdW5nOiAgICAgICAge2F1ZmxvZXN1 bmd9XG4nICsKICAgICdBcHAtSmFocjogICAgICAgICB7YXBwX2phaHJ9XG4nICsKICAgICdCcm93 c2VyOiAgICAgICAgICB7YnJvd3Nlcn1cbicgKwogICAgJ+KVkOKVkOKVkOKVkOKVkOKVkOKVkOKV kOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKV kOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkFxuJzsK CmV4cG9ydCB2YXIgSU1QUkVTU1VNX0RFRkFVTFQgPQogICAgJzxoND5IZXJhdXNnZWJlciAvIFZl cmFudHdvcnRsaWNoIGbDvHIgZGVuIEluaGFsdDwvaDQ+JyArCiAgICAnPHA+UG9saXplaXByw6Rz aWRpdW0gRG9ydG11bmQ8YnI+JyArCiAgICAnVmVya2VocnNpbnNwZWt0aW9uIDMgKFZJIDMpPGJy PicgKwogICAgJzxlbT5bQW5zY2hyaWZ0IGJpdHRlIGVyZ8Okbnplbl08L2VtPjwvcD4nICsKICAg ICc8aDQ+VGVjaG5pc2NoZSBLb256ZXB0aW9uICZhbXA7IEVudHdpY2tsdW5nPC9oND4nICsKICAg ICc8cD5QaGlsaXBwIFJvZXNnZW4sIFBISzxicj4nICsKICAgICdFLU1haWw6IHBoaWxpcHAucm9l c2dlbkBwb2xpemVpLm5ydy5kZTwvcD4nICsKICAgICc8aDQ+QmV0cmllYiAmYW1wOyBEYXRlbmhh bHR1bmc8L2g0PicgKwogICAgJzxwPkRpZXNlIEFud2VuZHVuZyBsw6R1ZnQgYXVzc2NobGllw59s aWNoIGltIGludGVybmVuIFBvbGl6ZWktTmV0endlcmsuICcgKwogICAgJ0RpZSBEYXRlbiB3ZXJk ZW4gbG9rYWwgaW4gSlNPTi1EYXRlaWVuIGdlaGFsdGVuIHVuZCDDvGJlciBkYXMgUG9saXplaS1O ZXR6bGF1ZndlcmsgJyArCiAgICAnc3luY2hyb25pc2llcnQuIEtlaW5lIENsb3VkLURpZW5zdGUs IGtlaW5lIGV4dGVybmVuIFRyYWNrZXIsIGtlaW5lIFRlbGVtZXRyaWUuPC9wPicgKwogICAgJzxo ND5MaXplbnpoaW53ZWlzZSBleHRlcm5lciBLb21wb25lbnRlbjwvaDQ+JyArCiAgICAnPHVsPicg KwogICAgJzxsaT5TaGVldEpTIENvbW11bml0eSBFZGl0aW9uIOKAlCBBcGFjaGUtMi4wLUxpemVu eiwgbG9rYWwgZWluZ2VidW5kZW4gKHhsc3guZnVsbC5taW4uanMpPC9saT4nICsKICAgICc8L3Vs PicgKwogICAgJzxoND5IYWZ0dW5nc2F1c3NjaGx1c3M8L2g0PicgKwogICAgJzxwPkRpZSBpbiBk aWVzZXIgQW53ZW5kdW5nIGRhcmdlc3RlbGx0ZW4gRGllbnN0cGzDpG5lIHVuZCBQZXJzb25hbGRh dGVuICcgKwogICAgJ2RpZW5lbiBkZXIgaW50ZXJuZW4gQXJiZWl0c29yZ2FuaXNhdGlvbi4gRsO8 ciBWb2xsc3TDpG5kaWdrZWl0IHVuZCBBa3R1YWxpdMOkdCAnICsKICAgICd3aXJkIGtlaW5lIEdl d8OkaHIgw7xiZXJub21tZW4uIFZlcmJpbmRsaWNoIGlzdCBhbGxlaW4gZGVyIG9mZml6aWVsbGUg RGllbnN0cGxhbi48L3A+JzsKCi8vIEhlbHBlcjogd2FuZGVsdCBlaW5lbiBXZXJ0IGF1cyBhZG1p bi5qc29uIChTdHJpbmcgLSBlbnR3ZWRlciBwbGFpbiBvZGVyCi8vIEhUTUwpIGluIEhUTUwgdW0s IGRhcyBkaXJla3QgaW4gZGFzIEluZm8tRmVuc3RlciBvZGVyIGVpbmVuIFJURS1FZGl0b3IKLy8g ZWluZ2VzZXR6dCB3ZXJkZW4ga2Fubi4gUGxhaW4gU3RyaW5ncyB3ZXJkZW4gZXNjYXBlZCB1bmQg XG4gLT4gPGJyPjsKLy8gYmVyZWl0cy1IVE1MIHdpcmQgZHVyY2ggc2FuaXRpemVSaWNoSHRtbCBn ZWZpbHRlcnQuCmZ1bmN0aW9uIGh0bWxBdXNGZWxkKHMpIHsKICAgIHMgPSBzIHx8ICcnOwogICAg aWYgKCFzKSByZXR1cm4gJyc7CiAgICBpZiAoLzxcLz8oYnxzdHJvbmd8aXxlbXx1fHVsfG9sfGxp fHB8YnJ8ZGl2fHNwYW58YXxoM3xoNClcYi9pLnRlc3QocykpIHsKICAgICAgICByZXR1cm4gc2Fu aXRpemVSaWNoSHRtbChzKTsKICAgIH0KICAgIHJldHVybiBlc2NhcGVIVE1MKHMpLnJlcGxhY2Uo L1xyP1xuL2csICc8YnI+Jyk7Cn0KCmZ1bmN0aW9uIGluZm9IaWxmZVJlbmRlcm4oKSB7CiAgICB2 YXIgaW5mbyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpaC1pbmZvdGV4dCcpOwogICAgaWYg KCFpbmZvKSByZXR1cm47CiAgICBpbmZvLmlubmVySFRNTCA9IGh0bWxBdXNGZWxkKFouYWRtaW4u aW5mb3RleHQpOwogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2loLXN1cHBvcnQnKS5pbm5l ckhUTUwgICAgID0gaHRtbEF1c0ZlbGQoWi5hZG1pbi5zdXBwb3J0aW5mbyk7CiAgICBkb2N1bWVu dC5nZXRFbGVtZW50QnlJZCgnaWgtaGlsZmUnKS5pbm5lckhUTUwgICAgICAgID0gaHRtbEF1c0Zl bGQoWi5hZG1pbi5oaWxmZXRleHQpOwogICAgLy8gQmVkaWVudW5nc3RleHRlOiB3ZW5uIGxlZXIg LT4gRGVmYXVsdCB6ZWlnZW4gKGFscyBVTCBnZXJlbmRlcnQsIGRhbWl0CiAgICAvLyBkZXIgVXNl ciBzb2ZvcnQgc2llaHQgd2llIGVzIGF1c3NlaGVuIHNvbGwpCiAgICB2YXIgYmVkID0gWi5hZG1p bi5iZWRpZW51bmdzdGV4dGU7CiAgICBpZiAoIWJlZCB8fCAhU3RyaW5nKGJlZCkudHJpbSgpKSB7 CiAgICAgICAgLy8gRGVmYXVsdCBhbHMgPHVsPjxsaT4uLi48L2xpPjwvdWw+IGVpbmZ1ZWdlbiwg ZGFtaXQgZGVyIFJURSBnbGVpY2gKICAgICAgICAvLyBBdWZ6YWVobHVuZ3MtRm9ybWF0IHplaWd0 LgogICAgICAgIHZhciB1bCA9ICc8dWw+JyArIChhZG1pbkhvb2tzLmJlZGllbnVuZ1plaWxlblJl bmRlcm4gPyBhZG1pbkhvb2tzLmJlZGllbnVuZ1plaWxlblJlbmRlcm4oQkVESUVOVU5HX0RFRkFV TFQpIDogJycpICsgJzwvdWw+JzsKICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaWgt YmVkaWVudW5nJykuaW5uZXJIVE1MID0gdWw7CiAgICB9IGVsc2UgewogICAgICAgIGRvY3VtZW50 LmdldEVsZW1lbnRCeUlkKCdpaC1iZWRpZW51bmcnKS5pbm5lckhUTUwgPSBodG1sQXVzRmVsZChi ZWQpOwogICAgfQogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2loLXNjaGxpZXNzaW5mbycp LnZhbHVlID0gWi5hZG1pbi5zY2hsaWVzc2luZm8gfHwgJyc7CiAgICAvLyBJbXByZXNzdW06IGxl ZXIgLT4gRGVmYXVsdC1IVE1MIHplaWdlbiAoVXNlciBrYW5uIGZyZWkgdWViZXJzY2hyZWliZW4p CiAgICB2YXIgaW1wRWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaWgtaW1wcmVzc3VtJyk7 CiAgICBpZiAoaW1wRWwpIHsKICAgICAgICB2YXIgaW1wV2VydCA9IFouYWRtaW4uaW1wcmVzc3Vt OwogICAgICAgIGltcEVsLmlubmVySFRNTCA9IChpbXBXZXJ0ICYmIFN0cmluZyhpbXBXZXJ0KS50 cmltKCkpCiAgICAgICAgICAgID8gaHRtbEF1c0ZlbGQoaW1wV2VydCkKICAgICAgICAgICAgOiBz YW5pdGl6ZVJpY2hIdG1sKElNUFJFU1NVTV9ERUZBVUxUKTsKICAgIH0KCiAgICAvLyBSVEUtVG9v bGJhcnMgdmVyZHJhaHRlbiDigJQgZWlubWFsIHBybyBFZGl0b3IgcmVpY2h0LiBXaXIgbWFya2ll cmVuCiAgICAvLyBtaXQgZGF0YS1ydGUtaW5pdCwgZGFtaXQgcnRlSW5pdCgpIG5pY2h0IGRvcHBl bHQgaGFlbmd0LgogICAgWydpaC1pbmZvdGV4dCcsJ2loLXN1cHBvcnQnLCdpaC1oaWxmZScsJ2lo LWJlZGllbnVuZycsJ2loLWltcHJlc3N1bSddLmZvckVhY2goZnVuY3Rpb24oaWQpIHsKICAgICAg ICB2YXIgZWQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCk7CiAgICAgICAgaWYgKGVkICYm ICFlZC5nZXRBdHRyaWJ1dGUoJ2RhdGEtcnRlLWluaXQnKSkgewogICAgICAgICAgICBydGVJbml0 KGVkKTsKICAgICAgICAgICAgZWQuc2V0QXR0cmlidXRlKCdkYXRhLXJ0ZS1pbml0JywgJzEnKTsK ICAgICAgICB9CiAgICB9KTsKfQoKZnVuY3Rpb24gaW5mb0hpbGZlQXVzRmVsZGVybkxlc2VuKCkg ewogICAgdmFyIGltcEVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2loLWltcHJlc3N1bScp OwogICAgcmV0dXJuIHsKICAgICAgICBpbmZvdGV4dDogICAgICAgIHNhbml0aXplUmljaEh0bWwo ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2loLWluZm90ZXh0JykuaW5uZXJIVE1MKSwKICAgICAg ICBzdXBwb3J0aW5mbzogICAgIHNhbml0aXplUmljaEh0bWwoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5 SWQoJ2loLXN1cHBvcnQnKS5pbm5lckhUTUwpLAogICAgICAgIGhpbGZldGV4dDogICAgICAgc2Fu aXRpemVSaWNoSHRtbChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaWgtaGlsZmUnKS5pbm5lckhU TUwpLAogICAgICAgIGJlZGllbnVuZ3N0ZXh0ZTogc2FuaXRpemVSaWNoSHRtbChkb2N1bWVudC5n ZXRFbGVtZW50QnlJZCgnaWgtYmVkaWVudW5nJykuaW5uZXJIVE1MKSwKICAgICAgICBzY2hsaWVz c2luZm86ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpaC1zY2hsaWVzc2luZm8nKS52YWx1 ZSwKICAgICAgICBpbXByZXNzdW06ICAgICAgIGltcEVsID8gc2FuaXRpemVSaWNoSHRtbChpbXBF bC5pbm5lckhUTUwpIDogJycKICAgIH07Cn0KCi8vID09PT09IEFkbWluOiBCZXplaWNobnVuZ2Vu IChlZGl0aWVyYmFyZSBVSS1MYWJlbHMpID09PT09CgovLyBEZWZhdWx0LVdlcnRlIGZ1ZXIgYWxs ZSBlZGl0aWVyYmFyZW4gTGFiZWxzLiBkYXRhLWJlei1BdHRyaWJ1dGUgaW0gSFRNTAovLyB2ZXJ3 ZWlzZW4gbWl0IGlocmVtIFdlcnQgYXVmIGRpZXNlIEtleXM7IGJlemVpY2hudW5nZW5BbndlbmRl bigpIHNldHp0Ci8vIGJlaW0gTG9naW4gZGVuIFRleHQuIExlZXJlIE92ZXJyaWRlcyBpbiBhZG1p bi5qc29uLmJlemVpY2hudW5nZW4gZmFsbGVuCi8vIGF1ZiBkZW4gRGVmYXVsdCB6dXJ1ZWNrLgp2 YXIgQkVaRUlDSE5VTkdFTl9ERUZBVUxUID0gewogICAgJ2FwcC50aXRlbCc6ICAgICAgICdWSTMg REdMLVBsYW51bmcnLAogICAgJ25hdi5wbGFudW5nJzogICAgICdQbGFudW5nJywKICAgICduYXYu d29jaGVucGxhbic6ICAnV29jaGVucGxhbicsCiAgICAnbmF2LnBlcnNwbGFuJzogICAgJ1BlcnMu IFBsYW4nLAogICAgJ25hdi5iZXNldHp1bmcnOiAgICdQcsO8ZnVuZycsCiAgICAnbmF2LmFkbWlu JzogICAgICAgJ0FkbWluaXN0cmF0aW9uJywKICAgICduYXYuc3RhdGlzdGlrJzogICAnU3RhdGlz dGlrJywKICAgICduYXYubG9nYnVjaCc6ICAgICAnTG9nYnVjaCcKfTsKCmZ1bmN0aW9uIGJleihr ZXkpIHsKICAgIHZhciBiID0gKFouYWRtaW4gJiYgWi5hZG1pbi5iZXplaWNobnVuZ2VuKSB8fCB7 fTsKICAgIGlmIChrZXkgaW4gYiAmJiBiW2tleV0pIHJldHVybiBiW2tleV07CiAgICByZXR1cm4g QkVaRUlDSE5VTkdFTl9ERUZBVUxUW2tleV0gfHwga2V5Owp9CgovLyBTZXR6dCBhbGxlIGRhdGEt YmV6LUVsZW1lbnRlIGltIERPTSBhdWYgZGVuIHBhc3NlbmRlbiBUZXh0LiBFaW5tYWwgbmFjaAov LyBMb2dpbiBhdWZydWZlbiB1bmQgYmVpIGplZGVyIEFlbmRlcnVuZyB2b24gYWRtaW4uYmV6ZWlj aG51bmdlbi4KZnVuY3Rpb24gYmV6ZWljaG51bmdlbkFud2VuZGVuKCkgewogICAgZG9jdW1lbnQu cXVlcnlTZWxlY3RvckFsbCgnW2RhdGEtYmV6XScpLmZvckVhY2goZnVuY3Rpb24oZWwpIHsKICAg ICAgICB2YXIgayA9IGVsLmdldEF0dHJpYnV0ZSgnZGF0YS1iZXonKTsKICAgICAgICBpZiAoaykg ZWwudGV4dENvbnRlbnQgPSBiZXooayk7CiAgICB9KTsKICAgIC8vIEF1Y2ggZGVyIEhUTUwtPHRp dGxlPiBzcGllZ2VsdCBkZW4gQXBwLVRpdGVsCiAgICB0cnkgeyBkb2N1bWVudC50aXRsZSA9IGJl eignYXBwLnRpdGVsJyk7IH0gY2F0Y2ggKF8pIHt9Cn0KCmZ1bmN0aW9uIGJlemVpY2hudW5nZW5S ZW5kZXJuKCkgewogICAgdmFyIHRib2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2JlemVp Y2hudW5nZW4tdGJvZHknKTsKICAgIGlmICghdGJvZHkpIHJldHVybjsKICAgIHZhciBvdmVycmlk ZXMgPSAoWi5hZG1pbiAmJiBaLmFkbWluLmJlemVpY2hudW5nZW4pIHx8IHt9OwogICAgdmFyIGh0 bWwgPSAnJzsKICAgIE9iamVjdC5rZXlzKEJFWkVJQ0hOVU5HRU5fREVGQVVMVCkuZm9yRWFjaChm dW5jdGlvbihrZXkpIHsKICAgICAgICB2YXIgZGVmID0gQkVaRUlDSE5VTkdFTl9ERUZBVUxUW2tl eV07CiAgICAgICAgdmFyIGN1ciA9IG92ZXJyaWRlc1trZXldIHx8ICcnOwogICAgICAgIGh0bWwg Kz0gJzx0cj4nICsKICAgICAgICAgICAgJzx0ZD48Y29kZSBzdHlsZT0iZm9udC1zaXplOjExcHgi PicgKyBlc2NhcGVIVE1MKGtleSkgKyAnPC9jb2RlPjwvdGQ+JyArCiAgICAgICAgICAgICc8dGQg c3R5bGU9ImNvbG9yOnZhcigtLXRleHQtbXV0ZWQpO2ZvbnQtc2l6ZToxMnB4Ij4nICsgZXNjYXBl SFRNTChkZWYpICsgJzwvdGQ+JyArCiAgICAgICAgICAgICc8dGQ+PGlucHV0IHR5cGU9InRleHQi IGNsYXNzPSJiZXotaW5wdXQiIGRhdGEta2V5PSInICsgZXNjYXBlQXR0cihrZXkpICsgJyIgdmFs dWU9IicgKyBlc2NhcGVBdHRyKGN1cikgKyAnIiBwbGFjZWhvbGRlcj0iJyArIGVzY2FwZUF0dHIo ZGVmKSArICciIHN0eWxlPSJ3aWR0aDoxMDAlIj48L3RkPicgKwogICAgICAgICAgICAnPC90cj4n OwogICAgfSk7CiAgICB0Ym9keS5pbm5lckhUTUwgPSBodG1sOwp9CgpmdW5jdGlvbiBiZXplaWNo bnVuZ2VuQXVzVGFiZWxsZUxlc2VuKCkgewogICAgdmFyIG1hcCA9IHt9OwogICAgZG9jdW1lbnQu cXVlcnlTZWxlY3RvckFsbCgnLmJlei1pbnB1dCcpLmZvckVhY2goZnVuY3Rpb24oaW5wKSB7CiAg ICAgICAgdmFyIGsgPSBpbnAuZ2V0QXR0cmlidXRlKCdkYXRhLWtleScpOwogICAgICAgIHZhciB2 ID0gaW5wLnZhbHVlLnRyaW0oKTsKICAgICAgICBpZiAoayAmJiB2KSBtYXBba10gPSB2OwogICAg fSk7CiAgICByZXR1cm4gbWFwOwp9CgovLyA9PT09PSBBZG1pbjogRS1NYWlsLVZvcmxhZ2VuIChm dWVyIEJlc2V0enVuZ3Nrb250cm9sbGUpID09PT09Ci8vIEVNQUlMX1ZPUkxBR0VOX0RFRkFVTFQs IEVNQUlMX1ZBUklBQkxFTl9CRVNDSFJFSUJVTkcsIEVNUEZBRU5HRVJfT1BUSU9ORU4sCi8vIEVN QUlMX1ZPUkxBR0VOX01FVEEsIGVtYWlsVm9ybGFnZW5Ib2xlbiwgZW1haWxWb3JsYWdlblJlbmRl cm4sCi8vIGVtYWlsVm9ybGFnZUJlYXJiZWl0ZW5Nb2RhbCwgaHRtbFp1UGxhaW5UZXh0LCBlbWFp bFZvcmxhZ2VCZWZ1ZWxsZW4sCi8vIGVtYWlsRW1wZmFlbmdlclJlc29sdmUsIG1haWxUcmlnZ2Vy RmV1ZXJuLCByb2xsZURpZmZUcmlnZ2VybgovLyAgIC0+IGpzL2VtYWlsL2VtYWlsLXZvcmxhZ2Vu LmpzCgpmdW5jdGlvbiBlaW5zdGVsbHVuZ2VuUmVuZGVybigpIHsKICAgIHZhciBlbCA9IGRvY3Vt ZW50LmdldEVsZW1lbnRCeUlkKCdlaW5zLWphaHInKTsKICAgIGlmICghZWwpIHJldHVybjsKICAg IGVsLnZhbHVlID0gWi5hZG1pbi5qYWhyIHx8IG5ldyBEYXRlKCkuZ2V0RnVsbFllYXIoKTsKICAg IHZhciBwYXBpZXJrb3JiRWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZWlucy1wYXBpZXJr b3JiLXRhZ2UnKTsKICAgIGlmIChwYXBpZXJrb3JiRWwpIHBhcGllcmtvcmJFbC52YWx1ZSA9IFou YWRtaW4ucGFwaWVya29yYlRhZ2VBdWZiZXdhaHJ1bmcgIT0gbnVsbCA/IFouYWRtaW4ucGFwaWVy a29yYlRhZ2VBdWZiZXdhaHJ1bmcgOiAzMDsKICAgIHZhciBlbWFpbERvbWFpbkVsID0gZG9jdW1l bnQuZ2V0RWxlbWVudEJ5SWQoJ2VpbnMtZW1haWwtZG9tYWluJyk7CiAgICBpZiAoZW1haWxEb21h aW5FbCkgZW1haWxEb21haW5FbC52YWx1ZSA9IFouYWRtaW4uZW1haWxBdXRvRG9tYWluIHx8ICdA cG9saXplaS5ucncuZGUnOwogICAgdmFyIGF2YXRhckdyb2Vzc2VFbCA9IGRvY3VtZW50LmdldEVs ZW1lbnRCeUlkKCdlaW5zLWF2YXRhci1ncm9lc3NlJyk7CiAgICBpZiAoYXZhdGFyR3JvZXNzZUVs KSBhdmF0YXJHcm9lc3NlRWwudmFsdWUgPSBaLmFkbWluLmF2YXRhckdyb2Vzc2UgfHwgMjAwOwog ICAgdmFyIGVkaXRvclRyaWdnZXJFbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdlaW5zLWVk aXRvci10cmlnZ2VyJyk7CiAgICBpZiAoZWRpdG9yVHJpZ2dlckVsKSB7CiAgICAgICAgdmFyIHQg PSBaLmFkbWluLmVkaXRvclRyaWdnZXI7CiAgICAgICAgZWRpdG9yVHJpZ2dlckVsLnZhbHVlID0g KFsncmVjaHRzJywgJ2xpbmtzJywgJ21pdHRlJywgJ2RvcHBlbCddLmluZGV4T2YodCkgPj0gMCkg PyB0IDogJ3JlY2h0cyc7CiAgICB9Cn0KCi8vID09PT09IEFkbWluOiBTdGFuZG9ydGUgJiBTY2hp Y2h0Zm9sZ2UgPT09PT0KCmZ1bmN0aW9uIHN0YW5kb3J0ZVJlbmRlcm4oKSB7CiAgICB2YXIgdGJv ZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3RhbmRvcnRlLXRib2R5Jyk7CiAgICBpZiAo IXRib2R5KSByZXR1cm47CiAgICBpZiAoIShaLmFkbWluLnN0YW5kb3J0ZSB8fCBbXSkubGVuZ3Ro KSB7CiAgICAgICAgdGJvZHkuaW5uZXJIVE1MID0gYWRtaW5FbXB0eVplaWxlKDUsICdcdXsxRjNF Mn0nLAogICAgICAgICAgICAnTm9jaCBrZWluZSBTdGFuZG9ydGUgYW5nZWxlZ3QnLAogICAgICAg ICAgICAnU3RhbmRvcnRlIHNpbmQgZGllIEFyYmVpdHNvcnRlIGRlciBWSTMgKHouQi4gQXJuc2Jl cmcsIEJvY2h1bSkuIEplZGVyIFN0YW5kb3J0IGJyYXVjaHQgZWluZSBTY2hpY2h0Zm9sZ2UgZnVl ciBBL0IvQyDigJQgbGVnIGRlbiBlcnN0ZW4gb2JlbiBtaXQg4oCeTmV1ZXIgU3RhbmRvcnQiIGFu LicpOwogICAgICAgIHJldHVybjsKICAgIH0KICAgIHZhciBoZXV0ZSA9IG5ldyBEYXRlKFouaGV1 dGVTdHIgKyAnVDAwOjAwOjAwJyk7CiAgICB2YXIgaHRtbCA9ICcnOwogICAgKFouYWRtaW4uc3Rh bmRvcnRlIHx8IFtdKS5mb3JFYWNoKGZ1bmN0aW9uKHNvLCBpZHgpIHsKICAgICAgICB2YXIgdm9y c2NoYXUgPSAnJzsKICAgICAgICBpZiAoc28uaXN0UG9vbCkgewogICAgICAgICAgICB2b3JzY2hh dSA9ICc8c3BhbiBjbGFzcz0ic2Ytdm9yc2NoYXUgc2Ytdm9yc2NoYXUtcG9vbCI+UG9vbCAoZmxl eGliZWwpPC9zcGFuPic7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgZm9yICh2YXIgaSA9 IDA7IGkgPCAxNDsgaSsrKSB7CiAgICAgICAgICAgICAgICB2YXIgZCA9IG5ldyBEYXRlKGhldXRl LmdldFRpbWUoKSArIGkgKiA4NjQwMDAwMCk7CiAgICAgICAgICAgICAgICB2YXIga2V5ID0gZGF0 dW1TdHIoZCk7CiAgICAgICAgICAgICAgICB2YXIgd2VydCA9IChzby5zY2hpY2h0Zm9sZ2UgfHwg e30pW2tleV0gfHwgJ+KAkyc7CiAgICAgICAgICAgICAgICB2YXIgY2xzID0gd2VydCA9PT0gJ0FC QycgPyAnc2YtYWJjJyA6IHdlcnQgPT09ICdCQ0EnID8gJ3NmLWJjYScgOiB3ZXJ0ID09PSAnQ0FC JyA/ICdzZi1jYWInIDogJyc7CiAgICAgICAgICAgICAgICB2b3JzY2hhdSArPSAnPHNwYW4gY2xh c3M9InNmLXZvcnNjaGF1ICcgKyBjbHMgKyAnIiB0aXRsZT0iJyArIGtleSArICciPicgKyBlc2Nh cGVIVE1MKHdlcnQpICsgJzwvc3Bhbj4nOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAg IGh0bWwgKz0gJzx0cj4nICsKICAgICAgICAgICAgJzx0ZD48aW5wdXQgdHlwZT0idGV4dCIgdmFs dWU9IicgKyBlc2NhcGVBdHRyKHNvLm5hbWUgfHwgJycpICsgJyIgZGF0YS1pZHg9IicgKyBpZHgg KyAnIiBkYXRhLWZlbGQ9Im5hbWUiIGNsYXNzPSJzdGFuZG9ydC1pbnB1dCI+PC90ZD4nICsKICAg ICAgICAgICAgJzx0ZD48aW5wdXQgdHlwZT0idGV4dCIgdmFsdWU9IicgKyBlc2NhcGVBdHRyKHNv Lmt1ZXJ6ZWwgfHwgJycpICsgJyIgZGF0YS1pZHg9IicgKyBpZHggKyAnIiBkYXRhLWZlbGQ9Imt1 ZXJ6ZWwiIGNsYXNzPSJzdGFuZG9ydC1pbnB1dCIgbWF4bGVuZ3RoPSI0IiBzdHlsZT0id2lkdGg6 NTBweCI+PC90ZD4nICsKICAgICAgICAgICAgJzx0ZCBzdHlsZT0idGV4dC1hbGlnbjpjZW50ZXIi PjxpbnB1dCB0eXBlPSJjaGVja2JveCIgJyArIChzby5pc3RQb29sID8gJ2NoZWNrZWQnIDogJycp ICsgJyBkYXRhLWlkeD0iJyArIGlkeCArICciIGRhdGEtZmVsZD0iaXN0UG9vbCIgY2xhc3M9InN0 YW5kb3J0LWlucHV0Ij48L3RkPicgKwogICAgICAgICAgICAnPHRkPicgKyB2b3JzY2hhdSArICc8 L3RkPicgKwogICAgICAgICAgICAnPHRkPicgKwogICAgICAgICAgICAgICAgJzxkaXYgc3R5bGU9 ImRpc3BsYXk6ZmxleDtnYXA6NnB4O2FsaWduLWl0ZW1zOmNlbnRlcjt3aGl0ZS1zcGFjZTpub3dy YXAiPicgKwogICAgICAgICAgICAgICAgICAgICc8YnV0dG9uIGNsYXNzPSJidG4gYnRuLXNlayBi dG4ta2xlaW4gYnRuLWljb24gYnRuLXJoeXRobXVzIiBkYXRhLWFrdGlvbj0ic3RhbmRvcnQtcmh5 dGhtdXMiIGRhdGEtaWR4PSInICsgaWR4ICsgJyIgdGl0bGU9IlJoeXRobXVzIGVyemV1Z2VuIj5S aHl0aG11czwvYnV0dG9uPicgKwogICAgICAgICAgICAgICAgICAgICc8YnV0dG9uIGNsYXNzPSJi dG4gYnRuLWdlZmFociBidG4ta2xlaW4gYnRuLWxvZXNjaGVuIiBkYXRhLWFrdGlvbj0ic3RhbmRv cnQtbG9lc2NoZW4iIGRhdGEtaWR4PSInICsgaWR4ICsgJyIgdGl0bGU9IlN0YW5kb3J0IGzDtnNj aGVuIj5Mw7ZzY2hlbjwvYnV0dG9uPicgKwogICAgICAgICAgICAgICAgJzwvZGl2PicgKwogICAg ICAgICAgICAnPC90ZD4nICsKICAgICAgICAnPC90cj4nOwogICAgfSk7CiAgICB0Ym9keS5pbm5l ckhUTUwgPSBodG1sOwp9CgpmdW5jdGlvbiBzdGFuZG9ydGVBdXNUYWJlbGxlTGVzZW4oKSB7CiAg ICB2YXIgYWx0ZSA9IFouYWRtaW4uc3RhbmRvcnRlIHx8IFtdOwogICAgdmFyIGZlbGRlciA9IGRv Y3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5zdGFuZG9ydC1pbnB1dCcpOwogICAgdmFyIG5ldSA9 IGFsdGUubWFwKGZ1bmN0aW9uKHMpIHsgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIHMpOyB9KTsK ICAgIGZlbGRlci5mb3JFYWNoKGZ1bmN0aW9uKGYpIHsKICAgICAgICB2YXIgaWR4ID0gcGFyc2VJ bnQoZi5nZXRBdHRyaWJ1dGUoJ2RhdGEtaWR4JykpOwogICAgICAgIHZhciBmZWxkID0gZi5nZXRB dHRyaWJ1dGUoJ2RhdGEtZmVsZCcpOwogICAgICAgIGlmICghbmV1W2lkeF0pIHJldHVybjsKICAg ICAgICBpZiAoZmVsZCA9PT0gJ2lzdFBvb2wnKSBuZXVbaWR4XS5pc3RQb29sID0gZi5jaGVja2Vk OwogICAgICAgIGVsc2UgbmV1W2lkeF1bZmVsZF0gPSBmLnZhbHVlOwogICAgfSk7CiAgICBuZXUu Zm9yRWFjaChmdW5jdGlvbihzKSB7CiAgICAgICAgaWYgKHMuaXN0UG9vbCkgZGVsZXRlIHMuc2No aWNodGZvbGdlOwogICAgfSk7CiAgICByZXR1cm4gbmV1LmZpbHRlcihmdW5jdGlvbihzKSB7IHJl dHVybiBzLm5hbWU7IH0pOwp9CgpmdW5jdGlvbiByaHl0aG11c0dlbmVyYXRvckRpYWxvZyhpZHgp IHsKICAgIHZhciBzbyA9IChaLmFkbWluLnN0YW5kb3J0ZSB8fCBbXSlbaWR4XTsKICAgIGlmICgh c28pIHJldHVybjsKICAgIHZhciBqYWhyID0gWi5hZG1pbi5qYWhyIHx8IG5ldyBEYXRlKCkuZ2V0 RnVsbFllYXIoKTsKICAgIHZhciBrb2VycGVyID0gJzxwIHN0eWxlPSJtYXJnaW4tdG9wOjAiPkVy emV1Z2UgZWluZW4gd2llZGVya2VocmVuZGVuIFJoeXRobXVzIGbDvHIgPHN0cm9uZz4nICsgZXNj YXBlSFRNTChzby5uYW1lKSArICc8L3N0cm9uZz4uIERlciBSaHl0aG11cyB3aXJkIGFiIFN0YXJ0 ZGF0dW0gamV3ZWlscyBmw7xyIGRpZSBhbmdlZ2ViZW5lIEJsb2NrbMOkbmdlIGFuZ2V3ZW5kZXQg dW5kIHp5a2xpc2NoIHdpZWRlcmhvbHQgYmlzIEphaHJlc2VuZGUuPC9wPicgKwogICAgICAgICc8 ZGl2IHN0eWxlPSJkaXNwbGF5OmdyaWQ7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjFmciAxZnI7Z2Fw OjAgMTZweCI+JyArCiAgICAgICAgJzxkaXYgY2xhc3M9ImZvcm0tZ3J1cHBlIj48bGFiZWw+U3Rh cnRkYXR1bSAod28gWnlrbHVzIGJlZ2lubnQpPC9sYWJlbD48aW5wdXQgdHlwZT0iZGF0ZSIgaWQ9 InJoLXN0YXJ0IiBjbGFzcz0iZm9ybS1pbnB1dCIgc3R5bGU9IndpZHRoOjEwMCUiIHZhbHVlPSIn ICsgamFociArICctMDEtMDEiPjwvZGl2PicgKwogICAgICAgICc8ZGl2IGNsYXNzPSJmb3JtLWdy dXBwZSI+PGxhYmVsPkJsb2NrbMOkbmdlIGluIFRhZ2VuPC9sYWJlbD48aW5wdXQgdHlwZT0ibnVt YmVyIiBpZD0icmgtYmxvY2siIGNsYXNzPSJmb3JtLWlucHV0IiBzdHlsZT0id2lkdGg6MTAwJSIg dmFsdWU9IjciIG1pbj0iMSIgbWF4PSIzMSI+PC9kaXY+JyArCiAgICAgICAgJzxkaXYgY2xhc3M9 ImZvcm0tZ3J1cHBlIiBzdHlsZT0iZ3JpZC1jb2x1bW46c3BhbiAyIj48bGFiZWw+UmVpaGVuZm9s Z2UgKGtvbW1hZ2V0cmVubnQsIHouQi4gQUJDLEJDQSxDQUIpPC9sYWJlbD48aW5wdXQgdHlwZT0i dGV4dCIgaWQ9InJoLWZvbGdlIiBjbGFzcz0iZm9ybS1pbnB1dCIgc3R5bGU9IndpZHRoOjEwMCUi IHZhbHVlPSJBQkMsQkNBLENBQiI+PC9kaXY+JyArCiAgICAgICAgJzwvZGl2Pic7CgogICAgbW9k YWxaZWlnZW4oJ1NjaGljaHRmb2xnZS1SaHl0aG11cyBmw7xyICcgKyBzby5uYW1lLCBrb2VycGVy LAogICAgICAgICc8YnV0dG9uIGNsYXNzPSJidG4gYnRuLXByaW1hZXIiIGlkPSJyaC1hbndlbmRl biI+QW53ZW5kZW48L2J1dHRvbj4nLAogICAgICAgIGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2 YXIgc3RhcnQgPSBuZXcgRGF0ZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmgtc3RhcnQnKS52 YWx1ZSArICdUMDA6MDA6MDAnKTsKICAgICAgICAgICAgdmFyIGJsb2NrID0gcGFyc2VJbnQoZG9j dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3JoLWJsb2NrJykudmFsdWUsIDEwKSB8fCA3OwogICAgICAg ICAgICB2YXIgZm9sZ2UgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmgtZm9sZ2UnKS52YWx1 ZS5zcGxpdCgnLCcpLm1hcChmdW5jdGlvbihzKXtyZXR1cm4gcy50cmltKCkudG9VcHBlckNhc2Uo KTt9KS5maWx0ZXIoQm9vbGVhbik7CiAgICAgICAgICAgIGlmICghZm9sZ2UubGVuZ3RoIHx8IGlz TmFOKHN0YXJ0LmdldFRpbWUoKSkpIHsgdG9hc3QoJ1VuZ8O8bHRpZ2UgRWluZ2FiZScsICd3YXJu dW5nJyk7IHJldHVybjsgfQoKICAgICAgICAgICAgdmFyIHNjaGljaHRmb2xnZSA9IHt9OwogICAg ICAgICAgICB2YXIgamFoclN0YXJ0ID0gbmV3IERhdGUoamFociArICctMDEtMDFUMDA6MDA6MDAn KTsKICAgICAgICAgICAgdmFyIGphaHJFbmRlID0gbmV3IERhdGUoamFociArICctMTItMzFUMDA6 MDA6MDAnKTsKICAgICAgICAgICAgdmFyIHRhZyA9IG5ldyBEYXRlKGphaHJTdGFydCk7CiAgICAg ICAgICAgIHdoaWxlICh0YWcgPD0gamFockVuZGUpIHsKICAgICAgICAgICAgICAgIHZhciBkaWZm VGFnZSA9IE1hdGguZmxvb3IoKHRhZyAtIHN0YXJ0KSAvIDg2NDAwMDAwKTsKICAgICAgICAgICAg ICAgIGlmIChkaWZmVGFnZSA+PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHp5a2x1c0lk eCA9IE1hdGguZmxvb3IoZGlmZlRhZ2UgLyBibG9jaykgJSBmb2xnZS5sZW5ndGg7CiAgICAgICAg ICAgICAgICAgICAgc2NoaWNodGZvbGdlW2RhdHVtU3RyKHRhZyldID0gZm9sZ2VbenlrbHVzSWR4 XTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHRhZy5zZXREYXRlKHRhZy5nZXRE YXRlKCkgKyAxKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBzby5zY2hpY2h0Zm9sZ2UgPSBz Y2hpY2h0Zm9sZ2U7CiAgICAgICAgICAgIHNvLmlzdFBvb2wgPSBmYWxzZTsKICAgICAgICAgICAg bW9kYWxTY2hsaWVzc2VuKCk7CiAgICAgICAgICAgIHN0YW5kb3J0ZVJlbmRlcm4oKTsKICAgICAg ICAgICAgdG9hc3QoJ1JoeXRobXVzIGbDvHIgJyArIHNvLm5hbWUgKyAnIGVyemV1Z3Qg4oCUIOKA nlNwZWljaGVybiIgbmljaHQgdmVyZ2Vzc2VuJywgJ2VyZm9sZycpOwogICAgICAgIH0KICAgICk7 Cn0KCi8vID09PT09IEFkbWluOiBQZXJzb25hbC1UYWJlbGxlLCBOZXVpbXBvcnQsIEJ1bGssIElu bGluZS1FZGl0cywgRS1NYWlsID09PT09Ci8vIFBoYXNlIDktQiBDNDoga29tcGxldHRlciBQZXJz b25hbC1CbG9jayAofjEzMjcgWi4pIG5hY2gKLy8gVkkzL2pzL2FkbWluX3BlcnNvbmFsLmpzIGF1 c2dlbGFnZXJ0LiBLb25zdW1lbnRlbiAoYXBwLmpzKQovLyBpbXBvcnRpZXJlbiBhYiBQaGFzZSA5 LUIgQzUgZGlyZWt0IGF1cyBhZG1pbl9wZXJzb25hbC5qcy4KCi8vID09PT09IEFkbWluOiBGZWll cnRhZ2UgKyBGZXJpZW4gKyBTb25kZXJ0ZXJtaW5lID09PT09Ci8vIFBoYXNlIDktQiBDMzogbmFj aCBWSTMvanMvYWRtaW5fa2FsZW5kZXIuanMgYXVzZ2VsYWdlcnQKLy8gKGZlaWVydGFnZSosIGZl cmllbiosIHNvbmRlcnRlcm1pbmUqLCBzb25kZXIqLUhlbGZlcikuCi8vIHdvY2hlbnBsYW4uanMg KyBhcHAuanMgaW1wb3J0aWVyZW4gYWIgUGhhc2UgOS1CIEM1IGRpcmVrdCBhdXMKLy8gYWRtaW5f a2FsZW5kZXIuanMuCgovLyBydGVJbml0LCBydGVCdXR0b25TdGF0ZXMgLT4ganMvdWkvcnRlLmpz CgovLyA9PT09PSBBZG1pbjogU2NoaWNodGNvZGUtVm9yc2NoYXUgKyBFZGl0ICsgVG9nZ2xlID09 PT09Ci8vIFBoYXNlIDktQiBDMjogbmFjaCBWSTMvanMvYWRtaW5fY29kZXMuanMgYXVzZ2VsYWdl cnQKLy8gKGlzdENvZGVBa3RpdiwgY29kZVZlcndlbmR1bmdaYWVobGVuLCBzY2hpY2h0Y29kZUth dGVnb3JpZSwKLy8gc2NoaWNodGNvZGVWb3JzY2hhdVJlbmRlcm4sIHNjaGljaHRjb2RlRHJhZ1Zl cmRyYWh0ZW4sCi8vIHNjaGljaHRjb2RlVG9nZ2xlQWt0aXYsIHNjaGljaHRjb2RlTGlzdGVTcGVp Y2hlcm4sCi8vIHNjaGljaHRjb2RlRWRpdE1vZGFsWmVpZ2VuKS4gaW1wb3J0X2V4Y2VsLmpzICsg YXBwLmpzCi8vIGltcG9ydGllcmVuIGFiIFBoYXNlIDktQiBDNSBkaXJla3QgYXVzIGFkbWluX2Nv ZGVzLmpzLgoKLy8gQ29sbGFwc2libGUgSW5mby1CbG9ja3M6IFp1c3RhbmQgaW4gbG9jYWxTdG9y YWdlCmZ1bmN0aW9uIGFkbWluSW5mb0luaXQoKSB7CiAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9y QWxsKCdkZXRhaWxzLmFkbWluLWluZm9bZGF0YS1pbmZvLWtleV0nKS5mb3JFYWNoKGZ1bmN0aW9u KGRldCkgewogICAgICAgIHZhciBrZXkgPSAnYWRtaW4taW5mby0nICsgZGV0LmdldEF0dHJpYnV0 ZSgnZGF0YS1pbmZvLWtleScpOwogICAgICAgIHZhciBzYXZlZCA9IGxvY2FsU3RvcmFnZS5nZXRJ dGVtKGtleSk7CiAgICAgICAgaWYgKHNhdmVkID09PSAnenUnKSBkZXQucmVtb3ZlQXR0cmlidXRl KCdvcGVuJyk7CiAgICAgICAgZWxzZSBpZiAoc2F2ZWQgPT09ICdhdWYnKSBkZXQuc2V0QXR0cmli dXRlKCdvcGVuJywgJycpOwogICAgICAgIGRldC5hZGRFdmVudExpc3RlbmVyKCd0b2dnbGUnLCBm dW5jdGlvbigpIHsKICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oa2V5LCBkZXQub3Bl biA/ICdhdWYnIDogJ3p1Jyk7CiAgICAgICAgfSk7CiAgICB9KTsKfQoKLy8gPT09PT0gQWRtaW46 IEZlYXR1cmUtVG9nZ2xlcyA9PT09PQoKLy8gZmVhdHVyZUxhYmVscyB3aXJkIGF1Y2ggYXVzIGFw cC5qcyBnZWxlc2VuIChUb2FzdC1NZWxkdW5nIGJlaW0gVG9nZ2xlLQovLyBLbGljayksIGRlc2hh bGIgZXhwbGl6aXQgZXhwb3J0aWVydC4gTmljaHQgaW4gZGVyIFBhc3MtVGhyb3VnaC0KLy8gUmUt RXhwb3J0LUxpc3RlLCB3ZWlsIGRpZSBEZWZpbml0aW9uIGhpZXIgaW4gYWRtaW4uanMgc2l0enQu CmV4cG9ydCB2YXIgZmVhdHVyZUxhYmVscyA9IHsKICAgIHNjaGljaHRmb2xnZW46IHsgbGFiZWw6 ICdTY2hpY2h0Zm9sZ2VuLUFuemVpZ2UnLCBiZXNjaHJlaWJ1bmc6ICdaZWlndCBkaWUgU2NoaWNo dHJvdGF0aW9uIHBybyBTdGFuZG9ydCBpbSBIZWFkZXIgYW4nIH0sCiAgICBzdGFlcmtlQW56ZWln ZTogeyBsYWJlbDogJ1N0w6Rya2UtQW56ZWlnZScsIGJlc2NocmVpYnVuZzogJ0Z8U3xOIEJlc2V0 enVuZ3N6w6RobGVyIHBybyBUYWcgaW0gUGxhbnVuZ3MtSGVhZGVyJyB9LAogICAgcnVoZXplaXRQ cnVlZnVuZzogeyBsYWJlbDogJ1J1aGV6ZWl0LVByw7xmdW5nJywgYmVzY2hyZWlidW5nOiAnV2Fy bnVuZyBiZWkgPCAxMWggUnVoZXplaXQgendpc2NoZW4gU2NoaWNodGVuJyB9LAogICAgZnJlbWRB ZW5kZXJ1bmdXYXJudW5nOiB7IGxhYmVsOiAnRnJlbWQtw4RuZGVydW5nIFdhcm51bmcnLCBiZXNj aHJlaWJ1bmc6ICdCZXN0w6R0aWd1bmcgYmVpbSDDhG5kZXJuIGRlciBTY2hpY2h0IGFuZGVyZXIg UGVyc29uZW4nIH0sCiAgICB1bnRlcmJlc2V0enVuZ1dhcm51bmc6IHsgbGFiZWw6ICdVbnRlcmJl c2V0enVuZ3MtV2FybnVuZyAoV2FjaGxlaXR1bmcpJywgYmVzY2hyZWlidW5nOiAnQmVpbSBMb2dp biBmw7xyIEdydXBwZSBMIChXYWNobGVpdHVuZykgdW5kIFN1cGVyVXNlcjogVG9hc3QgbWl0IEFu emFobCBUYWdlIG1pdCBGw7xocnVuZ3MtVW50ZXJiZXNldHp1bmcgaW4gZGVuIG7DpGNoc3RlbiA0 IFdvY2hlbiArIFNwcnVuZyB6dW0gZXJzdGVuIFRhZycgfSwKICAgIGZhaXJuZXNzQW56ZWlnZTog eyBsYWJlbDogJ0ZhaXJuZXNzLUFuemVpZ2UnLCBiZXNjaHJlaWJ1bmc6ICdXRS0vRmVpZXJ0YWdz LUZhaXJuZXNzIGluIGRlciBTdGF0aXN0aWsnIH0sCiAgICAvLyBtdXN0ZXJBbmFseXNlICsgYWJ3 ZXNlbmhlaXRLYWNoZWxuIGFtIDIwMjYtMDUtMTkgZW50ZmVybnQg4oCUIGRpZSB6dWdlaG9lcmln ZW4KICAgIC8vIFBhbmVscyBnaWJ0IGVzIGltIGFrdHVlbGxlbiBTdGF0aXN0aWstTGF5b3V0IG5p Y2h0IG1laHIgKE11c3RlciBpc3QgaW4gZGllCiAgICAvLyBQcm9zYS1EZXRhaWxhbmFseXNlIGF1 ZmdlZ2FuZ2VuLCBBYndlc2VuaGVpdCBpc3QgZWluIEthdGVnb3JpZS1GaWx0ZXIgaW4KICAgIC8v IGRlbiBTY2hpY2h0dmVydGVpbHVuZ3MtQmFsa2VuKS4gZmVhdHVyZUlzdEFrdGl2KCkgd3VyZGUg ZGFmdWVyIG9obmVoaW4KICAgIC8vIG5pZSBhdWZnZXJ1ZmVuLCBkZXIgVG9nZ2xlIHdhciBEZWFk LUxldHRlci1VSS4KICAgIGRldGFpbFRhYmVsbGU6IHsgbGFiZWw6ICdEZXRhaWwtVGFiZWxsZScs IGJlc2NocmVpYnVuZzogJ0F1c2tsYXBwYmFyZSDDnGJlcnNpY2h0c3RhYmVsbGUgcHJvIFBlcnNv bicgfSwKICAgIHBlcnNvbmFsSW5saW5lRWRpdDogeyBsYWJlbDogJ1BlcnNvbmFsOiBJbmxpbmUt RWRpdCcsIGJlc2NocmVpYnVuZzogJ0RvcHBlbGtsaWNrIGF1ZiBUYWJlbGxlbi1aZWxsZW4gZXJs YXVidCBkaXJla3RlcyBCZWFyYmVpdGVuIChOYW1lLCBWb3JuYW1lLCBEaWVuc3RudW1tZXIsIE9F LCBUZWxlZm9uKScgfSwKICAgIGVtYWlsQXV0b1N1ZmZpeDogeyBsYWJlbDogJ0UtTWFpbDogQXV0 by1TdWZmaXgnLCBiZXNjaHJlaWJ1bmc6ICdXZW5uIGJlaW0gU3BlaWNoZXJuIGVpbmVyIEUtTWFp bCBrZWluICJAIiBlbnRoYWx0ZW4gaXN0LCB3aXJkIGRpZSBEb21haW4gYXVzIGRlbiBFaW5zdGVs bHVuZ2VuIGF1dG9tYXRpc2NoIGFuZ2Vow6RuZ3QnIH0sCiAgICBrb2xsZWdlbkhlcnZvcmhlYmVu OiB7IGxhYmVsOiAnUGVyc29uLUVkaXQ6IERpcmVrdGUgS29sbGVnZW4gaGVydm9yaGViZW4nLCBi ZXNjaHJlaWJ1bmc6ICdJbSBFZGl0aWVyLUJlcmVjaHRpZ3VuZ3MtQmxvY2sgd2VyZGVuIFBlcnNv bmVuIG1pdCBnbGVpY2hlciBPRStEaWVuc3RncnVwcGUgYWxzICJEaXJla3RlIEtvbGxlZ2VuIiBh Ymdlc2V0enQnIH0sCiAgICBwYXBpZXJrb3JiVUk6IHsgbGFiZWw6ICdQZXJzb25hbHZlcndhbHR1 bmc6IFBhcGllcmtvcmItVUknLCBiZXNjaHJlaWJ1bmc6ICdGaWx0ZXIgIlBhcGllcmtvcmIgZWlu YmxlbmRlbiIgKyBMZWJlbnN6eWtsdXMtQnV0dG9ucyBpbSBQZXJzb24tTW9kYWwuIFNjaGVtYS1I b29rcyAoZ2Vsb2VzY2h0QW0pIGJsZWliZW4gdW5hYmjDpG5naWcgdm9tIFRvZ2dsZSBha3Rpdicg fSwKICAgIHBlclBlcnNvblNpY2h0YmFya2VpdDogeyBsYWJlbDogJ1Byby1QZXJzb24tU2ljaHRi YXJrZWl0JywgYmVzY2hyZWlidW5nOiAnSW0gUGVyc29uLU1vZGFsIChTVS1vbmx5KSBsYXNzZW4g c2ljaCBMb2didWNoLSB1bmQgU3RhdGlzdGlrLVNpY2h0YmFya2VpdCBwcm8gUGVyc29uIMO8YmVy c2NocmVpYmVuIChTdGFuZGFyZC9TaWNodGJhci9WZXJzdGVja3QpJyB9LAogICAgc3RhdGlzdGlr QW5vbnltOiB7IGxhYmVsOiAnU3RhdGlzdGlrOiBBbm9ueW1pc2llcnVuZycsIGJlc2NocmVpYnVu ZzogJ1BlcnNvbmVuIHdlcmRlbiBpbiBkZXIgU3RhdGlzdGlrIGFscyAiUGVyc29uIDEsIFBlcnNv biAyIOKApiIgc3RhdHQgbWl0IEtsYXJuYW1lbiBhbmdlemVpZ3QnIH0sCiAgICBzb25kZXJ0ZXJt aW5lV2ljaHRpZzogeyBsYWJlbDogJ1NvbmRlcnRlcm1pbmU6IFdpY2h0aWctRmxhZycsIGJlc2No cmVpYnVuZzogJ05ldWUgU3BhbHRlICJNYXJraWVydW5nIiBpbSBTb25kZXJ0ZXJtaW5lLVRhYjsg bWFya2llcnRlIFRhZ2UgYmVrb21tZW4gZWluZW4gYm9yZGVhdXhyb3RlbiBSYWhtZW4gaW0gR3Jp ZCcgfSwKICAgIGZlaWVydGFnZVdpY2h0aWdCZXRvbmVuOiB7IGxhYmVsOiAnRmVpZXJ0YWdlOiDi gJ5XaWNodGlnIi1IZXJ2b3JoZWJ1bmcnLCBiZXNjaHJlaWJ1bmc6ICdQcm8gRmVpZXJ0YWcgaW0g QWRtaW4tS2FsZW5kZXIgYWxzIOKAnldpY2h0aWciIG1hcmtpZXJ0ZSBUYWdlIGJla29tbWVuIGVp bmUgZ29sZGVuZSBCb2RlbmxpbmllIGltIEtvcGZiZXJlaWNoLiBBVVMgPSBXaWNodGlnLU1hcmtp ZXJ1bmcgd2lyZCBpZ25vcmllcnQsIGFsbGUgRmVpZXJ0YWdlIGVyc2NoZWluZW4gZWluaGVpdGxp Y2gnIH0sCn07CgpmdW5jdGlvbiBmZWF0dXJlc1JlbmRlcm4oKSB7CiAgICB2YXIgZmVhdHVyZXMg PSBaLmFkbWluLmZlYXR1cmVzIHx8IHt9OwogICAgdmFyIGh0bWwgPSAnPGRpdiBzdHlsZT0iZGlz cGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtnYXA6OHB4O21heC13aWR0aDo2MDBweCI+ JzsKCiAgICBPYmplY3Qua2V5cyhmZWF0dXJlTGFiZWxzKS5mb3JFYWNoKGZ1bmN0aW9uKGtleSkg ewogICAgICAgIHZhciBmbCA9IGZlYXR1cmVMYWJlbHNba2V5XTsKICAgICAgICB2YXIgYWt0aXYg PSBmZWF0dXJlSXN0QWt0aXYoa2V5KTsKICAgICAgICBodG1sICs9ICc8bGFiZWwgY2xhc3M9ImZl YXR1cmUtdG9nZ2xlLXplaWxlIiBzdHlsZT0iZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRl cjtnYXA6MTJweDtwYWRkaW5nOjEwcHggMTRweDsnICsKICAgICAgICAgICAgJ2JhY2tncm91bmQ6 dmFyKC0tYmctY2FyZCk7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1ib3JkZXItbGlnaHQpO2JvcmRl ci1yYWRpdXM6OHB4O2N1cnNvcjpwb2ludGVyIj4nICsKICAgICAgICAgICAgJzxpbnB1dCB0eXBl PSJjaGVja2JveCIgY2xhc3M9ImZlYXR1cmUtY2hlY2tib3giIGRhdGEtZmVhdHVyZT0iJyArIGtl eSArICciJyArIChha3RpdiA/ICcgY2hlY2tlZCcgOiAnJykgKwogICAgICAgICAgICAnIHN0eWxl PSJ3aWR0aDoxOHB4O2hlaWdodDoxOHB4O2FjY2VudC1jb2xvcjp2YXIoLS1mYXJiZS1lcmZvbGcp O2N1cnNvcjpwb2ludGVyIj4nICsKICAgICAgICAgICAgJzxkaXYgc3R5bGU9ImZsZXg6MSI+PGRp diBzdHlsZT0iZm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxM3B4O2NvbG9yOnZhcigtLXRleHQt aGVhZGluZykiPicgKwogICAgICAgICAgICBlc2NhcGVIVE1MKGZsLmxhYmVsKSArICc8L2Rpdj4n ICsKICAgICAgICAgICAgJzxkaXYgc3R5bGU9ImZvbnQtc2l6ZToxMXB4O2NvbG9yOnZhcigtLXRl eHQtbXV0ZWQpIj4nICsgZXNjYXBlSFRNTChmbC5iZXNjaHJlaWJ1bmcpICsgJzwvZGl2PjwvZGl2 PicgKwogICAgICAgICAgICAnPHNwYW4gY2xhc3M9ImZlYXR1cmUtc3RhdHVzIiBzdHlsZT0iZm9u dC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NjAwO3BhZGRpbmc6M3B4IDhweDtib3JkZXItcmFkaXVz OjRweDsnICsKICAgICAgICAgICAgKGFrdGl2ID8gJ2JhY2tncm91bmQ6cmdiYSgzOSwxMzcsMTA5 LDAuMTIpO2NvbG9yOnZhcigtLWZhcmJlLWVyZm9sZykiPkFOJyA6ICdiYWNrZ3JvdW5kOnJnYmEo MTc2LDU4LDQ2LDAuMSk7Y29sb3I6dmFyKC0tZmFyYmUtZmVobGVyKSI+QVVTJykgKwogICAgICAg ICAgICAnPC9zcGFuPjwvbGFiZWw+JzsKICAgIH0pOwoKICAgIGh0bWwgKz0gJzwvZGl2Pic7CiAg ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZmVhdHVyZXMtaW5oYWx0JykuaW5uZXJIVE1MID0g aHRtbDsKfQoKdmFyIGZlYXR1cmVEZWZhdWx0cyA9IHsKICAgIGZhaXJuZXNzQW56ZWlnZTogZmFs c2UsCiAgICAvLyBJbmxpbmUtRWRpdCArIFBhcGllcmtvcmItVUkgYWIgMjAyNi0wNS0xOSBzdGFu ZGFyZG1hZXNzaWcgQU4sIGRhbWl0CiAgICAvLyBTdXBlclVzZXIgZGlyZWt0IGF1cyBkZXIgUGVy c29uYWx2ZXJ3YWx0dW5nIGhlcmF1cyBsb2VzY2hlbiB1bmQKICAgIC8vIEZlbGRlciBvaG5lIE1v ZGFsLVVtd2VnIGFlbmRlcm4ga29lbm5lbiDigJQgdm9yaGVyIG11c3N0ZSBkZXIgVG9nZ2xlCiAg ICAvLyBleHBsaXppdCB1bWdlbGVndCB3ZXJkZW4sIHdhcyBpbSBMaXZlLVRlc3QgaXJyaXRpZXJ0 ZS4KICAgIHBlcnNvbmFsSW5saW5lRWRpdDogdHJ1ZSwKICAgIGVtYWlsQXV0b1N1ZmZpeDogZmFs c2UsCiAgICBrb2xsZWdlbkhlcnZvcmhlYmVuOiBmYWxzZSwKICAgIHBhcGllcmtvcmJVSTogdHJ1 ZSwKICAgIHBlclBlcnNvblNpY2h0YmFya2VpdDogZmFsc2UsCiAgICBzdGF0aXN0aWtBbm9ueW06 IGZhbHNlLAogICAgc29uZGVydGVybWluZVdpY2h0aWc6IGZhbHNlLAogICAgZmVpZXJ0YWdlV2lj aHRpZ0JldG9uZW46IHRydWUKfTsKZnVuY3Rpb24gZmVhdHVyZUlzdEFrdGl2KGtleSkgewogICAg dmFyIGYgPSBaLmFkbWluLmZlYXR1cmVzIHx8IHt9OwogICAgaWYgKGtleSBpbiBmKSByZXR1cm4g ISFmW2tleV07CiAgICByZXR1cm4gZmVhdHVyZURlZmF1bHRzW2tleV0gIT09IHVuZGVmaW5lZCA/ IGZlYXR1cmVEZWZhdWx0c1trZXldIDogdHJ1ZTsKfQoKLy8gPT09PT0gQWRtaW46IFN1cGVyVXNl ci1WZXJ3YWx0dW5nICsgRmFjaGF1ZnNpY2h0ID09PT09Ci8vIFBoYXNlIDktQiBDMTogbmFjaCBW STMvanMvYWRtaW5fcm9sbGVuLmpzIGF1c2dlbGFnZXJ0IChGdW5rdGlvbmVuCi8vIHN1cGVyVXNl clJlbmRlcm4vLUF1c1RhYmVsbGVMZXNlbiwgZmFjaGF1ZnNpY2h0UmVuZGVybiB1bmQgYWxsZQov LyBTdWItU2ljaHQtL1BsYW4tL0RldGFpbC1Nb2RhbC1IZWxmZXIgcGx1cyBkaWUgRkFDSEFVRlNJ Q0hUXyotCi8vIEtvbnN0YW50ZW4pLiBhcHAuanMgaW1wb3J0aWVydCBhYiBQaGFzZSA5LUIgQzUg ZGlyZWt0IGF1cwovLyBhZG1pbl9yb2xsZW4uanMuIHN0YXRpc3Rpay5qcyBudXR6dCBudXIgZmVh dHVyZUlzdEFrdGl2LAovLyBkYXMgaW0gQm9vdHN0cmFwLUJlcmVpY2ggdm9uIGFkbWluLmpzIHZl cmJsZWlidC4KCi8vID09PT09IFplbnRyYWxlciBEaXJ0eS1UcmFja2VyID09PT09Ci8vIERJUlRZ LVJlZ2lzdHJ5ICsgZGlydHlSZWdpc3RyaWVyZS9kaXJ0eVNldHplbi9kaXJ0eUlzdC9kaXJ0eUtl bm50LwovLyBkaXJ0eUFrdGl2ZS9kaXJ0eVBydWVmZW4vZGlydHlTcGVpY2hlcm4gLT4ganMvdWkv ZGlhbG9nLmpzCi8vCi8vIFRhYi1zcGV6aWZpc2NoZSBSZWdpc3RyYXRpb25lbiArIERPTS1FdmVu dC1MaXN0ZW5lciBibGVpYmVuIGhpZXIKLy8gKHdhbmRlcnQgaW4gUGhhc2UgOCBuYWNoIGFkbWlu L2FkbWluLmpzIHp1c2FtbWVuIG1pdCBkZW4gQWRtaW4tVGFicykuCgovLyBBYndhZXJ0c2tvbXBh dGlibGUgRmFjaGF1ZnNpY2h0LUFkYXB0ZXIgKGZhY2hhdWZzaWNodERpcnR5U2V0emVuLwovLyBm YWNoYXVmc2ljaHRJc3REaXJ0eSkgbGViZW4gc2VpdCBQaGFzZSA5LUIgQzEgaW4gYWRtaW5fcm9s bGVuLmpzLgoKLy8gWmVudHJhbGUgUmVnaXN0cmllcnVuZyBhbGxlciBkaXJ0eS1mYWVoaWdlbiBB ZG1pbi1TZWt0aW9uZW4gKyBnbG9iYWxlcgovLyBJbnB1dC9DaGFuZ2UtTGlzdGVuZXIuIFdpcmQg ZWlubWFsaWcgYXVzIGV2ZW50TGlzdGVuZXJFaW5yaWNodGVuCi8vIGF1ZmdlcnVmZW4uIE1hcHBp bmcgdm9uIERPTS1FbGVtZW50IHp1IERpcnR5LUtleToKLy8gICAxLiBTZWN0aW9uLmlkICJhZG1p bi1zZWt0aW9uLTxrZXk+IiAgIChmZWllcnRhZ2UsIGZlcmllbiwgc3VwZXJ1c2VyLCBmYWNoYXVm c2ljaHQsIOKApikKLy8gICAyLiBUYWJlbGxlLmlkICI8a2V5Pi10YWJlbGxlIiAgICAgICAgKEZh bGxiYWNrIGZ1ZXIgVGFicyBvaG5lIFNla3Rpb25lbikKLy8gICAzLiBUYWIuaWQgImFkbWluLXRh Yi08a2V5PiIgICAgICAgICAgKGdlbmVyZWxsZXIgRmFsbGJhY2spCi8vIFByYWdtYXRpc2NoZXIg TGlzdGVuLURpZmYgZnVlciBjaGFuZ2VTdW1tYXJ5LiBWZXJnbGVpY2h0IGFsdGUgKFNlcnZlci0p TGlzdGUKLy8gbWl0IG5ldWVyIChET00tKUxpc3RlIGF1ZiBJZGVudGl0YWV0IHZpYSBpZEZlbGQg KyBGZWxkd2VydC1BZW5kZXJ1bmdlbi4KLy8gTGllZmVydCBtYXggbWF4WmVpbGVuIEJlc2NocmVp YnVuZ2VuICsgZ2dmLiAiKCtOIHdlaXRlcmUpIi4KZnVuY3Rpb24gYWRtaW5MaXN0ZURpZmYoYWx0 TGlzdGUsIG5ldUxpc3RlLCBpZEZlbGQsIGxhYmVsRm4sIG1heFplaWxlbikgewogICAgYWx0TGlz dGUgPSBhbHRMaXN0ZSB8fCBbXTsgbmV1TGlzdGUgPSBuZXVMaXN0ZSB8fCBbXTsgbWF4WmVpbGVu ID0gbWF4WmVpbGVuIHx8IDY7CiAgICB2YXIgYWx0TWFwID0ge307CiAgICBhbHRMaXN0ZS5mb3JF YWNoKGZ1bmN0aW9uKGl0LCBpKSB7IGFsdE1hcFtTdHJpbmcoaXRbaWRGZWxkXSAhPSBudWxsID8g aXRbaWRGZWxkXSA6ICdAJyArIGkpXSA9IGl0OyB9KTsKICAgIHZhciBuZXVNYXAgPSB7fTsKICAg IG5ldUxpc3RlLmZvckVhY2goZnVuY3Rpb24oaXQsIGkpIHsgbmV1TWFwW1N0cmluZyhpdFtpZEZl bGRdICE9IG51bGwgPyBpdFtpZEZlbGRdIDogJ0AnICsgaSldID0gaXQ7IH0pOwogICAgdmFyIHpl aWxlbiA9IFtdOwogICAgT2JqZWN0LmtleXMobmV1TWFwKS5mb3JFYWNoKGZ1bmN0aW9uKGspIHsK ICAgICAgICB2YXIgbiA9IG5ldU1hcFtrXTsgdmFyIGEgPSBhbHRNYXBba107CiAgICAgICAgaWYg KCFhKSB7IHplaWxlbi5wdXNoKCdOZXU6ICcgKyBsYWJlbEZuKG4pKTsgcmV0dXJuOyB9CiAgICAg ICAgdmFyIGRpZmZGZWxkZXIgPSBbXTsKICAgICAgICBPYmplY3Qua2V5cyhuKS5mb3JFYWNoKGZ1 bmN0aW9uKGYpIHsKICAgICAgICAgICAgaWYgKGYgPT09IGlkRmVsZCkgcmV0dXJuOwogICAgICAg ICAgICB2YXIgYXYgPSBhW2ZdOyB2YXIgbnYgPSBuW2ZdOwogICAgICAgICAgICAvLyBUaWVmZXIg VmVyZ2xlaWNoIG51ciBmdWVyIHByaW1pdGl2ZSBXZXJ0ZSAvIEpTT04tdmVyZ2xlaWNoIGZ1ZXIg T2JqZWN0cwogICAgICAgICAgICB2YXIgdW50ZXJzY2hpZWQgPSAodHlwZW9mIGF2ID09PSAnb2Jq ZWN0JyB8fCB0eXBlb2YgbnYgPT09ICdvYmplY3QnKQogICAgICAgICAgICAgICAgPyBKU09OLnN0 cmluZ2lmeShhdikgIT09IEpTT04uc3RyaW5naWZ5KG52KQogICAgICAgICAgICAgICAgOiAoYXYg fHwgJycpICE9PSAobnYgfHwgJycpOwogICAgICAgICAgICBpZiAodW50ZXJzY2hpZWQpIGRpZmZG ZWxkZXIucHVzaChmKTsKICAgICAgICB9KTsKICAgICAgICBpZiAoZGlmZkZlbGRlci5sZW5ndGgp IHplaWxlbi5wdXNoKGxhYmVsRm4obikgKyAnIOKAlCAnICsgZGlmZkZlbGRlci5qb2luKCcsICcp ICsgJyBnZWFlbmRlcnQnKTsKICAgIH0pOwogICAgT2JqZWN0LmtleXMoYWx0TWFwKS5mb3JFYWNo KGZ1bmN0aW9uKGspIHsKICAgICAgICBpZiAoIW5ldU1hcFtrXSkgemVpbGVuLnB1c2goJ0dlbG9l c2NodDogJyArIGxhYmVsRm4oYWx0TWFwW2tdKSk7CiAgICB9KTsKICAgIGlmICh6ZWlsZW4ubGVu Z3RoID4gbWF4WmVpbGVuKSB7CiAgICAgICAgdmFyIHJlc3QgPSB6ZWlsZW4ubGVuZ3RoIC0gbWF4 WmVpbGVuOwogICAgICAgIHplaWxlbiA9IHplaWxlbi5zbGljZSgwLCBtYXhaZWlsZW4pOwogICAg ICAgIHplaWxlbi5wdXNoKCfigKYgdW5kICcgKyByZXN0ICsgJyB3ZWl0ZXJlIEFlbmRlcnVuZycg KyAocmVzdCA9PT0gMSA/ICcnIDogJ2VuJykpOwogICAgfQogICAgcmV0dXJuIHplaWxlbjsKfQoK ZnVuY3Rpb24gZGlydHlUcmFja2VyRWlucmljaHRlbigpIHsKICAgIC8vIGNoYW5nZVN1bW1hcnkt RnVua3Rpb25lbiBsZXNlbiBha3R1ZWxsZW4gRE9NLVN0YW5kIHZpYSBkaWUgamV3ZWlsaWdlbgog ICAgLy8gKkF1c1RhYmVsbGVMZXNlbi1SZWFkZXIgdW5kIHZlcmdsZWljaGVuIG1pdCBaLmFkbWlu LlggKFNlcnZlci1TdGFuZCkuCiAgICAvLyBXZW5uIGVpbiBSZWFkZXIgbm9jaCBuaWNodCBnZXJl bmRlcnQgaXN0IChUYWIgbm9jaCBuaWUgZ2VvZWZmbmV0KSwKICAgIC8vIHdpcmQgdHJ5L2NhdGNo IGltIGRpcnR5UHJ1ZWZlbi1EaWFsb2cgZ2VmYW5nZW4gdW5kIGRlciBUYWIgbnVyIG1pdAogICAg Ly8gTGFiZWwgZ2V6ZWlndC4KICAgIGRpcnR5UmVnaXN0cmllcmUoJ2ZhY2hhdWZzaWNodCcsICAg ICB7IGxhYmVsOiAnRmFjaGF1ZnNpY2h0JywgICAgICAgYnRuSWQ6ICdidG4tZmFjaGF1ZnNpY2h0 LXNwZWljaGVybicsIGhpbnRJZDogJ2ZhY2hhdWZzaWNodC1kaXJ0eS1oaW53ZWlzJyB9KTsKICAg IGRpcnR5UmVnaXN0cmllcmUoJ2RpcmVrdGlvbnNsZWl0dW5nJyx7IGxhYmVsOiAnRGlyZWt0aW9u c2xlaXR1bmcnLCAgYnRuSWQ6ICdidG4tZGlyZWt0aW9uc2xlaXR1bmctc3BlaWNoZXJuJywgaGlu dElkOiAnZGlyZWt0aW9uc2xlaXR1bmctZGlydHktaGlud2VpcycgfSk7CiAgICBkaXJ0eVJlZ2lz dHJpZXJlKCdmdWVocnVuZ3NzdGVsbGUnLCAgeyBsYWJlbDogJ0bDvGhydW5nc3N0ZWxsZScsICAg ICBidG5JZDogJ2J0bi1mdWVocnVuZ3NzdGVsbGUtc3BlaWNoZXJuJywgIGhpbnRJZDogJ2Z1ZWhy dW5nc3N0ZWxsZS1kaXJ0eS1oaW53ZWlzJyB9KTsKICAgIGRpcnR5UmVnaXN0cmllcmUoJ3N1cGVy dXNlcicsICAgICAgeyBsYWJlbDogJ1N1cGVyVXNlci1MaXN0ZScsICAgIGJ0bklkOiAnYnRuLXN1 cGVydXNlci1zcGVpY2hlcm4nIH0pOwogICAgLy8gSGVscGVyLCBkZXIgZGVuIGFrdHVlbGxlbiBE aWVuc3RncnVwcGVuLURPTS1TdGFuZCBhbHMgQXJyYXkgdm9uCiAgICAvLyBQbGFpbi1PYmplY3Rz IGxpZXN0LiBXaWVkZXJ2ZXJ3ZW5kZXQgZnVlciBjaGFuZ2VTdW1tYXJ5LCBzbmFwc2hvdEZuLgog ICAgZnVuY3Rpb24gZ3J1cHBlbkF1c0RPTUxlc2VuKCkgewogICAgICAgIHZhciBuZXUgPSBbXTsK ICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuZ3J1cHBlLWt1ZXJ6ZWwtaW5wdXQn KS5mb3JFYWNoKGZ1bmN0aW9uKGlucCkgewogICAgICAgICAgICB2YXIgaWR4ID0gcGFyc2VJbnQo aW5wLmdldEF0dHJpYnV0ZSgnZGF0YS1pZHgnKSk7CiAgICAgICAgICAgIHZhciBpbnBsQ2IgID0g ZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmdydXBwZS1pbnBsYW51bmctaW5wdXRbZGF0YS1pZHg9 IicgKyBpZHggKyAnIl0nKTsKICAgICAgICAgICAgdmFyIGRhcmZBcENiID0gZG9jdW1lbnQucXVl cnlTZWxlY3RvcignLmdydXBwZS1kYXJmYXAtaW5wdXRbZGF0YS1pZHg9IicgKyBpZHggKyAnIl0n KTsKICAgICAgICAgICAgbmV1LnB1c2goewogICAgICAgICAgICAgICAgbmFtZTogaW5wLnZhbHVl LAogICAgICAgICAgICAgICAgX2FsdEt1ZXJ6ZWw6IGlucC5nZXRBdHRyaWJ1dGUoJ2RhdGEtYWx0 JykgfHwgJycsCiAgICAgICAgICAgICAgICBiZXplaWNobnVuZzogKGRvY3VtZW50LnF1ZXJ5U2Vs ZWN0b3IoJy5ncnVwcGUtYmV6LWlucHV0W2RhdGEtaWR4PSInICsgaWR4ICsgJyJdJykgfHwge30p LnZhbHVlIHx8ICcnLAogICAgICAgICAgICAgICAgaGludGVyZ3J1bmQ6IChkb2N1bWVudC5xdWVy eVNlbGVjdG9yKCcuZ3J1cHBlLWhnLWlucHV0W2RhdGEtaWR4PSInICsgaWR4ICsgJyJdJykgfHwg e30pLnZhbHVlIHx8ICcnLAogICAgICAgICAgICAgICAgc2NocmlmdDogICAgIChkb2N1bWVudC5x dWVyeVNlbGVjdG9yKCcuZ3J1cHBlLXNmLWlucHV0W2RhdGEtaWR4PSInICsgaWR4ICsgJyJdJykg fHwge30pLnZhbHVlIHx8ICcnLAogICAgICAgICAgICAgICAgLy8gRGVmYXVsdDogc2ljaHRiYXIu IE51ciBleHBsaXppdCBhdWYgZmFsc2Ugd2VubiBDaGVja2JveCBhYmdld2FlaGx0LgogICAgICAg ICAgICAgICAgaW5QbGFudW5nOiAgIGlucGxDYiA/ICEhaW5wbENiLmNoZWNrZWQgOiB0cnVlLAog ICAgICAgICAgICAgICAgLy8gRGVmYXVsdDogZXJsYXVidC4gUGVuZGFudCB6dXIgaW5QbGFudW5n LUxvZ2lrLgogICAgICAgICAgICAgICAgZGFyZkFuc3ByZWNocGFydG5lcjogZGFyZkFwQ2IgPyAh IWRhcmZBcENiLmNoZWNrZWQgOiB0cnVlCiAgICAgICAgICAgIH0pOwogICAgICAgIH0pOwogICAg ICAgIHJldHVybiBuZXU7CiAgICB9CiAgICBkaXJ0eVJlZ2lzdHJpZXJlKCdncnVwcGVuJywgICAg ICAgIHsKICAgICAgICBsYWJlbDogJ0RpZW5zdGdydXBwZW4nLAogICAgICAgIGJ0bklkOiAnYnRu LWdydXBwZW4tc3BlaWNoZXJuJywKICAgICAgICBjaGFuZ2VTdW1tYXJ5OiBmdW5jdGlvbigpIHsK ICAgICAgICAgICAgdmFyIG5ldSA9IGdydXBwZW5BdXNET01MZXNlbigpLm1hcChmdW5jdGlvbihn KSB7IHJldHVybiB7IF9pZDogZy5fYWx0S3VlcnplbCB8fCAoJ0BuZXUnICsgZy5uYW1lKSwgbmFt ZTogZy5uYW1lLCBiZXplaWNobnVuZzogZy5iZXplaWNobnVuZywgaGludGVyZ3J1bmQ6IGcuaGlu dGVyZ3J1bmQsIHNjaHJpZnQ6IGcuc2NocmlmdCwgaW5QbGFudW5nOiBnLmluUGxhbnVuZyAhPT0g ZmFsc2UsIGRhcmZBbnNwcmVjaHBhcnRuZXI6IGcuZGFyZkFuc3ByZWNocGFydG5lciAhPT0gZmFs c2UgfTsgfSk7CiAgICAgICAgICAgIHZhciBhbHQgPSAoWi5hZG1pbi5ncnVwcGVuIHx8IFtdKS5t YXAoZnVuY3Rpb24oZykgeyByZXR1cm4geyBfaWQ6IGcubmFtZSwgbmFtZTogZy5uYW1lLCBiZXpl aWNobnVuZzogZy5iZXplaWNobnVuZyB8fCAnJywgaGludGVyZ3J1bmQ6IGcuaGludGVyZ3J1bmQg fHwgJycsIHNjaHJpZnQ6IGcuc2NocmlmdCB8fCAnJywgaW5QbGFudW5nOiBnLmluUGxhbnVuZyAh PT0gZmFsc2UsIGRhcmZBbnNwcmVjaHBhcnRuZXI6IGcuZGFyZkFuc3ByZWNocGFydG5lciAhPT0g ZmFsc2UgfTsgfSk7CiAgICAgICAgICAgIHJldHVybiBhZG1pbkxpc3RlRGlmZihhbHQsIG5ldSwg J19pZCcsIGZ1bmN0aW9uKGcpIHsgcmV0dXJuICdHcnVwcGUgJyArIChnLm5hbWUgfHwgJyhsZWVy KScpOyB9KTsKICAgICAgICB9LAogICAgICAgIC8vIEF1dG8tU2F2ZTogc25hcHNob3RGbiBsaWVm ZXJ0IGRlbiBET00tU3RhbmQgenVtIFBlcnNpc3RpZXJlbiBhbHMKICAgICAgICAvLyBEcmFmdDsg cmVzdG9yZUZuIHNjaHJlaWJ0IGVpbmVuIERyYWZ0IHdpZWRlciBpbiBkZW4gU3RhdGUgKyBSZW5k ZXIuCiAgICAgICAgZHJhZnRLZXk6ICdncnVwcGVuJywKICAgICAgICBzbmFwc2hvdEZuOiBmdW5j dGlvbigpIHsgcmV0dXJuIGdydXBwZW5BdXNET01MZXNlbigpOyB9LAogICAgICAgIHJlc3RvcmVG bjogZnVuY3Rpb24oZGF0ZW4pIHsKICAgICAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGRhdGVu KSkgcmV0dXJuOwogICAgICAgICAgICBaLmFkbWluLmdydXBwZW4gPSBkYXRlbi5tYXAoZnVuY3Rp b24oZykgewogICAgICAgICAgICAgICAgcmV0dXJuIHsgbmFtZTogZy5uYW1lLCBiZXplaWNobnVu ZzogZy5iZXplaWNobnVuZywgaGludGVyZ3J1bmQ6IGcuaGludGVyZ3J1bmQsIHNjaHJpZnQ6IGcu c2NocmlmdCwgaW5QbGFudW5nOiBnLmluUGxhbnVuZyAhPT0gZmFsc2UsIGRhcmZBbnNwcmVjaHBh cnRuZXI6IGcuZGFyZkFuc3ByZWNocGFydG5lciAhPT0gZmFsc2UgfTsKICAgICAgICAgICAgfSk7 CiAgICAgICAgICAgIGdydXBwZW5UYWJlbGxlUmVuZGVybigpOwogICAgICAgIH0KICAgIH0pOwog ICAgZGlydHlSZWdpc3RyaWVyZSgnZmVpZXJ0YWdlJywgICAgICB7IGxhYmVsOiAnRmVpZXJ0YWdl JywgICAgICAgICAgYnRuSWQ6ICdidG4tZmVpZXJ0YWdlLXNwZWljaGVybicgfSk7CiAgICBkaXJ0 eVJlZ2lzdHJpZXJlKCdmZXJpZW4nLCAgICAgICAgIHsKICAgICAgICBsYWJlbDogJ0Zlcmllbics CiAgICAgICAgYnRuSWQ6ICdidG4tZmVyaWVuLXNwZWljaGVybicsCiAgICAgICAgY2hhbmdlU3Vt bWFyeTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHZhciBuZXUgPSBmZXJpZW5BdXNUYWJlbGxl TGVzZW4oKS5tYXAoZnVuY3Rpb24oZiwgaSkgewogICAgICAgICAgICAgICAgcmV0dXJuIHsgX2lk OiBmLm5hbWUgfHwgZi52b24gfHwgKCdAJyArIGkpLCB2b246IGYudm9uIHx8ICcnLCBiaXM6IGYu YmlzIHx8ICcnLCBuYW1lOiBmLm5hbWUgfHwgJycgfTsKICAgICAgICAgICAgfSk7CiAgICAgICAg ICAgIHZhciBhbHQgPSAoWi5hZG1pbi5mZXJpZW4gfHwgW10pLm1hcChmdW5jdGlvbihmLCBpKSB7 IHJldHVybiB7IF9pZDogZi5uYW1lIHx8IGYudm9uIHx8ICgnQCcgKyBpKSwgdm9uOiBmLnZvbiB8 fCAnJywgYmlzOiBmLmJpcyB8fCAnJywgbmFtZTogZi5uYW1lIHx8ICcnIH07IH0pOwogICAgICAg ICAgICByZXR1cm4gYWRtaW5MaXN0ZURpZmYoYWx0LCBuZXUsICdfaWQnLCBmdW5jdGlvbihmKSB7 IHJldHVybiBmLm5hbWUgfHwgJyh1bmJlbmFubnQpJzsgfSk7CiAgICAgICAgfSwKICAgICAgICBk cmFmdEtleTogJ2ZlcmllbicsCiAgICAgICAgc25hcHNob3RGbjogZnVuY3Rpb24oKSB7IHJldHVy biBmZXJpZW5BdXNUYWJlbGxlTGVzZW4oKTsgfSwKICAgICAgICByZXN0b3JlRm46IGZ1bmN0aW9u KGRhdGVuKSB7CiAgICAgICAgICAgIGlmICghQXJyYXkuaXNBcnJheShkYXRlbikpIHJldHVybjsK ICAgICAgICAgICAgWi5hZG1pbi5mZXJpZW4gPSBkYXRlbjsKICAgICAgICAgICAgZmVyaWVuVGFi ZWxsZVJlbmRlcm4oKTsKICAgICAgICB9CiAgICB9KTsKICAgIGRpcnR5UmVnaXN0cmllcmUoJ3N0 YW5kb3J0ZScsICAgICAgewogICAgICAgIGxhYmVsOiAnU3RhbmRvcnRlICYgU2NoaWNodGZvbGdl JywKICAgICAgICBidG5JZDogJ2J0bi1zdGFuZG9ydGUtc3BlaWNoZXJuJywKICAgICAgICBjaGFu Z2VTdW1tYXJ5OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgLy8gc3RhbmRvcnRlQXVzVGFiZWxs ZUxlc2VuIGxpZWZlcnQga29tcGxldHRlIFN0YW5kb3J0LU9iamVrdGU7CiAgICAgICAgICAgIC8v IHdpciByZWR1emllcmVuIGF1ZiBkaWUgZnVlciBkZW4gVXNlciBzaWNodGJhcmVuIEZlbGRlci4K ICAgICAgICAgICAgdmFyIG5ldSA9ICh0eXBlb2Ygc3RhbmRvcnRlQXVzVGFiZWxsZUxlc2VuID09 PSAnZnVuY3Rpb24nID8gc3RhbmRvcnRlQXVzVGFiZWxsZUxlc2VuKCkgOiBbXSkKICAgICAgICAg ICAgICAgIC5tYXAoZnVuY3Rpb24ocykgeyByZXR1cm4geyBfaWQ6IHMua3VlcnplbCB8fCBzLm5h bWUsIG5hbWU6IHMubmFtZSB8fCAnJywga3VlcnplbDogcy5rdWVyemVsIHx8ICcnLCBpc3RQb29s OiAhIXMuaXN0UG9vbCB9OyB9KTsKICAgICAgICAgICAgdmFyIGFsdCA9IChaLmFkbWluLnN0YW5k b3J0ZSB8fCBbXSkubWFwKGZ1bmN0aW9uKHMpIHsgcmV0dXJuIHsgX2lkOiBzLmt1ZXJ6ZWwgfHwg cy5uYW1lLCBuYW1lOiBzLm5hbWUgfHwgJycsIGt1ZXJ6ZWw6IHMua3VlcnplbCB8fCAnJywgaXN0 UG9vbDogISFzLmlzdFBvb2wgfTsgfSk7CiAgICAgICAgICAgIHJldHVybiBhZG1pbkxpc3RlRGlm ZihhbHQsIG5ldSwgJ19pZCcsIGZ1bmN0aW9uKHMpIHsgcmV0dXJuICdTdGFuZG9ydCAnICsgKHMu bmFtZSB8fCBzLmt1ZXJ6ZWwgfHwgJyhsZWVyKScpOyB9KTsKICAgICAgICB9LAogICAgICAgIGRy YWZ0S2V5OiAnc3RhbmRvcnRlJywKICAgICAgICBzbmFwc2hvdEZuOiBmdW5jdGlvbigpIHsgcmV0 dXJuIHR5cGVvZiBzdGFuZG9ydGVBdXNUYWJlbGxlTGVzZW4gPT09ICdmdW5jdGlvbicgPyBzdGFu ZG9ydGVBdXNUYWJlbGxlTGVzZW4oKSA6IG51bGw7IH0sCiAgICAgICAgcmVzdG9yZUZuOiBmdW5j dGlvbihkYXRlbikgewogICAgICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoZGF0ZW4pKSByZXR1 cm47CiAgICAgICAgICAgIFouYWRtaW4uc3RhbmRvcnRlID0gZGF0ZW47CiAgICAgICAgICAgIHN0 YW5kb3J0ZVJlbmRlcm4oKTsKICAgICAgICB9CiAgICB9KTsKICAgIGRpcnR5UmVnaXN0cmllcmUo J2VpbnN0ZWxsdW5nZW4nLCAgeyBsYWJlbDogJ0tvbmZpZ3VyYXRpb24nLCAgICAgIGJ0bklkOiAn YnRuLWVpbnN0ZWxsdW5nZW4tc3BlaWNoZXJuJyB9KTsKICAgIGRpcnR5UmVnaXN0cmllcmUoJ2Jl emVpY2hudW5nZW4nLCAgeyBsYWJlbDogJ0Jlc2NocmlmdHVuZ2VuJywgICAgIGJ0bklkOiAnYnRu LWJlemVpY2hudW5nZW4tc3BlaWNoZXJuJyB9KTsKICAgIGRpcnR5UmVnaXN0cmllcmUoJ2luZm9o aWxmZScsICAgICAgeyBsYWJlbDogJ0luZm9ybWF0aW9uICYgSGlsZmUnLCBidG5JZDogJ2J0bi1p bmZvaGlsZmUtc3BlaWNoZXJuJyB9KTsKCiAgICAvLyBEZWJvdW5jZS1UaW1lciBwcm8gVGFiIGZ1 ZXIgQXV0by1TYXZlIGluIGxvY2FsU3RvcmFnZSAoUGhhc2UgOSkuCiAgICAvLyBXaXJkIGJlaW0g ZXJzdGVuIGlucHV0L2NoYW5nZS1FdmVudCBpbiBlaW5lbSBUYWIgZ2VzdGFydGV0OyBuYWNoCiAg ICAvLyAycyBvaG5lIHdlaXRlcmVuIElucHV0IHNjaHJlaWJ0IGVzIGRlbiBTbmFwc2hvdCBpbiB2 aTMudGFiRHJhZnRzLgogICAgdmFyIGRyYWZ0VGltZXIgPSB7fTsKICAgIHZhciBEUkFGVF9ERUJP VU5DRV9NUyA9IDIwMDA7CiAgICBmdW5jdGlvbiBkcmFmdFNjaGVkdWxlU2F2ZSh0YWJLZXkpIHsK ICAgICAgICB2YXIgaW5mbyA9IGRpcnR5RWludHJhZyh0YWJLZXkpOwogICAgICAgIGlmICghaW5m byB8fCAhaW5mby5kcmFmdEtleSB8fCB0eXBlb2YgaW5mby5zbmFwc2hvdEZuICE9PSAnZnVuY3Rp b24nKSByZXR1cm47CiAgICAgICAgaWYgKGRyYWZ0VGltZXJbdGFiS2V5XSkgY2xlYXJUaW1lb3V0 KGRyYWZ0VGltZXJbdGFiS2V5XSk7CiAgICAgICAgZHJhZnRUaW1lclt0YWJLZXldID0gc2V0VGlt ZW91dChmdW5jdGlvbigpIHsKICAgICAgICAgICAgZHJhZnRUaW1lclt0YWJLZXldID0gbnVsbDsK ICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgIHZhciBkYXRlbiA9IGluZm8uc25hcHNo b3RGbigpOwogICAgICAgICAgICAgICAgaWYgKGRhdGVuID09IG51bGwpIHJldHVybjsKICAgICAg ICAgICAgICAgIHRhYkRyYWZ0U3BlaWNoZXJuKGluZm8uZHJhZnRLZXksIGRhdGVuLCAwKTsKICAg ICAgICAgICAgfSBjYXRjaCAoZSkgewogICAgICAgICAgICAgICAgLy8gU25hcHNob3Qga2FubiBm ZWhsc2NobGFnZW4gd2VubiBET00gdW5lcndhcnRldCBhdXNzaWVodCDigJQKICAgICAgICAgICAg ICAgIC8vIGRhbm4gZWJlbiBrZWluIERyYWZ0LiBTZXJ2ZXItU2F2ZSBibGVpYnQgZGVyIHp1dmVy bGFlc3NpZ2UgV2VnLgogICAgICAgICAgICB9CiAgICAgICAgfSwgRFJBRlRfREVCT1VOQ0VfTVMp OwogICAgfQoKICAgIGZ1bmN0aW9uIG1hcmtpZXJlQXVzRXZlbnQoZSkgewogICAgICAgIGlmICgh ZS50YXJnZXQpIHJldHVybjsKICAgICAgICAvLyBJbm5lcmhhbGIgZGVzIEltcGVyc29uYXRpb24t QmFubmVycyBvZGVyIGVpbmVzIE1vZGFsLUluaGFsdHM6CiAgICAgICAgLy8gbmljaHQgaW5zIFRh Yi1EaXJ0eS1UcmFja2luZyBlaW5taXNjaGVuLgogICAgICAgIGlmIChlLnRhcmdldC5jbG9zZXN0 KCcjaW1wZXJzb25hdGUtYmFubmVyJykpIHJldHVybjsKICAgICAgICBpZiAoZS50YXJnZXQuY2xv c2VzdCgnI21vZGFsLW92ZXJsYXknKSkgcmV0dXJuOwogICAgICAgIHZhciBzZWt0aW9uID0gZS50 YXJnZXQuY2xvc2VzdCgnLmFkbWluLXNla3Rpb24nKTsKICAgICAgICBpZiAoc2VrdGlvbiAmJiBz ZWt0aW9uLmlkKSB7CiAgICAgICAgICAgIHZhciBrMSA9IHNla3Rpb24uaWQucmVwbGFjZSgnYWRt aW4tc2VrdGlvbi0nLCAnJyk7CiAgICAgICAgICAgIGlmIChkaXJ0eUtlbm50KGsxKSkgeyBkaXJ0 eVNldHplbihrMSwgdHJ1ZSk7IGRyYWZ0U2NoZWR1bGVTYXZlKGsxKTsgcmV0dXJuOyB9CiAgICAg ICAgfQogICAgICAgIHZhciB0YWJlbGxlID0gZS50YXJnZXQuY2xvc2VzdCgnLmFkbWluLXRhYmVs bGUnKTsKICAgICAgICBpZiAodGFiZWxsZSAmJiB0YWJlbGxlLmlkKSB7CiAgICAgICAgICAgIHZh ciBrMiA9IHRhYmVsbGUuaWQucmVwbGFjZSgnLXRhYmVsbGUnLCAnJyk7CiAgICAgICAgICAgIGlm IChkaXJ0eUtlbm50KGsyKSkgeyBkaXJ0eVNldHplbihrMiwgdHJ1ZSk7IGRyYWZ0U2NoZWR1bGVT YXZlKGsyKTsgcmV0dXJuOyB9CiAgICAgICAgfQogICAgICAgIHZhciB0YWIgPSBlLnRhcmdldC5j bG9zZXN0KCcuYWRtaW4tdGFiJyk7CiAgICAgICAgaWYgKHRhYiAmJiB0YWIuaWQpIHsKICAgICAg ICAgICAgdmFyIGszID0gdGFiLmlkLnJlcGxhY2UoJ2FkbWluLXRhYi0nLCAnJyk7CiAgICAgICAg ICAgIGlmIChkaXJ0eUtlbm50KGszKSkgeyBkaXJ0eVNldHplbihrMywgdHJ1ZSk7IGRyYWZ0U2No ZWR1bGVTYXZlKGszKTsgfQogICAgICAgIH0KICAgIH0KICAgIGRvY3VtZW50LmFkZEV2ZW50TGlz dGVuZXIoJ2lucHV0JywgbWFya2llcmVBdXNFdmVudCk7CiAgICBkb2N1bWVudC5hZGRFdmVudExp c3RlbmVyKCdjaGFuZ2UnLCBtYXJraWVyZUF1c0V2ZW50KTsKCiAgICAvLyBDbGVhbnVwIHZlcmFs dGV0ZXIgRHJhZnRzIGJlaW0gSW5pdCAoc2VsYmVyIDE0LVRhZ2UtVFRMIHdpZSBNb2RhbC1FbnR3 dWVyZmUpLgogICAgdGFiRHJhZnRBdXRvQ2xlYW51cCgpOwoKICAgIC8vIEJyb3dzZXItV2FybnVu ZyBiZWltIFNjaGxpZXNzZW4vUmVsb2FkIGRlciBTZWl0ZSwgd2VubiBpcmdlbmRlaW4KICAgIC8v IEFkbWluLVRhYiBub2NoIGRpcnR5IGlzdC4gRGVyIFRleHQgaXN0IG1pdHRsZXJ3ZWlsZSBicm93 c2Vyc2VpdGlnCiAgICAvLyBzdGFuZGFyZGlzaWVydCAoa2VpbiBDdXN0b20tVGV4dCBtZWhyKSDi gJQgcmVpY2h0IGFscyBIaW53ZWlzLgogICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2JlZm9y ZXVubG9hZCcsIGZ1bmN0aW9uKGUpIHsKICAgICAgICBpZiAoZGlydHlBa3RpdmUoKS5sZW5ndGgg PiAwKSB7CiAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgZS5yZXR1 cm5WYWx1ZSA9ICcnOwogICAgICAgICAgICByZXR1cm4gJyc7CiAgICAgICAgfQogICAgfSk7Cn0K Ci8vID09PT09IFBoYXNlIDkg4oCUIERyYWZ0LVJlc3RvcmUtQmFubmVyID09PT09Ci8vCi8vIFdp cmQgYmVpbSBPZWZmbmVuIGRlcyBBZG1pbi1CZXJlaWNocyB1bmQgYmVpbSBUYWItV2VjaHNlbCBh dWZnZXJ1ZmVuLgovLyBQcnVlZnQsIG9iIGZ1ZXIgZGVuIGFrdHVlbGwgYWt0aXZlbiBUYWIgZWlu IERyYWZ0IGltIGxvY2FsU3RvcmFnZSBsaWVndCwKLy8gdW5kIGJpZXRldCB2aWEgQmFubmVyIFdp ZWRlcmhlcnN0ZWxsZW4gLyBWZXJ3ZXJmZW4gYW4uIEJhbm5lci1FbGVtZW50Ci8vIGxlYnQgc3Rh dGlzY2ggaW0gaW5kZXguaHRtbCAoI2FkbWluLWRyYWZ0LWJhbm5lcikuIFJlc3RvcmUgcnVmdCBk aWUKLy8gdm9tIFRhYiByZWdpc3RyaWVydGUgcmVzdG9yZUZuIGF1ZiwgZGFuYWNoIERyYWZ0IGxv ZXNjaGVuIChlciBpc3QgamV0enQKLy8gaW0gRE9NIGFrdGl2LCBkaXJ0eS1UcmFja2luZyBuaW1t dCBpaG4gYWIgZGEgbGl2ZSBtaXQpLgpleHBvcnQgZnVuY3Rpb24gYWRtaW5EcmFmdEJhbm5lckFu YmlldGVuKHRhYktleSkgewogICAgdmFyIGJhbm5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk KCdhZG1pbi1kcmFmdC1iYW5uZXInKTsKICAgIGlmICghYmFubmVyKSByZXR1cm47CiAgICBiYW5u ZXIuY2xhc3NMaXN0LmFkZCgndmVyc3RlY2t0Jyk7CiAgICBpZiAoIXRhYktleSkgcmV0dXJuOwog ICAgdmFyIGluZm8gPSBkaXJ0eUVpbnRyYWcodGFiS2V5KTsKICAgIGlmICghaW5mbyB8fCAhaW5m by5kcmFmdEtleSB8fCB0eXBlb2YgaW5mby5yZXN0b3JlRm4gIT09ICdmdW5jdGlvbicpIHJldHVy bjsKICAgIHZhciBkcmFmdCA9IHRhYkRyYWZ0RnVlcihpbmZvLmRyYWZ0S2V5KTsKICAgIGlmICgh ZHJhZnQpIHJldHVybjsKICAgIHZhciBhbHRlciA9ICcnOwogICAgdHJ5IHsKICAgICAgICB2YXIg ZCA9IG5ldyBEYXRlKGRyYWZ0LnRzKTsKICAgICAgICB2YXIgcGFkID0gZnVuY3Rpb24obikgeyBy ZXR1cm4gKG4gPCAxMCA/ICcwJyA6ICcnKSArIG47IH07CiAgICAgICAgYWx0ZXIgPSBwYWQoZC5n ZXREYXRlKCkpICsgJy4nICsgcGFkKGQuZ2V0TW9udGgoKSArIDEpICsgJy4gJyArIHBhZChkLmdl dEhvdXJzKCkpICsgJzonICsgcGFkKGQuZ2V0TWludXRlcygpKTsKICAgIH0gY2F0Y2ggKGUpIHsg YWx0ZXIgPSAnKFplaXRwdW5rdCB1bmJla2FubnQpJzsgfQogICAgdmFyIHRleHQgPSBkb2N1bWVu dC5nZXRFbGVtZW50QnlJZCgnYWRtaW4tZHJhZnQtYmFubmVyLXRleHQnKTsKICAgIGlmICh0ZXh0 KSB7CiAgICAgICAgdGV4dC5pbm5lckhUTUwgPSAnSW0gVGFiIDxzdHJvbmc+JyArIGVzY2FwZUhU TUwoaW5mby5sYWJlbCkgKwogICAgICAgICAgICAnPC9zdHJvbmc+IGxpZWd0IGVpbiBuaWNodCBh bnMgU3lzdGVtIGdlc2VuZGV0ZXIgU3RhbmQgdm9tIDxzdHJvbmc+JyArCiAgICAgICAgICAgIGVz Y2FwZUhUTUwoYWx0ZXIpICsgJzwvc3Ryb25nPi4gV2llZGVyaGVyc3RlbGxlbiBvZGVyIHZlcndl cmZlbj8nOwogICAgfQogICAgdmFyIGJ0blIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWRt aW4tZHJhZnQtcmVzdG9yZScpOwogICAgdmFyIGJ0blYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ ZCgnYWRtaW4tZHJhZnQtdmVyd2VyZmVuJyk7CiAgICBpZiAoYnRuUikgewogICAgICAgIC8vIE5l dWVyIENsaWNrLUhhbmRsZXIgb2huZSBMaXN0ZW5lci1Ba2t1bXVsYXRpb246IEVsZW1lbnQgY2xv bmVuLgogICAgICAgIHZhciBjbG9uZWRSID0gYnRuUi5jbG9uZU5vZGUodHJ1ZSk7CiAgICAgICAg YnRuUi5wYXJlbnROb2RlLnJlcGxhY2VDaGlsZChjbG9uZWRSLCBidG5SKTsKICAgICAgICBjbG9u ZWRSLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHRy eSB7IGluZm8ucmVzdG9yZUZuKGRyYWZ0LmRhdGVuKTsgfSBjYXRjaCAoZSkgeyB0b2FzdCgnRHJh ZnQga29ubnRlIG5pY2h0IHdpZWRlcmhlcmdlc3RlbGx0IHdlcmRlbjogJyArIGUubWVzc2FnZSwg J2ZlaGxlcicpOyByZXR1cm47IH0KICAgICAgICAgICAgZGlydHlTZXR6ZW4odGFiS2V5LCB0cnVl KTsKICAgICAgICAgICAgYmFubmVyLmNsYXNzTGlzdC5hZGQoJ3ZlcnN0ZWNrdCcpOwogICAgICAg ICAgICB0b2FzdCgnU3RhbmQgd2llZGVyaGVyZ2VzdGVsbHQg4oCUIGJpdHRlIHNwZWljaGVybics ICdpbmZvJyk7CiAgICAgICAgfSk7CiAgICB9CiAgICBpZiAoYnRuVikgewogICAgICAgIHZhciBj bG9uZWRWID0gYnRuVi5jbG9uZU5vZGUodHJ1ZSk7CiAgICAgICAgYnRuVi5wYXJlbnROb2RlLnJl cGxhY2VDaGlsZChjbG9uZWRWLCBidG5WKTsKICAgICAgICBjbG9uZWRWLmFkZEV2ZW50TGlzdGVu ZXIoJ2NsaWNrJywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHRhYkRyYWZ0TG9lc2NoZW4oaW5m by5kcmFmdEtleSk7CiAgICAgICAgICAgIGJhbm5lci5jbGFzc0xpc3QuYWRkKCd2ZXJzdGVja3Qn KTsKICAgICAgICB9KTsKICAgIH0KICAgIGJhbm5lci5jbGFzc0xpc3QucmVtb3ZlKCd2ZXJzdGVj a3QnKTsKfQoKLy8gPT09PT0gQWRtaW46IEJlemVpY2hudW5nZW4gJiBMaXN0ZW4gKERpZW5zdGdy YWRlICsgRnVua3Rpb25lbikgPT09PT0KLy8gU3RhbW0tTGlzdGVuLCBkaWUgZnJ1ZWhlcmUgQ29k ZS1Lb25zdGFudGVuIGVyc2V0emVuLiBMaWVnZW4gaW4KLy8gWi5hZG1pbi5kaWVuc3RncmFkZSAo QXJyYXkgb2YgU3RyaW5nKSB1bmQgWi5hZG1pbi5mdW5rdGlvbmVuCi8vIChBcnJheSBvZiB7IGNv ZGUsIHJhbmcgfSkuIEVkaXRvciBpbiBBZG1pbiAtPiBCZXplaWNobnVuZ2VuICYgTGlzdGVuLgoK ZnVuY3Rpb24gbGlzdGVuUmVuZGVybigpIHsKICAgIGxpc3RlbkRpZW5zdGdyYWRlUmVuZGVybigp OwogICAgbGlzdGVuRnVua3Rpb25lblJlbmRlcm4oKTsKfQoKLy8gPT09PT0gQWRtaW46IE1pa3Jv dGVhbS1FZGl0b3IgPT09PT0KLy8gWi5hZG1pbi5taWtyb3RlYW1zID0gW3sgaWQsIG5hbWUsIHN0 YW5kb3J0LCBncnVwcGUsIHBlcnNvbklkczogW10gfV0KCmZ1bmN0aW9uIG1pa3JvdGVhbXNSZW5k ZXJuKCkgewogICAgdmFyIHRib2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21pa3JvdGVh bXMtdGJvZHknKTsKICAgIGlmICghdGJvZHkpIHJldHVybjsKICAgIHZhciBsaXN0ZSA9IChaLmFk bWluLm1pa3JvdGVhbXMgfHwgW10pOwogICAgaWYgKCFsaXN0ZS5sZW5ndGgpIHsKICAgICAgICB0 Ym9keS5pbm5lckhUTUwgPSBhZG1pbkVtcHR5WmVpbGUoNywgJ1x1ezFGOTFEfScsCiAgICAgICAg ICAgICdOb2NoIGtlaW5lIE1pa3JvdGVhbXMgYW5nZWxlZ3QnLAogICAgICAgICAgICAnTWlrcm90 ZWFtcyBncnVwcGllcmVuIFBlcnNvbmVuLCBkaWUgcmVnZWxtYWVzc2lnIHp1c2FtbWVuIHBsYW5l biDigJQgei5CLiBlaW5lIFN0cmVpZmUgb2RlciBlaW4gMmVyLVRlYW0uIE1pdGdsaWVkZXIgZWlu ZXMgTWlrcm90ZWFtcyBkdWVyZmVuIGRpZSBTY2hpY2h0ZW4gZGVyIGFuZGVyZW4gVGVhbS1QZXJz b25lbiBtaXQtcGxhbmVuLiBMZWcgZGFzIGVyc3RlIG9iZW4gbWl0IOKAnk5ldWVzIE1pa3JvdGVh bSIgYW4uJyk7CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgdmFyIHN0YW5kb3J0ZSA9IChaLmFk bWluLnN0YW5kb3J0ZSB8fCBbXSkubWFwKGZ1bmN0aW9uKHMpIHsgcmV0dXJuIHMua3VlcnplbCB8 fCBzLm5hbWU7IH0pLmZpbHRlcihCb29sZWFuKTsKICAgIHZhciBncnVwcGVuICAgPSAoWi5hZG1p bi5ncnVwcGVuICAgfHwgW10pLm1hcChmdW5jdGlvbihnKSB7IHJldHVybiBnLm5hbWU7IH0pLmZp bHRlcihCb29sZWFuKTsKICAgIGZ1bmN0aW9uIGRyb3Bkb3duKGtsYXNzZSwgbmFtZSwgb3B0aW9u ZW4sIGN1cnJlbnQpIHsKICAgICAgICB2YXIgb3B0cyA9IG9wdGlvbmVuLm1hcChmdW5jdGlvbihv KSB7CiAgICAgICAgICAgIHJldHVybiAnPG9wdGlvbiB2YWx1ZT0iJyArIGVzY2FwZUF0dHIobykg KyAnIicgKyAobyA9PT0gY3VycmVudCA/ICcgc2VsZWN0ZWQnIDogJycpICsgJz4nICsgZXNjYXBl SFRNTChvKSArICc8L29wdGlvbj4nOwogICAgICAgIH0pLmpvaW4oJycpOwogICAgICAgIHJldHVy biAnPHNlbGVjdCBjbGFzcz0iJyArIGtsYXNzZSArICciIGRhdGEtbmFtZT0iJyArIGVzY2FwZUF0 dHIobmFtZSkgKyAnIiBzdHlsZT0id2lkdGg6MTAwJSI+JyArCiAgICAgICAgICAgICc8b3B0aW9u IHZhbHVlPSIiJyArIChjdXJyZW50ID8gJycgOiAnIHNlbGVjdGVkJykgKyAnPuKAlDwvb3B0aW9u PicgKyBvcHRzICsKICAgICAgICAnPC9zZWxlY3Q+JzsKICAgIH0KICAgIHZhciBodG1sID0gJyc7 CiAgICBsaXN0ZS5mb3JFYWNoKGZ1bmN0aW9uKHQsIGkpIHsKICAgICAgICB2YXIgcGVyc29uZW5B bnphaGwgPSAodC5wZXJzb25JZHMgfHwgW10pLmxlbmd0aDsKICAgICAgICBodG1sICs9ICc8dHIg ZGF0YS1pZHg9IicgKyBpICsgJyI+JyArCiAgICAgICAgICAgICc8dGQgc3R5bGU9InRleHQtYWxp Z246Y2VudGVyO2NvbG9yOnZhcigtLXRleHQtbXV0ZWQpO2ZvbnQtd2VpZ2h0OjcwMCI+JyArIChp ICsgMSkgKyAnPC90ZD4nICsKICAgICAgICAgICAgJzx0ZD48aW5wdXQgdHlwZT0idGV4dCIgY2xh c3M9Im10LWlucHV0IiBkYXRhLWZlbGQ9ImlkIiB2YWx1ZT0iJyArIGVzY2FwZUF0dHIodC5pZCB8 fCAnJykgKyAnIiBwbGFjZWhvbGRlcj0idF9LQV9BIiBzdHlsZT0id2lkdGg6MTAwJTtmb250LWZh bWlseTptb25vc3BhY2U7Zm9udC1zaXplOjExcHgiPjwvdGQ+JyArCiAgICAgICAgICAgICc8dGQ+ PGlucHV0IHR5cGU9InRleHQiIGNsYXNzPSJtdC1pbnB1dCIgZGF0YS1mZWxkPSJuYW1lIiB2YWx1 ZT0iJyArIGVzY2FwZUF0dHIodC5uYW1lIHx8ICcnKSArICciIHBsYWNlaG9sZGVyPSJ6LkIuIEth bWVuLUEiIHN0eWxlPSJ3aWR0aDoxMDAlIj48L3RkPicgKwogICAgICAgICAgICAnPHRkPicgKyBk cm9wZG93bignbXQtaW5wdXQnLCAnc3RhbmRvcnQnLCBzdGFuZG9ydGUsIHQuc3RhbmRvcnQgfHwg JycpICsgJzwvdGQ+JyArCiAgICAgICAgICAgICc8dGQ+JyArIGRyb3Bkb3duKCdtdC1pbnB1dCcs ICdncnVwcGUnLCAgIGdydXBwZW4sICAgdC5ncnVwcGUgICB8fCAnJykgKyAnPC90ZD4nICsKICAg ICAgICAgICAgJzx0ZCBzdHlsZT0idGV4dC1hbGlnbjpjZW50ZXIiPjxzcGFuIGNsYXNzPSJtdC1w ZXJzb25lbi16YWhsIiBkYXRhLWlkeD0iJyArIGkgKyAnIj4nICsgcGVyc29uZW5BbnphaGwgKyAn PC9zcGFuPjwvdGQ+JyArCiAgICAgICAgICAgICc8dGQgc3R5bGU9IndoaXRlLXNwYWNlOm5vd3Jh cCI+JyArCiAgICAgICAgICAgICAgICAnPGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1zZWsgYnRuLWts ZWluIiBkYXRhLWFrdGlvbj0ibXQtcGVyc29uZW4iIGRhdGEtaWR4PSInICsgaSArICciIHRpdGxl PSJQZXJzb25lbiB6dXdlaXNlbiI+UGVyc29uZW7igKY8L2J1dHRvbj4gJyArCiAgICAgICAgICAg ICAgICAoaSA+IDAgICAgICAgICAgICAgID8gJzxidXR0b24gY2xhc3M9ImJ0biBidG4tc2VrIGJ0 bi1rbGVpbiIgZGF0YS1ha3Rpb249Im10LXVwIiBkYXRhLWlkeD0iJyArIGkgKyAnIiB0aXRsZT0i SG9laGVyIj7ihpE8L2J1dHRvbj4nIDogJycpICsKICAgICAgICAgICAgICAgIChpIDwgbGlzdGUu bGVuZ3RoLTEgPyAnIDxidXR0b24gY2xhc3M9ImJ0biBidG4tc2VrIGJ0bi1rbGVpbiIgZGF0YS1h a3Rpb249Im10LWRvd24iIGRhdGEtaWR4PSInICsgaSArICciIHRpdGxlPSJUaWVmZXIiPuKGkzwv YnV0dG9uPicgOiAnJykgKwogICAgICAgICAgICAgICAgJyA8YnV0dG9uIGNsYXNzPSJidG4gYnRu LWdlZmFociBidG4ta2xlaW4iIGRhdGEtYWt0aW9uPSJtdC1sb2VzY2hlbiIgZGF0YS1pZHg9Iicg KyBpICsgJyIgdGl0bGU9IkxvZXNjaGVuIj7DlzwvYnV0dG9uPicgKwogICAgICAgICAgICAnPC90 ZD4nICsKICAgICAgICAgICAgJzwvdHI+JzsKICAgIH0pOwogICAgLy8gRW1wdHktU3RhdGUgd2ly ZCBhbSBGdW5rdGlvbnMtQW5mYW5nIGJlaGFuZGVsdCAoZnJ1ZWhlciBSZXR1cm4pOwogICAgLy8g ZGllc2VyIHRvdGUgRmFsbGJhY2sgaXN0IG1pdCBQaGFzZSA1IG9ic29sZXQgZ2V3b3JkZW4uCiAg ICB0Ym9keS5pbm5lckhUTUwgPSBodG1sOwp9CgovLyBMaWVzdCBkaWUgRWluZ2FiZWZlbGRlciBh dXMgZGVyIE1pa3JvdGVhbXMtVGFiZWxsZS4gUGVyc29uZW4tTGlzdGVuCi8vIHBmbGVndCBkaWUg RnVua3Rpb24gbWlrcm90ZWFtUGVyc29uZW5EaWFsb2cgc2VwYXJhdCBpbiBaLmFkbWluLm1pa3Jv dGVhbXMsCi8vIGhpZXIgZGVzaGFsYiBudXIgU3RhbW0tRmVsZGVyLgpmdW5jdGlvbiBtaWtyb3Rl YW1zQXVzVGFiZWxsZUxlc2VuKCkgewogICAgdmFyIGxpc3RlID0gKFouYWRtaW4ubWlrcm90ZWFt cyB8fCBbXSkuc2xpY2UoKTsKICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJyNtaWtyb3Rl YW1zLXRib2R5IHRyW2RhdGEtaWR4XScpLmZvckVhY2goZnVuY3Rpb24odHIpIHsKICAgICAgICB2 YXIgaWR4ID0gcGFyc2VJbnQodHIuZ2V0QXR0cmlidXRlKCdkYXRhLWlkeCcpLCAxMCk7CiAgICAg ICAgaWYgKGlzTmFOKGlkeCkgfHwgIWxpc3RlW2lkeF0pIHJldHVybjsKICAgICAgICB0ci5xdWVy eVNlbGVjdG9yQWxsKCcubXQtaW5wdXQnKS5mb3JFYWNoKGZ1bmN0aW9uKGVsKSB7CiAgICAgICAg ICAgIHZhciBmZWxkID0gZWwuZ2V0QXR0cmlidXRlKCdkYXRhLWZlbGQnKSB8fCBlbC5nZXRBdHRy aWJ1dGUoJ2RhdGEtbmFtZScpOwogICAgICAgICAgICBpZiAoIWZlbGQpIHJldHVybjsKICAgICAg ICAgICAgbGlzdGVbaWR4XVtmZWxkXSA9IGVsLnZhbHVlOwogICAgICAgIH0pOwogICAgfSk7CiAg ICByZXR1cm4gbGlzdGU7Cn0KCi8vIFBlcnNvbmVuLUF1c3dhaGwtTW9kYWwgZnVlciBlaW4gTWlr cm90ZWFtLgpmdW5jdGlvbiBtaWtyb3RlYW1QZXJzb25lbkRpYWxvZyhpZHgpIHsKICAgIFouYWRt aW4ubWlrcm90ZWFtcyA9IG1pa3JvdGVhbXNBdXNUYWJlbGxlTGVzZW4oKTsKICAgIHZhciB0ID0g Wi5hZG1pbi5taWtyb3RlYW1zW2lkeF07CiAgICBpZiAoIXQpIHJldHVybjsKICAgIHZhciBwZXJz b25lbiA9IChaLnBsYW51bmcucGVyc29uZW4gfHwgW10pLmZpbHRlcihmdW5jdGlvbihwKSB7IHJl dHVybiBwLmFrdGl2OyB9KQogICAgICAgIC5zbGljZSgpLnNvcnQoZnVuY3Rpb24oYSwgYikgeyBy ZXR1cm4gKChhLm5hbWUgfHwgJycpICsgKGEudm9ybmFtZSB8fCAnJykpLmxvY2FsZUNvbXBhcmUo KGIubmFtZSB8fCAnJykgKyAoYi52b3JuYW1lIHx8ICcnKSwgJ2RlJyk7IH0pOwogICAgdmFyIGFr dGl2ZSA9IG5ldyBTZXQoKHQucGVyc29uSWRzIHx8IFtdKS5tYXAoZnVuY3Rpb24oeCkgeyByZXR1 cm4gTnVtYmVyKHgpOyB9KSk7CgogICAgdmFyIGh0bWwgPSAnPHAgY2xhc3M9ImV2bS1iZXNjaHJl aWJ1bmciPlBlcnNvbmVuLCBkaWUgenVtIE1pa3JvdGVhbSDigJ48Yj4nICsgZXNjYXBlSFRNTCh0 Lm5hbWUgfHwgdC5pZCB8fCAnKG9obmUgTmFtZSknKSArICc8L2I+IiBnZWhvZXJlbi4gQXVzd2Fo bCBnaWx0IGZ1ZXIgU3RhdGlzdGlrIChNaWtyb3RlYW0tSGVhdG1hcCArIFRhZ2VzLUFudGVpbGUp LjwvcD4nICsKICAgICAgICAnPGRpdiBzdHlsZT0iZGlzcGxheTpmbGV4O2dhcDo4cHg7bWFyZ2lu LWJvdHRvbTo4cHgiPicgKwogICAgICAgICAgICAnPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNz PSJidG4gYnRuLWtsZWluIiBpZD0ibXQtcGVycy1hbGxlIj5BbGxlIG1hcmtpZXJlbjwvYnV0dG9u PicgKwogICAgICAgICAgICAnPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4gYnRuLWts ZWluIiBpZD0ibXQtcGVycy1rZWluZSI+QXVzd2FobCBsZWVyZW48L2J1dHRvbj4nICsKICAgICAg ICAnPC9kaXY+JyArCiAgICAgICAgJzxkaXYgc3R5bGU9Im1heC1oZWlnaHQ6MzgwcHg7b3ZlcmZs b3c6YXV0bztib3JkZXI6MXB4IHNvbGlkIHZhcigtLWJvcmRlci1saWdodCk7Ym9yZGVyLXJhZGl1 czo0cHg7cGFkZGluZzo4cHgiPic7CiAgICBwZXJzb25lbi5mb3JFYWNoKGZ1bmN0aW9uKHApIHsK ICAgICAgICB2YXIgbGFiZWwgPSAoKHAudm9ybmFtZSA/IHAudm9ybmFtZSArICcgJyA6ICcnKSAr IChwLm5hbWUgfHwgJycpKS50cmltKCkgKyAnIMK3ICcgKyAocC5ncnVwcGUgfHwgJz8nKSArICcg wrcgJyArIChwLm9lIHx8ICc/Jyk7CiAgICAgICAgaHRtbCArPSAnPGxhYmVsIHN0eWxlPSJkaXNw bGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDo2cHg7Y3Vyc29yOnBvaW50ZXI7cGFkZGlu ZzoycHggNHB4Ij4nICsKICAgICAgICAgICAgJzxpbnB1dCB0eXBlPSJjaGVja2JveCIgY2xhc3M9 Im10LXBlcnMtY2hrIiBkYXRhLWlkPSInICsgcC5pZCArICciJyArIChha3RpdmUuaGFzKE51bWJl cihwLmlkKSkgPyAnIGNoZWNrZWQnIDogJycpICsgJz4nICsKICAgICAgICAgICAgJzxzcGFuPicg KyBlc2NhcGVIVE1MKGxhYmVsKSArICc8L3NwYW4+JyArCiAgICAgICAgJzwvbGFiZWw+JzsKICAg IH0pOwogICAgaHRtbCArPSAnPC9kaXY+JzsKCiAgICB2YXIgZnVzcyA9ICc8YnV0dG9uIGNsYXNz PSJidG4iIGlkPSJtdC1wZXJzLWFiYnIiIHR5cGU9ImJ1dHRvbiI+QWJicmVjaGVuPC9idXR0b24+ JyArCiAgICAgICAgICAgICAgICc8YnV0dG9uIGNsYXNzPSJidG4gYnRuLXByaW1hZXIiIGlkPSJk bGctc3BlaWNoZXJuIiB0eXBlPSJidXR0b24iPsOcYmVybmVobWVuPC9idXR0b24+JzsKICAgIG1v ZGFsWmVpZ2VuKCdQZXJzb25lbiDigJQgJyArICh0Lm5hbWUgfHwgdC5pZCksIGh0bWwsIGZ1c3Ms IGZ1bmN0aW9uKCkgewogICAgICAgIHZhciBpZHMgPSBbXTsKICAgICAgICBkb2N1bWVudC5xdWVy eVNlbGVjdG9yQWxsKCcubXQtcGVycy1jaGsnKS5mb3JFYWNoKGZ1bmN0aW9uKGMpIHsKICAgICAg ICAgICAgaWYgKGMuY2hlY2tlZCkgaWRzLnB1c2gocGFyc2VJbnQoYy5nZXRBdHRyaWJ1dGUoJ2Rh dGEtaWQnKSwgMTApKTsKICAgICAgICB9KTsKICAgICAgICB0LnBlcnNvbklkcyA9IGlkczsKICAg ICAgICBtb2RhbFNjaGxpZXNzZW4odHJ1ZSk7CiAgICAgICAgbWlrcm90ZWFtc1JlbmRlcm4oKTsK ICAgICAgICB0b2FzdChpZHMubGVuZ3RoICsgJyBQZXJzb25lbiB6dWdld2llc2VuIOKAlCDigJ5T cGVpY2hlcm4iIGRydWVja2VuLCB1bSBkYXVlcmhhZnQgenUgc2ljaGVybicsICdpbmZvJyk7CiAg ICB9KTsKICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtdC1wZXJzLWFiYnInKS5hZGRFdmVu dExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKCkgeyBtb2RhbFNjaGxpZXNzZW4oKTsgfSk7CiAg ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbXQtcGVycy1hbGxlJykuYWRkRXZlbnRMaXN0ZW5l cignY2xpY2snLCBmdW5jdGlvbigpIHsKICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxs KCcubXQtcGVycy1jaGsnKS5mb3JFYWNoKGZ1bmN0aW9uKGMpIHsgYy5jaGVja2VkID0gdHJ1ZTsg fSk7CiAgICAgICAgWi5tb2RhbERpcnR5ID0gdHJ1ZTsKICAgIH0pOwogICAgZG9jdW1lbnQuZ2V0 RWxlbWVudEJ5SWQoJ210LXBlcnMta2VpbmUnKS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1 bmN0aW9uKCkgewogICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5tdC1wZXJzLWNo aycpLmZvckVhY2goZnVuY3Rpb24oYykgeyBjLmNoZWNrZWQgPSBmYWxzZTsgfSk7CiAgICAgICAg Wi5tb2RhbERpcnR5ID0gdHJ1ZTsKICAgIH0pOwp9CgpmdW5jdGlvbiBsaXN0ZW5EaWVuc3RncmFk ZVJlbmRlcm4oKSB7CiAgICB2YXIgdGJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZGll bnN0Z3JhZGUtdGJvZHknKTsKICAgIGlmICghdGJvZHkpIHJldHVybjsKICAgIHZhciBsaXN0ZSA9 IChaLmFkbWluLmRpZW5zdGdyYWRlICYmIFouYWRtaW4uZGllbnN0Z3JhZGUubGVuZ3RoKQogICAg ICAgID8gWi5hZG1pbi5kaWVuc3RncmFkZSA6IERJRU5TVEdSQURFX0RFRkFVTFQuc2xpY2UoKTsK ICAgIHZhciBodG1sID0gJyc7CiAgICBsaXN0ZS5mb3JFYWNoKGZ1bmN0aW9uKGQsIGkpIHsKICAg ICAgICBodG1sICs9ICc8dHI+JyArCiAgICAgICAgICAgICc8dGQgc3R5bGU9InRleHQtYWxpZ246 Y2VudGVyO2NvbG9yOnZhcigtLXRleHQtbXV0ZWQpO2ZvbnQtd2VpZ2h0OjcwMCI+JyArIChpICsg MSkgKyAnPC90ZD4nICsKICAgICAgICAgICAgJzx0ZD48aW5wdXQgdHlwZT0idGV4dCIgY2xhc3M9 ImRncmFkLWlucHV0IiBkYXRhLWlkeD0iJyArIGkgKyAnIiB2YWx1ZT0iJyArIGVzY2FwZUF0dHIo ZCkgKyAnIiBwbGFjZWhvbGRlcj0iei5CLiBQSEsqIiBzdHlsZT0id2lkdGg6MTAwJSI+PC90ZD4n ICsKICAgICAgICAgICAgJzx0ZCBzdHlsZT0id2hpdGUtc3BhY2U6bm93cmFwIj4nICsKICAgICAg ICAgICAgICAgIChpID4gMCAgICAgICAgICAgICAgPyAnPGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1z ZWsgYnRuLWtsZWluIiBkYXRhLWFrdGlvbj0iZGdyYWQtdXAiIGRhdGEtaWR4PSInICsgaSArICci IHRpdGxlPSJFaW5lIFBvc2l0aW9uIGhvZWhlciI+4oaRPC9idXR0b24+JyA6ICcnKSArCiAgICAg ICAgICAgICAgICAoaSA8IGxpc3RlLmxlbmd0aC0xID8gJyA8YnV0dG9uIGNsYXNzPSJidG4gYnRu LXNlayBidG4ta2xlaW4iIGRhdGEtYWt0aW9uPSJkZ3JhZC1kb3duIiBkYXRhLWlkeD0iJyArIGkg KyAnIiB0aXRsZT0iRWluZSBQb3NpdGlvbiB0aWVmZXIiPuKGkzwvYnV0dG9uPicgOiAnJykgKwog ICAgICAgICAgICAgICAgJyA8YnV0dG9uIGNsYXNzPSJidG4gYnRuLWdlZmFociBidG4ta2xlaW4i IGRhdGEtYWt0aW9uPSJkZ3JhZC1sb2VzY2hlbiIgZGF0YS1pZHg9IicgKyBpICsgJyIgdGl0bGU9 IkxvZXNjaGVuIj7DlzwvYnV0dG9uPicgKwogICAgICAgICAgICAnPC90ZD4nICsKICAgICAgICAg ICAgJzwvdHI+JzsKICAgIH0pOwogICAgdGJvZHkuaW5uZXJIVE1MID0gaHRtbDsKfQoKZnVuY3Rp b24gbGlzdGVuRnVua3Rpb25lblJlbmRlcm4oKSB7CiAgICB2YXIgdGJvZHkgPSBkb2N1bWVudC5n ZXRFbGVtZW50QnlJZCgnZnVua3Rpb25lbi10Ym9keScpOwogICAgaWYgKCF0Ym9keSkgcmV0dXJu OwogICAgdmFyIGxpc3RlID0gKFouYWRtaW4uZnVua3Rpb25lbiAmJiBaLmFkbWluLmZ1bmt0aW9u ZW4ubGVuZ3RoKQogICAgICAgID8gWi5hZG1pbi5mdW5rdGlvbmVuIDogRlVOS1RJT05FTl9ERUZB VUxULnNsaWNlKCk7CiAgICB2YXIgaHRtbCA9ICcnOwogICAgbGlzdGUuZm9yRWFjaChmdW5jdGlv bihmLCBpKSB7CiAgICAgICAgdmFyIGNvZGUgPSBmLmNvZGUgfHwgJyc7CiAgICAgICAgdmFyIHJh bmcgPSAoZi5yYW5nICE9IG51bGwpID8gZi5yYW5nIDogOTk7CiAgICAgICAgdmFyIGluUGwgPSBm LmluUGxhbnVuZyAhPT0gZmFsc2U7ICAvLyBEZWZhdWx0OiBzaWNodGJhcgogICAgICAgIGh0bWwg Kz0gJzx0cj4nICsKICAgICAgICAgICAgJzx0ZCBzdHlsZT0idGV4dC1hbGlnbjpjZW50ZXI7Y29s b3I6dmFyKC0tdGV4dC1tdXRlZCk7Zm9udC13ZWlnaHQ6NzAwIj4nICsgKGkgKyAxKSArICc8L3Rk PicgKwogICAgICAgICAgICAnPHRkPjxpbnB1dCB0eXBlPSJ0ZXh0IiBjbGFzcz0iZnVuay1pbnB1 dC1jb2RlIiBkYXRhLWlkeD0iJyArIGkgKyAnIiB2YWx1ZT0iJyArIGVzY2FwZUF0dHIoY29kZSkg KyAnIiBwbGFjZWhvbGRlcj0iei5CLiBER0wiIHN0eWxlPSJ3aWR0aDoxMDAlIj48L3RkPicgKwog ICAgICAgICAgICAnPHRkPjxpbnB1dCB0eXBlPSJudW1iZXIiIGNsYXNzPSJmdW5rLWlucHV0LXJh bmciIGRhdGEtaWR4PSInICsgaSArICciIHZhbHVlPSInICsgcmFuZyArICciIG1pbj0iLTkiIG1h eD0iOTkiIHN0eWxlPSJ3aWR0aDo2MHB4O3RleHQtYWxpZ246cmlnaHQiPjwvdGQ+JyArCiAgICAg ICAgICAgICc8dGQgc3R5bGU9InRleHQtYWxpZ246Y2VudGVyIj48aW5wdXQgdHlwZT0iY2hlY2ti b3giIGNsYXNzPSJmdW5rLWlucHV0LWlucGxhbnVuZyIgZGF0YS1pZHg9IicgKyBpICsgJyInICsg KGluUGwgPyAnIGNoZWNrZWQnIDogJycpICsgJyB0aXRsZT0iV2VubiBkZWFrdGl2aWVydDogUGVy c29uZW4gbWl0IGRpZXNlciBGdW5rdGlvbiBlcnNjaGVpbmVuIE5JQ0hUIGluIFBsYW51bmcvV29j aGVucGxhbi9QZXJzLiBQbGFuIj48L3RkPicgKwogICAgICAgICAgICAnPHRkIHN0eWxlPSJ3aGl0 ZS1zcGFjZTpub3dyYXAiPicgKwogICAgICAgICAgICAgICAgKGkgPiAwICAgICAgICAgICAgICA/ ICc8YnV0dG9uIGNsYXNzPSJidG4gYnRuLXNlayBidG4ta2xlaW4iIGRhdGEtYWt0aW9uPSJmdW5r LXVwIiBkYXRhLWlkeD0iJyArIGkgKyAnIiB0aXRsZT0iRWluZSBQb3NpdGlvbiBob2VoZXIiPuKG kTwvYnV0dG9uPicgOiAnJykgKwogICAgICAgICAgICAgICAgKGkgPCBsaXN0ZS5sZW5ndGgtMSA/ ICcgPGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1zZWsgYnRuLWtsZWluIiBkYXRhLWFrdGlvbj0iZnVu ay1kb3duIiBkYXRhLWlkeD0iJyArIGkgKyAnIiB0aXRsZT0iRWluZSBQb3NpdGlvbiB0aWVmZXIi PuKGkzwvYnV0dG9uPicgOiAnJykgKwogICAgICAgICAgICAgICAgJyA8YnV0dG9uIGNsYXNzPSJi dG4gYnRuLWdlZmFociBidG4ta2xlaW4iIGRhdGEtYWt0aW9uPSJmdW5rLWxvZXNjaGVuIiBkYXRh LWlkeD0iJyArIGkgKyAnIiB0aXRsZT0iTG9lc2NoZW4iPsOXPC9idXR0b24+JyArCiAgICAgICAg ICAgICc8L3RkPicgKwogICAgICAgICAgICAnPC90cj4nOwogICAgfSk7CiAgICB0Ym9keS5pbm5l ckhUTUwgPSBodG1sOwp9CgovLyBMaWVzdCBkaWUgYWt0dWVsbGVuIFdlcnRlIGF1cyBkZXIgRGll bnN0Z3JhZGUtVGFiZWxsZSAodm9yIGRlbSBTcGVpY2hlcm4pLgpmdW5jdGlvbiBkaWVuc3RncmFk ZUF1c1RhYmVsbGVMZXNlbigpIHsKICAgIHZhciBsaXN0ZSA9IFtdOwogICAgZG9jdW1lbnQucXVl cnlTZWxlY3RvckFsbCgnLmRncmFkLWlucHV0JykuZm9yRWFjaChmdW5jdGlvbihpbnApIHsKICAg ICAgICB2YXIgdiA9IChpbnAudmFsdWUgfHwgJycpLnRyaW0oKTsKICAgICAgICBpZiAodikgbGlz dGUucHVzaCh2KTsKICAgIH0pOwogICAgcmV0dXJuIGxpc3RlOwp9CgovLyBMaWVzdCBkaWUgYWt0 dWVsbGVuIFdlcnRlIGF1cyBkZXIgRnVua3Rpb25lbi1UYWJlbGxlICh2b3IgZGVtIFNwZWljaGVy bikuCmZ1bmN0aW9uIGZ1bmt0aW9uZW5BdXNUYWJlbGxlTGVzZW4oKSB7CiAgICB2YXIgbWFwID0g e307CiAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuZnVuay1pbnB1dC1jb2RlJykuZm9y RWFjaChmdW5jdGlvbihpbnApIHsKICAgICAgICB2YXIgaWR4ID0gaW5wLmdldEF0dHJpYnV0ZSgn ZGF0YS1pZHgnKTsKICAgICAgICB2YXIgdiA9IChpbnAudmFsdWUgfHwgJycpLnRyaW0oKTsKICAg ICAgICBpZiAoIW1hcFtpZHhdKSBtYXBbaWR4XSA9IHt9OwogICAgICAgIG1hcFtpZHhdLmNvZGUg PSB2OwogICAgfSk7CiAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuZnVuay1pbnB1dC1y YW5nJykuZm9yRWFjaChmdW5jdGlvbihpbnApIHsKICAgICAgICB2YXIgaWR4ID0gaW5wLmdldEF0 dHJpYnV0ZSgnZGF0YS1pZHgnKTsKICAgICAgICB2YXIgciA9IHBhcnNlSW50KGlucC52YWx1ZSwg MTApOwogICAgICAgIGlmICghbWFwW2lkeF0pIG1hcFtpZHhdID0ge307CiAgICAgICAgbWFwW2lk eF0ucmFuZyA9IGlzTmFOKHIpID8gOTkgOiByOwogICAgfSk7CiAgICBkb2N1bWVudC5xdWVyeVNl bGVjdG9yQWxsKCcuZnVuay1pbnB1dC1pbnBsYW51bmcnKS5mb3JFYWNoKGZ1bmN0aW9uKGlucCkg ewogICAgICAgIHZhciBpZHggPSBpbnAuZ2V0QXR0cmlidXRlKCdkYXRhLWlkeCcpOwogICAgICAg IGlmICghbWFwW2lkeF0pIG1hcFtpZHhdID0ge307CiAgICAgICAgbWFwW2lkeF0uaW5QbGFudW5n ID0gISFpbnAuY2hlY2tlZDsKICAgIH0pOwogICAgdmFyIGxpc3RlID0gW107CiAgICBPYmplY3Qu a2V5cyhtYXApLnNvcnQoZnVuY3Rpb24oYSwgYikgeyByZXR1cm4gcGFyc2VJbnQoYSkgLSBwYXJz ZUludChiKTsgfSkuZm9yRWFjaChmdW5jdGlvbihrKSB7CiAgICAgICAgaWYgKCFtYXBba10uY29k ZSkgcmV0dXJuOwogICAgICAgIHZhciBlID0geyBjb2RlOiBtYXBba10uY29kZSwgcmFuZzogbWFw W2tdLnJhbmcgfTsKICAgICAgICAvLyBpblBsYW51bmcgbnVyIHNwZWljaGVybiB3ZW5uIGV4cGxp eml0IGZhbHNlIOKAlCBEZWZhdWx0IGlzdCB0cnVlLAogICAgICAgIC8vIG11c3MgZGFoZXIgbmlj aHQgaW4gYWRtaW4uanNvbiBzdGVoZW4gKGtsZWluZXJlciBEYXRlbnNhdHopLgogICAgICAgIGlm IChtYXBba10uaW5QbGFudW5nID09PSBmYWxzZSkgZS5pblBsYW51bmcgPSBmYWxzZTsKICAgICAg ICBsaXN0ZS5wdXNoKGUpOwogICAgfSk7CiAgICByZXR1cm4gbGlzdGU7Cn0KCi8vID09PT09IEV4 cG9ydHMgPT09PT0KLy8KLy8gS29uc3RhbnRlbgpleHBvcnQgeyBCRURJRU5VTkdfREVGQVVMVCB9 OwovLyBJTVBSRVNTVU1fREVGQVVMVCB3aXJkIHZpYSAiZXhwb3J0IHZhciIgb2JlbiBzY2hvbiBl eHBvcnRpZXJ0LAovLyBhYmVyIHp1ciBLb25zaXN0ZW56IGF1Y2ggaGllciBhdWZnZWZ1ZWhydCDi gJQgZGVyIG5hbWVkIGV4cG9ydAovLyBtYXRjaGVkLCB3YXMgYXBwLmpzIGltcG9ydGllcnQuCgov LyBGdW5rdGlvbmVuIOKAlCBhbGxlIFRvcC1MZXZlbC1GdW5rdGlvbmVuIGF1cyBkZW0gQWRtaW4t QmxvY2suCmV4cG9ydCB7CiAgICBhZG1pblJlbmRlcm4sCiAgICBzaWNodGJhcmtlaXRXZXJ0LCBz aWNodGJhcmtlaXRSZW5kZXJuLAogICAgYmFja3VwVGFiZWxsZUxhZGVuLCBiYWNrdXBHcm9lc3Nl Rm9ybWF0LCBiYWNrdXBaZWl0cHVua3RGb3JtYXQsIGJhY2t1cFRhYmVsbGVSZW5kZXJuLAogICAg Z3J1cHBlblBlcnNvbmVuWmFlaGxlbiwgZ3J1cHBlblRhYmVsbGVSZW5kZXJuLAogICAgaHRtbEF1 c0ZlbGQsCiAgICBpbmZvSGlsZmVSZW5kZXJuLCBpbmZvSGlsZmVBdXNGZWxkZXJuTGVzZW4sCiAg ICBiZXosIGJlemVpY2hudW5nZW5BbndlbmRlbiwgYmV6ZWljaG51bmdlblJlbmRlcm4sIGJlemVp Y2hudW5nZW5BdXNUYWJlbGxlTGVzZW4sCiAgICBsaXN0ZW5SZW5kZXJuLCBsaXN0ZW5EaWVuc3Rn cmFkZVJlbmRlcm4sIGxpc3RlbkZ1bmt0aW9uZW5SZW5kZXJuLAogICAgZGllbnN0Z3JhZGVBdXNU YWJlbGxlTGVzZW4sIGZ1bmt0aW9uZW5BdXNUYWJlbGxlTGVzZW4sCiAgICBtaWtyb3RlYW1zUmVu ZGVybiwgbWlrcm90ZWFtc0F1c1RhYmVsbGVMZXNlbiwgbWlrcm90ZWFtUGVyc29uZW5EaWFsb2cs CiAgICBlaW5zdGVsbHVuZ2VuUmVuZGVybiwKICAgIHN0YW5kb3J0ZVJlbmRlcm4sIHN0YW5kb3J0 ZUF1c1RhYmVsbGVMZXNlbiwgcmh5dGhtdXNHZW5lcmF0b3JEaWFsb2csCiAgICBhZG1pbkluZm9J bml0LAogICAgZmVhdHVyZXNSZW5kZXJuLCBmZWF0dXJlSXN0QWt0aXYsCiAgICBkaXJ0eVRyYWNr ZXJFaW5yaWNodGVuCn07Cg== ### FILE: js/admin_codes.js | 26055 Ly8gPT09IGFkbWluX2NvZGVzLmpzID09PQovLyBQaGFzZSA5LUIgQzI6IGF1cyBhZG1pbi5qcyBl eHRyYWhpZXJ0LiBWZXJ3YWx0ZXQgZGllIFNjaGljaHRjb2RlLQovLyBWb3JzY2hhdSB1bmQgZGFz IEVkaXQtL1RvZ2dsZS0vRHJhZy1Nb2RhbDoKLy8gICAtIGlzdENvZGVBa3RpdiAvIGNvZGVWZXJ3 ZW5kdW5nWmFlaGxlbiAvIHNjaGljaHRjb2RlS2F0ZWdvcmllCi8vICAgICAoa2xlaW5lIEhlbHBl cikKLy8gICAtIHNjaGljaHRjb2RlVm9yc2NoYXVSZW5kZXJuIChIYXVwdGFuc2ljaHQgaW0gQWRt aW4tVGFiLAovLyAgICAgZHJlaSBTb3J0aWVyLU1vZGkgKyBmbGFjaC9kcmFnKQovLyAgIC0gc2No aWNodGNvZGVEcmFnVmVyZHJhaHRlbiAoRHJhZyZEcm9wIG51ciBpbSBmbGFjaC1Nb2R1cykKLy8g ICAtIHNjaGljaHRjb2RlVG9nZ2xlQWt0aXYgLyBzY2hpY2h0Y29kZUxpc3RlU3BlaWNoZXJuIChE ZWFrdGl2aWVyZW4KLy8gICAgIG1pdCBPcHRpb25lbjogc3RpbGxsZWdlbiAvIGVyc2V0emVuIC8g bGVlcmVuKQovLyAgIC0gc2NoaWNodGNvZGVFZGl0TW9kYWxaZWlnZW4gKE5ldSArIEJlYXJiZWl0 ZW4gKyBMb2VzY2hlbikKLy8KLy8gRXh0ZXJuZXIgS29uc3VtZW50OiBpbXBvcnRfZXhjZWwuanMg aW1wb3J0aWVydCB3ZWl0ZXJoaW4gaXN0Q29kZUFrdGl2Ci8vIGF1cyAnLi9hZG1pbi5qcycgKFBh c3MtVGhyb3VnaC1SZS1FeHBvcnQpOyBhYiBQaGFzZSA5LUIgQzUgZGFubiBkaXJla3QKLy8gYXVz ICcuL2FkbWluX2NvZGVzLmpzJy4KCmltcG9ydCB7IFogfSBmcm9tICcuL2NvcmVfc3RhdGUuanMn OwppbXBvcnQgeyBlc2NhcGVIVE1MLCBlc2NhcGVBdHRyIH0gZnJvbSAnLi9jb3JlX3V0aWwuanMn OwppbXBvcnQgeyBhcGlQdXQgfSBmcm9tICcuL2NvcmVfYXBpLmpzJzsKaW1wb3J0IHsKdG9hc3Qs IGJlc3RhZXRpZ2VuLAptb2RhbFplaWdlbiwgbW9kYWxTY2hsaWVzc2VuLApwZmxpY2h0ZmVsZEZl aGxlcgp9IGZyb20gJy4vdWlfZGlhbG9nLmpzJzsKaW1wb3J0IHsgZGF0ZW5HcmlkUmVuZGVybiB9 IGZyb20gJy4vZ3JpZF9yZW5kZXIuanMnOwoKLy8gPT09PT0gQWRtaW46IFNjaGljaHRjb2RlLVZv cnNjaGF1ID09PT09CgovLyBFaW4gU2NoaWNodGNvZGUgZ2lsdCBhbHMgYWt0aXYsIHNvbGFuZ2Ug ZXIgbmljaHQgZXhwbGl6aXQgYXVmIGZhbHNlIHN0ZWh0Ci8vIChBYndhZXJ0c2tvbXBhdGliaWxp dGFldDogYWx0ZSBEYXRlbiBvaG5lIGFrdGl2LUZsYWcgc2luZCBha3RpdikuCmV4cG9ydCBmdW5j dGlvbiBpc3RDb2RlQWt0aXYoc2MpIHsgcmV0dXJuICFzYyB8fCBzYy5ha3RpdiAhPT0gZmFsc2U7 IH0KCi8vIFphZWhsdCBwcm8gQ29kZSwgd2llIG9mdCBlciBpbiBwbGFudW5nLmVpbnRyYWVnZSB2 b3Jrb21tdC4KLy8gR2lidCBlaW4gTWFwIHsgY29kZTogYW56YWhsIH0genVydWVjay4KZXhwb3J0 IGZ1bmN0aW9uIGNvZGVWZXJ3ZW5kdW5nWmFlaGxlbigpIHsKICAgIHZhciBtYXAgPSB7fTsKICAg IHZhciBlID0gWi5wbGFudW5nICYmIFoucGxhbnVuZy5laW50cmFlZ2U7CiAgICBpZiAoIWUpIHJl dHVybiBtYXA7CiAgICBPYmplY3Qua2V5cyhlKS5mb3JFYWNoKGZ1bmN0aW9uKGQpIHsKICAgICAg ICB2YXIgdGFnID0gZVtkXSB8fCB7fTsKICAgICAgICBPYmplY3Qua2V5cyh0YWcpLmZvckVhY2go ZnVuY3Rpb24ocGlkKSB7CiAgICAgICAgICAgIHZhciBjID0gdGFnW3BpZF07CiAgICAgICAgICAg IGlmIChjKSBtYXBbY10gPSAobWFwW2NdIHx8IDApICsgMTsKICAgICAgICB9KTsKICAgIH0pOwog ICAgcmV0dXJuIG1hcDsKfQoKZXhwb3J0IGZ1bmN0aW9uIHNjaGljaHRjb2RlS2F0ZWdvcmllKGNv ZGUpIHsKICAgIHZhciBjID0gY29kZSB8fCAnJzsKICAgIGlmICgvXkYtL2kudGVzdChjKSkgcmV0 dXJuIHsga2V5OiAnMS1mcnVlaCcsICBsYWJlbDogJ0Zyw7xoZGllbnN0JyB9OwogICAgaWYgKC9e Uy0vaS50ZXN0KGMpKSByZXR1cm4geyBrZXk6ICcyLXNwYWV0JywgIGxhYmVsOiAnU3DDpHRkaWVu c3QnIH07CiAgICBpZiAoL15OLS9pLnRlc3QoYykpIHJldHVybiB7IGtleTogJzMtbmFjaHQnLCAg bGFiZWw6ICdOYWNodGRpZW5zdCcgfTsKICAgIGlmIChbJ3dmcicsJ2RmciddLmluZGV4T2YoYykg Pj0gMCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g eyBrZXk6ICc0LWZyZWknLCAgICAgbGFiZWw6ICdGcmVpJyB9OwogICAgaWYgKFsnVXJsJywnU1Un XS5pbmRleE9mKGMpID49IDApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHJldHVybiB7IGtleTogJzUtdXJsYXViJywgICBsYWJlbDogJ1VybGF1YicgfTsKICAg IGlmIChbJ2tyJywnS3VyJywnRFUnLCdYWFgnXS5pbmRleE9mKGMpID49IDApICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4geyBrZXk6ICc2LWF1c2ZhbGwnLCAgbGFiZWw6 ICdLcmFua2hlaXQgLyBBdXNmYWxsJyB9OwogICAgaWYgKFsnTEcnLCdTZW0nLCdFVE0nLCdBdUYn LCdhbncnLCdhbncuJ10uaW5kZXhPZihjKSA+PSAwKSAgICAgICAgICAgICAgICAgICAgIHJldHVy biB7IGtleTogJzctZm9ydGJpbGQnLCBsYWJlbDogJ0ZvcnRiaWxkdW5nJyB9OwogICAgaWYgKFsn QV8nLCdCXycsJ0NfJywnWicsJ1NEJywnQkFPJywnU0UnLCdFTVNBJywnOGEnLCdHVCcsJ2FiZycs J0FaQScsJ2FidycsJ3NBQldCJ10uaW5kZXhPZihjKSA+PSAwKQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICByZXR1cm4geyBrZXk6ICc4LWVpbnNhdHonLCAgbGFiZWw6ICdEaWVuc3RlIC8gRWlu c8OkdHplJyB9OwogICAgaWYgKFsnSE8nLCdUekYnLCdCVicsJ01EJ10uaW5kZXhPZihjKSA+PSAw KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7IGtleTogJzktc29u ZGVyZm9ybScsIGxhYmVsOiAnU29uZGVyZm9ybWVuJyB9OwogICAgcmV0dXJuIHsga2V5OiAnOTkt c29uc3RpZ2VzJywgbGFiZWw6ICdTb25zdGlnZXMnIH07Cn0KCmV4cG9ydCBmdW5jdGlvbiBzY2hp Y2h0Y29kZVZvcnNjaGF1UmVuZGVybigpIHsKICAgIHZhciBsaXN0ZSA9IChaLmFkbWluLnNjaGlj aHRjb2RlcyB8fCBbXSkuc2xpY2UoKTsKICAgIHZhciBjb250ID0gZG9jdW1lbnQuZ2V0RWxlbWVu dEJ5SWQoJ3NjaGljaHRjb2RlLXZvcnNjaGF1Jyk7CiAgICBpZiAoIWNvbnQpIHJldHVybjsKCiAg ICB2YXIgdmVyd2VuZHVuZyA9IGNvZGVWZXJ3ZW5kdW5nWmFlaGxlbigpOwogICAgdmFyIGFrdGl2 QW56YWhsID0gbGlzdGUuZmlsdGVyKGlzdENvZGVBa3RpdikubGVuZ3RoOwogICAgdmFyIGluYWt0 aXZBbnphaGwgPSBsaXN0ZS5sZW5ndGggLSBha3RpdkFuemFobDsKCiAgICB2YXIgbW9kdXMgPSBs b2NhbFN0b3JhZ2UuZ2V0SXRlbSgnc2MtZ3J1cHBlLW1vZHVzJykgfHwgJ2thdGVnb3JpZSc7CiAg ICB2YXIgdG9vbGJhciA9ICc8ZGl2IGNsYXNzPSJzYy12b3JzY2hhdS10b29sYmFyIj4nICsKICAg ICAgICAnPGxhYmVsIGZvcj0ic2MtbW9kdXMiPkdydXBwaWVydW5nOjwvbGFiZWw+JyArCiAgICAg ICAgJzxzZWxlY3QgaWQ9InNjLW1vZHVzIj4nICsKICAgICAgICAgICAgJzxvcHRpb24gdmFsdWU9 ImthdGVnb3JpZSInICsgKG1vZHVzID09PSAna2F0ZWdvcmllJyA/ICcgc2VsZWN0ZWQnIDogJycp ICsgJz5OYWNoIFNjaGljaHR0eXA8L29wdGlvbj4nICsKICAgICAgICAgICAgJzxvcHRpb24gdmFs dWU9ImFscGhhIicgICAgICsgKG1vZHVzID09PSAnYWxwaGEnICAgICA/ICcgc2VsZWN0ZWQnIDog JycpICsgJz5BbHBoYWJldGlzY2ggKENvZGUpPC9vcHRpb24+JyArCiAgICAgICAgICAgICc8b3B0 aW9uIHZhbHVlPSJiZXoiJyAgICAgICArIChtb2R1cyA9PT0gJ2JleicgICAgICAgPyAnIHNlbGVj dGVkJyA6ICcnKSArICc+QWxwaGFiZXRpc2NoIChCZXplaWNobnVuZyk8L29wdGlvbj4nICsKICAg ICAgICAgICAgJzxvcHRpb24gdmFsdWU9ImZsYWNoIicgICAgICsgKG1vZHVzID09PSAnZmxhY2gn ICAgICA/ICcgc2VsZWN0ZWQnIDogJycpICsgJz5LZWluZSBHcnVwcGllcnVuZzwvb3B0aW9uPicg KwogICAgICAgICc8L3NlbGVjdD4nICsKICAgICAgICAnPHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTox MXB4O2NvbG9yOnZhcigtLXRleHQtbXV0ZWQpO21hcmdpbi1sZWZ0OmF1dG8iPicgKwogICAgICAg ICAgICBha3RpdkFuemFobCArICcgYWt0aXYgwrcgJyArIGluYWt0aXZBbnphaGwgKyAnIGluYWt0 aXYgwrcgJyArIGxpc3RlLmxlbmd0aCArICcgZ2VzYW10JyArCiAgICAgICAgICAgIChtb2R1cyA9 PT0gJ2ZsYWNoJyA/ICcgwrcgPHNwYW4gc3R5bGU9ImNvbG9yOnZhcigtLWZhcmJlLXByaW1hZXIp Ij5EcmFnLVNvcnRpZXJ1bmcgYWt0aXY8L3NwYW4+JyA6ICcnKSArCiAgICAgICAgJzwvc3Bhbj4n ICsKICAgICc8L2Rpdj4nOwoKICAgIGZ1bmN0aW9uIHRpbGUoc2MpIHsKICAgICAgICB2YXIgYWt0 aXYgPSBpc3RDb2RlQWt0aXYoc2MpOwogICAgICAgIHZhciBhbnphaGwgPSB2ZXJ3ZW5kdW5nW3Nj LmNvZGVdIHx8IDA7CiAgICAgICAgdmFyIGRyYWcgPSBtb2R1cyA9PT0gJ2ZsYWNoJyA/ICcgZHJh Z2dhYmxlPSJ0cnVlIicgOiAnJzsKICAgICAgICB2YXIgZHJhZ0NscyA9IG1vZHVzID09PSAnZmxh Y2gnID8gJyBzYy1kcmFnJyA6ICcnOwogICAgICAgIHZhciBpbmFrdGl2Q2xzID0gYWt0aXYgPyAn JyA6ICcgc2MtaW5ha3Rpdic7CiAgICAgICAgdmFyIGFuemFobENscyA9IGFuemFobCA+IDAgPyAn c2MtYW56YWhsLWJhZGdlJyA6ICdzYy1hbnphaGwtYmFkZ2Ugc2MtYW56YWhsLW51bGwnOwogICAg ICAgIHZhciB0b2dnbGVUaXRsZSA9IGFrdGl2ID8gJ0RlYWt0aXZpZXJlbiAobmljaHQgbWVociBm w7xyIE5ldS1FaW5nYWJlIHp1bGFzc2VuKScgOiAnV2llZGVyIGFrdGl2aWVyZW4nOwogICAgICAg IHZhciB0b2dnbGVTeW1ib2wgPSBha3RpdiA/ICfil48nIDogJ+KXiyc7CiAgICAgICAgdmFyIHRv Z2dsZUNscyA9IGFrdGl2ID8gJ3NjLXRvZ2dsZSBzYy10b2dnbGUtYWt0aXYnIDogJ3NjLXRvZ2ds ZSBzYy10b2dnbGUtaW5ha3Rpdic7CiAgICAgICAgcmV0dXJuICc8ZGl2IGNsYXNzPSJzY2hpY2h0 Y29kZS1rYXJ0ZScgKyBkcmFnQ2xzICsgaW5ha3RpdkNscyArICciIGRhdGEtY29kZT0iJyArIGVz Y2FwZUF0dHIoc2MuY29kZSkgKyAnIicgKyBkcmFnICsKICAgICAgICAgICAgJyBzdHlsZT0iYmFj a2dyb3VuZDp2YXIoLS1iZy1jYXJkKTtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWJvcmRlci1saWdo dCk7cG9zaXRpb246cmVsYXRpdmUiPicgKwogICAgICAgICAgICAobW9kdXMgPT09ICdmbGFjaCcK ICAgICAgICAgICAgICAgID8gJzxkaXYgY2xhc3M9InNjLWRyYWctaGFuZGxlIiB0aXRsZT0iWmll aGVuIHp1bSBVbXNvcnRpZXJlbiI+JiM5Nzc2OzwvZGl2PicKICAgICAgICAgICAgICAgIDogJycp ICsKICAgICAgICAgICAgJzxkaXYgY2xhc3M9InNjaGljaHRjb2RlLWZhcmJmZWxkIiBzdHlsZT0i YmFja2dyb3VuZDonICsgZXNjYXBlQXR0cihzYy5oaW50ZXJncnVuZCB8fCAnIzg4OCcpICsgJztj b2xvcjonICsgZXNjYXBlQXR0cihzYy5zY2hyaWZ0IHx8ICcjZmZmJykgKyAnIj4nICsgZXNjYXBl SFRNTChzYy5jb2RlKSArICc8L2Rpdj4nICsKICAgICAgICAgICAgJzxkaXYgc3R5bGU9ImZsZXg6 MTttaW4td2lkdGg6MCI+PHN0cm9uZz4nICsgZXNjYXBlSFRNTChzYy5jb2RlKSArICc8L3N0cm9u Zz4nICsKICAgICAgICAgICAgICAgICcgPHNwYW4gY2xhc3M9IicgKyBhbnphaGxDbHMgKyAnIiB0 aXRsZT0iJyArIGFuemFobCArICcgbWFsIGluIGRlciBQbGFudW5nIHZlcndlbmRldCI+JyArIGFu emFobCArICfDlzwvc3Bhbj4nICsKICAgICAgICAgICAgICAgICc8YnI+PHNwYW4gc3R5bGU9ImZv bnQtc2l6ZToxMXB4O2NvbG9yOnZhcigtLXRleHQtc2Vjb25kYXJ5KSI+JyArIGVzY2FwZUhUTUwo c2MuYmV6ZWljaG51bmcgfHwgJycpICsgJzwvc3Bhbj48L2Rpdj4nICsKICAgICAgICAgICAgJzxi dXR0b24gY2xhc3M9IicgKyB0b2dnbGVDbHMgKyAnIiBkYXRhLWFrdGlvbj0ic2NoaWNodGNvZGUt dG9nZ2xlIiBkYXRhLWNvZGU9IicgKyBlc2NhcGVBdHRyKHNjLmNvZGUpICsgJyIgdGl0bGU9Iicg KyBlc2NhcGVBdHRyKHRvZ2dsZVRpdGxlKSArICciPicgKyB0b2dnbGVTeW1ib2wgKyAnPC9idXR0 b24+JyArCiAgICAgICAgICAgICc8YnV0dG9uIGNsYXNzPSJidG4gYnRuLXNlayBidG4ta2xlaW4g YnRuLWljb24gYnRuLWJlYXJiZWl0ZW4gc2MtZWRpdC1idG4iIGRhdGEtYWt0aW9uPSJzY2hpY2h0 Y29kZS1iZWFyYmVpdGVuIiBkYXRhLWNvZGU9IicgKyBlc2NhcGVBdHRyKHNjLmNvZGUpICsgJyIg dGl0bGU9IkJlYXJiZWl0ZW4iPjwvYnV0dG9uPicgKwogICAgICAgICAgICAnPC9kaXY+JzsKICAg IH0KCiAgICAvLyBTb3J0aWVyLUhlbGZlcjogYWt0aXZlIHZvciBpbmFrdGl2ZW47IGlubmVyaGFs YiBnbGVpY2hlciBBa3Rpdml0YWV0CiAgICAvLyBuYWNoIGRlbSBnZXd1ZW5zY2h0ZW4gS3JpdGVy aXVtIChBcnJheS1JbmRleCBiZWkgJ2ZsYWNoJywKICAgIC8vIENvZGUvQmV6ZWljaG51bmcgYmVp IGRlbiBBbHBoYS1Nb2RpKS4gV2lyZCBudXIgbm9jaCBpbSAnZmxhY2gnLU1vZHVzCiAgICAvLyBi ZW51dHp0IOKAlCBkaWUgYW5kZXJlbiBNb2RpIHJlbmRlcm4gQWt0aXZlICsgSW5ha3RpdmUgaW4g c2VwYXJhdGUKICAgIC8vIFNla3Rpb25lbiwgZGFtaXQgIkV4dHJhLUF1c3dhaGwgdW50ZW4iIG9w dGlzY2gga2xhciB3aXJkLgogICAgZnVuY3Rpb24gc29ydEFrdGl2WnVlcnN0KGFyciwgc2VrdW5k YWVyKSB7CiAgICAgICAgdmFyIGlkeCA9IHt9OwogICAgICAgIGxpc3RlLmZvckVhY2goZnVuY3Rp b24oc2MsIGkpIHsgaWR4W3NjLmNvZGVdID0gaTsgfSk7CiAgICAgICAgcmV0dXJuIGFyci5zbGlj ZSgpLnNvcnQoZnVuY3Rpb24oYSwgYikgewogICAgICAgICAgICB2YXIgYWEgPSBpc3RDb2RlQWt0 aXYoYSkgPyAwIDogMTsKICAgICAgICAgICAgdmFyIGFiID0gaXN0Q29kZUFrdGl2KGIpID8gMCA6 IDE7CiAgICAgICAgICAgIGlmIChhYSAhPT0gYWIpIHJldHVybiBhYSAtIGFiOwogICAgICAgICAg ICBpZiAoc2VrdW5kYWVyKSByZXR1cm4gc2VrdW5kYWVyKGEsIGIpOwogICAgICAgICAgICByZXR1 cm4gaWR4W2EuY29kZV0gLSBpZHhbYi5jb2RlXTsKICAgICAgICB9KTsKICAgIH0KCiAgICAvLyBF aWdlbmUgU2VrdGlvbiBmdWVyIGluYWt0aXZlIENvZGVzIOKAlCB3aXJkIGluIGFsbGVuIE1vZGkg KGF1c3NlcgogICAgLy8gJ2ZsYWNoJykgYW5zIEVuZGUgYW5nZWhhZW5ndCwgb3B0aXNjaCBhYmdl c2V0enQuCiAgICBmdW5jdGlvbiBpbmFrdGl2QmxvY2soYXJyLCBzZWt1bmRhZXIpIHsKICAgICAg ICBpZiAoIWFyci5sZW5ndGgpIHJldHVybiAnJzsKICAgICAgICB2YXIgc29ydGllcnQgPSBzZWt1 bmRhZXIgPyBhcnIuc2xpY2UoKS5zb3J0KHNla3VuZGFlcikgOiBhcnIuc2xpY2UoKTsKICAgICAg ICByZXR1cm4gJzxkaXYgY2xhc3M9InNjLWdydXBwZSBzYy1ncnVwcGUtaW5ha3RpdiI+JyArCiAg ICAgICAgICAgICc8ZGl2IGNsYXNzPSJzYy1ncnVwcGUtdGl0ZWwgc2MtZ3J1cHBlLXRpdGVsLWlu YWt0aXYiPicgKwogICAgICAgICAgICAgICAgJ0luYWt0aXZlIENvZGVzIDxzcGFuIHN0eWxlPSJm b250LXdlaWdodDo1MDAiPignICsgYXJyLmxlbmd0aCArICcpPC9zcGFuPicgKwogICAgICAgICAg ICAgICAgJzxzcGFuIHN0eWxlPSJmb250LXNpemU6MTFweDtjb2xvcjp2YXIoLS10ZXh0LW11dGVk KTtmb250LXdlaWdodDo0MDA7bWFyZ2luLWxlZnQ6OHB4Ij7igJQgZXJzY2hlaW5lbiBuaWNodCBp bSBQbGFudW5ncy1Ecm9wZG93biwgYmVzdGVoZW5kZSBFaW50csOkZ2UgYmxlaWJlbiBzaWNodGJh cjwvc3Bhbj4nICsKICAgICAgICAgICAgJzwvZGl2PicgKwogICAgICAgICAgICAnPGRpdiBjbGFz cz0ic2MtZ3J1cHBlLWxpc3RlIj4nICsgc29ydGllcnQubWFwKHRpbGUpLmpvaW4oJycpICsgJzwv ZGl2PjwvZGl2Pic7CiAgICB9CgogICAgdmFyIGFrdGl2ZSA9IGxpc3RlLmZpbHRlcihpc3RDb2Rl QWt0aXYpOwogICAgdmFyIGluYWt0aXZlID0gbGlzdGUuZmlsdGVyKGZ1bmN0aW9uKHNjKSB7IHJl dHVybiAhaXN0Q29kZUFrdGl2KHNjKTsgfSk7CgogICAgdmFyIGJvZHkgPSAnJzsKICAgIGlmICht b2R1cyA9PT0gJ2FscGhhJykgewogICAgICAgIHZhciBzb3J0QWxwaGEgPSBmdW5jdGlvbihhLGIp eyByZXR1cm4gKGEuY29kZXx8JycpLmxvY2FsZUNvbXBhcmUoYi5jb2RlfHwnJywnZGUnKTsgfTsK ICAgICAgICBib2R5ID0gJzxkaXYgY2xhc3M9InNjLWdydXBwZS1saXN0ZSI+JyArCiAgICAgICAg ICAgIGFrdGl2ZS5zbGljZSgpLnNvcnQoc29ydEFscGhhKS5tYXAodGlsZSkuam9pbignJykgKyAn PC9kaXY+JzsKICAgICAgICBib2R5ICs9IGluYWt0aXZCbG9jayhpbmFrdGl2ZSwgc29ydEFscGhh KTsKICAgIH0gZWxzZSBpZiAobW9kdXMgPT09ICdiZXonKSB7CiAgICAgICAgdmFyIHNvcnRCZXog PSBmdW5jdGlvbihhLGIpeyByZXR1cm4gKGEuYmV6ZWljaG51bmd8fCcnKS5sb2NhbGVDb21wYXJl KGIuYmV6ZWljaG51bmd8fCcnLCdkZScpOyB9OwogICAgICAgIGJvZHkgPSAnPGRpdiBjbGFzcz0i c2MtZ3J1cHBlLWxpc3RlIj4nICsKICAgICAgICAgICAgYWt0aXZlLnNsaWNlKCkuc29ydChzb3J0 QmV6KS5tYXAodGlsZSkuam9pbignJykgKyAnPC9kaXY+JzsKICAgICAgICBib2R5ICs9IGluYWt0 aXZCbG9jayhpbmFrdGl2ZSwgc29ydEJleik7CiAgICB9IGVsc2UgaWYgKG1vZHVzID09PSAnZmxh Y2gnKSB7CiAgICAgICAgLy8gRHJhZy1Nb2R1czogQWt0aXZlICsgSW5ha3RpdmUgenVzYW1tZW4s IGRhbWl0IFVzZXIgcGVyIERyYWcgamVkZQogICAgICAgIC8vIFJlaWhlbmZvbGdlIGJhdWVuIGth bm4uCiAgICAgICAgYm9keSA9ICc8ZGl2IGNsYXNzPSJzYy1ncnVwcGUtbGlzdGUiIGlkPSJzYy1k cmFnLWNvbnRhaW5lciI+JyArCiAgICAgICAgICAgIHNvcnRBa3Rpdlp1ZXJzdChsaXN0ZSkubWFw KHRpbGUpLmpvaW4oJycpICsgJzwvZGl2Pic7CiAgICB9IGVsc2UgewogICAgICAgIHZhciBncnVw cGVuID0ge307CiAgICAgICAgYWt0aXZlLmZvckVhY2goZnVuY3Rpb24oc2MpIHsKICAgICAgICAg ICAgdmFyIGsgPSBzY2hpY2h0Y29kZUthdGVnb3JpZShzYy5jb2RlKTsKICAgICAgICAgICAgaWYg KCFncnVwcGVuW2sua2V5XSkgZ3J1cHBlbltrLmtleV0gPSB7IGxhYmVsOiBrLmxhYmVsLCBpdGVt czogW10gfTsKICAgICAgICAgICAgZ3J1cHBlbltrLmtleV0uaXRlbXMucHVzaChzYyk7CiAgICAg ICAgfSk7CiAgICAgICAgdmFyIHNvcnRDb2RlID0gZnVuY3Rpb24oYSxiKXsgcmV0dXJuIChhLmNv ZGV8fCcnKS5sb2NhbGVDb21wYXJlKGIuY29kZXx8JycsJ2RlJyk7IH07CiAgICAgICAgT2JqZWN0 LmtleXMoZ3J1cHBlbikuc29ydCgpLmZvckVhY2goZnVuY3Rpb24oaykgewogICAgICAgICAgICB2 YXIgZyA9IGdydXBwZW5ba107CiAgICAgICAgICAgIHZhciBzb3J0aWVydCA9IGcuaXRlbXMuc2xp Y2UoKS5zb3J0KHNvcnRDb2RlKTsKICAgICAgICAgICAgYm9keSArPSAnPGRpdiBjbGFzcz0ic2Mt Z3J1cHBlIj48ZGl2IGNsYXNzPSJzYy1ncnVwcGUtdGl0ZWwiPicgKyBlc2NhcGVIVE1MKGcubGFi ZWwpICsgJyA8c3BhbiBzdHlsZT0iZm9udC13ZWlnaHQ6NTAwIj4oJyArIGcuaXRlbXMubGVuZ3Ro ICsgJyk8L3NwYW4+PC9kaXY+JyArCiAgICAgICAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9InNj LWdydXBwZS1saXN0ZSI+JyArIHNvcnRpZXJ0Lm1hcCh0aWxlKS5qb2luKCcnKSArICc8L2Rpdj48 L2Rpdj4nOwogICAgICAgIH0pOwogICAgICAgIGJvZHkgKz0gaW5ha3RpdkJsb2NrKGluYWt0aXZl LCBzb3J0Q29kZSk7CiAgICB9CgogICAgY29udC5pbm5lckhUTUwgPSB0b29sYmFyICsgYm9keTsK ICAgIHZhciBzZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2MtbW9kdXMnKTsKICAgIGlm IChzZWwpIHNlbC5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCBmdW5jdGlvbigpIHsKICAgICAg ICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnc2MtZ3J1cHBlLW1vZHVzJywgdGhpcy52YWx1ZSk7CiAg ICAgICAgc2NoaWNodGNvZGVWb3JzY2hhdVJlbmRlcm4oKTsKICAgIH0pOwogICAgaWYgKG1vZHVz ID09PSAnZmxhY2gnKSBzY2hpY2h0Y29kZURyYWdWZXJkcmFodGVuKCk7Cn0KCi8vIERyYWcmRHJv cCBudXIgaW0gJ2ZsYWNoJy1Nb2R1czogcGVyc2lzdGllcnQgZGllIG5ldWUgUmVpaGVuZm9sZ2Ug aW0KLy8gc2NoaWNodGNvZGVzW10tQXJyYXkuIERpZSBhbmRlcmVuIE1vZGkgc29ydGllcmVuIG5h Y2ggZWlnZW5lbiBLcml0ZXJpZW4KLy8gdW5kIHd1ZXJkZW4gRHJhZy1SZWloZW5mb2xnZSBuaWNo dCBzaWNodGJhciB3aWVkZXJnZWJlbi4KZXhwb3J0IGZ1bmN0aW9uIHNjaGljaHRjb2RlRHJhZ1Zl cmRyYWh0ZW4oKSB7CiAgICB2YXIgY29udGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo J3NjLWRyYWctY29udGFpbmVyJyk7CiAgICBpZiAoIWNvbnRhaW5lcikgcmV0dXJuOwogICAgdmFy IGRyYWdDb2RlID0gbnVsbDsKICAgIGNvbnRhaW5lci5hZGRFdmVudExpc3RlbmVyKCdkcmFnc3Rh cnQnLCBmdW5jdGlvbihlKSB7CiAgICAgICAgdmFyIGNhcmQgPSBlLnRhcmdldC5jbG9zZXN0KCcu c2NoaWNodGNvZGUta2FydGUnKTsKICAgICAgICBpZiAoIWNhcmQpIHJldHVybjsKICAgICAgICBk cmFnQ29kZSA9IGNhcmQuZ2V0QXR0cmlidXRlKCdkYXRhLWNvZGUnKTsKICAgICAgICBjYXJkLmNs YXNzTGlzdC5hZGQoJ3NjLWRyYWdnaW5nJyk7CiAgICAgICAgZS5kYXRhVHJhbnNmZXIuZWZmZWN0 QWxsb3dlZCA9ICdtb3ZlJzsKICAgICAgICB0cnkgeyBlLmRhdGFUcmFuc2Zlci5zZXREYXRhKCd0 ZXh0L3BsYWluJywgZHJhZ0NvZGUpOyB9IGNhdGNoIChfKSB7fQogICAgfSk7CiAgICBjb250YWlu ZXIuYWRkRXZlbnRMaXN0ZW5lcignZHJhZ2VuZCcsIGZ1bmN0aW9uKGUpIHsKICAgICAgICB2YXIg Y2FyZCA9IGUudGFyZ2V0LmNsb3Nlc3QoJy5zY2hpY2h0Y29kZS1rYXJ0ZScpOwogICAgICAgIGlm IChjYXJkKSBjYXJkLmNsYXNzTGlzdC5yZW1vdmUoJ3NjLWRyYWdnaW5nJyk7CiAgICAgICAgY29u dGFpbmVyLnF1ZXJ5U2VsZWN0b3JBbGwoJy5zYy1kcm9wLWluZGljYXRvcicpLmZvckVhY2goZnVu Y3Rpb24oYykgeyBjLmNsYXNzTGlzdC5yZW1vdmUoJ3NjLWRyb3AtaW5kaWNhdG9yJyk7IH0pOwog ICAgfSk7CiAgICBjb250YWluZXIuYWRkRXZlbnRMaXN0ZW5lcignZHJhZ292ZXInLCBmdW5jdGlv bihlKSB7CiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgIHZhciBjYXJkID0gZS50 YXJnZXQuY2xvc2VzdCgnLnNjaGljaHRjb2RlLWthcnRlJyk7CiAgICAgICAgY29udGFpbmVyLnF1 ZXJ5U2VsZWN0b3JBbGwoJy5zYy1kcm9wLWluZGljYXRvcicpLmZvckVhY2goZnVuY3Rpb24oYykg eyBjLmNsYXNzTGlzdC5yZW1vdmUoJ3NjLWRyb3AtaW5kaWNhdG9yJyk7IH0pOwogICAgICAgIGlm IChjYXJkICYmIGNhcmQuZ2V0QXR0cmlidXRlKCdkYXRhLWNvZGUnKSAhPT0gZHJhZ0NvZGUpIHsK ICAgICAgICAgICAgY2FyZC5jbGFzc0xpc3QuYWRkKCdzYy1kcm9wLWluZGljYXRvcicpOwogICAg ICAgIH0KICAgIH0pOwogICAgY29udGFpbmVyLmFkZEV2ZW50TGlzdGVuZXIoJ2Ryb3AnLCBmdW5j dGlvbihlKSB7CiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgIHZhciB6aWVsID0g ZS50YXJnZXQuY2xvc2VzdCgnLnNjaGljaHRjb2RlLWthcnRlJyk7CiAgICAgICAgaWYgKCF6aWVs IHx8ICFkcmFnQ29kZSB8fCB6aWVsLmdldEF0dHJpYnV0ZSgnZGF0YS1jb2RlJykgPT09IGRyYWdD b2RlKSByZXR1cm47CiAgICAgICAgdmFyIGxpc3RlID0gKFouYWRtaW4uc2NoaWNodGNvZGVzIHx8 IFtdKS5zbGljZSgpOwogICAgICAgIHZhciB2b25JZHggPSBsaXN0ZS5maW5kSW5kZXgoZnVuY3Rp b24oYykgeyByZXR1cm4gYy5jb2RlID09PSBkcmFnQ29kZTsgfSk7CiAgICAgICAgdmFyIGJpc0lk eCA9IGxpc3RlLmZpbmRJbmRleChmdW5jdGlvbihjKSB7IHJldHVybiBjLmNvZGUgPT09IHppZWwu Z2V0QXR0cmlidXRlKCdkYXRhLWNvZGUnKTsgfSk7CiAgICAgICAgaWYgKHZvbklkeCA8IDAgfHwg YmlzSWR4IDwgMCkgcmV0dXJuOwogICAgICAgIHZhciBtb3ZlZCA9IGxpc3RlLnNwbGljZSh2b25J ZHgsIDEpWzBdOwogICAgICAgIGxpc3RlLnNwbGljZShiaXNJZHgsIDAsIG1vdmVkKTsKICAgICAg ICBhcGlQdXQoJy9hcGkvYWRtaW4nLCBPYmplY3QuYXNzaWduKHt9LCBaLmFkbWluLCB7IHNjaGlj aHRjb2RlczogbGlzdGUgfSkpLnRoZW4oZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIFouYWRtaW4u c2NoaWNodGNvZGVzID0gbGlzdGU7CiAgICAgICAgICAgIHNjaGljaHRjb2RlVm9yc2NoYXVSZW5k ZXJuKCk7CiAgICAgICAgICAgIHRvYXN0KCdSZWloZW5mb2xnZSBnZXNwZWljaGVydCcsICdlcmZv bGcnKTsKICAgICAgICB9KS5jYXRjaChmdW5jdGlvbihlKSB7IHRvYXN0KCdGZWhsZXI6ICcgKyBl Lm1lc3NhZ2UsICdmZWhsZXInKTsgfSk7CiAgICAgICAgZHJhZ0NvZGUgPSBudWxsOwogICAgfSk7 Cn0KCi8vIERlYWt0aXZpZXJlbiAvIEFrdGl2aWVyZW4gZWluZXMgU2NoaWNodGNvZGVzLiBCZWlt IERlYWt0aXZpZXJlbiBlaW5lcwovLyBub2NoIHZlcndlbmRldGVuIENvZGVzIHdpcmQgZWluIE1v ZGFsIGdlemVpZ3QgbWl0IE9wdGlvbmVuOgovLyAgKGEpIG51ciBzdGlsbGxlZ2VuIChiZXN0ZWhl bmRlIEVpbnRyYWVnZSBiZWhhbHRlbiBkZW4gQ29kZSkKLy8gIChiKSBhbGxlIGJlc3RlaGVuZGVu IEVpbnRyYWVnZSBkdXJjaCBlaW5lbiBhbmRlcmVuIGFrdGl2ZW4gQ29kZSBlcnNldHplbgovLyAg KGMpIGFsbGUgYmVzdGVoZW5kZW4gRWludHJhZWdlIGxlZXJlbgovLyBCZWltIEFrdGl2aWVyZW4g d2lyZCBkaXJla3QgdW1nZXNjaGFsdGV0IChrZWluZSBSdWVja2ZyYWdlIG5vZXRpZykuCmV4cG9y dCBmdW5jdGlvbiBzY2hpY2h0Y29kZVRvZ2dsZUFrdGl2KGNvZGVLZXkpIHsKICAgIHZhciBsaXN0 ZSA9IChaLmFkbWluLnNjaGljaHRjb2RlcyB8fCBbXSkuc2xpY2UoKTsKICAgIHZhciBpZHggPSBs aXN0ZS5maW5kSW5kZXgoZnVuY3Rpb24oYykgeyByZXR1cm4gYy5jb2RlID09PSBjb2RlS2V5OyB9 KTsKICAgIGlmIChpZHggPCAwKSByZXR1cm47CiAgICB2YXIgc2MgPSBsaXN0ZVtpZHhdOwogICAg dmFyIHdhckFrdGl2ID0gaXN0Q29kZUFrdGl2KHNjKTsKCiAgICBpZiAoIXdhckFrdGl2KSB7CiAg ICAgICAgLy8gQWt0aXZpZXJlbjogZGlyZWt0IHVtc2NoYWx0ZW4KICAgICAgICBsaXN0ZVtpZHhd ID0gT2JqZWN0LmFzc2lnbih7fSwgc2MsIHsgYWt0aXY6IHRydWUgfSk7CiAgICAgICAgc2NoaWNo dGNvZGVMaXN0ZVNwZWljaGVybihsaXN0ZSwgJ0NvZGUgIicgKyBzYy5jb2RlICsgJyIgYWt0aXZp ZXJ0Jyk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIC8vIFZvbiBha3RpdiAtPiBpbmFrdGl2 CiAgICB2YXIgdmVyd2VuZHVuZyA9IGNvZGVWZXJ3ZW5kdW5nWmFlaGxlbigpOwogICAgdmFyIGFu emFobCA9IHZlcndlbmR1bmdbc2MuY29kZV0gfHwgMDsKICAgIGlmIChhbnphaGwgPT09IDApIHsK ICAgICAgICBsaXN0ZVtpZHhdID0gT2JqZWN0LmFzc2lnbih7fSwgc2MsIHsgYWt0aXY6IGZhbHNl IH0pOwogICAgICAgIHNjaGljaHRjb2RlTGlzdGVTcGVpY2hlcm4obGlzdGUsICdDb2RlICInICsg c2MuY29kZSArICciIGRlYWt0aXZpZXJ0Jyk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIC8v IE1vZGFsIG1pdCBPcHRpb25lbgogICAgdmFyIGFrdGl2ZUNvZGVzID0gbGlzdGUuZmlsdGVyKGZ1 bmN0aW9uKGMpIHsgcmV0dXJuIGMuY29kZSAhPT0gc2MuY29kZSAmJiBpc3RDb2RlQWt0aXYoYyk7 IH0pOwogICAgYWt0aXZlQ29kZXMuc29ydChmdW5jdGlvbihhLCBiKSB7IHJldHVybiAoYS5jb2Rl IHx8ICcnKS5sb2NhbGVDb21wYXJlKGIuY29kZSB8fCAnJywgJ2RlJyk7IH0pOwogICAgdmFyIG9w dGlvbnNIdG1sID0gYWt0aXZlQ29kZXMubWFwKGZ1bmN0aW9uKGMpIHsKICAgICAgICByZXR1cm4g JzxvcHRpb24gdmFsdWU9IicgKyBlc2NhcGVBdHRyKGMuY29kZSkgKyAnIj4nICsgZXNjYXBlSFRN TChjLmt1ZXJ6ZWwgfHwgYy5jb2RlKSArICcg4oCUICcgKyBlc2NhcGVIVE1MKGMuYmV6ZWljaG51 bmcgfHwgJycpICsgJzwvb3B0aW9uPic7CiAgICB9KS5qb2luKCcnKTsKCiAgICB2YXIga29lcnBl ciA9ICc8cCBzdHlsZT0ibWFyZ2luOjAgMCAxMnB4IDAiPkRlciBDb2RlIDxiPicgKyBlc2NhcGVI VE1MKHNjLmNvZGUpICsgJzwvYj4gKCcgKyBlc2NhcGVIVE1MKHNjLmJlemVpY2hudW5nIHx8ICcn KSArICcpIGlzdCBpbiA8Yj4nICsgYW56YWhsICsgJzwvYj4gJyArCiAgICAgICAgKGFuemFobCA9 PT0gMSA/ICdFaW50cmFnJyA6ICdFaW50csOkZ2VuJykgKyAnIGRlciBQbGFudW5nIHZlcndlbmRl dC4gV2FzIHNvbGwgZGFtaXQgZ2VzY2hlaGVuPzwvcD4nICsKICAgICAgICAnPGRpdiBzdHlsZT0i ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtnYXA6MTBweDttYXJnaW4tdG9wOjZw eCI+JyArCiAgICAgICAgICAgICc8bGFiZWwgc3R5bGU9ImRpc3BsYXk6ZmxleDtnYXA6OHB4O2Fs aWduLWl0ZW1zOmZsZXgtc3RhcnQ7Y3Vyc29yOnBvaW50ZXIiPicgKwogICAgICAgICAgICAgICAg JzxpbnB1dCB0eXBlPSJyYWRpbyIgbmFtZT0ic2MtZGVha3QtbW9kdXMiIHZhbHVlPSJudXItc3Rp bGxsZWdlbiIgY2hlY2tlZCBzdHlsZT0ibWFyZ2luLXRvcDozcHgiPicgKwogICAgICAgICAgICAg ICAgJzxzcGFuPjxiPk51ciBzdGlsbGxlZ2VuPC9iPiAmbWRhc2g7IGJlc3RlaGVuZGUgRWludHLD pGdlIGJlaGFsdGVuIGRlbiBDb2RlLCBudXIgenVyIE5ldS1FaW5nYWJlIG5pY2h0IG1laHIgenVs YXNzZW4uPC9zcGFuPicgKwogICAgICAgICAgICAnPC9sYWJlbD4nICsKICAgICAgICAgICAgJzxs YWJlbCBzdHlsZT0iZGlzcGxheTpmbGV4O2dhcDo4cHg7YWxpZ24taXRlbXM6ZmxleC1zdGFydDtj dXJzb3I6cG9pbnRlciI+JyArCiAgICAgICAgICAgICAgICAnPGlucHV0IHR5cGU9InJhZGlvIiBu YW1lPSJzYy1kZWFrdC1tb2R1cyIgdmFsdWU9ImVyc2V0emVuIiBzdHlsZT0ibWFyZ2luLXRvcDoz cHgiPicgKwogICAgICAgICAgICAgICAgJzxzcGFuPjxiPkR1cmNoIGFuZGVyZW4gYWt0aXZlbiBD b2RlIGVyc2V0emVuPC9iPicgKwogICAgICAgICAgICAgICAgJzxicj48c2VsZWN0IGlkPSJzYy1l cnNldHplbi1kdXJjaCIgY2xhc3M9ImZvcm0taW5wdXQiIHN0eWxlPSJtYXJnaW4tdG9wOjRweDtt YXgtd2lkdGg6NDAwcHgiICcgKyAoYWt0aXZlQ29kZXMubGVuZ3RoID8gJycgOiAnZGlzYWJsZWQn KSArICc+JyArCiAgICAgICAgICAgICAgICAoYWt0aXZlQ29kZXMubGVuZ3RoID8gb3B0aW9uc0h0 bWwgOiAnPG9wdGlvbj7igJQga2VpbmUgYWt0aXZlbiBBbHRlcm5hdGl2ZW4gdm9yaGFuZGVuIOKA lDwvb3B0aW9uPicpICsKICAgICAgICAgICAgICAgICc8L3NlbGVjdD48L3NwYW4+JyArCiAgICAg ICAgICAgICc8L2xhYmVsPicgKwogICAgICAgICAgICAnPGxhYmVsIHN0eWxlPSJkaXNwbGF5OmZs ZXg7Z2FwOjhweDthbGlnbi1pdGVtczpmbGV4LXN0YXJ0O2N1cnNvcjpwb2ludGVyIj4nICsKICAg ICAgICAgICAgICAgICc8aW5wdXQgdHlwZT0icmFkaW8iIG5hbWU9InNjLWRlYWt0LW1vZHVzIiB2 YWx1ZT0ibGVlcmVuIiBzdHlsZT0ibWFyZ2luLXRvcDozcHgiPicgKwogICAgICAgICAgICAgICAg JzxzcGFuPjxiPkJlc3RlaGVuZGUgRWludHLDpGdlIGxlZXJlbjwvYj4gJm1kYXNoOyBhbGxlICcg KyBhbnphaGwgKyAnIFplbGxlbiBtaXQg4oCeJyArIGVzY2FwZUhUTUwoc2MuY29kZSkgKyAnIiB3 ZXJkZW4gYXVmIDxlbT5sZWVyPC9lbT4gZ2VzZXR6dC48L3NwYW4+JyArCiAgICAgICAgICAgICc8 L2xhYmVsPicgKwogICAgICAgICc8L2Rpdj4nOwogICAgdmFyIGZ1c3MgPSAnPGJ1dHRvbiBjbGFz cz0iYnRuIiBpZD0ic2MtZGVha3QtYWJicmVjaGVuIj5BYmJyZWNoZW48L2J1dHRvbj4nICsKICAg ICAgICAgICAgICAgJzxidXR0b24gY2xhc3M9ImJ0biBidG4tZ2VmYWhyIiBpZD0ic2MtZGVha3Qt b2siPkRlYWt0aXZpZXJlbjwvYnV0dG9uPic7CiAgICBtb2RhbFplaWdlbignQ29kZSDigJ4nICsg c2MuY29kZSArICciIGRlYWt0aXZpZXJlbicsIGtvZXJwZXIsIGZ1c3MsIG51bGwpOwogICAgZG9j dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NjLWRlYWt0LWFiYnJlY2hlbicpLmFkZEV2ZW50TGlzdGVu ZXIoJ2NsaWNrJywgbW9kYWxTY2hsaWVzc2VuKTsKICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk KCdzYy1kZWFrdC1vaycpLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oKSB7CiAg ICAgICAgdmFyIG1vZHVzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignaW5wdXRbbmFtZT0ic2Mt ZGVha3QtbW9kdXMiXTpjaGVja2VkJyk7CiAgICAgICAgaWYgKCFtb2R1cykgcmV0dXJuOwogICAg ICAgIG1vZHVzID0gbW9kdXMudmFsdWU7CiAgICAgICAgdmFyIGVyc2F0eiA9IG51bGw7CiAgICAg ICAgaWYgKG1vZHVzID09PSAnZXJzZXR6ZW4nKSB7CiAgICAgICAgICAgIGlmICghYWt0aXZlQ29k ZXMubGVuZ3RoKSB7IHRvYXN0KCdLZWluZSBFcnNhdHotQ29kZXMgdm9yaGFuZGVuJywgJ3dhcm51 bmcnKTsgcmV0dXJuOyB9CiAgICAgICAgICAgIGVyc2F0eiA9IGRvY3VtZW50LmdldEVsZW1lbnRC eUlkKCdzYy1lcnNldHplbi1kdXJjaCcpLnZhbHVlOwogICAgICAgIH0KCiAgICAgICAgLy8gU2No cml0dCAxOiBBZG1pbi1MaXN0ZSBtaXQgYWt0aXY6ZmFsc2UgbmV1IHNjaHJlaWJlbi4KICAgICAg ICAvLyBTY2hyaXR0IDI6IHBsYW51bmcuanNvbiB1bXNjaHJlaWJlbiAobnVyIGJlaSBlcnNldHpl bi9sZWVyZW4pLgogICAgICAgIGxpc3RlW2lkeF0gPSBPYmplY3QuYXNzaWduKHt9LCBzYywgeyBh a3RpdjogZmFsc2UgfSk7CiAgICAgICAgdmFyIG5ldWVQbGFudW5nID0gbnVsbDsKICAgICAgICBp ZiAobW9kdXMgPT09ICdlcnNldHplbicgfHwgbW9kdXMgPT09ICdsZWVyZW4nKSB7CiAgICAgICAg ICAgIHZhciBuZXVlcldlcnQgPSBtb2R1cyA9PT0gJ2Vyc2V0emVuJyA/IGVyc2F0eiA6ICcnOwog ICAgICAgICAgICBuZXVlUGxhbnVuZyA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoWi5wbGFu dW5nKSk7CiAgICAgICAgICAgIHZhciBlaW50ciA9IG5ldWVQbGFudW5nLmVpbnRyYWVnZSB8fCB7 fTsKICAgICAgICAgICAgT2JqZWN0LmtleXMoZWludHIpLmZvckVhY2goZnVuY3Rpb24oZCkgewog ICAgICAgICAgICAgICAgdmFyIHRhZyA9IGVpbnRyW2RdIHx8IHt9OwogICAgICAgICAgICAgICAg T2JqZWN0LmtleXModGFnKS5mb3JFYWNoKGZ1bmN0aW9uKHBpZCkgewogICAgICAgICAgICAgICAg ICAgIGlmICh0YWdbcGlkXSA9PT0gc2MuY29kZSkgewogICAgICAgICAgICAgICAgICAgICAgICBp ZiAobmV1ZXJXZXJ0KSB0YWdbcGlkXSA9IG5ldWVyV2VydDsKICAgICAgICAgICAgICAgICAgICAg ICAgZWxzZSBkZWxldGUgdGFnW3BpZF07CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAg ICAgICAgfSk7CiAgICAgICAgICAgIH0pOwogICAgICAgIH0KCiAgICAgICAgYXBpUHV0KCcvYXBp L2FkbWluJywgT2JqZWN0LmFzc2lnbih7fSwgWi5hZG1pbiwgeyBzY2hpY2h0Y29kZXM6IGxpc3Rl IH0pKS50aGVuKGZ1bmN0aW9uKCkgewogICAgICAgICAgICBaLmFkbWluLnNjaGljaHRjb2RlcyA9 IGxpc3RlOwogICAgICAgICAgICBpZiAobmV1ZVBsYW51bmcpIHsKICAgICAgICAgICAgICAgIHJl dHVybiBhcGlQdXQoJy9hcGkvcGxhbnVuZycsIG5ldWVQbGFudW5nKS50aGVuKGZ1bmN0aW9uKCkg ewogICAgICAgICAgICAgICAgICAgIFoucGxhbnVuZyA9IG5ldWVQbGFudW5nOwogICAgICAgICAg ICAgICAgfSk7CiAgICAgICAgICAgIH0KICAgICAgICB9KS50aGVuKGZ1bmN0aW9uKCkgewogICAg ICAgICAgICBtb2RhbFNjaGxpZXNzZW4oKTsKICAgICAgICAgICAgc2NoaWNodGNvZGVWb3JzY2hh dVJlbmRlcm4oKTsKICAgICAgICAgICAgaWYgKHR5cGVvZiBkYXRlbkdyaWRSZW5kZXJuID09PSAn ZnVuY3Rpb24nKSBkYXRlbkdyaWRSZW5kZXJuKCk7CiAgICAgICAgICAgIHZhciBtc2cgPSBtb2R1 cyA9PT0gJ2Vyc2V0emVuJyA/IChhbnphaGwgKyAnIEVpbnRyw6RnZSBhdWYgIicgKyBlcnNhdHog KyAnIiB1bWdlc3RlbGx0IHVuZCBDb2RlIGRlYWt0aXZpZXJ0JykKICAgICAgICAgICAgICAgICAg ICA6IG1vZHVzID09PSAnbGVlcmVuJyAgICA/IChhbnphaGwgKyAnIEVpbnRyw6RnZSBnZWxlZXJ0 IHVuZCBDb2RlIGRlYWt0aXZpZXJ0JykKICAgICAgICAgICAgICAgICAgICA6ICAgICAgICAgICAg ICAgICAgICAgICAgICdDb2RlIGRlYWt0aXZpZXJ0IChiZXN0ZWhlbmRlIEVpbnRyw6RnZSB1bnZl cmFlbmRlcnQpJzsKICAgICAgICAgICAgdG9hc3QobXNnLCAnZXJmb2xnJyk7CiAgICAgICAgfSku Y2F0Y2goZnVuY3Rpb24oZSkgewogICAgICAgICAgICB0b2FzdCgnRmVobGVyOiAnICsgZS5tZXNz YWdlLCAnZmVobGVyJyk7CiAgICAgICAgfSk7CiAgICB9KTsKfQoKZXhwb3J0IGZ1bmN0aW9uIHNj aGljaHRjb2RlTGlzdGVTcGVpY2hlcm4obGlzdGUsIHRvYXN0VGV4dCkgewogICAgYXBpUHV0KCcv YXBpL2FkbWluJywgT2JqZWN0LmFzc2lnbih7fSwgWi5hZG1pbiwgeyBzY2hpY2h0Y29kZXM6IGxp c3RlIH0pKS50aGVuKGZ1bmN0aW9uKCkgewogICAgICAgIFouYWRtaW4uc2NoaWNodGNvZGVzID0g bGlzdGU7CiAgICAgICAgc2NoaWNodGNvZGVWb3JzY2hhdVJlbmRlcm4oKTsKICAgICAgICB0b2Fz dCh0b2FzdFRleHQgfHwgJ0dlc3BlaWNoZXJ0JywgJ2VyZm9sZycpOwogICAgfSkuY2F0Y2goZnVu Y3Rpb24oZSkgeyB0b2FzdCgnRmVobGVyOiAnICsgZS5tZXNzYWdlLCAnZmVobGVyJyk7IH0pOwp9 CgpleHBvcnQgZnVuY3Rpb24gc2NoaWNodGNvZGVFZGl0TW9kYWxaZWlnZW4oY29kZUtleSkgewog ICAgdmFyIHZvcmggPSBjb2RlS2V5ID8gKFouYWRtaW4uc2NoaWNodGNvZGVzIHx8IFtdKS5maW5k KGZ1bmN0aW9uKGMpIHsgcmV0dXJuIGMuY29kZSA9PT0gY29kZUtleTsgfSkgOiBudWxsOwogICAg dmFyIHNjID0gdm9yaCA/IE9iamVjdC5hc3NpZ24oe30sIHZvcmgpIDogeyBjb2RlOiAnJywga3Vl cnplbDogJycsIGJlemVpY2hudW5nOiAnJywgaGludGVyZ3J1bmQ6ICcjQjcxQzFDJywgc2Nocmlm dDogJyNGRkZGRkYnIH07CiAgICB2YXIgaXN0TmV1ID0gIXZvcmg7CiAgICB2YXIgY29kZUZlbGRS ZWFkT25seSA9ICFpc3ROZXUgPyAnIHJlYWRvbmx5IHN0eWxlPSJiYWNrZ3JvdW5kOnZhcigtLWJn LWNhcmQtYWx0KTtjdXJzb3I6bm90LWFsbG93ZWQiJyA6ICcnOwogICAgdmFyIGNvZGVIaW53ZWlz ID0gaXN0TmV1ID8gJzxzbWFsbCBzdHlsZT0iY29sb3I6dmFyKC0tdGV4dC1tdXRlZCk7Zm9udC1z aXplOjExcHgiPlRlY2huaXNjaGVyIFNjaGzDvHNzZWwsIG5hY2ggQW5sYWdlIG5pY2h0IG1laHIg w6RuZGVyYmFyLjwvc21hbGw+JwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJzxzbWFs bCBzdHlsZT0iY29sb3I6dmFyKC0tdGV4dC1tdXRlZCk7Zm9udC1zaXplOjExcHgiPlRlY2huaXNj aGVyIFNjaGzDvHNzZWwg4oCUIG5pY2h0IMOkbmRlcmJhciwgZGEgbWl0IGJlc3RlaGVuZGVuIEVp bnRyw6RnZW4gdmVya27DvHBmdC48L3NtYWxsPic7CiAgICB2YXIga29lcnBlciA9ICc8ZGl2IHN0 eWxlPSJkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2dhcDoxMnB4Ij4nICsKICAg ICAgICAnPGRpdiBzdHlsZT0iZGlzcGxheTpmbGV4O2dhcDoxMnB4O2ZsZXgtd3JhcDp3cmFwIj4n ICsKICAgICAgICAgICAgJzxkaXYgY2xhc3M9ImZvcm0tZ3J1cHBlIGZvcm0tcGZsaWNodCIgc3R5 bGU9ImZsZXg6MTttaW4td2lkdGg6MTQwcHgiPjxsYWJlbD5Db2RlIChTY2hsw7xzc2VsKTwvbGFi ZWw+PGlucHV0IHR5cGU9InRleHQiIGlkPSJzYy1jb2RlIiBjbGFzcz0iZm9ybS1pbnB1dCIgdmFs dWU9IicgKyBlc2NhcGVBdHRyKHNjLmNvZGUpICsgJyIgbWF4bGVuZ3RoPSIxMCIgZGF0YS1tYXhs ZW5ndGgtY291bnRlcj0iMSIgcGxhY2Vob2xkZXI9InouQi4gRi1ER0wiJyArIGNvZGVGZWxkUmVh ZE9ubHkgKyAnPicgKyBjb2RlSGlud2VpcyArICc8L2Rpdj4nICsKICAgICAgICAgICAgJzxkaXYg Y2xhc3M9ImZvcm0tZ3J1cHBlIiBzdHlsZT0iZmxleDoxO21pbi13aWR0aDoxNDBweCI+PGxhYmVs PkvDvHJ6ZWwgKEFuemVpZ2UpPC9sYWJlbD48aW5wdXQgdHlwZT0idGV4dCIgaWQ9InNjLWt1ZXJ6 ZWwiIGNsYXNzPSJmb3JtLWlucHV0IiB2YWx1ZT0iJyArIGVzY2FwZUF0dHIoc2Mua3VlcnplbCB8 fCAnJykgKyAnIiBtYXhsZW5ndGg9IjEwIiBkYXRhLW1heGxlbmd0aC1jb3VudGVyPSIxIiBwbGFj ZWhvbGRlcj0iei5CLiBGIj48c21hbGwgc3R5bGU9ImNvbG9yOnZhcigtLXRleHQtbXV0ZWQpO2Zv bnQtc2l6ZTp2YXIoLS1mcy1zbSkiPkt1cnpmb3JtIGluIGRlciBQbGFudW5nc3plbGxlLiBLYW5u IG1pdCBkZW0gQ29kZSBpZGVudGlzY2ggc2Vpbi48L3NtYWxsPjwvZGl2PicgKwogICAgICAgICc8 L2Rpdj4nICsKICAgICAgICAnPGRpdiBjbGFzcz0iZm9ybS1ncnVwcGUgZm9ybS1wZmxpY2h0Ij48 bGFiZWw+QmV6ZWljaG51bmcgKExhbmduYW1lKTwvbGFiZWw+PGlucHV0IHR5cGU9InRleHQiIGlk PSJzYy1iZXplaWNobnVuZyIgY2xhc3M9ImZvcm0taW5wdXQiIHZhbHVlPSInICsgZXNjYXBlQXR0 cihzYy5iZXplaWNobnVuZyB8fCAnJykgKyAnIiBtYXhsZW5ndGg9IjYwIiBkYXRhLW1heGxlbmd0 aC1jb3VudGVyPSIxIiBwbGFjZWhvbGRlcj0iei5CLiBGcsO8aGRpZW5zdCBER0wiPjwvZGl2Picg KwogICAgICAgICc8ZGl2IHN0eWxlPSJkaXNwbGF5OmZsZXg7Z2FwOjEycHg7ZmxleC13cmFwOndy YXA7YWxpZ24taXRlbXM6ZmxleC1lbmQiPicgKwogICAgICAgICAgICAnPGRpdiBjbGFzcz0iZm9y bS1ncnVwcGUiIHN0eWxlPSJmbGV4OjE7bWluLXdpZHRoOjEzMHB4Ij48bGFiZWw+SGludGVyZ3J1 bmRmYXJiZTwvbGFiZWw+PGlucHV0IHR5cGU9ImNvbG9yIiBpZD0ic2MtaGludGVyZ3J1bmQiIGNs YXNzPSJmb3JtLWlucHV0IiB2YWx1ZT0iJyArIGVzY2FwZUF0dHIoc2MuaGludGVyZ3J1bmQgfHwg JyNCNzFDMUMnKSArICciIHN0eWxlPSJoZWlnaHQ6MzhweDtwYWRkaW5nOjJweCA0cHg7Y3Vyc29y OnBvaW50ZXIiPjwvZGl2PicgKwogICAgICAgICAgICAnPGRpdiBjbGFzcz0iZm9ybS1ncnVwcGUi IHN0eWxlPSJmbGV4OjE7bWluLXdpZHRoOjEzMHB4Ij48bGFiZWw+U2NocmlmdGZhcmJlPC9sYWJl bD48aW5wdXQgdHlwZT0iY29sb3IiIGlkPSJzYy1zY2hyaWZ0IiBjbGFzcz0iZm9ybS1pbnB1dCIg dmFsdWU9IicgKyBlc2NhcGVBdHRyKHNjLnNjaHJpZnQgfHwgJyNGRkZGRkYnKSArICciIHN0eWxl PSJoZWlnaHQ6MzhweDtwYWRkaW5nOjJweCA0cHg7Y3Vyc29yOnBvaW50ZXIiPjwvZGl2PicgKwog ICAgICAgICAgICAnPGRpdiBjbGFzcz0iZm9ybS1ncnVwcGUiIHN0eWxlPSJmbGV4OjE7bWluLXdp ZHRoOjE0MHB4Ij48bGFiZWw+Vm9yc2NoYXU8L2xhYmVsPjxkaXYgaWQ9InNjLXZvcnNjaGF1IiBz dHlsZT0icGFkZGluZzo4cHggMTJweDtib3JkZXItcmFkaXVzOjZweDtmb250LXdlaWdodDo3MDA7 dGV4dC1hbGlnbjpjZW50ZXI7YmFja2dyb3VuZDonICsgZXNjYXBlQXR0cihzYy5oaW50ZXJncnVu ZCB8fCAnI0I3MUMxQycpICsgJztjb2xvcjonICsgZXNjYXBlQXR0cihzYy5zY2hyaWZ0IHx8ICcj RkZGRkZGJykgKyAnIj4nICsgZXNjYXBlSFRNTChzYy5jb2RlIHx8ICdWb3JzY2hhdScpICsgJzwv ZGl2PjwvZGl2PicgKwogICAgICAgICc8L2Rpdj4nICsKICAgICc8L2Rpdj4nOwogICAgdmFyIGZv b3RlciA9ICh2b3JoID8gJzxidXR0b24gY2xhc3M9ImJ0biBidG4tZ2VmYWhyIiBpZD0ic2MtbG9l c2NoZW4iIHN0eWxlPSJtYXJnaW4tcmlnaHQ6YXV0byI+TMO2c2NoZW48L2J1dHRvbj4nIDogJycp ICsKICAgICAgICAnPGJ1dHRvbiBjbGFzcz0iYnRuIiBpZD0ic2MtYWJicmVjaGVuIj5BYmJyZWNo ZW48L2J1dHRvbj4nICsKICAgICAgICAnPGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1wcmltYWVyIiBp ZD0ic2Mtc3BlaWNoZXJuIj5TcGVpY2hlcm48L2J1dHRvbj4nOwogICAgbW9kYWxaZWlnZW4odm9y aCA/ICdTY2hpY2h0Y29kZSBiZWFyYmVpdGVuJyA6ICdOZXVlciBTY2hpY2h0Y29kZScsIGtvZXJw ZXIsIGZvb3RlciwgbnVsbCk7CgogICAgZnVuY3Rpb24gdm9yc2NoYXVVcGRhdGUoKSB7CiAgICAg ICAgdmFyIGhnID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NjLWhpbnRlcmdydW5kJykudmFs dWU7CiAgICAgICAgdmFyIHNmID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NjLXNjaHJpZnQn KS52YWx1ZTsKICAgICAgICB2YXIga3UgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2Mta3Vl cnplbCcpLnZhbHVlIHx8IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzYy1jb2RlJykudmFsdWUg fHwgJ1ZvcnNjaGF1JzsKICAgICAgICB2YXIgdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdz Yy12b3JzY2hhdScpOwogICAgICAgIHYuc3R5bGUuYmFja2dyb3VuZCA9IGhnOyB2LnN0eWxlLmNv bG9yID0gc2Y7IHYudGV4dENvbnRlbnQgPSBrdTsKICAgIH0KICAgIFsnc2MtaGludGVyZ3J1bmQn LCdzYy1zY2hyaWZ0Jywnc2Mta3VlcnplbCcsJ3NjLWNvZGUnXS5mb3JFYWNoKGZ1bmN0aW9uKGlk KSB7CiAgICAgICAgdmFyIGVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpOyBpZiAoZWwp IGVsLmFkZEV2ZW50TGlzdGVuZXIoJ2lucHV0Jywgdm9yc2NoYXVVcGRhdGUpOwogICAgfSk7Cgog ICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NjLWFiYnJlY2hlbicpLmFkZEV2ZW50TGlzdGVu ZXIoJ2NsaWNrJywgbW9kYWxTY2hsaWVzc2VuKTsKICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk KCdzYy1zcGVpY2hlcm4nKS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKCkgewog ICAgICAgIHZhciBkYXRlbiA9IHsKICAgICAgICAgICAgY29kZTogZG9jdW1lbnQuZ2V0RWxlbWVu dEJ5SWQoJ3NjLWNvZGUnKS52YWx1ZS50cmltKCksCiAgICAgICAgICAgIGt1ZXJ6ZWw6IGRvY3Vt ZW50LmdldEVsZW1lbnRCeUlkKCdzYy1rdWVyemVsJykudmFsdWUudHJpbSgpIHx8IGRvY3VtZW50 LmdldEVsZW1lbnRCeUlkKCdzYy1jb2RlJykudmFsdWUudHJpbSgpLAogICAgICAgICAgICBiZXpl aWNobnVuZzogZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NjLWJlemVpY2hudW5nJykudmFsdWUu dHJpbSgpLAogICAgICAgICAgICBoaW50ZXJncnVuZDogZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo J3NjLWhpbnRlcmdydW5kJykudmFsdWUsCiAgICAgICAgICAgIHNjaHJpZnQ6IGRvY3VtZW50Lmdl dEVsZW1lbnRCeUlkKCdzYy1zY2hyaWZ0JykudmFsdWUKICAgICAgICB9OwogICAgICAgIGlmICgh ZGF0ZW4uY29kZSkgeyBwZmxpY2h0ZmVsZEZlaGxlcignc2MtY29kZScsICdDb2RlIGlzdCBQZmxp Y2h0ZmVsZCcpOyByZXR1cm47IH0KICAgICAgICBpZiAoIWRhdGVuLmJlemVpY2hudW5nKSB7IHBm bGljaHRmZWxkRmVobGVyKCdzYy1iZXplaWNobnVuZycsICdCZXplaWNobnVuZyBpc3QgUGZsaWNo dGZlbGQnKTsgcmV0dXJuOyB9CiAgICAgICAgaWYgKGlzdE5ldSAmJiAoWi5hZG1pbi5zY2hpY2h0 Y29kZXMgfHwgW10pLnNvbWUoZnVuY3Rpb24oYykgeyByZXR1cm4gYy5jb2RlID09PSBkYXRlbi5j b2RlOyB9KSkgewogICAgICAgICAgICB0b2FzdCgnQ29kZSDigJ4nICsgZGF0ZW4uY29kZSArICci IGV4aXN0aWVydCBiZXJlaXRzJywgJ3dhcm51bmcnKTsgcmV0dXJuOwogICAgICAgIH0KICAgICAg ICB2YXIgbGlzdGUgPSAoWi5hZG1pbi5zY2hpY2h0Y29kZXMgfHwgW10pLnNsaWNlKCk7CiAgICAg ICAgaWYgKGlzdE5ldSkgbGlzdGUucHVzaChkYXRlbik7CiAgICAgICAgZWxzZSB7CiAgICAgICAg ICAgIHZhciBpZHggPSBsaXN0ZS5maW5kSW5kZXgoZnVuY3Rpb24oYykgeyByZXR1cm4gYy5jb2Rl ID09PSB2b3JoLmNvZGU7IH0pOwogICAgICAgICAgICBpZiAoaWR4ID49IDApIGxpc3RlW2lkeF0g PSBkYXRlbjsKICAgICAgICB9CiAgICAgICAgYXBpUHV0KCcvYXBpL2FkbWluJywgT2JqZWN0LmFz c2lnbih7fSwgWi5hZG1pbiwgeyBzY2hpY2h0Y29kZXM6IGxpc3RlIH0pKS50aGVuKGZ1bmN0aW9u KCkgewogICAgICAgICAgICBaLmFkbWluLnNjaGljaHRjb2RlcyA9IGxpc3RlOwogICAgICAgICAg ICAvLyBjb2RlTWFwIGFrdHVhbGlzaWVyZW4KICAgICAgICAgICAgWi5jb2RlTWFwID0ge307CiAg ICAgICAgICAgIGxpc3RlLmZvckVhY2goZnVuY3Rpb24oYykgeyBaLmNvZGVNYXBbYy5jb2RlXSA9 IHsgaGludGVyZ3J1bmQ6IGMuaGludGVyZ3J1bmQsIHNjaHJpZnQ6IGMuc2NocmlmdCwga3Vlcnpl bDogYy5rdWVyemVsIHx8IGMuY29kZSB9OyB9KTsKICAgICAgICAgICAgc2NoaWNodGNvZGVWb3Jz Y2hhdVJlbmRlcm4oKTsKICAgICAgICAgICAgaWYgKHR5cGVvZiBkYXRlbkdyaWRSZW5kZXJuID09 PSAnZnVuY3Rpb24nKSBkYXRlbkdyaWRSZW5kZXJuKCk7CiAgICAgICAgICAgIG1vZGFsU2NobGll c3NlbigpOwogICAgICAgICAgICB0b2FzdCgnU2NoaWNodGNvZGUgZ2VzcGVpY2hlcnQnLCAnZXJm b2xnJyk7CiAgICAgICAgfSkuY2F0Y2goZnVuY3Rpb24oZSkgeyB0b2FzdCgnRmVobGVyOiAnICsg ZS5tZXNzYWdlLCAnZmVobGVyJyk7IH0pOwogICAgfSk7CiAgICBpZiAodm9yaCkgewogICAgICAg IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzYy1sb2VzY2hlbicpLmFkZEV2ZW50TGlzdGVuZXIo J2NsaWNrJywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGJlc3RhZXRpZ2VuKCdTY2hpY2h0Y29k ZSDigJ4nICsgdm9yaC5jb2RlICsgJyIgd2lya2xpY2ggbMO2c2NoZW4/XG5cbkJlc3RlaGVuZGUg RWludHLDpGdlIG1pdCBkaWVzZW0gQ29kZSBibGVpYmVuIGluIGRlciBQbGFudW5nIGVyaGFsdGVu LCB3ZXJkZW4gYWJlciBvaG5lIEZhcmJlIGRhcmdlc3RlbGx0LicsIGZ1bmN0aW9uKCkgewogICAg ICAgICAgICAgICAgdmFyIGxpc3RlID0gKFouYWRtaW4uc2NoaWNodGNvZGVzIHx8IFtdKS5maWx0 ZXIoZnVuY3Rpb24oYykgeyByZXR1cm4gYy5jb2RlICE9PSB2b3JoLmNvZGU7IH0pOwogICAgICAg ICAgICAgICAgYXBpUHV0KCcvYXBpL2FkbWluJywgT2JqZWN0LmFzc2lnbih7fSwgWi5hZG1pbiwg eyBzY2hpY2h0Y29kZXM6IGxpc3RlIH0pKS50aGVuKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAg ICAgICAgIFouYWRtaW4uc2NoaWNodGNvZGVzID0gbGlzdGU7CiAgICAgICAgICAgICAgICAgICAg Wi5jb2RlTWFwID0ge307CiAgICAgICAgICAgICAgICAgICAgbGlzdGUuZm9yRWFjaChmdW5jdGlv bihjKSB7IFouY29kZU1hcFtjLmNvZGVdID0geyBoaW50ZXJncnVuZDogYy5oaW50ZXJncnVuZCwg c2NocmlmdDogYy5zY2hyaWZ0LCBrdWVyemVsOiBjLmt1ZXJ6ZWwgfHwgYy5jb2RlIH07IH0pOwog ICAgICAgICAgICAgICAgICAgIHNjaGljaHRjb2RlVm9yc2NoYXVSZW5kZXJuKCk7CiAgICAgICAg ICAgICAgICAgICAgaWYgKHR5cGVvZiBkYXRlbkdyaWRSZW5kZXJuID09PSAnZnVuY3Rpb24nKSBk YXRlbkdyaWRSZW5kZXJuKCk7CiAgICAgICAgICAgICAgICAgICAgbW9kYWxTY2hsaWVzc2VuKCk7 CiAgICAgICAgICAgICAgICAgICAgdG9hc3QoJ1NjaGljaHRjb2RlIGdlbMO2c2NodCcsICdlcmZv bGcnKTsKICAgICAgICAgICAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uKGUpIHsgdG9hc3QoJ0ZlaGxl cjogJyArIGUubWVzc2FnZSwgJ2ZlaGxlcicpOyB9KTsKICAgICAgICAgICAgfSwgeyB0aXRlbDog J1NjaGljaHRjb2RlIGzDtnNjaGVuJywgamFEYW5nZXI6IHRydWUgfSk7CiAgICAgICAgfSk7CiAg ICB9Cn0K ### FILE: js/admin_common.js | 1528 Ly8gPT09IGFkbWluX2NvbW1vbi5qcyA9PT0KLy8gV2llZGVydmVyd2VuZGJhcmUgVGFiZWxsZW4t SGVsZmVyIGZ1ZXIgQWRtaW4tU3ViLU1vZHVsZS4KCi8vIExpZXN0IGFsbGUgVGFiZWxsZW4tRmVs ZGVyIG1pdCBLbGFzc2UgYGtsYXNzZWAgKHouQi4gJ2ZlaWVydGFnLWlucHV0JykKLy8gaW4gZWlu ZSBMaXN0ZSB2b24gT2JqZWt0ZW4gZWluLiBKZWRlcyBGZWxkIG11c3MgYGRhdGEtaWR4YCAoWmVp bGVuLUluZGV4KQovLyB1bmQgYGRhdGEtZmVsZGAgKFByb3BlcnR5LU5hbWUpIHRyYWdlbi4KLy8K Ly8gYm9vbEZlbGRlcjogTGlzdGUgdm9uIEZlbGQtTmFtZW4sIGRpZSBhbHMgQ2hlY2tib3ggaW50 ZXJwcmV0aWVydCB3ZXJkZW4KLy8gKGYuY2hlY2tlZCBzdGF0dCBmLnZhbHVlKS4gRGVmYXVsdDog bGVlci4KLy8KLy8gdHJpbTogd2VubiB0cnVlLCB3ZXJkZW4gU3RyaW5nLVdlcnRlIGJlaW0gRWlu bGVzZW4gLnRyaW0oKS1hdWZnZXJ1ZmVuLgovLwovLyBSdWVja2dhYmU6IEFycmF5IHZvbiBPYmpl a3RlbiBpbiBkZXIgUmVpaGVuZm9sZ2UgZGVyIGRhdGEtaWR4LVdlcnRlLgpleHBvcnQgZnVuY3Rp b24gdGFiZWxsZUZlbGRlckxlc2VuKGtsYXNzZSwgb3B0cykgewogICAgb3B0cyA9IG9wdHMgfHwg e307CiAgICB2YXIgYm9vbFNldCA9IHt9OwogICAgKG9wdHMuYm9vbEZlbGRlciB8fCBbXSkuZm9y RWFjaChmdW5jdGlvbihrKSB7IGJvb2xTZXRba10gPSB0cnVlOyB9KTsKICAgIHZhciB0cmltID0g ISFvcHRzLnRyaW07CiAgICB2YXIgZmVsZGVyID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgn LicgKyBrbGFzc2UpOwogICAgdmFyIG1hcCA9IHt9OwogICAgZmVsZGVyLmZvckVhY2goZnVuY3Rp b24oZikgewogICAgICAgIHZhciBpZHggPSBmLmdldEF0dHJpYnV0ZSgnZGF0YS1pZHgnKTsKICAg ICAgICB2YXIgZmVsZCA9IGYuZ2V0QXR0cmlidXRlKCdkYXRhLWZlbGQnKTsKICAgICAgICBpZiAo IW1hcFtpZHhdKSBtYXBbaWR4XSA9IHt9OwogICAgICAgIGlmIChib29sU2V0W2ZlbGRdKSB7CiAg ICAgICAgICAgIG1hcFtpZHhdW2ZlbGRdID0gZi5jaGVja2VkOwogICAgICAgIH0gZWxzZSB7CiAg ICAgICAgICAgIHZhciB2ID0gZi52YWx1ZTsKICAgICAgICAgICAgbWFwW2lkeF1bZmVsZF0gPSB0 cmltID8gdi50cmltKCkgOiB2OwogICAgICAgIH0KICAgIH0pOwogICAgLy8gU3RhYmlsIHNvcnRp ZXJ0IG5hY2ggbnVtZXJpc2NoZW0gZGF0YS1pZHgsIGRhbWl0IGRpZSBSZWloZW5mb2xnZQogICAg Ly8gZGVyIERPTS1aZWlsZW4gZXJoYWx0ZW4gYmxlaWJ0IChPYmplY3Qua2V5cyBpc3QgaW4gTW9k ZXJuLUJyb3dzZXJuCiAgICAvLyBzY2hvbiBzb3J0aWVydCwgYWJlciBleHBsaXppdCBpc3Qgc2lj aGVyZXIpLgogICAgcmV0dXJuIE9iamVjdC5rZXlzKG1hcCkKICAgICAgICAuc29ydChmdW5jdGlv bihhLCBiKSB7IHJldHVybiBwYXJzZUludChhLCAxMCkgLSBwYXJzZUludChiLCAxMCk7IH0pCiAg ICAgICAgLm1hcChmdW5jdGlvbihrKSB7IHJldHVybiBtYXBba107IH0pOwp9Cg== ### FILE: js/admin_erscheinungsbild.js | 31741 Ly8gPT09IGFkbWluX2Vyc2NoZWludW5nc2JpbGQuanMgPT09Ci8vIEtvbmZpZ3VyaWVyYmFyZSB2 aXN1ZWxsZSBNYXJraWVydW5nZW4gZnVlciBLb3BmLVplbGxlbiArIExpdmUtU3luYy1GbGFzaC4K Ly8gRGF0ZW5tb2RlbGwgdW50ZXIgWi5hZG1pbi5tYXJraWVydW5nZW4gbWl0IGZ1ZW5mIFR5cGVu OgovLyAgIHNvbmRlcnRhZ0hpbndlaXMsIHNvbmRlcnRhZ1dhcm51bmcsIGZlaWVydGFnV2ljaHRp ZywgaGV1dGVTcGFsdGUsIHN5bmNGbGFzaAovLyBKZWRlIE1hcmtpZXJ1bmcgaGF0IGRpZXNlbGJl IFBhcmFtZXRlci1TdHJ1a3R1ciAoc2llaGUgTUFSS0lFUlVOR19ERUZBVUxUUykuCi8vIEJlaW0g QW53ZW5kZW4gd2VyZGVuIENTUy1DdXN0b20tUHJvcGVydGllcyBhbSA6cm9vdCBnZXNldHp0IHVu ZCBkaWUgZW50LQovLyBzcHJlY2hlbmRlbiBLbGFzc2VuIGluIHN0eWxlLmNzcyBncmVpZmVuIGRh cmF1ZiB6dSAodmFyKC0tbWgtYmcpIGV0Yy4pLgoKaW1wb3J0IHsgWiB9IGZyb20gJy4vY29yZV9z dGF0ZS5qcyc7CmltcG9ydCB7IGVzY2FwZUhUTUwsIGVzY2FwZUF0dHIgfSBmcm9tICcuL2NvcmVf dXRpbC5qcyc7CmltcG9ydCB7IGFwaVB1dCB9IGZyb20gJy4vY29yZV9hcGkuanMnOwppbXBvcnQg eyB0b2FzdCwgZGlydHlSZWdpc3RyaWVyZSwgZGlydHlTZXR6ZW4sIGRpcnR5S2VubnQgfSBmcm9t ICcuL3VpX2RpYWxvZy5qcyc7CgovLyA9PT09PSBEZWZhdWx0cyA9PT09PQoKdmFyIEZFTERfTkFN RU4gPSB7CiAgICBoaW50ZXJncnVuZDogICAgICAgICAgICdIaW50ZXJncnVuZCcsCiAgICB0ZXh0 OiAgICAgICAgICAgICAgICAgICdUZXh0ZmFyYmUnLAogICAgc2NocmlmdGdld2ljaHQ6ICAgICAg ICAnU2NocmlmdGdld2ljaHQnLAogICAgc2NocmlmdGdyb2Vzc2VGYWt0b3I6ICAnU2NocmlmdGdy w7bDn2UnLAogICAgcmFobWVuT2JlbjogICAgICAgICAgICAnUmFobWVuIG9iZW4nLAogICAgcmFo bWVuVW50ZW46ICAgICAgICAgICAnUmFobWVuIHVudGVuJywKICAgIHJhaG1lbkxpbmtzOiAgICAg ICAgICAgJ1JhaG1lbiBsaW5rcycsCiAgICByYWhtZW5SZWNodHM6ICAgICAgICAgICdSYWhtZW4g cmVjaHRzJywKICAgIHJhaG1lbkZhcmJlOiAgICAgICAgICAgJ1JhaG1lbmZhcmJlJywKICAgIGds b3dGYXJiZTogICAgICAgICAgICAgJ0dsb3ctRmFyYmUnLAogICAgZ2xvd0RlY2trcmFmdDogICAg ICAgICAnR2xvdy1JbnRlbnNpdMOkdCcsCiAgICBnbG93V2VpdGU6ICAgICAgICAgICAgICdHbG93 LVdlaXRlJywKICAgIGdsb3dQdWxzOiAgICAgICAgICAgICAgJ0dsb3cgcHVsc2llcnQnLAogICAg c3BhbHRlSGludGVyZ3J1bmQ6ICAgICAnU3BhbHRlbi1Uw7ZudW5nIChHcmlkKScKfTsKCmV4cG9y dCB2YXIgTUFSS0lFUlVOR0VOX01FVEEgPSBbCiAgICB7IGtleTogJ3NvbmRlcnRhZ0hpbndlaXMn LCAgbGFiZWw6ICdTb25kZXJ0YWcg4oCUIEhpbndlaXMnLCAgIGJlc2NocmVpYnVuZzogJ1RhZyBt aXQgU29uZGVydGVybWluIFR5cCDigJ5IaW53ZWlzIicgfSwKICAgIHsga2V5OiAnc29uZGVydGFn V2FybnVuZycsICBsYWJlbDogJ1NvbmRlcnRhZyDigJQgV2FybnVuZycsICAgYmVzY2hyZWlidW5n OiAnVGFnIG1pdCBTb25kZXJ0ZXJtaW4gVHlwIOKAnldhcm51bmciJyB9LAogICAgeyBrZXk6ICdm ZWllcnRhZ1dpY2h0aWcnLCAgIGxhYmVsOiAnV2ljaHRpZ2VyIEZlaWVydGFnJywgICAgYmVzY2hy ZWlidW5nOiAnRmVpZXJ0YWcgbWl0IOKAnldpY2h0aWciLUZsYWcgaW0gQWRtaW4tS2FsZW5kZXIn IH0sCiAgICB7IGtleTogJ2ZlcmllbicsICAgICAgICAgICAgbGFiZWw6ICdGZXJpZW4nLCAgICAg ICAgICAgICAgICBiZXNjaHJlaWJ1bmc6ICdTY2h1bGZlcmllbi1aZWl0cmF1bSDigJQg4oCeSGlu dGVyZ3J1bmQvU2NocmlmdCIgc3R5bGVuIGRlbiBCYWxrZW4gaW0gS29wZiwg4oCeU3BhbHRlbi1U w7ZudW5nIiBmw6RyYnQgZGllIEZlcmllbnRhZ2UgaW0gR3JpZCcgfSwKICAgIHsga2V5OiAnaGV1 dGVTcGFsdGUnLCAgICAgICBsYWJlbDogJ0hFVVRFIOKAlCBUYWdlc3NwYWx0ZScsICAgYmVzY2hy ZWlidW5nOiAnTWFya2llcnVuZyBkZXIgaGV1dGlnZW4gVGFnZXNzcGFsdGUgKERhdGVuLVplbGxl biwgbmljaHQgZGVyIEhlYWRlciknIH0sCiAgICB7IGtleTogJ3N5bmNGbGFzaCcsICAgICAgICAg bGFiZWw6ICdMaXZlLVN5bmMg4oCUIEF1ZmxldWNodGVuJywgYmVzY2hyZWlidW5nOiAnS3VyemVz IEF1ZmxldWNodGVuLCB3ZW5uIGVpbiBhbmRlcmVyIFVzZXIgZWluZSBaZWxsZSDDpG5kZXJ0JyB9 Cl07CgovLyBEZWZhdWx0cyBvcmllbnRpZXJlbiBzaWNoIGFtIGJpc2hlcmlnZW4gU3R5bGUgKHZv ciBkaWVzZW0gRmVhdHVyZSkuIFdlcgovLyBuaWNodHMgc3BlaWNoZXJ0LCBzaWVodCB3ZWl0ZXJo aW4gZGVuIHZlcnRyYXV0ZW4gTG9vay4KZXhwb3J0IHZhciBNQVJLSUVSVU5HRU5fREVGQVVMVFMg PSB7CiAgICBzb25kZXJ0YWdIaW53ZWlzOiB7CiAgICAgICAgaGludGVyZ3J1bmQ6ICcnLCB0ZXh0 OiAnJywKICAgICAgICBzY2hyaWZ0Z2V3aWNodDogNDAwLCBzY2hyaWZ0Z3JvZXNzZUZha3Rvcjog MS4wLAogICAgICAgIHJhaG1lbk9iZW46IDAsIHJhaG1lblVudGVuOiA0LCByYWhtZW5MaW5rczog MCwgcmFobWVuUmVjaHRzOiAwLAogICAgICAgIHJhaG1lbkZhcmJlOiAnIzRhOTBlMicsCiAgICAg ICAgZ2xvd0ZhcmJlOiAnIzRhOTBlMicsIGdsb3dEZWNra3JhZnQ6IDAuNTUsIGdsb3dXZWl0ZTog MSwgZ2xvd1B1bHM6IGZhbHNlCiAgICB9LAogICAgc29uZGVydGFnV2FybnVuZzogewogICAgICAg IGhpbnRlcmdydW5kOiAnJywgdGV4dDogJycsCiAgICAgICAgc2NocmlmdGdld2ljaHQ6IDQwMCwg c2NocmlmdGdyb2Vzc2VGYWt0b3I6IDEuMCwKICAgICAgICByYWhtZW5PYmVuOiAwLCByYWhtZW5V bnRlbjogNCwgcmFobWVuTGlua3M6IDAsIHJhaG1lblJlY2h0czogMCwKICAgICAgICByYWhtZW5G YXJiZTogJyNlNjdlMjInLAogICAgICAgIGdsb3dGYXJiZTogJyNlNjdlMjInLCBnbG93RGVja2ty YWZ0OiAwLjcsIGdsb3dXZWl0ZTogMSwgZ2xvd1B1bHM6IHRydWUKICAgIH0sCiAgICBmZWllcnRh Z1dpY2h0aWc6IHsKICAgICAgICBoaW50ZXJncnVuZDogJyM0QTZBOEMnLCB0ZXh0OiAnI0ZGRkZG RicsCiAgICAgICAgc2NocmlmdGdld2ljaHQ6IDcwMCwgc2NocmlmdGdyb2Vzc2VGYWt0b3I6IDEu MCwKICAgICAgICByYWhtZW5PYmVuOiAwLCByYWhtZW5VbnRlbjogMywgcmFobWVuTGlua3M6IDAs IHJhaG1lblJlY2h0czogMCwKICAgICAgICByYWhtZW5GYXJiZTogJyNENEEwMTcnLAogICAgICAg IGdsb3dGYXJiZTogJyNENEEwMTcnLCBnbG93RGVja2tyYWZ0OiAwLCBnbG93V2VpdGU6IDAsIGds b3dQdWxzOiBmYWxzZQogICAgfSwKICAgIGZlcmllbjogewogICAgICAgIC8vIGhpbnRlcmdydW5k L3RleHQvLi4uIHN0eWxlbiBkZW4gRmVyaWVuLUJBTEtFTiBpbSBLb3BmIChCYWxrZW4gaGF0dGUK ICAgICAgICAvLyBiaXNoZXIga2VpbmVuIEZpbGwgLT4gRGVmYXVsdCB0cmFuc3BhcmVudCwgZ3J1 ZW5lciBMYWJlbC1UZXh0KS4KICAgICAgICBoaW50ZXJncnVuZDogJycsIHRleHQ6ICcjMjU2MDI5 JywKICAgICAgICBzY2hyaWZ0Z2V3aWNodDogNzAwLCBzY2hyaWZ0Z3JvZXNzZUZha3RvcjogMS4w LAogICAgICAgIHJhaG1lbk9iZW46IDAsIHJhaG1lblVudGVuOiAwLCByYWhtZW5MaW5rczogMCwg cmFobWVuUmVjaHRzOiAwLAogICAgICAgIHJhaG1lbkZhcmJlOiAnIzJFN0QzMicsCiAgICAgICAg Z2xvd0ZhcmJlOiAnIzJFN0QzMicsIGdsb3dEZWNra3JhZnQ6IDAsIGdsb3dXZWl0ZTogMCwgZ2xv d1B1bHM6IGZhbHNlLAogICAgICAgIC8vIGZlcmllbi1zcGV6aWZpc2NoOiBIaW50ZXJncnVuZC1U b2VudW5nIGRlciBGZXJpZW50YWdlIGltIEdyaWQuCiAgICAgICAgc3BhbHRlSGludGVyZ3J1bmQ6 ICcjRTBGMEU0JwogICAgfSwKICAgIGhldXRlU3BhbHRlOiB7CiAgICAgICAgaGludGVyZ3J1bmQ6 ICcjRkZGNEQ0JywgdGV4dDogJycsCiAgICAgICAgc2NocmlmdGdld2ljaHQ6IDQwMCwgc2Nocmlm dGdyb2Vzc2VGYWt0b3I6IDEuMCwKICAgICAgICByYWhtZW5PYmVuOiAwLCByYWhtZW5VbnRlbjog MCwgcmFobWVuTGlua3M6IDIsIHJhaG1lblJlY2h0czogMiwKICAgICAgICByYWhtZW5GYXJiZTog JyNENEEwMTcnLAogICAgICAgIGdsb3dGYXJiZTogJyNENEEwMTcnLCBnbG93RGVja2tyYWZ0OiAw LCBnbG93V2VpdGU6IDAsIGdsb3dQdWxzOiBmYWxzZQogICAgfSwKICAgIHN5bmNGbGFzaDogewog ICAgICAgIGhpbnRlcmdydW5kOiAnI0ZGRTY4MCcsIHRleHQ6ICcnLAogICAgICAgIHNjaHJpZnRn ZXdpY2h0OiA0MDAsIHNjaHJpZnRncm9lc3NlRmFrdG9yOiAxLjAsCiAgICAgICAgcmFobWVuT2Jl bjogMCwgcmFobWVuVW50ZW46IDAsIHJhaG1lbkxpbmtzOiAwLCByYWhtZW5SZWNodHM6IDAsCiAg ICAgICAgcmFobWVuRmFyYmU6ICcjRDRBMDE3JywKICAgICAgICBnbG93RmFyYmU6ICcjRkZENzAw JywgZ2xvd0RlY2trcmFmdDogMC44NSwgZ2xvd1dlaXRlOiAxMiwgZ2xvd1B1bHM6IGZhbHNlLAog ICAgICAgIC8vIHN5bmNGbGFzaCBoYXQgYWxzIGVpbnppZ2UgTWFya2llcnVuZyBlaW5lIERhdWVy IGluIG1zIOKAlCB3aWUgbGFuZ2UKICAgICAgICAvLyBkaWUgQW5pbWF0aW9uIGxhZXVmdCwgYmV2 b3IgZGllIFplbGxlIGluIGRlbiBOb3JtYWx6dXN0YW5kIHp1cnVlY2stCiAgICAgICAgLy8ga2Vo cnQuIFdpcmQgbnVyIGJlaSBzeW5jRmxhc2ggZ2VsZXNlbi4KICAgICAgICBkYXVlck1zOiAxNTAw CiAgICB9Cn07CgovLyA9PT09PSBBdWZsb2VzZW4gPT09PT0KLy8gTWVyZ3QgVXNlci1XZXJ0ZSAo Wi5hZG1pbi5tYXJraWVydW5nZW5ba2V5XSkgbWl0IERlZmF1bHRzIOKAlCBmZWhsZW5kZSBGZWxk ZXIKLy8ga29tbWVuIGF1cyBkZW0gRGVmYXVsdC4KCmV4cG9ydCBmdW5jdGlvbiBtYXJraWVydW5n QXVmbG9lc2VuKGtleSkgewogICAgdmFyIGRlZiA9IE1BUktJRVJVTkdFTl9ERUZBVUxUU1trZXld IHx8IHt9OwogICAgdmFyIHVzZXIgPSAoWi5hZG1pbiAmJiBaLmFkbWluLm1hcmtpZXJ1bmdlbiAm JiBaLmFkbWluLm1hcmtpZXJ1bmdlbltrZXldKSB8fCB7fTsKICAgIHZhciBvdXQgPSB7fTsKICAg IE9iamVjdC5rZXlzKGRlZikuZm9yRWFjaChmdW5jdGlvbihrKSB7CiAgICAgICAgb3V0W2tdID0g KGsgaW4gdXNlcikgPyB1c2VyW2tdIDogZGVmW2tdOwogICAgfSk7CiAgICByZXR1cm4gb3V0Owp9 CgovLyA9PT09PSBDU1MtQW53ZW5kdW5nID09PT09Ci8vIFNldHp0IGZ1ZXIgamVkZW4gTWFya2ll cnVuZ3N0eXAgZWluZSBHcnVwcGUgQ1NTLUN1c3RvbS1Qcm9wZXJ0aWVzIGFtCi8vIDpyb290LiBQ cmFlZml4IC0tbWFyay08a2V5Pi08ZmVsZD4uIERpZSBzdHlsZS5jc3MtUmVnZWxuIGxlc2VuIGRp ZXNlLgoKdmFyIENTU19QUkFFRklYID0gewogICAgc29uZGVydGFnSGlud2VpczogJ21oaW4nLAog ICAgc29uZGVydGFnV2FybnVuZzogJ213YXInLAogICAgZmVpZXJ0YWdXaWNodGlnOiAgJ21md2kn LAogICAgaGV1dGVTcGFsdGU6ICAgICAgJ21oZScsCiAgICBzeW5jRmxhc2g6ICAgICAgICAnbXNm Jwp9Owp2YXIgUFVMU19BTklNX05BTUUgPSB7CiAgICBzb25kZXJ0YWdIaW53ZWlzOiAncHVsc0hp bndlaXMnLAogICAgc29uZGVydGFnV2FybnVuZzogJ3B1bHNXYXJudW5nJywKICAgIGZlaWVydGFn V2ljaHRpZzogICdwdWxzRmVpZXJ0YWcnLAogICAgaGV1dGVTcGFsdGU6ICAgICAgJ3B1bHNIZXV0 ZScKICAgIC8vIHN5bmNGbGFzaCBoYXQgZWluZW4gZWlnZW5lbiBlaW5tYWxpZ2VuICd6ZWxsZS1m bGFzaCctS2V5ZnJhbWUsIGtlaW4gUHVscwp9OwoKZnVuY3Rpb24gaGV4WnVSZ2JhKGhleCwgZGVj a2tyYWZ0KSB7CiAgICBpZiAoIWhleCB8fCBoZXguY2hhckF0KDApICE9PSAnIycpIHJldHVybiAn cmdiYSgwLDAsMCwnICsgZGVja2tyYWZ0ICsgJyknOwogICAgdmFyIGMgPSBoZXguc3Vic3RyKDEp OwogICAgaWYgKGMubGVuZ3RoID09PSAzKSBjID0gYy5jaGFyQXQoMCkgKyBjLmNoYXJBdCgwKSAr IGMuY2hhckF0KDEpICsgYy5jaGFyQXQoMSkgKyBjLmNoYXJBdCgyKSArIGMuY2hhckF0KDIpOwog ICAgdmFyIHIgPSBwYXJzZUludChjLnN1YnN0cigwLDIpLCAxNiksIGcgPSBwYXJzZUludChjLnN1 YnN0cigyLDIpLCAxNiksIGIgPSBwYXJzZUludChjLnN1YnN0cig0LDIpLCAxNik7CiAgICByZXR1 cm4gJ3JnYmEoJyArIHIgKyAnLCcgKyBnICsgJywnICsgYiArICcsJyArIGRlY2trcmFmdCArICcp JzsKfQoKZnVuY3Rpb24gYm94U2hhZG93QmF1ZW4obSkgewogICAgdmFyIHBhcnRzID0gW107CiAg ICBpZiAobS5yYWhtZW5PYmVuICAgPiAwKSBwYXJ0cy5wdXNoKCdpbnNldCAwICcgICsgbS5yYWht ZW5PYmVuICAgKyAncHggMCAnICsgbS5yYWhtZW5GYXJiZSk7CiAgICBpZiAobS5yYWhtZW5VbnRl biAgPiAwKSBwYXJ0cy5wdXNoKCdpbnNldCAwIC0nICsgbS5yYWhtZW5VbnRlbiAgKyAncHggMCAn ICsgbS5yYWhtZW5GYXJiZSk7CiAgICBpZiAobS5yYWhtZW5MaW5rcyAgPiAwKSBwYXJ0cy5wdXNo KCdpbnNldCAnICAgKyBtLnJhaG1lbkxpbmtzICAgKyAncHggMCAwICcgKyBtLnJhaG1lbkZhcmJl KTsKICAgIGlmIChtLnJhaG1lblJlY2h0cyA+IDApIHBhcnRzLnB1c2goJ2luc2V0IC0nICArIG0u cmFobWVuUmVjaHRzICArICdweCAwIDAgJyArIG0ucmFobWVuRmFyYmUpOwogICAgaWYgKG0uZ2xv d0RlY2trcmFmdCA+IDAgJiYgbS5nbG93V2VpdGUgPiAwKSB7CiAgICAgICAgcGFydHMucHVzaCgn MCAwICcgKyBtLmdsb3dXZWl0ZSArICdweCAnICsgTWF0aC5tYXgoMCwgbS5nbG93V2VpdGUgLSA0 KSArICdweCAnICsgaGV4WnVSZ2JhKG0uZ2xvd0ZhcmJlLCBtLmdsb3dEZWNra3JhZnQpKTsKICAg IH0gZWxzZSBpZiAobS5nbG93RGVja2tyYWZ0ID4gMCkgewogICAgICAgIC8vIEdsb3cgb2huZSBX ZWl0ZSAtPiAxcHggT3V0bGluZS1FZmZla3QKICAgICAgICBwYXJ0cy5wdXNoKCcwIDAgMCAxcHgg JyArIGhleFp1UmdiYShtLmdsb3dGYXJiZSwgbS5nbG93RGVja2tyYWZ0KSk7CiAgICB9CiAgICBy ZXR1cm4gcGFydHMubGVuZ3RoID8gcGFydHMuam9pbignLCAnKSA6ICdub25lJzsKfQoKLy8gUHVs c2UtVmFyaWFudGU6IHN0YXJrZXJlciBHbG93IGltIDUwJS1LZXlmcmFtZSwgYW5oYW5kIGRlciBn bGVpY2hlbgovLyBGYXJiLVdlcnRlIGFiZXIgaG9laGVyZXIgV2VpdGUgKyBEZWNra3JhZnQuIFdp cmQgYWxzIHp3ZWl0ZSBCb3gtU2hhZG93LQovLyBEZWZpbml0aW9uIGdlbGllZmVydCwgZGllIGRp ZSBBbmltYXRpb24gaW50ZXJwb2xpZXJ0LgpmdW5jdGlvbiBib3hTaGFkb3dQdWxzQmF1ZW4obSkg ewogICAgdmFyIHBhcnRzID0gW107CiAgICBpZiAobS5yYWhtZW5PYmVuICAgPiAwKSBwYXJ0cy5w dXNoKCdpbnNldCAwICcgICsgbS5yYWhtZW5PYmVuICAgKyAncHggMCAnICsgbS5yYWhtZW5GYXJi ZSk7CiAgICBpZiAobS5yYWhtZW5VbnRlbiAgPiAwKSBwYXJ0cy5wdXNoKCdpbnNldCAwIC0nICsg bS5yYWhtZW5VbnRlbiAgKyAncHggMCAnICsgbS5yYWhtZW5GYXJiZSk7CiAgICBpZiAobS5yYWht ZW5MaW5rcyAgPiAwKSBwYXJ0cy5wdXNoKCdpbnNldCAnICAgKyBtLnJhaG1lbkxpbmtzICAgKyAn cHggMCAwICcgKyBtLnJhaG1lbkZhcmJlKTsKICAgIGlmIChtLnJhaG1lblJlY2h0cyA+IDApIHBh cnRzLnB1c2goJ2luc2V0IC0nICArIG0ucmFobWVuUmVjaHRzICArICdweCAwIDAgJyArIG0ucmFo bWVuRmFyYmUpOwogICAgLy8gUHVsc2UtU3BpdHplOiBkb3BwZWx0ZSBXZWl0ZSwgZXR3YXMgd2Vu aWdlciBEZWNra3JhZnQKICAgIHZhciBwdWxzV2VpdGUgPSBNYXRoLm1heCg2LCBtLmdsb3dXZWl0 ZSAqIDIpOwogICAgcGFydHMucHVzaCgnMCAwICcgKyBwdWxzV2VpdGUgKyAncHggJyArIE1hdGgu bWF4KDAsIHB1bHNXZWl0ZSAtIDQpICsgJ3B4ICcgKyBoZXhadVJnYmEobS5nbG93RmFyYmUsIE1h dGgubWluKDEsIG0uZ2xvd0RlY2trcmFmdCArIDAuMSkpKTsKICAgIHJldHVybiBwYXJ0cy5qb2lu KCcsICcpOwp9CgpleHBvcnQgZnVuY3Rpb24gbWFya2llcnVuZ2VuQW53ZW5kZW4oKSB7CiAgICB2 YXIgcm9vdCA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDsKICAgIE9iamVjdC5rZXlzKENTU19Q UkFFRklYKS5mb3JFYWNoKGZ1bmN0aW9uKGtleSkgewogICAgICAgIHZhciBwID0gJy0tJyArIENT U19QUkFFRklYW2tleV07CiAgICAgICAgdmFyIG0gPSBtYXJraWVydW5nQXVmbG9lc2VuKGtleSk7 CiAgICAgICAgcm9vdC5zdHlsZS5zZXRQcm9wZXJ0eShwICsgJy1iZycsICAgICAgICAgbS5oaW50 ZXJncnVuZCB8fCAndHJhbnNwYXJlbnQnKTsKICAgICAgICByb290LnN0eWxlLnNldFByb3BlcnR5 KHAgKyAnLXRleHQnLCAgICAgICBtLnRleHQgfHwgJ2luaGVyaXQnKTsKICAgICAgICByb290LnN0 eWxlLnNldFByb3BlcnR5KHAgKyAnLWZ3JywgICAgICAgICBTdHJpbmcobS5zY2hyaWZ0Z2V3aWNo dCB8fCA0MDApKTsKICAgICAgICByb290LnN0eWxlLnNldFByb3BlcnR5KHAgKyAnLWZzJywgICAg ICAgICBTdHJpbmcobS5zY2hyaWZ0Z3JvZXNzZUZha3RvciB8fCAxKSk7CiAgICAgICAgcm9vdC5z dHlsZS5zZXRQcm9wZXJ0eShwICsgJy1zaGFkb3cnLCAgICAgYm94U2hhZG93QmF1ZW4obSkpOwog ICAgICAgIHJvb3Quc3R5bGUuc2V0UHJvcGVydHkocCArICctc2hhZG93LXB1bHMnLCBtLmdsb3dQ dWxzID8gYm94U2hhZG93UHVsc0JhdWVuKG0pIDogYm94U2hhZG93QmF1ZW4obSkpOwogICAgICAg IHZhciBhbmltTmFtZSA9IFBVTFNfQU5JTV9OQU1FW2tleV07CiAgICAgICAgcm9vdC5zdHlsZS5z ZXRQcm9wZXJ0eShwICsgJy1hbmltJywgKG0uZ2xvd1B1bHMgJiYgYW5pbU5hbWUpID8gKGFuaW1O YW1lICsgJyAzcyBlYXNlLWluLW91dCBpbmZpbml0ZScpIDogJ25vbmUnKTsKICAgIH0pOwogICAg Ly8gU3luYy1GbGFzaC1EYXVlciBzZXBhcmF0IOKAlCB3aXJkIHZvbSBBbmltYXRpb25zLVRyaWdn ZXIgaW4gc3luYy5qcwogICAgLy8gZ2VsZXNlbiAoZGF0YS1BdHRyaWJ1dCBhdWYgLnplbGxlLWZs YXNoIHNldHp0IENTUy1BbmltYXRpb24tRGF1ZXIpLgogICAgdmFyIHNmID0gbWFya2llcnVuZ0F1 ZmxvZXNlbignc3luY0ZsYXNoJyk7CiAgICByb290LnN0eWxlLnNldFByb3BlcnR5KCctLW1zZi1k YXVlcicsIChzZi5kYXVlck1zIHx8IDE1MDApICsgJ21zJyk7CgogICAgLy8gRmVyaWVuIGdlc29u ZGVydDogLS1tZmVyLSogc3RldWVybiBkZW4gQmFsa2VuIChLb3BmKSBVTkQgLS1tZmVyLXNwYWx0 ZS1iZwogICAgLy8gZGllIFNwYWx0ZW4tVG9lbnVuZyBpbSBHcmlkLiBCZXd1c3N0IE5JQ0hUIGlt IENTU19QUkFFRklYLUxvb3A6IGRpZSBWYXJzCiAgICAvLyB3ZXJkZW4gbnVyIGdlc2V0enQsIHdl bm4gZGVyIFVzZXIgRmVyaWVuIHdpcmtsaWNoIGtvbmZpZ3VyaWVydCBoYXQg4oCUIHNvbnN0CiAg ICAvLyBncmVpZmVuIGRpZSB0aGVtZS1zcGV6aWZpc2NoZW4gQ1NTLURlZmF1bHRzIChUYWcvTmFj aHQpIGluIHN0eWxlLmNzcwogICAgLy8gd2VpdGVyIChzb25zdCB3dWVyZGUgZGFzIGhlbGxlIERl ZmF1bHQtR3J1ZW4gYXVjaCBpbSBOYWNodG1vZHVzIGVyc2NoZWluZW4pLgogICAgdmFyIGZlclBy b3BzID0gWyctLW1mZXItYmcnLCctLW1mZXItdGV4dCcsJy0tbWZlci1mdycsJy0tbWZlci1mcycs Jy0tbWZlci1zaGFkb3cnLCctLW1mZXItc2hhZG93LXB1bHMnLCctLW1mZXItYW5pbScsJy0tbWZl ci1zcGFsdGUtYmcnXTsKICAgIHZhciBmZXJLb25maWd1cmllcnQgPSAhIShaLmFkbWluICYmIFou YWRtaW4ubWFya2llcnVuZ2VuICYmIFouYWRtaW4ubWFya2llcnVuZ2VuLmZlcmllbgogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICYmIE9iamVjdC5rZXlzKFouYWRtaW4ubWFya2llcnVuZ2Vu LmZlcmllbikubGVuZ3RoKTsKICAgIGlmIChmZXJLb25maWd1cmllcnQpIHsKICAgICAgICB2YXIg bWYgPSBtYXJraWVydW5nQXVmbG9lc2VuKCdmZXJpZW4nKTsKICAgICAgICByb290LnN0eWxlLnNl dFByb3BlcnR5KCctLW1mZXItYmcnLCAgICAgICAgIG1mLmhpbnRlcmdydW5kIHx8ICd0cmFuc3Bh cmVudCcpOwogICAgICAgIHJvb3Quc3R5bGUuc2V0UHJvcGVydHkoJy0tbWZlci10ZXh0JywgICAg ICAgbWYudGV4dCB8fCAnaW5oZXJpdCcpOwogICAgICAgIHJvb3Quc3R5bGUuc2V0UHJvcGVydHko Jy0tbWZlci1mdycsICAgICAgICAgU3RyaW5nKG1mLnNjaHJpZnRnZXdpY2h0IHx8IDcwMCkpOwog ICAgICAgIHJvb3Quc3R5bGUuc2V0UHJvcGVydHkoJy0tbWZlci1mcycsICAgICAgICAgU3RyaW5n KG1mLnNjaHJpZnRncm9lc3NlRmFrdG9yIHx8IDEpKTsKICAgICAgICByb290LnN0eWxlLnNldFBy b3BlcnR5KCctLW1mZXItc2hhZG93JywgICAgIGJveFNoYWRvd0JhdWVuKG1mKSk7CiAgICAgICAg cm9vdC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1tZmVyLXNoYWRvdy1wdWxzJywgbWYuZ2xvd1B1bHMg PyBib3hTaGFkb3dQdWxzQmF1ZW4obWYpIDogYm94U2hhZG93QmF1ZW4obWYpKTsKICAgICAgICBy b290LnN0eWxlLnNldFByb3BlcnR5KCctLW1mZXItYW5pbScsICAgICAgIG1mLmdsb3dQdWxzID8g J3B1bHNGZXJpZW4gM3MgZWFzZS1pbi1vdXQgaW5maW5pdGUnIDogJ25vbmUnKTsKICAgICAgICBy b290LnN0eWxlLnNldFByb3BlcnR5KCctLW1mZXItc3BhbHRlLWJnJywgIG1mLnNwYWx0ZUhpbnRl cmdydW5kIHx8ICd0cmFuc3BhcmVudCcpOwogICAgfSBlbHNlIHsKICAgICAgICBmZXJQcm9wcy5m b3JFYWNoKGZ1bmN0aW9uKHApIHsgcm9vdC5zdHlsZS5yZW1vdmVQcm9wZXJ0eShwKTsgfSk7CiAg ICB9Cn0KCi8vID09PT09IEFkbWluLVVJOiBFZGl0b3IgKyBMaXZlLVZvcnNjaGF1ID09PT09Ci8v Ci8vIExheW91dCAoendlaSBTcGFsdGVuKToKLy8gICDilIzilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilKzilIDilIDilIDilIDi lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilIDilIDilIDilJAKLy8gICDilIIgTGl2ZS1Wb3JzY2hhdSAgICAgICDilIIg VGFiLUJhciAoNSBUeXBlbikgICAgICAgICAgICDilIIKLy8gICDilIIgKHN0aWNreSwgbGlua3Mp ICAgICDilIIgRWRpdG9yIChha3RpdmVyIFR5cCByZWNodHMpICDilIIKLy8gICDilIIgIC0gNSBC ZWlzcGllbHplaWxlbiDilIIgICAtIFNla3Rpb25lbiBIaW50ZXJncnVuZCAmICDilIIKLy8gICDi lIIgIC0gRmxhc2gtVGVzdC1CdG4gICDilIIgICAgIFNjaHJpZnQgLyBSYWhtZW4gLyBHbG93ICDi lIIKLy8gICDilIIgICAgICAgICAgICAgICAgICAgICDilIIgICAtIFJlc2V0LUtub3BmIChwcm8g VHlwKSAgICDilIIKLy8gICDilJTilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilIDilIDilIDilIDilIDilLTilIDilIDilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi lIDilIDilJgKLy8gICBTdGlja3kgRm9vdGVyOiBTcGVpY2hlcm4gKHJlY2h0cykgKyBBbGxlIHp1 cnVlY2tzZXR6ZW4gKGxpbmtzKQovLwovLyBUYWItU3RhdGUgaGFlbHQgZGVyIEVkaXRvciBzZWxi c3QgKE1vZHVsZS1WYXIpLiBXaXJkIGJlaW0gUmUtUmVuZGVyCi8vIHVlYmVybm9tbWVuLCBkYW1p dCBkZXIgS2xpY2sgYXVmICJTcGVpY2hlcm4iIG5pY2h0IHp1bSBlcnN0ZW4gVGFiCi8vIHp1cnVl Y2tzcHJpbmd0LgoKdmFyIGFrdGl2ZXJUYWIgPSAnc29uZGVydGFnSGlud2Vpcyc7Ci8vIFNuYXBz aG90IGRlcyBsZXR6dGVuIGdlc3BlaWNoZXJ0ZW4gU3RhbmRzIHZvbiBaLmFkbWluLm1hcmtpZXJ1 bmdlbiDigJQgd2lyZAovLyBmdWVyICJWZXJ3ZXJmZW4iIGJlaW0gQmVzdGFldGlndW5ncy1Nb2Rh bCBnZWJyYXVjaHQuIEJlaW0gZXJzdGVuIFJlbmRlcgovLyBpbml0aWFsIGdlc2V0enQsIGRhbmFj aCBuYWNoIGplZGVtIFNwZWljaGVybiBha3R1YWxpc2llcnQuCnZhciBzbmFwc2hvdE1hcmtpZXJ1 bmdlbiA9IG51bGw7CgpmdW5jdGlvbiBzbmFwc2hvdEFrdHVhbGlzaWVyZW4oKSB7CiAgICBzbmFw c2hvdE1hcmtpZXJ1bmdlbiA9IEpTT04uc3RyaW5naWZ5KFouYWRtaW4ubWFya2llcnVuZ2VuIHx8 IHt9KTsKfQoKZnVuY3Rpb24gZGlydHlUcmFja2VyU2ljaGVyc3RlbGxlbigpIHsKICAgIGlmIChk aXJ0eUtlbm50KCdlcnNjaGVpbnVuZ3NiaWxkJykpIHJldHVybjsKICAgIGRpcnR5UmVnaXN0cmll cmUoJ2Vyc2NoZWludW5nc2JpbGQnLCB7CiAgICAgICAgbGFiZWw6ICdFcnNjaGVpbnVuZ3NiaWxk JywKICAgICAgICBidG5JZHM6IFsnZXJzY2hlaW51bmctc3BlaWNoZXJuJ10sCiAgICAgICAgc2F2 ZUZuOiBmdW5jdGlvbigpIHsgcmV0dXJuIGVyc2NoZWludW5nc2JpbGRTcGVpY2hlcm4oKTsgfSwK ICAgICAgICBkaXNjYXJkRm46IGZ1bmN0aW9uKCkgeyByZXR1cm4gZXJzY2hlaW51bmdzYmlsZFZl cndlcmZlbigpOyB9CiAgICB9KTsKfQoKLy8gQmVpc3BpZWwtRGF0ZW4gZnVlciBkaWUgVm9yc2No YXUtWmVpbGVuIChEYXR1bS9Xb2NoZW50YWcgcHJvIFR5cCkuCnZhciBWT1JTQ0hBVV9CRUlTUElF TCA9IHsKICAgIHNvbmRlcnRhZ0hpbndlaXM6IHsgdGFnOiAnMjIuMDUuJywgd3Q6ICdNbycsIG5v dGl6OiAnQnNwLiDigJ5IaW53ZWlzIi1UYWcnIH0sCiAgICBzb25kZXJ0YWdXYXJudW5nOiB7IHRh ZzogJzIzLjA1LicsIHd0OiAnRGknLCBub3RpejogJ0JzcC4g4oCeV2FybnVuZyItVGFnJyB9LAog ICAgZmVpZXJ0YWdXaWNodGlnOiAgeyB0YWc6ICcyNS4wNS4nLCB3dDogJ01vJywgbm90aXo6ICdC c3AuIFBmaW5nc3Rtb250YWcnIH0sCiAgICBmZXJpZW46ICAgICAgICAgICB7IHRhZzogJzIwLjA3 LicsIHd0OiAnTW8nLCBub3RpejogJ0JzcC4gU29tbWVyZmVyaWVuJyB9LAogICAgaGV1dGVTcGFs dGU6ICAgICAgeyB0YWc6ICcyMy4wNS4nLCB3dDogJ0ZyJywgbm90aXo6ICdCc3AuIGhldXRpZ2Ug VGFnZXNzcGFsdGUnIH0sCiAgICBzeW5jRmxhc2g6ICAgICAgICB7IHRhZzogJ0YtREdMJywgIHd0 OiAnJywgICBub3RpejogJ0JzcC4gTGl2ZS1TeW5jLUF1ZmxldWNodGVuJyB9Cn07CgovLyA9PT09 PSBGb3JtLUtvbXBvbmVudGVuID09PT09CgpmdW5jdGlvbiBmYXJicGlja2VySHRtbChrZXksIGZl bGQsIHdlcnQsIGxlZXJFcmxhdWJ0KSB7CiAgICB2YXIgbGVlciA9ICghd2VydCB8fCB3ZXJ0ID09 PSAnaW5oZXJpdCcgfHwgd2VydCA9PT0gJ3RyYW5zcGFyZW50Jyk7CiAgICB2YXIgZmFyYmUgPSBs ZWVyID8gJyMwMDAwMDAnIDogd2VydDsKICAgIC8vIEtvbXBha3RlciBGYXJicGlja2VyOiAzMngy OCBTd2F0Y2ggKyDDlyB6dW0gTGVlcmVuIChudXIgd2VubiBsZWVyRXJsYXVidCkuCiAgICAvLyBE aXNhYmxlZC1TdGF0ZSB1ZWJlciBDU1MgdmlzdWVsbCBnZWRhZW1wZnQsIG5pY2h0IHVlYmVyIGRh cyBIVE1MLWF0dHIg4oCUCiAgICAvLyBkYW1pdCBkZXIgS2xpY2stSGFuZGxlciBpbW1lciBmZXVl cnQgdW5kIGRlciBUb2dnbGUgcmVhZ2llcmVuIGthbm4uCiAgICByZXR1cm4gJzxzcGFuIGNsYXNz PSJlcnNjaGVpbnVuZy1mYXJiLXdyYXAnICsgKGxlZXIgPyAnIGxlZXInIDogJycpICsgJyI+JyAr CiAgICAgICAgJzxpbnB1dCB0eXBlPSJjb2xvciIgY2xhc3M9ImVyc2NoZWludW5nLWlucHV0IGVy c2NoZWludW5nLWZhcmIiIGRhdGEta2V5PSInICsga2V5ICsgJyIgZGF0YS1mZWxkPSInICsgZmVs ZCArICciIHZhbHVlPSInICsgZXNjYXBlQXR0cihmYXJiZSkgKyAnIj4nICsKICAgICAgICAobGVl ckVybGF1YnQKICAgICAgICAgICAgPyAnPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJlcnNj aGVpbnVuZy1mYXJiLXgiIGRhdGEta2V5PSInICsga2V5ICsgJyIgZGF0YS1mZWxkPSInICsgZmVs ZCArICciIHRpdGxlPSJGYXJiZSBlbnRmZXJuZW4gLyBTdGFuZGFyZCB2ZXJ3ZW5kZW4iPicgKyAo bGVlciA/ICcrJyA6ICfDlycpICsgJzwvYnV0dG9uPicKICAgICAgICAgICAgOiAnJykgKwogICAg Jzwvc3Bhbj4nOwp9CgpmdW5jdGlvbiBzbGlkZXJIdG1sKGtleSwgZmVsZCwgd2VydCwgbWluLCBt YXgsIHN0ZXAsIGVpbmhlaXQpIHsKICAgIC8vIFJhbmdlLVNsaWRlciArIHN5bmNocm9uaXNpZXJ0 ZXIgTnVtYmVyLUlucHV0IChiZWlkZSB0cmFnZW4gZGVuc2VsYmVuCiAgICAvLyBkYXRhLWtleS9k YXRhLWZlbGQ7IGVpbiBFdmVudC1IYW5kbGVyIGltIGFwcC5qcyBzcGllZ2VsdCBkZW4gV2VydCku CiAgICB2YXIgdiA9ICh3ZXJ0ID09IG51bGwpID8gbWluIDogd2VydDsKICAgIHZhciBhdHRycyA9 ICdkYXRhLWtleT0iJyArIGtleSArICciIGRhdGEtZmVsZD0iJyArIGZlbGQgKyAnIiBtaW49Iicg KyBtaW4gKyAnIiBtYXg9IicgKyBtYXggKyAnIiBzdGVwPSInICsgc3RlcCArICciIHZhbHVlPSIn ICsgZXNjYXBlQXR0cihTdHJpbmcodikpICsgJyInOwogICAgcmV0dXJuICc8ZGl2IGNsYXNzPSJl cnNjaGVpbnVuZy1zbGlkZXItd3JhcCI+JyArCiAgICAgICAgJzxpbnB1dCB0eXBlPSJyYW5nZSIg IGNsYXNzPSJlcnNjaGVpbnVuZy1pbnB1dCBlcnNjaGVpbnVuZy1pbnB1dC1yYW5nZSIgJyArIGF0 dHJzICsgJz4nICsKICAgICAgICAnPGlucHV0IHR5cGU9Im51bWJlciIgY2xhc3M9ImVyc2NoZWlu dW5nLWlucHV0IGVyc2NoZWludW5nLWlucHV0LW51bSIgICAnICsgYXR0cnMgKyAnPicgKwogICAg ICAgIChlaW5oZWl0ID8gJzxzcGFuIGNsYXNzPSJlcnNjaGVpbnVuZy1laW5oZWl0Ij4nICsgZXNj YXBlSFRNTChlaW5oZWl0KSArICc8L3NwYW4+JyA6ICcnKSArCiAgICAnPC9kaXY+JzsKfQoKZnVu Y3Rpb24gc2VsZWN0SHRtbChrZXksIGZlbGQsIHdlcnQsIG9wdGlvbmVuKSB7CiAgICB2YXIgb3B0 cyA9IG9wdGlvbmVuLm1hcChmdW5jdGlvbihvKSB7CiAgICAgICAgcmV0dXJuICc8b3B0aW9uIHZh bHVlPSInICsgZXNjYXBlQXR0cihvLnYpICsgJyInICsgKFN0cmluZyhvLnYpID09PSBTdHJpbmco d2VydCkgPyAnIHNlbGVjdGVkJyA6ICcnKSArICc+JyArIGVzY2FwZUhUTUwoby5sKSArICc8L29w dGlvbj4nOwogICAgfSkuam9pbignJyk7CiAgICByZXR1cm4gJzxzZWxlY3QgY2xhc3M9ImVyc2No ZWludW5nLWlucHV0IiBkYXRhLWtleT0iJyArIGtleSArICciIGRhdGEtZmVsZD0iJyArIGZlbGQg KyAnIj4nICsgb3B0cyArICc8L3NlbGVjdD4nOwp9CgpmdW5jdGlvbiB0b2dnbGVIdG1sKGtleSwg ZmVsZCwgd2VydCwgYmVzY2hyaWZ0dW5nKSB7CiAgICByZXR1cm4gJzxsYWJlbCBjbGFzcz0iZXJz Y2hlaW51bmctdG9nZ2xlIj48aW5wdXQgdHlwZT0iY2hlY2tib3giIGNsYXNzPSJlcnNjaGVpbnVu Zy1pbnB1dCBlcnNjaGVpbnVuZy1pbnB1dC1jaGVjayIgZGF0YS1rZXk9IicgKyBrZXkgKyAnIiBk YXRhLWZlbGQ9IicgKyBmZWxkICsgJyInICsgKHdlcnQgPyAnIGNoZWNrZWQnIDogJycpICsgJz48 c3BhbiBjbGFzcz0iZXJzY2hlaW51bmctdG9nZ2xlLXJhaWwiPjwvc3Bhbj48c3BhbiBjbGFzcz0i ZXJzY2hlaW51bmctdG9nZ2xlLWxhYmVsIj4nICsgZXNjYXBlSFRNTChiZXNjaHJpZnR1bmcgfHwg KHdlcnQgPyAnQU4nIDogJ0FVUycpKSArICc8L3NwYW4+PC9sYWJlbD4nOwp9CgovLyA9PT09PSBW b3JzY2hhdSAobGlua3MsIHN0aWNreSkgPT09PT0KCmZ1bmN0aW9uIHZvcnNjaGF1SHRtbCgpIHsK ICAgIHZhciBzdGFjayA9ICcnOwogICAgTUFSS0lFUlVOR0VOX01FVEEuZm9yRWFjaChmdW5jdGlv bihtZXRhKSB7CiAgICAgICAgdmFyIGIgPSBWT1JTQ0hBVV9CRUlTUElFTFttZXRhLmtleV0gfHwg eyB0YWc6ICc/Jywgd3Q6ICc/Jywgbm90aXo6ICcnIH07CiAgICAgICAgdmFyIGFrdGl2ID0gKG1l dGEua2V5ID09PSBha3RpdmVyVGFiKSA/ICcgYWt0aXYnIDogJyc7CiAgICAgICAgaWYgKG1ldGEu a2V5ID09PSAnc3luY0ZsYXNoJykgewogICAgICAgICAgICBzdGFjayArPSAnPGRpdiBjbGFzcz0i ZXJzY2hlaW51bmctdm9yc2NoYXUtemVpbGUnICsgYWt0aXYgKyAnIiBkYXRhLXR5cD0iJyArIG1l dGEua2V5ICsgJyI+JyArCiAgICAgICAgICAgICAgICAnPGRpdiBjbGFzcz0iZXJzY2hlaW51bmct dm9yc2NoYXUtY2VsbHMiPicgKwogICAgICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJlcnNj aGVpbnVuZy12b3JzY2hhdS16ZWxsZSBlcnNjaGVpbnVuZy12b3JzY2hhdS1mbGFzaCIgZGF0YS12 b3JzY2hhdS1rZXk9IicgKyBtZXRhLmtleSArICciPicgKyBlc2NhcGVIVE1MKGIudGFnKSArICc8 L2Rpdj4nICsKICAgICAgICAgICAgICAgICc8L2Rpdj4nICsKICAgICAgICAgICAgICAgICc8ZGl2 IGNsYXNzPSJlcnNjaGVpbnVuZy12b3JzY2hhdS1tZXRhIj4nICsKICAgICAgICAgICAgICAgICAg ICAnPGRpdiBjbGFzcz0iZXJzY2hlaW51bmctdm9yc2NoYXUtdHlwIj4nICsgZXNjYXBlSFRNTCht ZXRhLmxhYmVsKSArICc8L2Rpdj4nICsKICAgICAgICAgICAgICAgICAgICAnPGJ1dHRvbiB0eXBl PSJidXR0b24iIGNsYXNzPSJlcnNjaGVpbnVuZy1mbGFzaC10ZXN0IGJ0bi1taW5pIj7ilrYgRmxh c2ggdGVzdGVuPC9idXR0b24+JyArCiAgICAgICAgICAgICAgICAnPC9kaXY+JyArCiAgICAgICAg ICAgICc8L2Rpdj4nOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHN0YWNrICs9ICc8ZGl2 IGNsYXNzPSJlcnNjaGVpbnVuZy12b3JzY2hhdS16ZWlsZScgKyBha3RpdiArICciIGRhdGEtdHlw PSInICsgbWV0YS5rZXkgKyAnIj4nICsKICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJlcnNj aGVpbnVuZy12b3JzY2hhdS1jZWxscyI+JyArCiAgICAgICAgICAgICAgICAgICAgJzxkaXYgY2xh c3M9ImVyc2NoZWludW5nLXZvcnNjaGF1LXplbGxlIiBkYXRhLXZvcnNjaGF1LWtleT0iJyArIG1l dGEua2V5ICsgJyI+JyArIGVzY2FwZUhUTUwoYi50YWcpICsgJzwvZGl2PicgKwogICAgICAgICAg ICAgICAgICAgICc8ZGl2IGNsYXNzPSJlcnNjaGVpbnVuZy12b3JzY2hhdS16ZWxsZSIgZGF0YS12 b3JzY2hhdS1rZXk9IicgKyBtZXRhLmtleSArICciPicgKyBlc2NhcGVIVE1MKGIud3QpICsgJzwv ZGl2PicgKwogICAgICAgICAgICAgICAgJzwvZGl2PicgKwogICAgICAgICAgICAgICAgJzxkaXYg Y2xhc3M9ImVyc2NoZWludW5nLXZvcnNjaGF1LW1ldGEiPicgKwogICAgICAgICAgICAgICAgICAg ICc8ZGl2IGNsYXNzPSJlcnNjaGVpbnVuZy12b3JzY2hhdS10eXAiPicgKyBlc2NhcGVIVE1MKG1l dGEubGFiZWwpICsgJzwvZGl2PicgKwogICAgICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJl cnNjaGVpbnVuZy12b3JzY2hhdS1ub3RpeiI+JyArIGVzY2FwZUhUTUwoYi5ub3RpeikgKyAnPC9k aXY+JyArCiAgICAgICAgICAgICAgICAnPC9kaXY+JyArCiAgICAgICAgICAgICc8L2Rpdj4nOwog ICAgICAgIH0KICAgIH0pOwogICAgcmV0dXJuICc8YXNpZGUgY2xhc3M9ImVyc2NoZWludW5nLXZv cnNjaGF1LXBhbmVsIj4nICsKICAgICAgICAnPGRpdiBjbGFzcz0iZXJzY2hlaW51bmctdm9yc2No YXUtdGl0ZWwiPkxpdmUtVm9yc2NoYXU8L2Rpdj4nICsKICAgICAgICAnPGRpdiBjbGFzcz0iZXJz Y2hlaW51bmctdm9yc2NoYXUtc3RhY2siPicgKyBzdGFjayArICc8L2Rpdj4nICsKICAgICAgICAn PGRpdiBjbGFzcz0iZXJzY2hlaW51bmctdm9yc2NoYXUtaGlud2VpcyI+S2xpY2sgYXVmIGVpbmUg WmVpbGUgd2VjaHNlbHQgZGVuIGFrdGl2ZW4gRWRpdG9yLVRhYi48L2Rpdj4nICsKICAgICc8L2Fz aWRlPic7Cn0KCi8vID09PT09IFRhYi1CYXIgKHJlY2h0cyBvYmVuKSA9PT09PQovLyBKZWRlciBU YWIgaXN0IGVpbmUgS2FydGUgbWl0IGVjaHRlciBWb3JzY2hhdSBkZXIgTWFya2llcnVuZyDigJQg RGF0dW0rCi8vIFdvY2hlbnRhZyAoYW5hbG9nIFBsYW50YWZlbC1Lb3BmKSBiencuIFNjaGljaHRj b2RlIGJlaSBTeW5jLUZsYXNoIOKAlAovLyB1bmQga3VyemVtIExhYmVsIGRhcnVudGVyLiBBa3Rp dmUgS2FydGUgbWl0IGRpY2tlbSBBa3plbnQtQm9yZGVyLgoKZnVuY3Rpb24gdGFiQmFySHRtbCgp IHsKICAgIHZhciB0YWJzID0gTUFSS0lFUlVOR0VOX01FVEEubWFwKGZ1bmN0aW9uKG1ldGEpIHsK ICAgICAgICB2YXIgY2xzID0gJ2Vyc2NoZWludW5nLXRhYicgKyAobWV0YS5rZXkgPT09IGFrdGl2 ZXJUYWIgPyAnIGFrdGl2JyA6ICcnKTsKICAgICAgICB2YXIgYiA9IFZPUlNDSEFVX0JFSVNQSUVM W21ldGEua2V5XSB8fCB7IHRhZzogJz8nLCB3dDogJycgfTsKICAgICAgICB2YXIgY2hpcEluaGFs dDsKICAgICAgICBpZiAobWV0YS5rZXkgPT09ICdzeW5jRmxhc2gnKSB7CiAgICAgICAgICAgIGNo aXBJbmhhbHQgPQogICAgICAgICAgICAgICAgJzxzcGFuIGNsYXNzPSJlcnNjaGVpbnVuZy10YWIt Y2hpcC10ZXh0Ij4nICsgZXNjYXBlSFRNTChiLnRhZykgKyAnPC9zcGFuPic7CiAgICAgICAgfSBl bHNlIHsKICAgICAgICAgICAgY2hpcEluaGFsdCA9CiAgICAgICAgICAgICAgICAnPHNwYW4gY2xh c3M9ImVyc2NoZWludW5nLXRhYi1jaGlwLXRhZyI+JyArIGVzY2FwZUhUTUwoYi50YWcpICsgJzwv c3Bhbj4nICsKICAgICAgICAgICAgICAgICc8c3BhbiBjbGFzcz0iZXJzY2hlaW51bmctdGFiLWNo aXAtd3QiPicgKyBlc2NhcGVIVE1MKGIud3QpICsgJzwvc3Bhbj4nOwogICAgICAgIH0KICAgICAg ICAvLyBMYWJlbCBpbiB6d2VpIFplaWxlbiBhdWZ0ZWlsZW4gYW0gR2VkYW5rZW5zdHJpY2gsIGRh bWl0IEthcnRlbgogICAgICAgIC8vIGtvbnNpc3RlbnQgYnJlaXQgKyBMYWJlbCBnbGVpY2ggaG9j aCB3aXJrZW4uCiAgICAgICAgdmFyIGxhYmVsVGVpbGUgPSBtZXRhLmxhYmVsLnNwbGl0KCcg4oCU ICcpOwogICAgICAgIHZhciBsYWJlbEh0bWwgPSBsYWJlbFRlaWxlLmxlbmd0aCA+IDEKICAgICAg ICAgICAgPyAnPHNwYW4gY2xhc3M9ImVyc2NoZWludW5nLXRhYi1sYWJlbC10b3AiPicgKyBlc2Nh cGVIVE1MKGxhYmVsVGVpbGVbMF0pICsgJzwvc3Bhbj4nICsKICAgICAgICAgICAgICAnPHNwYW4g Y2xhc3M9ImVyc2NoZWludW5nLXRhYi1sYWJlbC1ib3QiPicgKyBlc2NhcGVIVE1MKGxhYmVsVGVp bGVbMV0pICsgJzwvc3Bhbj4nCiAgICAgICAgICAgIDogJzxzcGFuIGNsYXNzPSJlcnNjaGVpbnVu Zy10YWItbGFiZWwtdG9wIj4nICsgZXNjYXBlSFRNTChtZXRhLmxhYmVsKSArICc8L3NwYW4+JzsK ICAgICAgICByZXR1cm4gJzxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iJyArIGNscyArICci IGRhdGEtZXJzY2hlaW51bmctdGFiPSInICsgbWV0YS5rZXkgKyAnIj4nICsKICAgICAgICAgICAg JzxzcGFuIGNsYXNzPSJlcnNjaGVpbnVuZy10YWItY2hpcCIgZGF0YS12b3JzY2hhdS1rZXk9Iicg KyBtZXRhLmtleSArICciPicgKyBjaGlwSW5oYWx0ICsgJzwvc3Bhbj4nICsKICAgICAgICAgICAg JzxzcGFuIGNsYXNzPSJlcnNjaGVpbnVuZy10YWItbGFiZWwiPicgKyBsYWJlbEh0bWwgKyAnPC9z cGFuPicgKwogICAgICAgICc8L2J1dHRvbj4nOwogICAgfSkuam9pbignJyk7CiAgICByZXR1cm4g JzxkaXYgY2xhc3M9ImVyc2NoZWludW5nLXRhYi1iYXIiPicgKyB0YWJzICsgJzwvZGl2Pic7Cn0K Ci8vID09PT09IEVkaXRvciAocmVjaHRzIHVudGVuLCBmdWVyIGFrdGl2ZW4gVHlwKSA9PT09PQoK ZnVuY3Rpb24gZWRpdG9ySHRtbCgpIHsKICAgIHZhciBtZXRhID0gTUFSS0lFUlVOR0VOX01FVEEu ZmluZChmdW5jdGlvbihtKSB7IHJldHVybiBtLmtleSA9PT0gYWt0aXZlclRhYjsgfSk7CiAgICBp ZiAoIW1ldGEpIHJldHVybiAnJzsKICAgIHZhciBtID0gbWFya2llcnVuZ0F1ZmxvZXNlbihtZXRh LmtleSk7CiAgICB2YXIgayA9IG1ldGEua2V5OwogICAgdmFyIHNjaHJpZnRnZXdpY2h0T3B0aW9u ZW4gPSBbCiAgICAgICAgeyB2OiA0MDAsIGw6ICdOb3JtYWwnIH0sCiAgICAgICAgeyB2OiA1MDAs IGw6ICdNZWRpdW0nIH0sCiAgICAgICAgeyB2OiA2MDAsIGw6ICdIYWxiZmV0dCcgfSwKICAgICAg ICB7IHY6IDcwMCwgbDogJ0ZldHQnIH0sCiAgICAgICAgeyB2OiA4MDAsIGw6ICdFeHRyYSBGZXR0 JyB9CiAgICBdOwoKICAgIGZ1bmN0aW9uIHNla3Rpb24odGl0ZWwsIGluaGFsdCkgewogICAgICAg IHJldHVybiAnPHNlY3Rpb24gY2xhc3M9ImVyc2NoZWludW5nLXNla3Rpb24iPicgKwogICAgICAg ICAgICAnPGgzIGNsYXNzPSJlcnNjaGVpbnVuZy1zZWt0aW9uLXRpdGVsIj4nICsgZXNjYXBlSFRN TCh0aXRlbCkgKyAnPC9oMz4nICsKICAgICAgICAgICAgJzxkaXYgY2xhc3M9ImVyc2NoZWludW5n LXNla3Rpb24tZ3JpZCI+JyArIGluaGFsdCArICc8L2Rpdj4nICsKICAgICAgICAnPC9zZWN0aW9u Pic7CiAgICB9CgogICAgZnVuY3Rpb24gZmVsZChsYWJlbCwgY29udHJvbCkgewogICAgICAgIHJl dHVybiAnPGRpdiBjbGFzcz0iZXJzY2hlaW51bmctZmVsZCI+JyArCiAgICAgICAgICAgICc8bGFi ZWwgY2xhc3M9ImVyc2NoZWludW5nLWZlbGQtbGFiZWwiPicgKyBlc2NhcGVIVE1MKGxhYmVsKSAr ICc8L2xhYmVsPicgKwogICAgICAgICAgICAnPGRpdiBjbGFzcz0iZXJzY2hlaW51bmctZmVsZC1j b250cm9sIj4nICsgY29udHJvbCArICc8L2Rpdj4nICsKICAgICAgICAnPC9kaXY+JzsKICAgIH0K CiAgICB2YXIgaGludGVyZ3J1bmRTY2hyaWZ0ID0KICAgICAgICBmZWxkKEZFTERfTkFNRU4uaGlu dGVyZ3J1bmQsICAgICAgICAgIGZhcmJwaWNrZXJIdG1sKGssICdoaW50ZXJncnVuZCcsIG0uaGlu dGVyZ3J1bmQsIHRydWUpKSArCiAgICAgICAgZmVsZChGRUxEX05BTUVOLnRleHQsICAgICAgICAg ICAgICAgICBmYXJicGlja2VySHRtbChrLCAndGV4dCcsICAgICAgICBtLnRleHQsICAgICAgICB0 cnVlKSkgKwogICAgICAgIGZlbGQoRkVMRF9OQU1FTi5zY2hyaWZ0Z2V3aWNodCwgICAgICAgc2Vs ZWN0SHRtbChrLCAnc2NocmlmdGdld2ljaHQnLCAgbS5zY2hyaWZ0Z2V3aWNodCwgc2NocmlmdGdl d2ljaHRPcHRpb25lbikpICsKICAgICAgICBmZWxkKEZFTERfTkFNRU4uc2NocmlmdGdyb2Vzc2VG YWt0b3IsIHNsaWRlckh0bWwoaywgJ3NjaHJpZnRncm9lc3NlRmFrdG9yJywgbS5zY2hyaWZ0Z3Jv ZXNzZUZha3RvciwgMC44LCAxLjQsIDAuMDUsICfDlycpKSArCiAgICAgICAgLy8gRmVyaWVuIGhh dCB6dXNhZXR6bGljaCBlaW5lIFNwYWx0ZW4tVG9lbnVuZyBmdWVyIGRpZSBGZXJpZW50YWdlIGlt CiAgICAgICAgLy8gR3JpZCAoQmFsa2VuIG9iZW4gd2lyZCBkdXJjaCBIaW50ZXJncnVuZC9UZXh0 Ly4uLiBnZXN0eWx0KS4KICAgICAgICAoayA9PT0gJ2ZlcmllbicgPyBmZWxkKEZFTERfTkFNRU4u c3BhbHRlSGludGVyZ3J1bmQsIGZhcmJwaWNrZXJIdG1sKGssICdzcGFsdGVIaW50ZXJncnVuZCcs IG0uc3BhbHRlSGludGVyZ3J1bmQsIHRydWUpKSA6ICcnKTsKCiAgICB2YXIgcmFobWVuID0KICAg ICAgICBmZWxkKEZFTERfTkFNRU4ucmFobWVuT2JlbiwgICBzbGlkZXJIdG1sKGssICdyYWhtZW5P YmVuJywgICBtLnJhaG1lbk9iZW4sICAgMCwgOCwgMSwgJ3B4JykpICsKICAgICAgICBmZWxkKEZF TERfTkFNRU4ucmFobWVuVW50ZW4sICBzbGlkZXJIdG1sKGssICdyYWhtZW5VbnRlbicsICBtLnJh aG1lblVudGVuLCAgMCwgOCwgMSwgJ3B4JykpICsKICAgICAgICBmZWxkKEZFTERfTkFNRU4ucmFo bWVuTGlua3MsICBzbGlkZXJIdG1sKGssICdyYWhtZW5MaW5rcycsICBtLnJhaG1lbkxpbmtzLCAg MCwgOCwgMSwgJ3B4JykpICsKICAgICAgICBmZWxkKEZFTERfTkFNRU4ucmFobWVuUmVjaHRzLCBz bGlkZXJIdG1sKGssICdyYWhtZW5SZWNodHMnLCBtLnJhaG1lblJlY2h0cywgMCwgOCwgMSwgJ3B4 JykpICsKICAgICAgICBmZWxkKEZFTERfTkFNRU4ucmFobWVuRmFyYmUsICBmYXJicGlja2VySHRt bChrLCAncmFobWVuRmFyYmUnLCBtLnJhaG1lbkZhcmJlLCBmYWxzZSkpOwoKICAgIHZhciBnbG93 ID0KICAgICAgICBmZWxkKEZFTERfTkFNRU4uZ2xvd0ZhcmJlLCAgICAgZmFyYnBpY2tlckh0bWwo aywgJ2dsb3dGYXJiZScsIG0uZ2xvd0ZhcmJlLCBmYWxzZSkpICsKICAgICAgICBmZWxkKEZFTERf TkFNRU4uZ2xvd0RlY2trcmFmdCwgc2xpZGVySHRtbChrLCAnZ2xvd0RlY2trcmFmdCcsIG0uZ2xv d0RlY2trcmFmdCwgMCwgMSwgMC4wNSwgJycpKSArCiAgICAgICAgZmVsZChGRUxEX05BTUVOLmds b3dXZWl0ZSwgICAgIHNsaWRlckh0bWwoaywgJ2dsb3dXZWl0ZScsIG0uZ2xvd1dlaXRlLCAwLCAy NCwgMSwgJ3B4JykpICsKICAgICAgICBmZWxkKEZFTERfTkFNRU4uZ2xvd1B1bHMsICAgICAgdG9n Z2xlSHRtbChrLCAnZ2xvd1B1bHMnLCBtLmdsb3dQdWxzLCBtLmdsb3dQdWxzID8gJ3B1bHNpZXJ0 JyA6ICduaWNodCBwdWxzaWVyZW5kJykpOwoKICAgIHJldHVybiAnPGRpdiBjbGFzcz0iZXJzY2hl aW51bmctZWRpdG9yIj4nICsKICAgICAgICAnPGhlYWRlciBjbGFzcz0iZXJzY2hlaW51bmctZWRp dG9yLWtvcGYiPicgKwogICAgICAgICAgICAnPGRpdiBjbGFzcz0iZXJzY2hlaW51bmctZWRpdG9y LXRpdGVsemVpbGUiPicgKwogICAgICAgICAgICAgICAgJzxoMiBjbGFzcz0iZXJzY2hlaW51bmct ZWRpdG9yLXRpdGVsIj4nICsgZXNjYXBlSFRNTChtZXRhLmxhYmVsKSArICc8L2gyPicgKwogICAg ICAgICAgICAgICAgJzxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuLW1pbmkgZXJzY2hl aW51bmctdHlwLXJlc2V0IiBkYXRhLXR5cD0iJyArIGsgKyAnIj7ihrogRGllc2VuIFR5cCB6dXLD vGNrc2V0emVuPC9idXR0b24+JyArCiAgICAgICAgICAgICc8L2Rpdj4nICsKICAgICAgICAgICAg JzxwIGNsYXNzPSJlcnNjaGVpbnVuZy1lZGl0b3Itc3ViIj4nICsgZXNjYXBlSFRNTChtZXRhLmJl c2NocmVpYnVuZykgKyAnPC9wPicgKwogICAgICAgICc8L2hlYWRlcj4nICsKICAgICAgICAnPGRp diBjbGFzcz0iZXJzY2hlaW51bmctZWRpdG9yLWJvZHkiPicgKwogICAgICAgICAgICBzZWt0aW9u KCdIaW50ZXJncnVuZCAmIFNjaHJpZnQnLCBoaW50ZXJncnVuZFNjaHJpZnQpICsKICAgICAgICAg ICAgc2VrdGlvbignUmFobWVuJywgICAgICAgICAgICAgICAgcmFobWVuKSArCiAgICAgICAgICAg IHNla3Rpb24oJ0dsb3cnICsgKGsgPT09ICdzeW5jRmxhc2gnID8gJyAmIEFuaW1hdGlvbicgOiAn JyksIGdsb3cgKyAoayA9PT0gJ3N5bmNGbGFzaCcgPyBmZWxkKCdBbmltYXRpb25zLURhdWVyJywg c2xpZGVySHRtbChrLCAnZGF1ZXJNcycsIG0uZGF1ZXJNcyB8fCAxNTAwLCAyMDAsIDUwMDAsIDEw MCwgJ21zJykpIDogJycpKSArCiAgICAgICAgJzwvZGl2PicgKwogICAgJzwvZGl2Pic7Cn0KCi8v ID09PT09IFJlbmRlci1FaW5zdGllZyA9PT09PQoKZXhwb3J0IGZ1bmN0aW9uIGVyc2NoZWludW5n c2JpbGRSZW5kZXJuKCkgewogICAgdmFyIGhvc3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn ZXJzY2hlaW51bmdzYmlsZC1pbmhhbHQnKTsKICAgIGlmICghaG9zdCkgewogICAgICAgIGNvbnNv bGUud2FybignW1ZJM10gRXJzY2hlaW51bmdzYmlsZDogQ29udGFpbmVyICNlcnNjaGVpbnVuZ3Ni aWxkLWluaGFsdCBuaWNodCBpbSBET00gZ2VmdW5kZW4g4oCUIEVkaXRvciBrYW5uIG5pY2h0IGdl cmVuZGVydCB3ZXJkZW4uIFNlcnZlci1Bc3NldC1DYWNoZSBtb2VnbGljaGVyd2Vpc2UgdmVyYWx0 ZXQgKFNlcnZlciBuZXUgc3RhcnRlbiArIFN0cmcrU2hpZnQrUikuJyk7CiAgICAgICAgcmV0dXJu OwogICAgfQogICAgaWYgKHNuYXBzaG90TWFya2llcnVuZ2VuID09PSBudWxsKSBzbmFwc2hvdEFr dHVhbGlzaWVyZW4oKTsKICAgIGRpcnR5VHJhY2tlclNpY2hlcnN0ZWxsZW4oKTsKICAgIHRyeSB7 CiAgICAgICAgaG9zdC5pbm5lckhUTUwgPQogICAgICAgICAgICAnPGRpdiBjbGFzcz0iZXJzY2hl aW51bmctbGF5b3V0Ij4nICsKICAgICAgICAgICAgICAgIHZvcnNjaGF1SHRtbCgpICsKICAgICAg ICAgICAgICAgICc8bWFpbiBjbGFzcz0iZXJzY2hlaW51bmctZWRpdG9yLXNwYWx0ZSI+JyArCiAg ICAgICAgICAgICAgICAgICAgdGFiQmFySHRtbCgpICsKICAgICAgICAgICAgICAgICAgICBlZGl0 b3JIdG1sKCkgKwogICAgICAgICAgICAgICAgJzwvbWFpbj4nICsKICAgICAgICAgICAgJzwvZGl2 PicgKwogICAgICAgICAgICAnPGZvb3RlciBjbGFzcz0iZXJzY2hlaW51bmctZm9vdGVyIj4nICsK ICAgICAgICAgICAgICAgICc8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0biBidG4tc2Vj IiBpZD0iZXJzY2hlaW51bmctenVydWVja3NldHplbiI+QWxsZSBhdWYgU3RhbmRhcmQgenVyw7xj a3NldHplbjwvYnV0dG9uPicgKwogICAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9ImVyc2NoZWlu dW5nLWZvb3Rlci1pbmZvIj7DhG5kZXJ1bmdlbiB3aXJrZW4gc29mb3J0IGFscyBWb3JzY2hhdS4g RXJzdCDigJ5TcGVpY2hlcm4iIHBlcnNpc3RpZXJ0IHNpZS48L2Rpdj4nICsKICAgICAgICAgICAg ICAgICc8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0biBidG4tcHJpbWFyeSIgaWQ9ImVy c2NoZWludW5nLXNwZWljaGVybiI+U3BlaWNoZXJuPC9idXR0b24+JyArCiAgICAgICAgICAgICc8 L2Zvb3Rlcj4nOwogICAgfSBjYXRjaCAoZSkgewogICAgICAgIGNvbnNvbGUuZXJyb3IoJ1tWSTNd IEVyc2NoZWludW5nc2JpbGQtUmVuZGVyIGZlaGxnZXNjaGxhZ2VuOicsIGUpOwogICAgICAgIGhv c3QuaW5uZXJIVE1MID0gJzxkaXYgc3R5bGU9InBhZGRpbmc6MTZweDtjb2xvcjojYjAyMDIwO2Jh Y2tncm91bmQ6I2ZmZjRmNDtib3JkZXI6MXB4IHNvbGlkICNmMGMwYzA7Ym9yZGVyLXJhZGl1czo2 cHgiPicgKwogICAgICAgICAgICAnPHN0cm9uZz5FZGl0b3Iga29ubnRlIG5pY2h0IGdlcmVuZGVy dCB3ZXJkZW4uPC9zdHJvbmc+PGJyPicgKwogICAgICAgICAgICBlc2NhcGVIVE1MKGUgJiYgZS5t ZXNzYWdlID8gZS5tZXNzYWdlIDogU3RyaW5nKGUpKSArCiAgICAgICAgICAgICc8YnI+PGJyPjxz cGFuIHN0eWxlPSJmb250LXNpemU6MTFweDtjb2xvcjojNjY2Ij5EZXRhaWxzIGluIGRlciBEZXZU b29scy1Lb25zb2xlIChGMTIpLjwvc3Bhbj48L2Rpdj4nOwogICAgfQp9CgovLyBXZWNoc2VsdCBk ZW4gYWt0aXZlbiBUYWIgKEVkaXRvci1TcGFsdGUpIHVuZCByZS1yZW5kZXJ0IG9obmUgVm9yc2No YXUgenUKLy8gcmVzZXR0ZW4gKFZvcnNjaGF1IGlzdCBvaG5laGluIHRoZW1lLXVlYmVyZ3JlaWZl bmQgZ2VzcGllZ2VsdCkuCmV4cG9ydCBmdW5jdGlvbiBlcnNjaGVpbnVuZ3NUYWJXZWNoc2Vsbihu ZXVlclRhYikgewogICAgaWYgKCFNQVJLSUVSVU5HRU5fTUVUQS5maW5kKGZ1bmN0aW9uKG0pIHsg cmV0dXJuIG0ua2V5ID09PSBuZXVlclRhYjsgfSkpIHJldHVybjsKICAgIGFrdGl2ZXJUYWIgPSBu ZXVlclRhYjsKICAgIGVyc2NoZWludW5nc2JpbGRSZW5kZXJuKCk7Cn0KCi8vIEVpbnplbG5lbiBU eXAgYXVmIERlZmF1bHQgenVydWVja3NldHplbiAoaW4tbWVtb3J5OyBzcGVpY2hlcnQgZXJzdCBi ZWltCi8vICJTcGVpY2hlcm4iLUtsaWNrKS4KZXhwb3J0IGZ1bmN0aW9uIGVyc2NoZWludW5nc1R5 cFp1cnVlY2tzZXR6ZW4odHlwKSB7CiAgICBpZiAoWi5hZG1pbi5tYXJraWVydW5nZW4gJiYgWi5h ZG1pbi5tYXJraWVydW5nZW5bdHlwXSkgewogICAgICAgIGRlbGV0ZSBaLmFkbWluLm1hcmtpZXJ1 bmdlblt0eXBdOwogICAgfQogICAgbWFya2llcnVuZ2VuQW53ZW5kZW4oKTsKICAgIGVyc2NoZWlu dW5nc2JpbGRSZW5kZXJuKCk7CiAgICBpZiAoZGlydHlLZW5udCgnZXJzY2hlaW51bmdzYmlsZCcp KSB7CiAgICAgICAgdmFyIGpldHp0ID0gSlNPTi5zdHJpbmdpZnkoWi5hZG1pbi5tYXJraWVydW5n ZW4gfHwge30pOwogICAgICAgIGRpcnR5U2V0emVuKCdlcnNjaGVpbnVuZ3NiaWxkJywgamV0enQg IT09IHNuYXBzaG90TWFya2llcnVuZ2VuKTsKICAgIH0KfQoKLy8gRmFyYi1YLUJ1dHRvbjogVG9n Z2xlIHp3aXNjaGVuICJGYXJiZSBnZXNldHp0IiB1bmQgIlN0YW5kYXJkIgpleHBvcnQgZnVuY3Rp b24gZXJzY2hlaW51bmdGYXJiZVRvZ2dsZShrZXksIGZlbGQpIHsKICAgIGlmICghWi5hZG1pbi5t YXJraWVydW5nZW4pIFouYWRtaW4ubWFya2llcnVuZ2VuID0ge307CiAgICBpZiAoIVouYWRtaW4u bWFya2llcnVuZ2VuW2tleV0pIFouYWRtaW4ubWFya2llcnVuZ2VuW2tleV0gPSB7fTsKICAgIHZh ciBha3R1ZWxsID0gWi5hZG1pbi5tYXJraWVydW5nZW5ba2V5XVtmZWxkXTsKICAgIGlmIChha3R1 ZWxsID09PSAnJyB8fCBha3R1ZWxsID09PSBudWxsKSB7CiAgICAgICAgLy8gQXVmIERlZmF1bHQg enVydWVja3NldHplbgogICAgICAgIGRlbGV0ZSBaLmFkbWluLm1hcmtpZXJ1bmdlbltrZXldW2Zl bGRdOwogICAgfSBlbHNlIHsKICAgICAgICAvLyBMZWVyIHNldHplbgogICAgICAgIFouYWRtaW4u bWFya2llcnVuZ2VuW2tleV1bZmVsZF0gPSAnJzsKICAgIH0KICAgIG1hcmtpZXJ1bmdlbkFud2Vu ZGVuKCk7CiAgICBlcnNjaGVpbnVuZ3NiaWxkUmVuZGVybigpOwogICAgaWYgKGRpcnR5S2VubnQo J2Vyc2NoZWludW5nc2JpbGQnKSkgewogICAgICAgIHZhciBqZXR6dCA9IEpTT04uc3RyaW5naWZ5 KFouYWRtaW4ubWFya2llcnVuZ2VuIHx8IHt9KTsKICAgICAgICBkaXJ0eVNldHplbignZXJzY2hl aW51bmdzYmlsZCcsIGpldHp0ICE9PSBzbmFwc2hvdE1hcmtpZXJ1bmdlbik7CiAgICB9Cn0KCi8v ID09PT09IFdlcnRlIGVpbnNhbW1lbG4gKyBTcGVpY2hlcm4gPT09PT0KLy8KLy8gV2ljaHRpZzog bnVyIGRpZSBpbSBET00gdm9yaGFuZGVuZW4gSW5wdXRzIHdlcmRlbiBhdXNnZWxlc2VuLiBEYSBk ZXIKLy8gbmV1ZSBFZGl0b3IgamV3ZWlscyBudXIgZWluZW4gVHlwLUJsb2NrIHNpY2h0YmFyIHpl aWd0IChUYWItU3dpdGNoZXIpLAovLyBkdWVyZmVuIG5pY2h0LXNpY2h0YmFyZSBUeXBlbiBOSUNI VCBhdWYge30genVydWVja2dlc2V0enQgd2VyZGVuIOKAlCBkYWhlcgovLyBsaWVmZXJ0IGlucHV0 c0F1c2xlc2VuKCkgZWluIHBhcnRpZWxsZXMgT2JqZWt0IHVuZCBkZXIgQXVmcnVmZXIgbWVyZ3Qu CgpmdW5jdGlvbiBpbnB1dHNBdXNsZXNlbigpIHsKICAgIHZhciBob3N0ID0gZG9jdW1lbnQuZ2V0 RWxlbWVudEJ5SWQoJ2Vyc2NoZWludW5nc2JpbGQtaW5oYWx0Jyk7CiAgICBpZiAoIWhvc3QpIHJl dHVybiBudWxsOwogICAgdmFyIHJlc3VsdCA9IHt9OwogICAgdmFyIGlucHV0cyA9IGhvc3QucXVl cnlTZWxlY3RvckFsbCgnLmVyc2NoZWludW5nLWlucHV0Jyk7CiAgICBpbnB1dHMuZm9yRWFjaChm dW5jdGlvbihpbnApIHsKICAgICAgICB2YXIga2V5ID0gaW5wLmdldEF0dHJpYnV0ZSgnZGF0YS1r ZXknKTsKICAgICAgICB2YXIgZmVsZCA9IGlucC5nZXRBdHRyaWJ1dGUoJ2RhdGEtZmVsZCcpOwog ICAgICAgIGlmICgha2V5IHx8ICFmZWxkKSByZXR1cm47CiAgICAgICAgdmFyIHdlcnQ7CiAgICAg ICAgaWYgKGlucC50eXBlID09PSAnY2hlY2tib3gnKSB7CiAgICAgICAgICAgIHdlcnQgPSBpbnAu Y2hlY2tlZDsKICAgICAgICB9IGVsc2UgaWYgKGlucC50eXBlID09PSAnbnVtYmVyJyB8fCBpbnAu dHlwZSA9PT0gJ3JhbmdlJykgewogICAgICAgICAgICB3ZXJ0ID0gcGFyc2VGbG9hdChpbnAudmFs dWUpOwogICAgICAgICAgICBpZiAoaXNOYU4od2VydCkpIHdlcnQgPSAwOwogICAgICAgIH0gZWxz ZSBpZiAoaW5wLnR5cGUgPT09ICdjb2xvcicpIHsKICAgICAgICAgICAgLy8gRmFyYnBpY2tlci1X cmFwIG1pdCBLbGFzc2UgLmxlZXIgPSAiU3RhbmRhcmQgdmVyd2VuZGVuIgogICAgICAgICAgICB2 YXIgd3JhcCA9IGlucC5jbG9zZXN0KCcuZXJzY2hlaW51bmctZmFyYi13cmFwJyk7CiAgICAgICAg ICAgIGlmICh3cmFwICYmIHdyYXAuY2xhc3NMaXN0LmNvbnRhaW5zKCdsZWVyJykpIHdlcnQgPSAn JzsKICAgICAgICAgICAgZWxzZSB3ZXJ0ID0gaW5wLnZhbHVlOwogICAgICAgIH0gZWxzZSB7CiAg ICAgICAgICAgIHdlcnQgPSBpbnAudmFsdWU7CiAgICAgICAgICAgIGlmIChmZWxkID09PSAnc2No cmlmdGdld2ljaHQnKSB3ZXJ0ID0gcGFyc2VJbnQod2VydCwgMTApIHx8IDQwMDsKICAgICAgICB9 CiAgICAgICAgaWYgKCFyZXN1bHRba2V5XSkgcmVzdWx0W2tleV0gPSB7fTsKICAgICAgICByZXN1 bHRba2V5XVtmZWxkXSA9IHdlcnQ7CiAgICB9KTsKICAgIHJldHVybiByZXN1bHQ7Cn0KCi8vIE1l cmdlLUhlbHBlcjogc2NocmVpYnQgbnVyIGRpZSBleHBsaXppdCBnZWxlc2VuZW4gRmVsZGVyIGlu Ci8vIFouYWRtaW4ubWFya2llcnVuZ2VuIOKAlCBhbmRlcmUgVGFiLVdlcnRlIGJsZWliZW4gdW5h bmdldGFzdGV0LgpmdW5jdGlvbiBtZXJnZU5hY2hTdGF0ZSh3ZXJ0ZSkgewogICAgaWYgKCF3ZXJ0 ZSkgcmV0dXJuOwogICAgaWYgKCFaLmFkbWluLm1hcmtpZXJ1bmdlbikgWi5hZG1pbi5tYXJraWVy dW5nZW4gPSB7fTsKICAgIE9iamVjdC5rZXlzKHdlcnRlKS5mb3JFYWNoKGZ1bmN0aW9uKGspIHsK ICAgICAgICBpZiAoIVouYWRtaW4ubWFya2llcnVuZ2VuW2tdKSBaLmFkbWluLm1hcmtpZXJ1bmdl bltrXSA9IHt9OwogICAgICAgIE9iamVjdC5rZXlzKHdlcnRlW2tdKS5mb3JFYWNoKGZ1bmN0aW9u KGYpIHsKICAgICAgICAgICAgWi5hZG1pbi5tYXJraWVydW5nZW5ba11bZl0gPSB3ZXJ0ZVtrXVtm XTsKICAgICAgICB9KTsKICAgIH0pOwp9CgpleHBvcnQgZnVuY3Rpb24gZXJzY2hlaW51bmdzYmls ZFNwZWljaGVybigpIHsKICAgIC8vIEFrdGl2ZSBUYWItSW5wdXRzIGF1c2xlc2VuICsgaW4gWi5h ZG1pbi5tYXJraWVydW5nZW4gbWVyZ2VuIChXZXJ0ZQogICAgLy8gYW5kZXJlciBUYWJzIHNpbmQg ZG9ydCBkdXJjaCB2b3JhdXNnZWdhbmdlbmUgdm9yc2NoYXVBa3R1YWxpc2llcmVuLQogICAgLy8g Q2FsbHMgYnp3LiBJbml0aWFsLUxvYWQgc2Nob24ga29ycmVrdCkuCiAgICBtZXJnZU5hY2hTdGF0 ZShpbnB1dHNBdXNsZXNlbigpKTsKICAgIHJldHVybiBhcGlQdXQoJy9hcGkvYWRtaW4nLCBaLmFk bWluKS50aGVuKGZ1bmN0aW9uKCkgewogICAgICAgIHRvYXN0KCdFcnNjaGVpbnVuZ3NiaWxkIGdl c3BlaWNoZXJ0JywgJ2VyZm9sZycpOwogICAgICAgIG1hcmtpZXJ1bmdlbkFud2VuZGVuKCk7CiAg ICAgICAgc25hcHNob3RBa3R1YWxpc2llcmVuKCk7CiAgICAgICAgZGlydHlTZXR6ZW4oJ2Vyc2No ZWludW5nc2JpbGQnLCBmYWxzZSk7CiAgICB9KS5jYXRjaChmdW5jdGlvbihlcnIpIHsKICAgICAg ICB0b2FzdCgnU3BlaWNoZXJuIGZlaGxnZXNjaGxhZ2VuOiAnICsgKGVyciAmJiBlcnIubWVzc2Fn ZSB8fCAndW5iZWthbm50JyksICdmZWhsZXInKTsKICAgICAgICB0aHJvdyBlcnI7CiAgICB9KTsK fQoKZXhwb3J0IGZ1bmN0aW9uIGVyc2NoZWludW5nc2JpbGRadXJ1ZWNrc2V0emVuKCkgewogICAg aWYgKFouYWRtaW4ubWFya2llcnVuZ2VuKSBkZWxldGUgWi5hZG1pbi5tYXJraWVydW5nZW47CiAg ICByZXR1cm4gYXBpUHV0KCcvYXBpL2FkbWluJywgWi5hZG1pbikudGhlbihmdW5jdGlvbigpIHsK ICAgICAgICB0b2FzdCgnQXVmIFN0YW5kYXJkIHp1csO8Y2tnZXNldHp0JywgJ2VyZm9sZycpOwog ICAgICAgIG1hcmtpZXJ1bmdlbkFud2VuZGVuKCk7CiAgICAgICAgc25hcHNob3RBa3R1YWxpc2ll cmVuKCk7CiAgICAgICAgZGlydHlTZXR6ZW4oJ2Vyc2NoZWludW5nc2JpbGQnLCBmYWxzZSk7CiAg ICAgICAgZXJzY2hlaW51bmdzYmlsZFJlbmRlcm4oKTsKICAgIH0pLmNhdGNoKGZ1bmN0aW9uKGVy cikgewogICAgICAgIHRvYXN0KCdadXLDvGNrc2V0emVuIGZlaGxnZXNjaGxhZ2VuOiAnICsgKGVy ciAmJiBlcnIubWVzc2FnZSB8fCAndW5iZWthbm50JyksICdmZWhsZXInKTsKICAgIH0pOwp9Cgov LyBWZXJ3aXJmdCBkaWUgaW4tbWVtb3J5LUFlbmRlcnVuZ2VuIHVuZCBzdGVsbHQgZGVuIGxldHp0 ZW4gZ2VzcGVpY2hlcnRlbgovLyBTdGFuZCAoU25hcHNob3QpIHdpZWRlciBoZXIg4oCUIEF1ZnJ1 ZmVyIGlzdCBkZXIgIlZlcndlcmZlbiItQnV0dG9uIGltCi8vIGRpcnR5UHJ1ZWZlbi1Nb2RhbCBi ZWltIFZlcmxhc3NlbiBkZXMgVGFicy4KZXhwb3J0IGZ1bmN0aW9uIGVyc2NoZWludW5nc2JpbGRW ZXJ3ZXJmZW4oKSB7CiAgICBpZiAoc25hcHNob3RNYXJraWVydW5nZW4pIHsKICAgICAgICB0cnkg eyBaLmFkbWluLm1hcmtpZXJ1bmdlbiA9IEpTT04ucGFyc2Uoc25hcHNob3RNYXJraWVydW5nZW4p OyB9CiAgICAgICAgY2F0Y2goZSkgeyBaLmFkbWluLm1hcmtpZXJ1bmdlbiA9IHt9OyB9CiAgICB9 IGVsc2UgewogICAgICAgIGRlbGV0ZSBaLmFkbWluLm1hcmtpZXJ1bmdlbjsKICAgIH0KICAgIG1h cmtpZXJ1bmdlbkFud2VuZGVuKCk7CiAgICBlcnNjaGVpbnVuZ3NiaWxkUmVuZGVybigpOwogICAg cmV0dXJuIFByb21pc2UucmVzb2x2ZSgpOwp9CgovLyA9PT09PSBMaXZlLVZvcnNjaGF1IGJlaSBq ZWRlciBBZW5kZXJ1bmcgPT09PT0KLy8gV2lyZCB2b20gRXZlbnQtSGFuZGxlciBhdWZnZXJ1ZmVu LCBvaG5lIHp1IHNwZWljaGVybi4KCmV4cG9ydCBmdW5jdGlvbiB2b3JzY2hhdUFrdHVhbGlzaWVy ZW4oKSB7CiAgICAvLyBOdXIgZGllIGFrdHVlbGwgaW0gRE9NIHNpY2h0YmFyZW4gSW5wdXRzICg9 IGFrdGl2ZXIgRWRpdG9yLVRhYikKICAgIC8vIGluIGRlbiBTdGF0ZSBtZXJnZW4uIFdlcnRlIGFu ZGVyZXIgVGFicyBibGVpYmVuIHNvIGVyaGFsdGVuIOKAlAogICAgLy8gd2ljaHRpZywgd2VpbCBk aWUgbmljaHQtc2ljaHRiYXJlbiBFZGl0b3JlbiBiZWltIFRhYi1Td2l0Y2gKICAgIC8vIHJlLXJl bmRlcnQgd2VyZGVuIHVuZCBpaHJlIFdlcnRlIGF1cyBaLmFkbWluLm1hcmtpZXJ1bmdlbiB6aWVo ZW4uCiAgICBtZXJnZU5hY2hTdGF0ZShpbnB1dHNBdXNsZXNlbigpKTsKICAgIG1hcmtpZXJ1bmdl bkFud2VuZGVuKCk7CiAgICAvLyBTb2JhbGQgZGVyIFN0YXRlIHZvbSBTbmFwc2hvdCBhYndlaWNo dCwgZ2lsdCBkZXIgVGFiIGFscyBkaXJ0eS4KICAgIC8vIFdpciB2ZXJnbGVpY2hlbiBKU09OLXNl cmlhbGlzaWVydCDigJQgYXVzcmVpY2hlbmQgZ2VuYXUgZnVlciBkZW4gVXNlLQogICAgLy8gQ2Fz ZSAoa2VpbmUgZ3Jvc3NlbiBPYmpla3RlLCBrZWluIFJlaWhlbmZvbGdlbi1BZXJnZXIpLgogICAg aWYgKGRpcnR5S2VubnQoJ2Vyc2NoZWludW5nc2JpbGQnKSkgewogICAgICAgIHZhciBqZXR6dCA9 IEpTT04uc3RyaW5naWZ5KFouYWRtaW4ubWFya2llcnVuZ2VuIHx8IHt9KTsKICAgICAgICBkaXJ0 eVNldHplbignZXJzY2hlaW51bmdzYmlsZCcsIGpldHp0ICE9PSBzbmFwc2hvdE1hcmtpZXJ1bmdl bik7CiAgICB9Cn0KCi8vID09PT09IFN5bmMtRmxhc2ggZ2V6aWVsdCBhYnNwaWVsZW4gPT09PT0K Ly8gTWFudWVsbCB1ZWJlciBkZW4gIkZsYXNoLVZvcnNjaGF1IGFic3BpZWxlbiItQnV0dG9uLgoK ZXhwb3J0IGZ1bmN0aW9uIHN5bmNGbGFzaFZvcnNjaGF1KCkgewogICAgdmFyIHplbGxlID0gZG9j dW1lbnQucXVlcnlTZWxlY3RvcignLmVyc2NoZWludW5nLXZvcnNjaGF1LWZsYXNoJyk7CiAgICBp ZiAoIXplbGxlKSByZXR1cm47CiAgICB6ZWxsZS5jbGFzc0xpc3QucmVtb3ZlKCd6ZWxsZS1mbGFz aCcpOwogICAgdm9pZCB6ZWxsZS5vZmZzZXRXaWR0aDsKICAgIHplbGxlLmNsYXNzTGlzdC5hZGQo J3plbGxlLWZsYXNoJyk7CiAgICB2YXIgc2YgPSBtYXJraWVydW5nQXVmbG9lc2VuKCdzeW5jRmxh c2gnKTsKICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHplbGxlLmNsYXNzTGlzdC5yZW1vdmUo J3plbGxlLWZsYXNoJyk7IH0sIChzZi5kYXVlck1zIHx8IDE1MDApICsgNTApOwp9Cg== ### FILE: js/admin_kalender.js | 26489 Ly8gPT09IGFkbWluX2thbGVuZGVyLmpzID09PQovLyBQaGFzZSA5LUIgQzM6IGF1cyBhZG1pbi5q cyBleHRyYWhpZXJ0LiBCdWVuZGVsdCBkaWUgZHJlaSBLYWxlbmRlci0KLy8gbmFoZW4gQWRtaW4t RnVua3Rpb25lbjoKLy8gICAxLiBGZWllcnRhZ2UgKFouYWRtaW4uZmVpZXJ0YWdlKQovLyAgIDIu IEZlcmllbiAoWi5hZG1pbi5mZXJpZW4pCi8vICAgMy4gU29uZGVydGVybWluZSAoWi5hZG1pbi5z b25kZXJ0ZXJtaW5lIOKAlCBmcmVpIGRhdGllcmJhcmUgSGlud2Vpc2UKLy8gICAgICBhdWYgZWlu emVsbmUgVGFnZSBvZGVyIFRhZ2VzYmVyZWljaGUsIFJpY2gtVGV4dCB2aWEgUlRFKQovLwovLyBF eHRlcm5lciBLb25zdW1lbnQ6IHdvY2hlbnBsYW4uanMgaW1wb3J0aWVydCBzb25kZXJUaXRlbEF1 c1RleHQKLy8gYXVzICcuL2FkbWluLmpzJyAoUGFzcy1UaHJvdWdoLVJlLUV4cG9ydCk7IGFiIFBo YXNlIDktQiBDNSBkYW5uCi8vIGRpcmVrdCBhdXMgJy4vYWRtaW5fa2FsZW5kZXIuanMnLgoKaW1w b3J0IHsgWiB9IGZyb20gJy4vY29yZV9zdGF0ZS5qcyc7CmltcG9ydCB7IGVzY2FwZUhUTUwsIGVz Y2FwZUF0dHIsIGRhdHVtRm9ybWF0REUgfSBmcm9tICcuL2NvcmVfdXRpbC5qcyc7CmltcG9ydCB7 IGFwaVB1dCB9IGZyb20gJy4vY29yZV9hcGkuanMnOwppbXBvcnQgeyB0YWJlbGxlRmVsZGVyTGVz ZW4gfSBmcm9tICcuL2FkbWluX2NvbW1vbi5qcyc7CmltcG9ydCB7CnRvYXN0LCBiZXN0YWV0aWdl biwKbW9kYWxaZWlnZW4sIG1vZGFsU2NobGllc3NlbiwKZW50d3VyZkxvZXNjaGVuCn0gZnJvbSAn Li91aV9kaWFsb2cuanMnOwppbXBvcnQgewpzYW5pdGl6ZVJpY2hIdG1sLCBydGVJbml0LCBFTU9K SV9TRVQsCmVtb2ppUGlja2VyWmVpZ2VuLCBlbW9qaVBpY2tlclNjaGxpZXNzZW4KfSBmcm9tICcu L3VpX3J0ZS5qcyc7CmltcG9ydCB7CktBVEVHT1JJRV9JQ09OX0RFRkFVTFQsCmtvcGZSZW5kZXJu LCB0YWdJbmZvc0JlcmVjaG5lbgp9IGZyb20gJy4vZ3JpZF9yZW5kZXIuanMnOwovLyBmZWF0dXJl SXN0QWt0aXYgbGVidCBpbSBCb290c3RyYXAtVGVpbCB2b24gYWRtaW4uanMgKEZlYXR1cmUtVG9n Z2xlcykuCi8vIFdpcmQgaGllciBmdWVyIGRhcyBzb25kZXJ0ZXJtaW5lV2ljaHRpZy1GbGFnIGdl YnJhdWNodCAoU29uZGVydGVybWluLQovLyBNYXJraWVydW5nICd3aWNodGlnJyBVSSBvcHRpb25h bCBlaW4tL2F1c2JsZW5kZW4pLgovLyBhZG1pbkVtcHR5WmVpbGU6IEVtcHR5LVN0YXRlLUthcnRl IGFscyA8dHI+IGZ1ZXIgbGVlcmUgTGlzdGVuLgppbXBvcnQgeyBmZWF0dXJlSXN0QWt0aXYsIGFk bWluRW1wdHlaZWlsZSB9IGZyb20gJy4vYWRtaW4uanMnOwoKLy8gPT09PT0gQWRtaW46IEZlaWVy dGFnZSA9PT09PQoKdmFyIEZFSUVSVEFHX0tBVEVHT1JJRU4gPSBbJ2dlc2V0emxpY2gnLCAnanVl ZGlzY2gnLCAnbXVzbGltaXNjaCcsICd0dWVya2lzY2gnXTsKdmFyIEZFSUVSVEFHX0tBVF9MQUJF TCA9IHsKICAgIGdlc2V0emxpY2g6ICdHZXNldHpsaWNoIChOUlcpJywKICAgIGp1ZWRpc2NoOiAn SsO8ZGlzY2gnLAogICAgbXVzbGltaXNjaDogJ011c2xpbWlzY2gnLAogICAgdHVlcmtpc2NoOiAn VMO8cmtpc2NoJwp9OwoKZnVuY3Rpb24gZmVpZXJ0YWdlSmFocmVPcHRpb25lbigpIHsKICAgIC8v IEVpbnppZ2FydGlnZSBKYWhyZSBhdXMgZGVuIHZvcmhhbmRlbmVuIERhdGVuICsgYWt0dWVsbGVz IEphaHIgKwogICAgLy8gMjAyNi4uMjAzNSAoU3RhbmRhcmQtRGF0ZW5iYXNpcyksIGF1ZnN0ZWln ZW5kLgogICAgdmFyIHNldCA9IHt9OwogICAgKFouYWRtaW4uZmVpZXJ0YWdlIHx8IFtdKS5mb3JF YWNoKGZ1bmN0aW9uKGYpIHsKICAgICAgICBpZiAoZi5kYXR1bSAmJiBmLmRhdHVtLmxlbmd0aCA+ PSA0KSBzZXRbZi5kYXR1bS5zdWJzdHIoMCwgNCldID0gdHJ1ZTsKICAgIH0pOwogICAgZm9yICh2 YXIgaiA9IDIwMjY7IGogPD0gMjAzNTsgaisrKSBzZXRbU3RyaW5nKGopXSA9IHRydWU7CiAgICB2 YXIgaGV1dGUgPSBuZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKCk7CiAgICBzZXRbU3RyaW5nKGhldXRl KV0gPSB0cnVlOwogICAgdmFyIGphaHJlID0gT2JqZWN0LmtleXMoc2V0KS5zb3J0KCk7CiAgICBy ZXR1cm4gamFocmU7Cn0KCmV4cG9ydCBmdW5jdGlvbiBmZWllcnRhZ2VGaWx0ZXJGdWVsbGVuKCkg ewogICAgdmFyIHNlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdmZWllcnRhZ2UtZmlsdGVy LWphaHInKTsKICAgIGlmICghc2VsKSByZXR1cm47CiAgICB2YXIgYWt0dWVsbCA9IHNlbC52YWx1 ZSB8fCBTdHJpbmcoWi5hZG1pbi5qYWhyIHx8IG5ldyBEYXRlKCkuZ2V0RnVsbFllYXIoKSk7CiAg ICB2YXIgaHRtbCA9ICc8b3B0aW9uIHZhbHVlPSJhbGxlIj5BbGxlIEphaHJlPC9vcHRpb24+JzsK ICAgIGZlaWVydGFnZUphaHJlT3B0aW9uZW4oKS5mb3JFYWNoKGZ1bmN0aW9uKGopIHsKICAgICAg ICBodG1sICs9ICc8b3B0aW9uIHZhbHVlPSInICsgZXNjYXBlQXR0cihqKSArICciJyArIChqID09 PSBha3R1ZWxsID8gJyBzZWxlY3RlZCcgOiAnJykgKyAnPicgKyBlc2NhcGVIVE1MKGopICsgJzwv b3B0aW9uPic7CiAgICB9KTsKICAgIHNlbC5pbm5lckhUTUwgPSBodG1sOwp9CgpleHBvcnQgZnVu Y3Rpb24gZmVpZXJ0YWdlVGFiZWxsZVJlbmRlcm4oKSB7CiAgICAvLyBTb3J0aWVydW5nOiBuYWNo IERhdHVtLCBkYW5uIEthdGVnb3JpZS4gZGF0YS1pZHggPSBET00tUmVpaGVuZm9sZ2UsCiAgICAv LyB3aXJkIGJlaW0gU2F2ZSBhbHMgbmV1ZXMgQXJyYXkgenVydWVja2dlc2NocmllYmVuICh2Z2wu CiAgICAvLyBmZWllcnRhZ2VBdXNUYWJlbGxlTGVzZW4pLgogICAgdmFyIGxpc3RlID0gKFouYWRt aW4uZmVpZXJ0YWdlIHx8IFtdKS5zbGljZSgpLnNvcnQoZnVuY3Rpb24oYSwgYikgewogICAgICAg IHJldHVybiAoYS5kYXR1bSB8fCAnJykubG9jYWxlQ29tcGFyZShiLmRhdHVtIHx8ICcnKTsKICAg IH0pOwogICAgdmFyIGh0bWwgPSAnJzsKICAgIGxpc3RlLmZvckVhY2goZnVuY3Rpb24oZiwgaSkg ewogICAgICAgIHZhciBrYXQgPSBmLmthdGVnb3JpZSB8fCAnZ2VzZXR6bGljaCc7CiAgICAgICAg dmFyIGFrdGl2ID0gZi5ha3RpdiAhPT0gZmFsc2U7CiAgICAgICAgdmFyIGphaHIgPSAoZi5kYXR1 bSB8fCAnJykuc3Vic3RyKDAsIDQpOwogICAgICAgIHZhciBiZXplaWNobnVuZyA9IGYuYmV6ZWlj aG51bmcgfHwgZi5uYW1lIHx8ICcnOwogICAgICAgIC8vIEljb24tQW56ZWlnZTogYmVpIGxlZXJl bSBGZWxkIHplaWd0IGRlciBCdXR0b24gZGFzIEthdGVnb3JpZS1EZWZhdWx0CiAgICAgICAgLy8g KHZpc3VlbGxlIEtvbnNpc3RlbnopLiBEYXMgaGlkZGVuIGZpZWxkIGJsZWlidCBsZWVyLCBkYW1p dCBkZXIKICAgICAgICAvLyBEZWZhdWx0IOKAnmxlYmVuZGlnIiBtaXQgZGVyIEthdGVnb3JpZSBt aXR3YW5kZXJ0LgogICAgICAgIHZhciBpY29uV2VydCA9IGYuaWNvbiB8fCAnJzsKICAgICAgICB2 YXIgaWNvbkFuemVpZ2UgPSBpY29uV2VydCB8fCBLQVRFR09SSUVfSUNPTl9ERUZBVUxUW2thdF0g fHwgS0FURUdPUklFX0lDT05fREVGQVVMVC5nZXNldHpsaWNoOwogICAgICAgIHZhciByb3dDbHMg PSAnZmVpZXJ0YWctcm93IGZlaWVydGFnLXJvdy1rYXQtJyArIGthdCArICcgZmVpZXJ0YWctcm93 LWphaHItJyArIGphaHI7CiAgICAgICAgaWYgKCFha3Rpdikgcm93Q2xzICs9ICcgZmVpZXJ0YWct cm93LWluYWt0aXYnOwogICAgICAgIGlmIChmLndpY2h0aWcpIHJvd0NscyArPSAnIGZlaWVydGFn LXdpY2h0aWcnOwoKICAgICAgICB2YXIga2F0T3B0aW9ucyA9IEZFSUVSVEFHX0tBVEVHT1JJRU4u bWFwKGZ1bmN0aW9uKGspIHsKICAgICAgICAgICAgcmV0dXJuICc8b3B0aW9uIHZhbHVlPSInICsg ayArICciJyArIChrID09PSBrYXQgPyAnIHNlbGVjdGVkJyA6ICcnKSArICc+JyArIGVzY2FwZUhU TUwoRkVJRVJUQUdfS0FUX0xBQkVMW2tdKSArICc8L29wdGlvbj4nOwogICAgICAgIH0pLmpvaW4o JycpOwoKICAgICAgICBodG1sICs9ICc8dHIgY2xhc3M9IicgKyByb3dDbHMgKyAnIj4nICsKICAg ICAgICAgICAgJzx0ZD48aW5wdXQgdHlwZT0iZGF0ZSIgdmFsdWU9IicgKyBlc2NhcGVBdHRyKGYu ZGF0dW0gfHwgJycpICsgJyIgZGF0YS1pZHg9IicgKyBpICsgJyIgZGF0YS1mZWxkPSJkYXR1bSIg Y2xhc3M9ImZlaWVydGFnLWlucHV0Ij48L3RkPicgKwogICAgICAgICAgICAnPHRkPjxpbnB1dCB0 eXBlPSJ0ZXh0IiB2YWx1ZT0iJyArIGVzY2FwZUF0dHIoYmV6ZWljaG51bmcpICsgJyIgZGF0YS1p ZHg9IicgKyBpICsgJyIgZGF0YS1mZWxkPSJiZXplaWNobnVuZyIgY2xhc3M9ImZlaWVydGFnLWlu cHV0IiBwbGFjZWhvbGRlcj0iQmV6ZWljaG51bmcuLi4iPjwvdGQ+JyArCiAgICAgICAgICAgICc8 dGQgc3R5bGU9InRleHQtYWxpZ246Y2VudGVyIj4nICsKICAgICAgICAgICAgICAgICc8YnV0dG9u IHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImVtb2ppLWJ0biBmZWllcnRhZy1pY29uLWJ0biIgZGF0YS1p ZHg9IicgKyBpICsgJyIgdGl0bGU9Ikljb24gd8OkaGxlbiAobGVlciA9IEthdGVnb3JpZS1EZWZh dWx0KSI+JyArIGVzY2FwZUhUTUwoaWNvbkFuemVpZ2UpICsgJzwvYnV0dG9uPicgKwogICAgICAg ICAgICAgICAgJzxpbnB1dCB0eXBlPSJoaWRkZW4iIGNsYXNzPSJmZWllcnRhZy1pbnB1dCIgZGF0 YS1pZHg9IicgKyBpICsgJyIgZGF0YS1mZWxkPSJpY29uIiB2YWx1ZT0iJyArIGVzY2FwZUF0dHIo aWNvbldlcnQpICsgJyI+JyArCiAgICAgICAgICAgICc8L3RkPicgKwogICAgICAgICAgICAnPHRk PjxzZWxlY3QgZGF0YS1pZHg9IicgKyBpICsgJyIgZGF0YS1mZWxkPSJrYXRlZ29yaWUiIGNsYXNz PSJmZWllcnRhZy1pbnB1dCI+JyArIGthdE9wdGlvbnMgKyAnPC9zZWxlY3Q+PC90ZD4nICsKICAg ICAgICAgICAgJzx0ZCBzdHlsZT0idGV4dC1hbGlnbjpjZW50ZXIiPjxpbnB1dCB0eXBlPSJjaGVj a2JveCInICsgKGFrdGl2ID8gJyBjaGVja2VkJyA6ICcnKSArICcgZGF0YS1pZHg9IicgKyBpICsg JyIgZGF0YS1mZWxkPSJha3RpdiIgY2xhc3M9ImZlaWVydGFnLWlucHV0IiB0aXRsZT0iQW56ZWln ZW4gLyBhdXNibGVuZGVuIj48L3RkPicgKwogICAgICAgICAgICAnPHRkIHN0eWxlPSJ0ZXh0LWFs aWduOmNlbnRlciI+PGxhYmVsIHN0eWxlPSJjdXJzb3I6cG9pbnRlcjtkaXNwbGF5OmlubGluZS1m bGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6NnB4IiB0aXRsZT0iQWxzIGJlc29uZGVycyB3aWNo dGlnZW4gRmVpZXJ0YWcgbWFya2llcmVuICh2ZXJzdMOkcmt0ZSBIZXJ2b3JoZWJ1bmcgaW0gSGVh ZGVyKSI+PGlucHV0IHR5cGU9ImNoZWNrYm94IicgKyAoZi53aWNodGlnID8gJyBjaGVja2VkJyA6 ICcnKSArICcgZGF0YS1pZHg9IicgKyBpICsgJyIgZGF0YS1mZWxkPSJ3aWNodGlnIiBjbGFzcz0i ZmVpZXJ0YWctaW5wdXQiPiAnICsKICAgICAgICAgICAgKGYud2ljaHRpZyA/ICc8c3BhbiBjbGFz cz0iZmVpZXJ0YWctd2ljaHRpZy1iYWRnZSI+V2ljaHRpZzwvc3Bhbj4nIDogJzxzcGFuIHN0eWxl PSJmb250LXNpemU6MTFweDtjb2xvcjp2YXIoLS10ZXh0LW11dGVkKSI+4oCUPC9zcGFuPicpICsg JzwvbGFiZWw+PC90ZD4nICsKICAgICAgICAgICAgJzx0ZD4nICsKICAgICAgICAgICAgICAgICc8 aW5wdXQgdHlwZT0iaGlkZGVuIiBjbGFzcz0iZmVpZXJ0YWctaW5wdXQiIGRhdGEtaWR4PSInICsg aSArICciIGRhdGEtZmVsZD0ia3VyemJlc2NocmVpYnVuZyIgdmFsdWU9IicgKyBlc2NhcGVBdHRy KGYua3VyemJlc2NocmVpYnVuZyB8fCAnJykgKyAnIj4nICsKICAgICAgICAgICAgICAgICc8aW5w dXQgdHlwZT0iaGlkZGVuIiBjbGFzcz0iZmVpZXJ0YWctaW5wdXQiIGRhdGEtaWR4PSInICsgaSAr ICciIGRhdGEtZmVsZD0iaW5mb1VybCIgdmFsdWU9IicgKyBlc2NhcGVBdHRyKGYuaW5mb1VybCB8 fCAnJykgKyAnIj4nICsKICAgICAgICAgICAgICAgICc8ZGl2IHN0eWxlPSJkaXNwbGF5OmZsZXg7 Z2FwOjRweDtmbGV4LXdyYXA6d3JhcCI+JyArCiAgICAgICAgICAgICAgICAgICAgJzxidXR0b24g Y2xhc3M9ImJ0biBidG4tc2VrIGJ0bi1rbGVpbiBmZWllcnRhZy1pbmZvLWJ0biIgZGF0YS1pZHg9 IicgKyBpICsgJyIgdGl0bGU9IkJlc2NocmVpYnVuZyB1bmQgV2lraXBlZGlhLUxpbmsgYmVhcmJl aXRlbiI+4pyOIEluZm88L2J1dHRvbj4nICsKICAgICAgICAgICAgICAgICAgICAnPGJ1dHRvbiBj bGFzcz0iYnRuIGJ0bi1nZWZhaHIgYnRuLWtsZWluIGJ0bi1sb2VzY2hlbiIgZGF0YS1ha3Rpb249 ImZlaWVydGFnLWxvZXNjaGVuIiBkYXRhLWlkeD0iJyArIGkgKyAnIiB0aXRsZT0iTMO2c2NoZW4i PkzDtnNjaGVuPC9idXR0b24+JyArCiAgICAgICAgICAgICAgICAnPC9kaXY+JyArCiAgICAgICAg ICAgICc8L3RkPjwvdHI+JzsKICAgIH0pOwogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Zl aWVydGFnZS10Ym9keScpLmlubmVySFRNTCA9IGh0bWw7CiAgICAvLyBMaXN0ZSBpbiBkZXIgZ2xl aWNoZW4gUmVpaGVuZm9sZ2UgYWJsZWdlbiwgZGFtaXQgZGF0YS1pZHggenVyIEZvbGdlc2ljaHQg cGFzc3QuCiAgICBaLmFkbWluLmZlaWVydGFnZSA9IGxpc3RlOwogICAgZmVpZXJ0YWdlRmlsdGVy RnVlbGxlbigpOwogICAgZmVpZXJ0YWdlRmlsdGVyQW53ZW5kZW4oKTsKfQoKZXhwb3J0IGZ1bmN0 aW9uIGZlaWVydGFnZUZpbHRlckFud2VuZGVuKCkgewogICAgdmFyIHRib2R5ID0gZG9jdW1lbnQu Z2V0RWxlbWVudEJ5SWQoJ2ZlaWVydGFnZS10Ym9keScpOwogICAgaWYgKCF0Ym9keSkgcmV0dXJu OwogICAgLy8gQmVzdGVoZW5kZSBGaWx0ZXItS2xhc3NlbiBlbnRmZXJuZW4KICAgIHRib2R5LmNs YXNzTmFtZSA9IHRib2R5LmNsYXNzTmFtZS5yZXBsYWNlKC9ccypmaWx0ZXItKGthdC1cUyt8amFo ci1cUyt8bnVyLWFrdGl2KS9nLCAnJykudHJpbSgpOwogICAgdmFyIGthdCA9IChkb2N1bWVudC5n ZXRFbGVtZW50QnlJZCgnZmVpZXJ0YWdlLWZpbHRlci1rYXRlZ29yaWUnKSB8fCB7fSkudmFsdWUg fHwgJ2FsbGUnOwogICAgdmFyIGphaHIgPSAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ZlaWVy dGFnZS1maWx0ZXItamFocicpIHx8IHt9KS52YWx1ZSB8fCAnYWxsZSc7CiAgICB2YXIgbnVyQWt0 aXYgPSAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ZlaWVydGFnZS1maWx0ZXItbnVyLWFrdGl2 JykgfHwge30pLmNoZWNrZWQ7CiAgICB2YXIgYWRkID0gW107CiAgICBpZiAoa2F0ICE9PSAnYWxs ZScpIGFkZC5wdXNoKCdmaWx0ZXIta2F0LScgKyBrYXQpOwogICAgaWYgKGphaHIgIT09ICdhbGxl JykgYWRkLnB1c2goJ2ZpbHRlci1qYWhyLScgKyBqYWhyKTsKICAgIGlmIChudXJBa3RpdikgYWRk LnB1c2goJ2ZpbHRlci1udXItYWt0aXYnKTsKICAgIGlmIChhZGQubGVuZ3RoKSB0Ym9keS5jbGFz c05hbWUgPSAodGJvZHkuY2xhc3NOYW1lICsgJyAnICsgYWRkLmpvaW4oJyAnKSkudHJpbSgpOwp9 CgpleHBvcnQgZnVuY3Rpb24gZmVpZXJ0YWdlQXVzVGFiZWxsZUxlc2VuKCkgewogICAgcmV0dXJu IHRhYmVsbGVGZWxkZXJMZXNlbignZmVpZXJ0YWctaW5wdXQnLCB7IGJvb2xGZWxkZXI6IFsnd2lj aHRpZycsICdha3RpdiddIH0pCiAgICAgICAgLmZpbHRlcihmdW5jdGlvbihmKSB7IHJldHVybiBm LmRhdHVtICYmIGYuYmV6ZWljaG51bmc7IH0pCiAgICAgICAgLm1hcChmdW5jdGlvbihmKSB7CiAg ICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICBkYXR1bTogZi5kYXR1bSwKICAgICAg ICAgICAgICAgIGJlemVpY2hudW5nOiBmLmJlemVpY2hudW5nLAogICAgICAgICAgICAgICAga2F0 ZWdvcmllOiBmLmthdGVnb3JpZSB8fCAnZ2VzZXR6bGljaCcsCiAgICAgICAgICAgICAgICBha3Rp djogZi5ha3RpdiAhPT0gZmFsc2UsCiAgICAgICAgICAgICAgICB3aWNodGlnOiAhIWYud2ljaHRp ZywKICAgICAgICAgICAgICAgIGljb246IGYuaWNvbiB8fCAnJywKICAgICAgICAgICAgICAgIGt1 cnpiZXNjaHJlaWJ1bmc6IGYua3VyemJlc2NocmVpYnVuZyB8fCAnJywKICAgICAgICAgICAgICAg IGluZm9Vcmw6IGYuaW5mb1VybCB8fCAnJwogICAgICAgICAgICB9OwogICAgICAgIH0pOwp9Cgov LyBNb2RhbCB6dW0gQmVhcmJlaXRlbiBkZXIgRGV0YWlsLUZlbGRlciAoS3VyemJlc2NocmVpYnVu ZyArIEluZm8tVVJMKS4KLy8gSW5kaXplcyByZWZlcmVuemllcmVuIGRpZSBET00tUmVpaGVuZm9s Z2UgZGVyIFRhYmVsbGUsIGlkZW50aXNjaCB6dSBkZW4KLy8gYW5kZXJlbiBmZWllcnRhZy1pbnB1 dCBkYXRhLWlkeC1XZXJ0ZW4uIFdlcnRlIHdlcmRlbiBpbiBkaWUgaGlkZGVuCi8vIEZpZWxkcyBn ZXNjaHJpZWJlbiwgZGFtaXQgZmVpZXJ0YWdlQXVzVGFiZWxsZUxlc2VuIHNpZSBiZWltIFNwZWlj aGVybgovLyBtaXRuaW1tdC4gRGlydHktVHJhY2tpbmcgbGFldWZ0IHVlYmVyIGRhcyBjaGFuZ2Ut RXZlbnQgYXVmIGRlbiBoaWRkZW4KLy8gSW5wdXRzIChzaWVoZSBkaXJ0eVRyYWNrZXJFaW5yaWNo dGVuKS4KZXhwb3J0IGZ1bmN0aW9uIGZlaWVydGFnZUluZm9Nb2RhbFplaWdlbihpZHgpIHsKICAg IHZhciBoaWRkZW5LdXJ6ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmZlaWVydGFnLWlucHV0 W2RhdGEtZmVsZD0ia3VyemJlc2NocmVpYnVuZyJdW2RhdGEtaWR4PSInICsgaWR4ICsgJyJdJyk7 CiAgICB2YXIgaGlkZGVuVXJsICA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5mZWllcnRhZy1p bnB1dFtkYXRhLWZlbGQ9ImluZm9VcmwiXVtkYXRhLWlkeD0iJyArIGlkeCArICciXScpOwogICAg dmFyIGJleklucHV0ICAgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuZmVpZXJ0YWctaW5wdXRb ZGF0YS1mZWxkPSJiZXplaWNobnVuZyJdW2RhdGEtaWR4PSInICsgaWR4ICsgJyJdJyk7CiAgICBp ZiAoIWhpZGRlbkt1cnogfHwgIWhpZGRlblVybCkgcmV0dXJuOwogICAgdmFyIGJleiA9IGJleklu cHV0ID8gYmV6SW5wdXQudmFsdWUgOiAnJzsKICAgIHZhciBrb2VycGVyID0gJzxkaXYgY2xhc3M9 ImZvcm0tZ3J1cHBlIj48bGFiZWw+QmV6ZWljaG51bmc8L2xhYmVsPicgKwogICAgICAgICc8ZGl2 IHN0eWxlPSJmb250LXNpemU6MTRweDtmb250LXdlaWdodDo2MDA7cGFkZGluZzo2cHggMCI+JyAr IGVzY2FwZUhUTUwoYmV6IHx8ICcobGVlciknKSArICc8L2Rpdj48L2Rpdj4nICsKICAgICAgICAn PGRpdiBjbGFzcz0iZm9ybS1ncnVwcGUiPjxsYWJlbCBmb3I9ImZ0LWluZm8ta3VyeiI+S3VyemJl c2NocmVpYnVuZzwvbGFiZWw+JyArCiAgICAgICAgJzx0ZXh0YXJlYSBpZD0iZnQtaW5mby1rdXJ6 IiBjbGFzcz0iZm9ybS1pbnB1dCIgcm93cz0iMyIgc3R5bGU9IndpZHRoOjEwMCUiIHBsYWNlaG9s ZGVyPSIx4oCTMiBTw6R0emUuLi4iPicgKyBlc2NhcGVIVE1MKGhpZGRlbkt1cnoudmFsdWUpICsg JzwvdGV4dGFyZWE+PC9kaXY+JyArCiAgICAgICAgJzxkaXYgY2xhc3M9ImZvcm0tZ3J1cHBlIj48 bGFiZWwgZm9yPSJmdC1pbmZvLXVybCI+SW5mby1VUkwgKHouQi4gV2lraXBlZGlhKTwvbGFiZWw+ JyArCiAgICAgICAgJzxpbnB1dCBpZD0iZnQtaW5mby11cmwiIHR5cGU9InVybCIgY2xhc3M9ImZv cm0taW5wdXQiIHN0eWxlPSJ3aWR0aDoxMDAlIiBwbGFjZWhvbGRlcj0iaHR0cHM6Ly9kZS53aWtp cGVkaWEub3JnL3dpa2kvLi4uIiB2YWx1ZT0iJyArIGVzY2FwZUF0dHIoaGlkZGVuVXJsLnZhbHVl KSArICciPjwvZGl2Pic7CiAgICB2YXIgZnVzcyA9ICc8YnV0dG9uIGNsYXNzPSJidG4gYnRuLXNl ayBidG4ta2xlaW4iIGlkPSJmdC1pbmZvLWFiYnJlY2hlbiI+QWJicmVjaGVuPC9idXR0b24+JyAr CiAgICAgICAgICAgICAgICc8YnV0dG9uIGNsYXNzPSJidG4gYnRuLXByaW1hZXIgYnRuLWtsZWlu IiBpZD0iZnQtaW5mby11ZWJlcm5laG1lbiI+w5xiZXJuZWhtZW48L2J1dHRvbj4nOwogICAgbW9k YWxaZWlnZW4oJ0ZlaWVydGFnLUluZm8gYmVhcmJlaXRlbicsIGtvZXJwZXIsIGZ1c3MpOwogICAg ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Z0LWluZm8tYWJicmVjaGVuJykuYWRkRXZlbnRMaXN0 ZW5lcignY2xpY2snLCBtb2RhbFNjaGxpZXNzZW4pOwogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5 SWQoJ2Z0LWluZm8tdWViZXJuZWhtZW4nKS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0 aW9uKCkgewogICAgICAgIGhpZGRlbkt1cnoudmFsdWUgPSAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5 SWQoJ2Z0LWluZm8ta3VyeicpLnZhbHVlIHx8ICcnKS50cmltKCk7CiAgICAgICAgaGlkZGVuVXJs LnZhbHVlICA9IChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZnQtaW5mby11cmwnKS52YWx1ZSB8 fCAnJykudHJpbSgpOwogICAgICAgIC8vIGNoYW5nZS1FdmVudCBhdXNsb2VzZW4sIGRhbWl0IGRl ciBEaXJ0eS1UcmFja2VyIGdyZWlmdC4KICAgICAgICBoaWRkZW5LdXJ6LmRpc3BhdGNoRXZlbnQo bmV3IEV2ZW50KCdjaGFuZ2UnLCB7IGJ1YmJsZXM6IHRydWUgfSkpOwogICAgICAgIGhpZGRlblVy bC5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnY2hhbmdlJywgeyBidWJibGVzOiB0cnVlIH0pKTsK ICAgICAgICBtb2RhbFNjaGxpZXNzZW4odHJ1ZSk7CiAgICB9KTsKfQoKLy8gPT09PT0gQWRtaW46 IEZlcmllbiA9PT09PQoKZXhwb3J0IGZ1bmN0aW9uIGZlcmllblRhYmVsbGVSZW5kZXJuKCkgewog ICAgdmFyIHRib2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Zlcmllbi10Ym9keScpOwog ICAgaWYgKCF0Ym9keSkgcmV0dXJuOwogICAgaWYgKCEoWi5hZG1pbi5mZXJpZW4gfHwgW10pLmxl bmd0aCkgewogICAgICAgIHRib2R5LmlubmVySFRNTCA9IGFkbWluRW1wdHlaZWlsZSg0LCAnXHV7 MUYzRDZ977iPJywKICAgICAgICAgICAgJ05vY2gga2VpbmUgRmVyaWVuemVpdHLDpHVtZSBlcmZh c3N0JywKICAgICAgICAgICAgJ05SVy1TY2h1bGZlcmllbiB3ZXJkZW4gaW0gV29jaGVucGxhbiBt YXJraWVydCB1bmQgaGVsZmVuIGJlaSBkZXIgVXJsYXVic3ZlcmdhYmUuIEVpbnRyYWdlbiBtaXQg Vm9uLS9CaXMtRGF0dW0gdW5kIEJlemVpY2hudW5nICh6LkIuIE9zdGVyZmVyaWVuIDMwLjAzLuKA kzExLjA0LikuIEtsaWNrZSBvYmVuIGF1ZiDigJ5OZXVlciBGZXJpZW56ZWl0cmF1bSIuJyk7CiAg ICAgICAgcmV0dXJuOwogICAgfQogICAgdmFyIGh0bWwgPSAnJzsKICAgIChaLmFkbWluLmZlcmll biB8fCBbXSkuZm9yRWFjaChmdW5jdGlvbihmLCBpKSB7CiAgICAgICAgaHRtbCArPSAnPHRyPjx0 ZD48aW5wdXQgdHlwZT0iZGF0ZSIgdmFsdWU9IicgKyBlc2NhcGVBdHRyKGYudm9uIHx8ICcnKSAr ICciIGRhdGEtaWR4PSInICsgaSArICciIGRhdGEtZmVsZD0idm9uIiBjbGFzcz0iZmVyaWVuLWlu cHV0Ij48L3RkPicgKwogICAgICAgICAgICAnPHRkPjxpbnB1dCB0eXBlPSJkYXRlIiB2YWx1ZT0i JyArIGVzY2FwZUF0dHIoZi5iaXMgfHwgJycpICsgJyIgZGF0YS1pZHg9IicgKyBpICsgJyIgZGF0 YS1mZWxkPSJiaXMiIGNsYXNzPSJmZXJpZW4taW5wdXQiPjwvdGQ+JyArCiAgICAgICAgICAgICc8 dGQ+PGlucHV0IHR5cGU9InRleHQiIHZhbHVlPSInICsgZXNjYXBlQXR0cihmLm5hbWUpICsgJyIg ZGF0YS1pZHg9IicgKyBpICsgJyIgZGF0YS1mZWxkPSJuYW1lIiBjbGFzcz0iZmVyaWVuLWlucHV0 Ij48L3RkPicgKwogICAgICAgICAgICAnPHRkPjxidXR0b24gY2xhc3M9ImJ0biBidG4tZ2VmYWhy IGJ0bi1rbGVpbiBidG4tbG9lc2NoZW4iIGRhdGEtYWt0aW9uPSJmZXJpZW4tbG9lc2NoZW4iIGRh dGEtaWR4PSInICsgaSArICciIHRpdGxlPSJMw7ZzY2hlbiI+TMO2c2NoZW48L2J1dHRvbj48L3Rk PjwvdHI+JzsKICAgIH0pOwogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Zlcmllbi10Ym9k eScpLmlubmVySFRNTCA9IGh0bWw7Cn0KCmV4cG9ydCBmdW5jdGlvbiBmZXJpZW5BdXNUYWJlbGxl TGVzZW4oKSB7CiAgICByZXR1cm4gdGFiZWxsZUZlbGRlckxlc2VuKCdmZXJpZW4taW5wdXQnKQog ICAgICAgIC5maWx0ZXIoZnVuY3Rpb24oZikgeyByZXR1cm4gZi52b24gJiYgZi5iaXMgJiYgZi5u YW1lOyB9KTsKfQoKLy8gPT09PT0gQWRtaW46IFNvbmRlcnRlcm1pbmUgPT09PT0KCmV4cG9ydCBm dW5jdGlvbiBzb25kZXJ0ZXJtaW5lUmVuZGVybigpIHsKICAgIC8vICJNYXJraWVydW5nIi1TcGFs dGUgKENoZXJyeS1QaWNrIDg0ZmIwZjcsIGhpbnRlciBUb2dnbGUKICAgIC8vIGBmZWF0dXJlcy5z b25kZXJ0ZXJtaW5lV2ljaHRpZ2ApLiBCYWNrd2FyZHMtY29tcGF0OiBFaW50cmFlZ2UgbWl0CiAg ICAvLyBhbHRlbiBgdHlwOid3YXJudW5nJ2Agd2VyZGVuIGFscyAid2ljaHRpZyIgZXJrYW5udC4K ICAgIHZhciB3aWNodGlnVUkgPSBmZWF0dXJlSXN0QWt0aXYoJ3NvbmRlcnRlcm1pbmVXaWNodGln Jyk7CiAgICB2YXIgbGlzdGUgPSAoWi5hZG1pbi5zb25kZXJ0ZXJtaW5lIHx8IFtdKS5zbGljZSgp LnNvcnQoZnVuY3Rpb24oYSwgYikgewogICAgICAgIHJldHVybiAoYS5kYXR1bSB8fCAnJykubG9j YWxlQ29tcGFyZShiLmRhdHVtIHx8ICcnKTsKICAgIH0pOwogICAgdmFyIGh0bWwgPSAnJzsKICAg IGlmIChsaXN0ZS5sZW5ndGggPT09IDApIHsKICAgICAgICBodG1sID0gYWRtaW5FbXB0eVplaWxl KDYsICdcdXsxRjRDNX0nLAogICAgICAgICAgICAnTm9jaCBrZWluZSBTb25kZXJ0ZXJtaW5lIGFu Z2VsZWd0JywKICAgICAgICAgICAgJ1NvbmRlcnRlcm1pbmUgc2luZCBIaW53ZWlzZSBvZGVyIFdh cm51bmdlbiwgZGllIGFuIGJlc3RpbW10ZW4gVGFnZW4gZnVlciBhbGxlIHNpY2h0YmFyIHdlcmRl biDigJQgVmVyYW5zdGFsdHVuZ2VuLCBlcmhvZWh0ZXIgUGVyc29uYWxiZWRhcmYsIFNwZXJydGVy bWluZS4gS2xpY2tlIG9iZW4gYXVmIOKAnk5ldWVyIEhpbndlaXMiLCB1bSBkZW4gZXJzdGVuIHp1 IGVyc3RlbGxlbi4nKTsKICAgIH0KICAgIGxpc3RlLmZvckVhY2goZnVuY3Rpb24ocykgewogICAg ICAgIGlmICghcy5pZCkgcy5pZCA9ICdzdF8nICsgKHMuZGF0dW0gfHwgJ3gnKSArICdfJyArIE1h dGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnN1YnN0cigyLCA2KTsKICAgICAgICB2YXIgaWNvbkh0 bWwgPSBzLmljb24gPyBlc2NhcGVIVE1MKHMuaWNvbikgOiAn4oCUJzsKICAgICAgICB2YXIgaWNv bkNscyA9IHMuaWNvbiA/ICdzb25kZXItaWNvbi16ZWxsZScgOiAnc29uZGVyLWljb24temVsbGUg bGVlcic7CiAgICAgICAgdmFyIGlzdFdpY2h0aWcgPSAhIXMud2ljaHRpZyB8fCBzLnR5cCA9PT0g J3dhcm51bmcnOwogICAgICAgIHZhciB0eXBMYWJlbCwgdHlwQmFkZ2U7CiAgICAgICAgaWYgKHdp Y2h0aWdVSSkgewogICAgICAgICAgICB0eXBMYWJlbCA9IGlzdFdpY2h0aWcgPyAnV2ljaHRpZycg OiAnU3RhbmRhcmQnOwogICAgICAgICAgICB0eXBCYWRnZSA9IGlzdFdpY2h0aWcgPyAnc29uZGVy LXR5cC13YXJuJyA6ICdzb25kZXItdHlwLWluZm8nOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAg ICAgIHR5cExhYmVsID0gcy50eXAgPT09ICd3YXJudW5nJyA/ICdXYXJudW5nJyA6ICdIaW53ZWlz JzsKICAgICAgICAgICAgdHlwQmFkZ2UgPSBzLnR5cCA9PT0gJ3dhcm51bmcnID8gJ3NvbmRlci10 eXAtd2FybicgOiAnc29uZGVyLXR5cC1pbmZvJzsKICAgICAgICB9CiAgICAgICAgdmFyIHdtID0g cy53YXJuTW9kdXMgfHwgJ2ltbWVyJzsKICAgICAgICB2YXIgd21MYWJlbCA9IHdtID09PSAnaW1t ZXInID8gJ0ltbWVyJyA6ICh3bSA9PT0gJ2Vpbm1hbGlnJyA/ICdFaW5tYWxpZyAvIFVzZXInIDog J0F1cycpOwogICAgICAgIHZhciB0aXRlbCA9IHMudGl0ZWwgfHwgc29uZGVyVGl0ZWxBdXNUZXh0 KHMudGV4dCkgfHwgJyhvaG5lIFRpdGVsKSc7CiAgICAgICAgaHRtbCArPSAnPHRyPicgKwogICAg ICAgICAgICAnPHRkPjxzcGFuIGNsYXNzPSInICsgaWNvbkNscyArICciPicgKyBpY29uSHRtbCAr ICc8L3NwYW4+PC90ZD4nICsKICAgICAgICAgICAgJzx0ZD4nICsgZXNjYXBlSFRNTChzb25kZXJE YXR1bUxhYmVsKHMpKSArICc8L3RkPicgKwogICAgICAgICAgICAnPHRkPicgKyBlc2NhcGVIVE1M KHRpdGVsKSArICc8L3RkPicgKwogICAgICAgICAgICAnPHRkPjxzcGFuIGNsYXNzPSJzb25kZXIt dHlwLWJhZGdlICcgKyB0eXBCYWRnZSArICciPicgKyB0eXBMYWJlbCArICc8L3NwYW4+PC90ZD4n ICsKICAgICAgICAgICAgJzx0ZD4nICsgZXNjYXBlSFRNTCh3bUxhYmVsKSArICc8L3RkPicgKwog ICAgICAgICAgICAnPHRkPjxkaXYgc3R5bGU9ImRpc3BsYXk6ZmxleDtnYXA6NnB4O2FsaWduLWl0 ZW1zOmNlbnRlcjt3aGl0ZS1zcGFjZTpub3dyYXAiPicgKwogICAgICAgICAgICAgICAgJzxidXR0 b24gY2xhc3M9ImJ0biBidG4tc2VrIGJ0bi1rbGVpbiBidG4taWNvbiBidG4tYmVhcmJlaXRlbiIg ZGF0YS1ha3Rpb249InNvbmRlci1iZWFyYmVpdGVuIiBkYXRhLWlkPSInICsgZXNjYXBlQXR0cihz LmlkKSArICciIHRpdGxlPSJIaW53ZWlzIGJlYXJiZWl0ZW4iPkJlYXJiZWl0ZW48L2J1dHRvbj4n ICsKICAgICAgICAgICAgICAgICc8YnV0dG9uIGNsYXNzPSJidG4gYnRuLWdlZmFociBidG4ta2xl aW4gYnRuLWxvZXNjaGVuIiBkYXRhLWFrdGlvbj0ic29uZGVyLWxvZXNjaGVuIiBkYXRhLWlkPSIn ICsgZXNjYXBlQXR0cihzLmlkKSArICciIHRpdGxlPSJIaW53ZWlzIGzDtnNjaGVuIj5Mw7ZzY2hl bjwvYnV0dG9uPicgKwogICAgICAgICAgICAnPC9kaXY+PC90ZD4nICsKICAgICAgICAnPC90cj4n OwogICAgfSk7CiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc29uZGVydGVybWluZS10Ym9k eScpLmlubmVySFRNTCA9IGh0bWw7Cn0KCmV4cG9ydCBmdW5jdGlvbiBzb25kZXJUaXRlbEF1c1Rl eHQoaHRtbCkgewogICAgaWYgKCFodG1sKSByZXR1cm4gJyc7CiAgICB2YXIgdG1wID0gZG9jdW1l bnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiAgICB0bXAuaW5uZXJIVE1MID0gaHRtbDsKICAgIHZh ciB0eHQgPSAodG1wLnRleHRDb250ZW50IHx8ICcnKS50cmltKCkuc3BsaXQoL1xyP1xuLylbMF07 CiAgICBpZiAodHh0Lmxlbmd0aCA+IDYwKSB0eHQgPSB0eHQuc3Vic3RyKDAsIDU3KSArICfigKYn OwogICAgcmV0dXJuIHR4dDsKfQoKLy8gc2FuaXRpemVSaWNoSHRtbCwgRU1PSklfU0VULCBlbW9q aVBpY2tlclplaWdlbiwgZW1vamlQaWNrZXJTY2hsaWVzc2VuIC0+IGpzL3VpL3J0ZS5qcwoKLy8g PT09PT0gU29uZGVydGVybWluLUhlbGZlciA9PT09PQpleHBvcnQgZnVuY3Rpb24gc29uZGVyRnVl ckRhdHVtKGRhdHVtKSB7CiAgICBpZiAoIWRhdHVtKSByZXR1cm4gbnVsbDsKICAgIHJldHVybiAo Wi5hZG1pbi5zb25kZXJ0ZXJtaW5lIHx8IFtdKS5maW5kKGZ1bmN0aW9uKHMpIHsKICAgICAgICB2 YXIgYmlzID0gcy5kYXR1bUJpcyB8fCBzLmRhdHVtOwogICAgICAgIHJldHVybiBzLmRhdHVtICYm IGRhdHVtID49IHMuZGF0dW0gJiYgZGF0dW0gPD0gYmlzOwogICAgfSk7Cn0KZXhwb3J0IGZ1bmN0 aW9uIHNvbmRlckJ5SWQoaWQpIHsKICAgIHJldHVybiAoWi5hZG1pbi5zb25kZXJ0ZXJtaW5lIHx8 IFtdKS5maW5kKGZ1bmN0aW9uKHMpIHsgcmV0dXJuIHMuaWQgPT09IGlkOyB9KTsKfQpleHBvcnQg ZnVuY3Rpb24gc29uZGVyRGF0dW1MYWJlbChzKSB7CiAgICBpZiAoIXMuZGF0dW0pIHJldHVybiAn 4oCUJzsKICAgIGlmIChzLmRhdHVtQmlzICYmIHMuZGF0dW1CaXMgIT09IHMuZGF0dW0pIHJldHVy biBkYXR1bUZvcm1hdERFKHMuZGF0dW0pICsgJyDigJMgJyArIGRhdHVtRm9ybWF0REUocy5kYXR1 bUJpcyk7CiAgICByZXR1cm4gZGF0dW1Gb3JtYXRERShzLmRhdHVtKTsKfQoKZXhwb3J0IGZ1bmN0 aW9uIHNvbmRlckluaGFsdEh0bWwoc29uZGVyKSB7CiAgICB2YXIgaWNvbiA9IHNvbmRlci5pY29u IHx8IChzb25kZXIudHlwID09PSAnd2FybnVuZycgPyAn4pqg77iPJyA6ICfihLnvuI8nKTsKICAg IHZhciB0aXRlbEh0bWwgPSBzb25kZXIudGl0ZWwgPyAnPGRpdiBjbGFzcz0ic29uZGVyLXdhcm4t dGl0ZWwiPicgKyBlc2NhcGVIVE1MKHNvbmRlci50aXRlbCkgKyAnPC9kaXY+JyA6ICcnOwogICAg dmFyIHRleHRIdG1sID0gc2FuaXRpemVSaWNoSHRtbChzb25kZXIudGV4dCB8fCAnJyk7CiAgICBy ZXR1cm4gJzxkaXYgY2xhc3M9InNvbmRlci13YXJuLWljb24iPicgKyBlc2NhcGVIVE1MKGljb24p ICsgJzwvZGl2PicgKwogICAgICAgIHRpdGVsSHRtbCArCiAgICAgICAgJzxkaXYgY2xhc3M9InNv bmRlci13YXJuLXRleHQiPicgKyB0ZXh0SHRtbCArICc8L2Rpdj4nICsKICAgICAgICAnPGRpdiBj bGFzcz0ic29uZGVyLXdhcm4tZGF0dW0iPicgKyBlc2NhcGVIVE1MKHNvbmRlckRhdHVtTGFiZWwo c29uZGVyKSkgKyAnPC9kaXY+JzsKfQoKZXhwb3J0IGZ1bmN0aW9uIHNvbmRlcldhcm5Nb2RhbFpl aWdlbihzb25kZXIsIG9uV2VpdGVyKSB7CiAgICB2YXIgdHlwQ2xzID0gJ3R5cC0nICsgKHNvbmRl ci50eXAgfHwgJ2hpbndlaXMnKTsKICAgIHZhciB0aXRlbEtvcGYgPSAoc29uZGVyLnR5cCA9PT0g J3dhcm51bmcnID8gJ1dhcm5oaW53ZWlzJyA6ICdIaW53ZWlzJykgKyAnIGbDvHIgZGllc2VuIFRh Zyc7CiAgICB2YXIgZm9vdGVyID0gJzxidXR0b24gY2xhc3M9ImJ0biBidG4tcHJpbWFlciIgaWQ9 InNvbmRlci13YXJuLW9rIj5WZXJzdGFuZGVuLCB3ZWl0ZXI8L2J1dHRvbj4nOwogICAgbW9kYWxa ZWlnZW4odGl0ZWxLb3BmLCBzb25kZXJJbmhhbHRIdG1sKHNvbmRlciksIGZvb3RlciwgbnVsbCk7 CiAgICB2YXIgbW9kID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21vZGFsLWJveCcpOwogICAg aWYgKG1vZCkgbW9kLmNsYXNzTGlzdC5hZGQoJ3NvbmRlci13YXJuLW1vZGFsJywgdHlwQ2xzKTsK ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzb25kZXItd2Fybi1vaycpLmFkZEV2ZW50TGlz dGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oKSB7CiAgICAgICAgaWYgKG1vZCkgbW9kLmNsYXNzTGlz dC5yZW1vdmUoJ3NvbmRlci13YXJuLW1vZGFsJywgdHlwQ2xzKTsKICAgICAgICBtb2RhbFNjaGxp ZXNzZW4oKTsKICAgICAgICBpZiAodHlwZW9mIG9uV2VpdGVyID09PSAnZnVuY3Rpb24nKSBvbldl aXRlcigpOwogICAgfSk7Cn0KCmV4cG9ydCBmdW5jdGlvbiBzb25kZXJBbnNpY2h0TW9kYWxaZWln ZW4oc29uZGVyKSB7CiAgICB2YXIgdGl0ZWxLb3BmID0gc29uZGVyLnR5cCA9PT0gJ3dhcm51bmcn ID8gJ1dhcm5oaW53ZWlzJyA6ICdIaW53ZWlzJzsKICAgIG1vZGFsWmVpZ2VuKHRpdGVsS29wZiwg c29uZGVySW5oYWx0SHRtbChzb25kZXIpLAogICAgICAgICc8YnV0dG9uIGNsYXNzPSJidG4gYnRu LXByaW1hZXIiIGlkPSJzb25kZXItYW5zaWNodC1vayI+U2NobGllw59lbjwvYnV0dG9uPicsCiAg ICAgICAgbnVsbCk7CiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc29uZGVyLWFuc2ljaHQt b2snKS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIG1vZGFsU2NobGllc3Nlbik7Cn0KCmV4cG9y dCBmdW5jdGlvbiBzb25kZXJFZGl0TW9kYWxaZWlnZW4oaWRPZGVyRGF0dW0pIHsKICAgIC8vIFBh cmFtZXRlcjogInN0Xy4uLiItSUQgKGJlYXJiZWl0ZW4pIG9kZXIgIllZWVktTU0tREQiIChuZXUg ZsO8ciBkaWVzZW4gVGFnKSBvZGVyICIiIChuZXUgb2huZSBEYXR1bSkKICAgIHZhciB2b3JoID0g bnVsbDsKICAgIGlmIChpZE9kZXJEYXR1bSAmJiBpZE9kZXJEYXR1bS5pbmRleE9mKCdzdF8nKSA9 PT0gMCkgdm9yaCA9IHNvbmRlckJ5SWQoaWRPZGVyRGF0dW0pOwogICAgZWxzZSBpZiAoaWRPZGVy RGF0dW0pIHZvcmggPSBzb25kZXJGdWVyRGF0dW0oaWRPZGVyRGF0dW0pOwogICAgdmFyIHN0YXJ0 RGF0dW0gPSAoaWRPZGVyRGF0dW0gJiYgaWRPZGVyRGF0dW0uaW5kZXhPZignc3RfJykgIT09IDAp ID8gaWRPZGVyRGF0dW0gOiAnJzsKICAgIHZhciBzID0gdm9yaCA/IE9iamVjdC5hc3NpZ24oe30s IHZvcmgpIDogeyBkYXR1bTogc3RhcnREYXR1bSwgZGF0dW1CaXM6ICcnLCB0aXRlbDogJycsIHRl eHQ6ICcnLCB0eXA6ICdoaW53ZWlzJywgaWNvbjogJycsIHdhcm5Nb2R1czogJ2ltbWVyJyB9Owog ICAgdmFyIGljb25Wb3JzY2hhdSA9IHMuaWNvbiB8fCAn4oCUJzsKICAgIHZhciB0b29sYmFySHRt bCA9CiAgICAgICAgJzxkaXYgY2xhc3M9InJ0ZS10b29sYmFyIj4nICsKICAgICAgICAgICAgJzxi dXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0icnRlLWJ0biIgZGF0YS1jbWQ9ImJvbGQiIHRpdGxl PSJGZXR0IChDdHJsK0IpIj48c3Ryb25nPkI8L3N0cm9uZz48L2J1dHRvbj4nICsKICAgICAgICAg ICAgJzxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0icnRlLWJ0biIgZGF0YS1jbWQ9Iml0YWxp YyIgdGl0bGU9Ikt1cnNpdiAoQ3RybCtJKSI+PGVtPkk8L2VtPjwvYnV0dG9uPicgKwogICAgICAg ICAgICAnPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJydGUtYnRuIiBkYXRhLWNtZD0idW5k ZXJsaW5lIiB0aXRsZT0iVW50ZXJzdHJpY2hlbiAoQ3RybCtVKSI+PHU+VTwvdT48L2J1dHRvbj4n ICsKICAgICAgICAgICAgJzxzcGFuIGNsYXNzPSJydGUtc2VwIj48L3NwYW4+JyArCiAgICAgICAg ICAgICc8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9InJ0ZS1idG4iIGRhdGEtY21kPSJpbnNl cnRVbm9yZGVyZWRMaXN0IiB0aXRsZT0iQXVmesOkaGx1bmciPuKAojwvYnV0dG9uPicgKwogICAg ICAgICAgICAnPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJydGUtYnRuIiBkYXRhLWNtZD0i aW5zZXJ0T3JkZXJlZExpc3QiIHRpdGxlPSJOdW1tZXJpZXJ0Ij4xLjwvYnV0dG9uPicgKwogICAg ICAgICAgICAnPHNwYW4gY2xhc3M9InJ0ZS1zZXAiPjwvc3Bhbj4nICsKICAgICAgICAgICAgJzxi dXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0icnRlLWJ0biIgZGF0YS1jbWQ9Im91dGRlbnQiIHRp dGxlPSJBdXNyw7xja2VuIj7ih6Q8L2J1dHRvbj4nICsKICAgICAgICAgICAgJzxidXR0b24gdHlw ZT0iYnV0dG9uIiBjbGFzcz0icnRlLWJ0biIgZGF0YS1jbWQ9ImluZGVudCIgdGl0bGU9IkVpbnLD vGNrZW4iPuKHpTwvYnV0dG9uPicgKwogICAgICAgICAgICAnPHNwYW4gY2xhc3M9InJ0ZS1zZXAi Pjwvc3Bhbj4nICsKICAgICAgICAgICAgJzxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0icnRl LWJ0biIgZGF0YS1jbWQ9InJlbW92ZUZvcm1hdCIgdGl0bGU9IkZvcm1hdGllcnVuZyBlbnRmZXJu ZW4iPkzDtnNjaGVuPC9idXR0b24+JyArCiAgICAgICAgJzwvZGl2Pic7CiAgICB2YXIga29lcnBl ciA9ICc8ZGl2IHN0eWxlPSJkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2dhcDox MnB4Ij4nICsKICAgICAgICAnPGRpdiBzdHlsZT0iZGlzcGxheTpmbGV4O2dhcDoxMnB4O2ZsZXgt d3JhcDp3cmFwIj4nICsKICAgICAgICAgICAgJzxkaXYgY2xhc3M9ImZvcm0tZ3J1cHBlIiBzdHls ZT0iZmxleDoxO21pbi13aWR0aDoxNTBweCI+PGxhYmVsPkRhdHVtIChWb24pPC9sYWJlbD48aW5w dXQgdHlwZT0iZGF0ZSIgaWQ9InNlLWRhdHVtIiBjbGFzcz0iZm9ybS1pbnB1dCIgdmFsdWU9Iicg KyBlc2NhcGVBdHRyKHMuZGF0dW0pICsgJyI+PC9kaXY+JyArCiAgICAgICAgICAgICc8ZGl2IGNs YXNzPSJmb3JtLWdydXBwZSIgc3R5bGU9ImZsZXg6MTttaW4td2lkdGg6MTUwcHgiPjxsYWJlbD5E YXR1bSAoQmlzKSA8c3BhbiBzdHlsZT0iZm9udC13ZWlnaHQ6NDAwO2NvbG9yOnZhcigtLXRleHQt bXV0ZWQpO2ZvbnQtc2l6ZToxMXB4Ij7igJQgbGVlciBsYXNzZW4gZsO8ciBlaW5lbiBUYWc8L3Nw YW4+PC9sYWJlbD48aW5wdXQgdHlwZT0iZGF0ZSIgaWQ9InNlLWRhdHVtLWJpcyIgY2xhc3M9ImZv cm0taW5wdXQiIHZhbHVlPSInICsgZXNjYXBlQXR0cihzLmRhdHVtQmlzIHx8ICcnKSArICciPjwv ZGl2PicgKwogICAgICAgICc8L2Rpdj4nICsKICAgICAgICAnPGRpdiBjbGFzcz0iZm9ybS1ncnVw cGUiPjxsYWJlbD5UaXRlbDwvbGFiZWw+PGlucHV0IHR5cGU9InRleHQiIGlkPSJzZS10aXRlbCIg Y2xhc3M9ImZvcm0taW5wdXQiIHZhbHVlPSInICsgZXNjYXBlQXR0cihzLnRpdGVsIHx8ICcnKSAr ICciIHBsYWNlaG9sZGVyPSJLdXJ6ZXIgVGl0ZWwsIHouQi4g4oCeS2FybmV2YWwiIiBtYXhsZW5n dGg9IjEwMCI+PC9kaXY+JyArCiAgICAgICAgJzxkaXYgY2xhc3M9ImZvcm0tZ3J1cHBlIj48bGFi ZWw+VGV4dDwvbGFiZWw+JyArIHRvb2xiYXJIdG1sICsKICAgICAgICAgICAgJzxkaXYgaWQ9InNl LXRleHQiIGNsYXNzPSJydGUtZWRpdG9yIiBjb250ZW50ZWRpdGFibGU9InRydWUiIHNwZWxsY2hl Y2s9InRydWUiPicgKyBzYW5pdGl6ZVJpY2hIdG1sKHMudGV4dCB8fCAnJykgKyAnPC9kaXY+JyAr CiAgICAgICAgJzwvZGl2PicgKwogICAgICAgICc8ZGl2IHN0eWxlPSJkaXNwbGF5OmZsZXg7Z2Fw OjEycHg7ZmxleC13cmFwOndyYXAiPicgKwogICAgICAgICAgICAnPGRpdiBjbGFzcz0iZm9ybS1n cnVwcGUiPjxsYWJlbD5JY29uPC9sYWJlbD48ZGl2PjxidXR0b24gdHlwZT0iYnV0dG9uIiBpZD0i c2UtaWNvbi1idG4iIGNsYXNzPSJlbW9qaS1idG4iPicgKyBlc2NhcGVIVE1MKGljb25Wb3JzY2hh dSkgKyAnPC9idXR0b24+PGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9InNlLWljb24iIHZhbHVlPSIn ICsgZXNjYXBlQXR0cihzLmljb24gfHwgJycpICsgJyI+PC9kaXY+PC9kaXY+JyArCiAgICAgICAg ICAgICc8ZGl2IGNsYXNzPSJmb3JtLWdydXBwZSIgc3R5bGU9ImZsZXg6MTttaW4td2lkdGg6MTIw cHgiPjxsYWJlbD5UeXA8L2xhYmVsPjxzZWxlY3QgaWQ9InNlLXR5cCIgY2xhc3M9ImZvcm0taW5w dXQiPicgKwogICAgICAgICAgICAgICAgJzxvcHRpb24gdmFsdWU9ImhpbndlaXMiJyArIChzLnR5 cCA9PT0gJ2hpbndlaXMnID8gJyBzZWxlY3RlZCcgOiAnJykgKyAnPkhpbndlaXMgKOKEuSk8L29w dGlvbj4nICsKICAgICAgICAgICAgICAgICc8b3B0aW9uIHZhbHVlPSJ3YXJudW5nIicgKyAocy50 eXAgPT09ICd3YXJudW5nJyA/ICcgc2VsZWN0ZWQnIDogJycpICsgJz5XYXJudW5nICjimqApPC9v cHRpb24+JyArCiAgICAgICAgICAgICc8L3NlbGVjdD48L2Rpdj4nICsKICAgICAgICAgICAgLy8g IldpY2h0aWciLUNoZWNrYm94IChDaGVycnktUGljayA4NGZiMGY3KS4gTnVyIHNpY2h0YmFyIHdl bm4KICAgICAgICAgICAgLy8gRmVhdHVyZSBha3RpdiDigJQgc29uc3QgYmVoYWVsdCBkZXIgVXNl ciBkaWUgYmluYWVyZSAiVHlwOgogICAgICAgICAgICAvLyBIaW53ZWlzL1dhcm51bmciLVN0ZXVl cnVuZy4gQmFja3dhcmRzLWNvbXBhdDogYWx0ZQogICAgICAgICAgICAvLyB0eXA6J3dhcm51bmcn LUVpbnRyYWVnZSB3ZXJkZW4gaW0gUmVuZGVyIGF1Y2ggb2huZSB3aWNodGlnOnRydWUKICAgICAg ICAgICAgLy8gYWxzIHdpY2h0aWcgbWFya2llcnQuCiAgICAgICAgICAgIChmZWF0dXJlSXN0QWt0 aXYoJ3NvbmRlcnRlcm1pbmVXaWNodGlnJykKICAgICAgICAgICAgICAgID8gJzxkaXYgY2xhc3M9 ImZvcm0tZ3J1cHBlIiBzdHlsZT0iZmxleDoxO21pbi13aWR0aDoxNDBweCI+PGxhYmVsPk1hcmtp ZXJ1bmc8L2xhYmVsPicgKwogICAgICAgICAgICAgICAgICAgICc8bGFiZWwgc3R5bGU9ImRpc3Bs YXk6aW5saW5lLWZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDo2cHg7cGFkZGluZzo2cHggMDtj dXJzb3I6cG9pbnRlciI+JyArCiAgICAgICAgICAgICAgICAgICAgICAnPGlucHV0IHR5cGU9ImNo ZWNrYm94IiBpZD0ic2Utd2ljaHRpZyInICsgKChzLndpY2h0aWcgfHwgcy50eXAgPT09ICd3YXJu dW5nJykgPyAnIGNoZWNrZWQnIDogJycpICsgJz4gQWxzIOKAnndpY2h0aWciIG1hcmtpZXJlbicg KwogICAgICAgICAgICAgICAgICAgICc8L2xhYmVsPicgKwogICAgICAgICAgICAgICAgICAnPC9k aXY+JwogICAgICAgICAgICAgICAgOiAnJykgKwogICAgICAgICAgICAnPGRpdiBjbGFzcz0iZm9y bS1ncnVwcGUiIHN0eWxlPSJmbGV4OjE7bWluLXdpZHRoOjE0MHB4Ij48bGFiZWw+V2Fybm1vZHVz PC9sYWJlbD48c2VsZWN0IGlkPSJzZS13bSIgY2xhc3M9ImZvcm0taW5wdXQiPicgKwogICAgICAg ICAgICAgICAgJzxvcHRpb24gdmFsdWU9ImltbWVyIicgKyAoKHMud2Fybk1vZHVzIHx8ICdpbW1l cicpID09PSAnaW1tZXInID8gJyBzZWxlY3RlZCcgOiAnJykgKyAnPkltbWVyIGJlaSBQbGFudW5n PC9vcHRpb24+JyArCiAgICAgICAgICAgICAgICAnPG9wdGlvbiB2YWx1ZT0iZWlubWFsaWciJyAr IChzLndhcm5Nb2R1cyA9PT0gJ2Vpbm1hbGlnJyA/ICcgc2VsZWN0ZWQnIDogJycpICsgJz5FaW5t YWxpZyBwcm8gVXNlcjwvb3B0aW9uPicgKwogICAgICAgICAgICAgICAgJzxvcHRpb24gdmFsdWU9 ImF1cyInICsgKHMud2Fybk1vZHVzID09PSAnYXVzJyA/ICcgc2VsZWN0ZWQnIDogJycpICsgJz5B dXMgKG51ciBIZWFkZXItSWNvbik8L29wdGlvbj4nICsKICAgICAgICAgICAgJzwvc2VsZWN0Pjwv ZGl2PicgKwogICAgICAgICc8L2Rpdj48L2Rpdj4nOwogICAgdmFyIGZvb3RlciA9ICh2b3JoID8g JzxidXR0b24gY2xhc3M9ImJ0biBidG4tZ2VmYWhyIiBpZD0ic2UtbG9lc2NoZW4iIHN0eWxlPSJt YXJnaW4tcmlnaHQ6YXV0byI+TMO2c2NoZW48L2J1dHRvbj4nIDogJycpICsKICAgICAgICAnPGJ1 dHRvbiBjbGFzcz0iYnRuIiBpZD0ic2UtYWJicmVjaGVuIj5BYmJyZWNoZW48L2J1dHRvbj4nICsK ICAgICAgICAnPGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1wcmltYWVyIiBpZD0ic2Utc3BlaWNoZXJu Ij5TcGVpY2hlcm48L2J1dHRvbj4nOwogICAgLy8gU3BlYyBGLjQ6IG1vZGFsS2V5IGFrdGl2aWVy dCBFbnR3dXJmLVN5c3RlbSBwcm8gU29uZGVydGVybWluCiAgICB2YXIgc29uZGVyTW9kYWxLZXkg PSB2b3JoID8gKCdzb25kZXJfZWRpdF8nICsgdm9yaC5pZCkgOiAoJ3NvbmRlcl9uZXVfJyArIChp ZE9kZXJEYXR1bSB8fCAnJykpOwogICAgbW9kYWxaZWlnZW4odm9yaCA/ICdIaW53ZWlzIGJlYXJi ZWl0ZW4nIDogJ05ldWVyIEhpbndlaXMnLCBrb2VycGVyLCBmb290ZXIsIG51bGwsIHNvbmRlck1v ZGFsS2V5KTsKCiAgICB2YXIgZWRpdG9yID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NlLXRl eHQnKTsKICAgIHJ0ZUluaXQoZWRpdG9yKTsKCiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn c2UtaWNvbi1idG4nKS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKGUpIHsKICAg ICAgICBlLnN0b3BQcm9wYWdhdGlvbigpOwogICAgICAgIGVtb2ppUGlja2VyWmVpZ2VuKHRoaXMs IGZ1bmN0aW9uKHYpIHsKICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NlLWlj b24nKS52YWx1ZSA9IHY7CiAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzZS1p Y29uLWJ0bicpLnRleHRDb250ZW50ID0gdiB8fCAn4oCUJzsKICAgICAgICB9KTsKICAgIH0pOwog ICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NlLWFiYnJlY2hlbicpLmFkZEV2ZW50TGlzdGVu ZXIoJ2NsaWNrJywgbW9kYWxTY2hsaWVzc2VuKTsKICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk KCdzZS1zcGVpY2hlcm4nKS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKCkgewog ICAgICAgIHZhciB0ZXh0SHRtbCA9IHNhbml0aXplUmljaEh0bWwoZWRpdG9yLmlubmVySFRNTCB8 fCAnJyk7CiAgICAgICAgdmFyIGRCaXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2UtZGF0 dW0tYmlzJykudmFsdWU7CiAgICAgICAgdmFyIGRhdGVuID0gewogICAgICAgICAgICBpZDogKHZv cmggJiYgdm9yaC5pZCkgfHwgKCdzdF8nICsgRGF0ZS5ub3coKS50b1N0cmluZygzNikgKyBNYXRo LnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zdWJzdHIoMiwgNSkpLAogICAgICAgICAgICBkYXR1bTog ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NlLWRhdHVtJykudmFsdWUsCiAgICAgICAgICAgIGRh dHVtQmlzOiBkQmlzIHx8ICcnLAogICAgICAgICAgICB0aXRlbDogZG9jdW1lbnQuZ2V0RWxlbWVu dEJ5SWQoJ3NlLXRpdGVsJykudmFsdWUudHJpbSgpLAogICAgICAgICAgICB0ZXh0OiB0ZXh0SHRt bCwKICAgICAgICAgICAgaWNvbjogZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NlLWljb24nKS52 YWx1ZSwKICAgICAgICAgICAgdHlwOiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2UtdHlwJyku dmFsdWUsCiAgICAgICAgICAgIHdhcm5Nb2R1czogZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Nl LXdtJykudmFsdWUKICAgICAgICB9OwogICAgICAgIC8vICJ3aWNodGlnIi1GbGFnIGF1cyBvcHRp b25hbGVyIENoZWNrYm94IChUb2dnbGUtYWJoYWVuZ2lnKS4KICAgICAgICAvLyBXZW5uIENoZWNr Ym94IG5pY2h0IGltIERPTSBpc3QgKEZlYXR1cmUgYXVzKSwgYmVzdGVoZW5kZW4gV2VydAogICAg ICAgIC8vIGJlaWJlaGFsdGVuIOKAlCBzb25zdCB3dWVyZGVuIGJlc3RlaGVuZGUgRWludHJhZWdl IGlociBGbGFnIHZlcmxpZXJlbi4KICAgICAgICB2YXIgd2ljaHRpZ0VsID0gZG9jdW1lbnQuZ2V0 RWxlbWVudEJ5SWQoJ3NlLXdpY2h0aWcnKTsKICAgICAgICBpZiAod2ljaHRpZ0VsKSBkYXRlbi53 aWNodGlnID0gd2ljaHRpZ0VsLmNoZWNrZWQ7CiAgICAgICAgZWxzZSBpZiAocy53aWNodGlnICE9 PSB1bmRlZmluZWQpIGRhdGVuLndpY2h0aWcgPSBzLndpY2h0aWc7CiAgICAgICAgdmFyIHBsYWlu Q2hlY2sgPSBlZGl0b3IudGV4dENvbnRlbnQudHJpbSgpOwogICAgICAgIGlmICghZGF0ZW4uZGF0 dW0gfHwgIXBsYWluQ2hlY2spIHsgdG9hc3QoJ1N0YXJ0LURhdHVtIHVuZCBUZXh0IHNpbmQgUGZs aWNodGZlbGRlcicsICd3YXJudW5nJyk7IHJldHVybjsgfQogICAgICAgIGlmIChkYXRlbi5kYXR1 bUJpcyAmJiBkYXRlbi5kYXR1bUJpcyA8IGRhdGVuLmRhdHVtKSB7IHRvYXN0KCdFbmQtRGF0dW0g bXVzcyBuYWNoIGRlbSBTdGFydC1EYXR1bSBsaWVnZW4nLCAnd2FybnVuZycpOyByZXR1cm47IH0K ICAgICAgICBpZiAoZGF0ZW4uZGF0dW1CaXMgPT09IGRhdGVuLmRhdHVtKSBkYXRlbi5kYXR1bUJp cyA9ICcnOyAvLyBub3JtYWxpc2llcmVuOiBnbGVpY2ggPSBsZWVyID0gRWluemVsdGFnCiAgICAg ICAgdmFyIGxpc3RlID0gKFouYWRtaW4uc29uZGVydGVybWluZSB8fCBbXSkuc2xpY2UoKTsKICAg ICAgICB2YXIgaWR4ID0gbGlzdGUuZmluZEluZGV4KGZ1bmN0aW9uKHgpIHsgcmV0dXJuIHguaWQg PT09IGRhdGVuLmlkOyB9KTsKICAgICAgICBpZiAoaWR4ID49IDApIGxpc3RlW2lkeF0gPSBkYXRl bjsgZWxzZSBsaXN0ZS5wdXNoKGRhdGVuKTsKICAgICAgICBhcGlQdXQoJy9hcGkvYWRtaW4vc29u ZGVydGVybWluZScsIGxpc3RlKS50aGVuKGZ1bmN0aW9uKCkgewogICAgICAgICAgICBaLmFkbWlu LnNvbmRlcnRlcm1pbmUgPSBsaXN0ZTsKICAgICAgICAgICAgdGFnSW5mb3NCZXJlY2huZW4oKTsK ICAgICAgICAgICAga29wZlJlbmRlcm4oKTsKICAgICAgICAgICAgc29uZGVydGVybWluZVJlbmRl cm4oKTsKICAgICAgICAgICAgZW50d3VyZkxvZXNjaGVuKHNvbmRlck1vZGFsS2V5KTsKICAgICAg ICAgICAgbW9kYWxTY2hsaWVzc2VuKHRydWUpOwogICAgICAgICAgICB0b2FzdCgnSGlud2VpcyBn ZXNwZWljaGVydCcsICdlcmZvbGcnKTsKICAgICAgICB9KS5jYXRjaChmdW5jdGlvbihlKSB7IHRv YXN0KCdGZWhsZXI6ICcgKyBlLm1lc3NhZ2UsICdmZWhsZXInKTsgfSk7CiAgICB9KTsKICAgIGlm ICh2b3JoKSB7CiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NlLWxvZXNjaGVuJyku YWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgYmVzdGFl dGlnZW4oJ0hpbndlaXMgd2lya2xpY2ggbMO2c2NoZW4/JywgZnVuY3Rpb24oKSB7CiAgICAgICAg ICAgICAgICB2YXIgbGlzdGUgPSAoWi5hZG1pbi5zb25kZXJ0ZXJtaW5lIHx8IFtdKS5maWx0ZXIo ZnVuY3Rpb24oeCkgeyByZXR1cm4geC5pZCAhPT0gdm9yaC5pZDsgfSk7CiAgICAgICAgICAgICAg ICBhcGlQdXQoJy9hcGkvYWRtaW4vc29uZGVydGVybWluZScsIGxpc3RlKS50aGVuKGZ1bmN0aW9u KCkgewogICAgICAgICAgICAgICAgICAgIFouYWRtaW4uc29uZGVydGVybWluZSA9IGxpc3RlOwog ICAgICAgICAgICAgICAgICAgIHRhZ0luZm9zQmVyZWNobmVuKCk7CiAgICAgICAgICAgICAgICAg ICAga29wZlJlbmRlcm4oKTsKICAgICAgICAgICAgICAgICAgICBzb25kZXJ0ZXJtaW5lUmVuZGVy bigpOwogICAgICAgICAgICAgICAgICAgIGVudHd1cmZMb2VzY2hlbihzb25kZXJNb2RhbEtleSk7 CiAgICAgICAgICAgICAgICAgICAgbW9kYWxTY2hsaWVzc2VuKHRydWUpOwogICAgICAgICAgICAg ICAgICAgIHRvYXN0KCdIaW53ZWlzIGdlbMO2c2NodCcsICdlcmZvbGcnKTsKICAgICAgICAgICAg ICAgIH0pLmNhdGNoKGZ1bmN0aW9uKGUpIHsgdG9hc3QoJ0ZlaGxlcjogJyArIGUubWVzc2FnZSwg J2ZlaGxlcicpOyB9KTsKICAgICAgICAgICAgfSwgeyB0aXRlbDogJ0hpbndlaXMgbMO2c2NoZW4n LCBqYURhbmdlcjogdHJ1ZSB9KTsKICAgICAgICB9KTsKICAgIH0KfQo= ### FILE: js/admin_mitteilungen.js | 19959 Ly8gPT09IGFkbWluX21pdHRlaWx1bmdlbi5qcyA9PT0KLy8gQWRtaW4tRWRpdG9yIGZ1ZXIgZGFz IE1pdHRlaWx1bmdzLVN5c3RlbSAoU3ByaW50IEQtM2MsIDIwMjYtMDUtMjkpLgovLyBOdXIgZnVl ciBTdXBlclVzZXIgc2ljaHRiYXIvenVncmVpZmJhciAoU2VydmVyIGdhdGVkIGJlaWRlIFdlZ2U6 Ci8vIEdFVCAvYXBpL21pdHRlaWx1bmdlbi9hbGxlIGlzdCBTVS1vbmx5LCBQT1NUL1BVVC9ERUxF VEUgZWJlbmZhbGxzKS4KLy8KLy8gRnVua3Rpb25zdW1mYW5nOgovLyAgIC0gTGlzdGUgYWxsZXIg TWl0dGVpbHVuZ2VuIChha3RpdmUsIGFiZ2VsYXVmZW5lLCBvaG5lIFN0aWNodGFnKQovLyAgIC0g TmV1ZSBNaXR0ZWlsdW5nIGFubGVnZW4gLyBiZWFyYmVpdGVuIC8gbG9lc2NoZW4KLy8gICAtIFJU RS1UZXh0LUVkaXRvciAoc2FuaXRpemVSaWNoSHRtbCBiZWltIFNhdmUpCi8vICAgLSBNdWx0aS1T ZWxlY3QgZnVlciBQZXJzb25lbiwgRGllbnN0Z3J1cHBlbiwgUm9sbGVuICgrIEFsbGUtQ2hlY2ti b3gpCi8vICAgLSBUcmlnZ2VyOiBlaW5tYWwgfCBqZWRlc21hbCB8IGJpc0RhdHVtICgrIERhdGVw aWNrZXIgYmVpIGxldHp0ZXJlbSkKLy8gICAtIE9wdGlvbmFsZXIgQmlsZC0gdW5kIFBERi1Bbmhh bmcgKEZpbGVSZWFkZXIgLT4gZGF0YTpVUkwgLT4gL3VwbG9hZCkKCmltcG9ydCB7IFogfSBmcm9t ICcuL2NvcmVfc3RhdGUuanMnOwppbXBvcnQgeyBlc2NhcGVIVE1MLCBlc2NhcGVBdHRyLCBkYXR1 bUZvcm1hdERFLCBnZXRGdW5rdGlvbmVuIH0gZnJvbSAnLi9jb3JlX3V0aWwuanMnOwppbXBvcnQg eyBhcGksIGFwaVBvc3QsIGFwaVB1dCwgYXBpRGVsZXRlIH0gZnJvbSAnLi9jb3JlX2FwaS5qcyc7 CmltcG9ydCB7IHRvYXN0LCBtb2RhbFplaWdlbiwgbW9kYWxTY2hsaWVzc2VuLCBiZXN0YWV0aWdl biwgcGZsaWNodGZlbGRGZWhsZXIgfSBmcm9tICcuL3VpX2RpYWxvZy5qcyc7CmltcG9ydCB7IHNh bml0aXplUmljaEh0bWwsIHJ0ZUluaXQgfSBmcm9tICcuL3VpX3J0ZS5qcyc7CgovLyA9PT09PSBM aXN0ZSByZW5kZXJuID09PT09CgpleHBvcnQgZnVuY3Rpb24gbWl0dGVpbHVuZ2VuVGFiUmVuZGVy bigpIHsKICAgIHZhciBjb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbWl0dGVp bHVuZ2VuLWluaGFsdCcpOwogICAgaWYgKCFjb250YWluZXIpIHJldHVybjsKICAgIGNvbnRhaW5l ci5pbm5lckhUTUwgPSAnPGRpdiBjbGFzcz0iYWRtaW4tZW1wdHkiPjxkaXYgY2xhc3M9ImFkbWlu LWVtcHR5LXRleHQiPkxhZGUgTWl0dGVpbHVuZ2VuIOKApjwvZGl2PjwvZGl2Pic7CiAgICBhcGko Jy9hcGkvbWl0dGVpbHVuZ2VuL2FsbGUnKS50aGVuKGZ1bmN0aW9uKGRhdGVuKSB7CiAgICAgICAg dmFyIGxpc3RlID0gKGRhdGVuICYmIGRhdGVuLm1pdHRlaWx1bmdlbikgfHwgW107CiAgICAgICAg aWYgKCFsaXN0ZS5sZW5ndGgpIHsKICAgICAgICAgICAgY29udGFpbmVyLmlubmVySFRNTCA9ICc8 ZGl2IGNsYXNzPSJhZG1pbi1lbXB0eSI+JyArCiAgICAgICAgICAgICAgICAnPGRpdiBjbGFzcz0i YWRtaW4tZW1wdHktdGl0ZWwiPk5vY2gga2VpbmUgTWl0dGVpbHVuZ2VuPC9kaXY+JyArCiAgICAg ICAgICAgICAgICAnPGRpdiBjbGFzcz0iYWRtaW4tZW1wdHktdGV4dCI+S2xpY2sgb2JlbiByZWNo dHMgYXVmIOKAnisgTmV1ZSBNaXR0ZWlsdW5nIiwgdW0gZGVuIGVyc3RlbiBIaW53ZWlzIGZ1ZXIg UGVyc29uZW4sIEdydXBwZW4gb2RlciBSb2xsZW4gYW56dWxlZ2VuLjwvZGl2PicgKwogICAgICAg ICAgICAgICAgJzwvZGl2Pic7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgICAg dmFyIGhldXRlID0gbmV3IERhdGUoKS50b0lTT1N0cmluZygpLnNsaWNlKDAsIDEwKTsKICAgICAg ICB2YXIgaHRtbCA9ICc8dGFibGUgY2xhc3M9ImFkbWluLXRhYmVsbGUiPicgKwogICAgICAgICAg ICAnPHRoZWFkPjx0cj4nICsKICAgICAgICAgICAgICAgICc8dGg+VGl0ZWw8L3RoPicgKwogICAg ICAgICAgICAgICAgJzx0aCBzdHlsZT0id2lkdGg6MTMwcHgiPlRyaWdnZXI8L3RoPicgKwogICAg ICAgICAgICAgICAgJzx0aCBzdHlsZT0id2lkdGg6MTIwcHgiPmJpcyBEYXR1bTwvdGg+JyArCiAg ICAgICAgICAgICAgICAnPHRoPkVtcGZhZW5nZXI8L3RoPicgKwogICAgICAgICAgICAgICAgJzx0 aCBzdHlsZT0id2lkdGg6MTIwcHgiPlN0YXR1czwvdGg+JyArCiAgICAgICAgICAgICAgICAnPHRo IHN0eWxlPSJ3aWR0aDoxNDBweCI+QWt0aW9uPC90aD4nICsKICAgICAgICAgICAgJzwvdHI+PC90 aGVhZD48dGJvZHk+JzsKICAgICAgICBsaXN0ZS5mb3JFYWNoKGZ1bmN0aW9uKG0pIHsKICAgICAg ICAgICAgdmFyIGFiZ2VsYXVmZW4gPSBtLmJpc0RhdHVtICYmIGhldXRlID4gbS5iaXNEYXR1bTsK ICAgICAgICAgICAgaHRtbCArPSAnPHRyIGRhdGEtbWlkPSInICsgZXNjYXBlQXR0cihtLmlkKSAr ICciPicgKwogICAgICAgICAgICAgICAgJzx0ZD48c3Ryb25nPicgKyBlc2NhcGVIVE1MKG0udGl0 ZWwpICsgJzwvc3Ryb25nPicgKwogICAgICAgICAgICAgICAgICAgIChtLnRodW1ibmFpbCA/ICcg PHNwYW4gdGl0bGU9IkJpbGQtQW5oYW5nIj7wn5a8PC9zcGFuPicgOiAnJykgKwogICAgICAgICAg ICAgICAgICAgIChtLnBkZiA/ICcgPHNwYW4gdGl0bGU9IlBERi1BbmhhbmciPvCfk4Q8L3NwYW4+ JyA6ICcnKSArCiAgICAgICAgICAgICAgICAnPC90ZD4nICsKICAgICAgICAgICAgICAgICc8dGQ+ JyArIGVzY2FwZUhUTUwobS50cmlnZ2VyIHx8ICdlaW5tYWwnKSArICc8L3RkPicgKwogICAgICAg ICAgICAgICAgJzx0ZD4nICsgKG0uYmlzRGF0dW0gPyBkYXR1bUZvcm1hdERFKG0uYmlzRGF0dW0p IDogJ+KAlCcpICsgJzwvdGQ+JyArCiAgICAgICAgICAgICAgICAnPHRkPicgKyBfZW1wZmFlbmdl ckxhYmVsKG0uZW1wZmFlbmdlcikgKyAnPC90ZD4nICsKICAgICAgICAgICAgICAgICc8dGQ+JyAr IChhYmdlbGF1ZmVuCiAgICAgICAgICAgICAgICAgICAgPyAnPHNwYW4gc3R5bGU9ImNvbG9yOnZh cigtLXRleHQtbXV0ZWQpIj5hYmdlbGF1ZmVuPC9zcGFuPicKICAgICAgICAgICAgICAgICAgICA6 ICc8c3BhbiBzdHlsZT0iY29sb3I6dmFyKC0tZmFyYmUtZXJmb2xnKTtmb250LXdlaWdodDo2MDAi PmFrdGl2PC9zcGFuPicpICsgJzwvdGQ+JyArCiAgICAgICAgICAgICAgICAnPHRkPicgKwogICAg ICAgICAgICAgICAgICAgICc8YnV0dG9uIGNsYXNzPSJidG4gYnRuLXNlayBidG4ta2xlaW4iIGRh dGEtYWN0PSJiZWFyYmVpdGVuIj5CZWFyYmVpdGVuPC9idXR0b24+ICcgKwogICAgICAgICAgICAg ICAgICAgICc8YnV0dG9uIGNsYXNzPSJidG4gYnRuLWdlZmFociBidG4ta2xlaW4iIGRhdGEtYWN0 PSJsb2VzY2hlbiI+TMO2c2NoZW48L2J1dHRvbj4nICsKICAgICAgICAgICAgICAgICc8L3RkPicg KwogICAgICAgICAgICAnPC90cj4nOwogICAgICAgIH0pOwogICAgICAgIGh0bWwgKz0gJzwvdGJv ZHk+PC90YWJsZT4nOwogICAgICAgIGNvbnRhaW5lci5pbm5lckhUTUwgPSBodG1sOwogICAgICAg IGNvbnRhaW5lci5vbmNsaWNrID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICB2YXIgYnRuID0g ZS50YXJnZXQgJiYgZS50YXJnZXQuY2xvc2VzdCAmJiBlLnRhcmdldC5jbG9zZXN0KCdidXR0b25b ZGF0YS1hY3RdJyk7CiAgICAgICAgICAgIGlmICghYnRuKSByZXR1cm47CiAgICAgICAgICAgIHZh ciB0ciA9IGJ0bi5jbG9zZXN0KCd0cltkYXRhLW1pZF0nKTsKICAgICAgICAgICAgaWYgKCF0cikg cmV0dXJuOwogICAgICAgICAgICB2YXIgbWlkID0gdHIuZ2V0QXR0cmlidXRlKCdkYXRhLW1pZCcp OwogICAgICAgICAgICB2YXIgbSA9IGxpc3RlLmZpbmQoZnVuY3Rpb24oeCkgeyByZXR1cm4geC5p ZCA9PT0gbWlkOyB9KTsKICAgICAgICAgICAgaWYgKCFtKSByZXR1cm47CiAgICAgICAgICAgIGlm IChidG4uZ2V0QXR0cmlidXRlKCdkYXRhLWFjdCcpID09PSAnYmVhcmJlaXRlbicpIG1pdHRlaWx1 bmdFZGl0b3JPZWZmbmVuKG0pOwogICAgICAgICAgICBlbHNlIGlmIChidG4uZ2V0QXR0cmlidXRl KCdkYXRhLWFjdCcpID09PSAnbG9lc2NoZW4nKSBtaXR0ZWlsdW5nTG9lc2NoZW4obSk7CiAgICAg ICAgfTsKICAgIH0pLmNhdGNoKGZ1bmN0aW9uKGUpIHsKICAgICAgICBjb250YWluZXIuaW5uZXJI VE1MID0gJzxkaXYgY2xhc3M9ImFkbWluLWVtcHR5Ij4nICsKICAgICAgICAgICAgJzxkaXYgY2xh c3M9ImFkbWluLWVtcHR5LXRpdGVsIj5GZWhsZXIgYmVpbSBMYWRlbjwvZGl2PicgKwogICAgICAg ICAgICAnPGRpdiBjbGFzcz0iYWRtaW4tZW1wdHktdGV4dCI+JyArIGVzY2FwZUhUTUwoZS5tZXNz YWdlIHx8IFN0cmluZyhlKSkgKyAnPC9kaXY+JyArCiAgICAgICAgICAgICc8L2Rpdj4nOwogICAg fSk7Cn0KCmZ1bmN0aW9uIF9lbXBmYWVuZ2VyTGFiZWwoZW1wKSB7CiAgICBpZiAoIWVtcCkgcmV0 dXJuICfigJQnOwogICAgaWYgKGVtcC5hbGxlKSByZXR1cm4gJzxzcGFuIHN0eWxlPSJmb250LXdl aWdodDo2MDAiPkFsbGU8L3NwYW4+JzsKICAgIHZhciB0ZWlsZSA9IFtdOwogICAgdmFyIG5QID0g KGVtcC5wZXJzb25lbiB8fCBbXSkubGVuZ3RoOwogICAgdmFyIG5HID0gKGVtcC5ncnVwcGVuIHx8 IFtdKS5sZW5ndGg7CiAgICB2YXIgblIgPSAoZW1wLnJvbGxlbiB8fCBbXSkubGVuZ3RoOwogICAg aWYgKG5QKSB0ZWlsZS5wdXNoKG5QICsgJyBQZXJzb24nICsgKG5QID09PSAxID8gJycgOiAnZW4n KSk7CiAgICBpZiAobkcpIHRlaWxlLnB1c2goKGVtcC5ncnVwcGVuIHx8IFtdKS5qb2luKCcsICcp KTsKICAgIGlmIChuUikgdGVpbGUucHVzaCgoZW1wLnJvbGxlbiB8fCBbXSkuam9pbignLCAnKSk7 CiAgICByZXR1cm4gdGVpbGUubGVuZ3RoID8gZXNjYXBlSFRNTCh0ZWlsZS5qb2luKCcgwrcgJykp IDogJzxzcGFuIHN0eWxlPSJjb2xvcjp2YXIoLS10ZXh0LW11dGVkKSI+4oCUIG5pZW1hbmQg4oCU PC9zcGFuPic7Cn0KCi8vID09PT09IExvZXNjaGVuID09PT09CgpmdW5jdGlvbiBtaXR0ZWlsdW5n TG9lc2NoZW4obSkgewogICAgYmVzdGFldGlnZW4oCiAgICAgICAgJ01pdHRlaWx1bmcg4oCeJyAr IG0udGl0ZWwgKyAnIiBlbmRndWVsdGlnIGxvZXNjaGVuP1xuXG5EaWUgRWludHJhZWdlIHdlcmRl biBhdXMgbWl0dGVpbHVuZ2VuLmpzb24gZW50ZmVybnQg4oCUIEFuaGFlbmdlIChCaWxkL1BERikg YmxlaWJlbiBpbSBVcGxvYWQtT3JkbmVyIHVuZCBrb2VubmVuIG1hbnVlbGwgYXVmZ2VyYWV1bXQg d2VyZGVuLicsCiAgICAgICAgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGFwaURlbGV0ZSgnL2Fw aS9taXR0ZWlsdW5nZW4vJyArIGVuY29kZVVSSUNvbXBvbmVudChtLmlkKSkKICAgICAgICAgICAg ICAgIC50aGVuKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHRvYXN0KCdNaXR0ZWls dW5nIGdlbG9lc2NodCcsICdlcmZvbGcnKTsKICAgICAgICAgICAgICAgICAgICBtaXR0ZWlsdW5n ZW5UYWJSZW5kZXJuKCk7CiAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgLmNhdGNo KGZ1bmN0aW9uKGUpIHsgdG9hc3QoJ0ZlaGxlcjogJyArIGUubWVzc2FnZSwgJ2ZlaGxlcicpOyB9 KTsKICAgICAgICB9LAogICAgICAgIHsgdGl0ZWw6ICdNaXR0ZWlsdW5nIGxvZXNjaGVuJywgamFU ZXh0OiAnRW5kZ3VlbHRpZyBsb2VzY2hlbicsIGphRGFuZ2VyOiB0cnVlIH0KICAgICk7Cn0KCi8v ID09PT09IEVkaXRvci1Nb2RhbCAoTmV1ICsgQmVhcmJlaXRlbikgPT09PT0KCmV4cG9ydCBmdW5j dGlvbiBtaXR0ZWlsdW5nTmV1T2VmZm5lbigpIHsKICAgIG1pdHRlaWx1bmdFZGl0b3JPZWZmbmVu KG51bGwpOwp9CgpmdW5jdGlvbiBtaXR0ZWlsdW5nRWRpdG9yT2VmZm5lbihtKSB7CiAgICB2YXIg aXN0TmV1ID0gIW07CiAgICBtID0gbSB8fCB7CiAgICAgICAgaWQ6IG51bGwsCiAgICAgICAgdGl0 ZWw6ICcnLAogICAgICAgIHRleHQ6ICcnLAogICAgICAgIHRodW1ibmFpbDogbnVsbCwKICAgICAg ICBwZGY6IG51bGwsCiAgICAgICAgdHJpZ2dlcjogJ2Vpbm1hbCcsCiAgICAgICAgYmlzRGF0dW06 ICcnLAogICAgICAgIGVtcGZhZW5nZXI6IHsgYWxsZTogdHJ1ZSwgcGVyc29uZW46IFtdLCBncnVw cGVuOiBbXSwgcm9sbGVuOiBbXSB9LAogICAgfTsKICAgIHZhciBncnVwcGVuID0gKFouYWRtaW4u Z3J1cHBlbiB8fCBbXSkubWFwKGZ1bmN0aW9uKGcpIHsgcmV0dXJuIGcubmFtZTsgfSk7CiAgICB2 YXIgZnVua3Rpb25lbiA9IGdldEZ1bmt0aW9uZW4oKS5tYXAoZnVuY3Rpb24oZikgeyByZXR1cm4g Zi5jb2RlOyB9KTsKICAgIHZhciBwZXJzb25lbiA9IChaLnBsYW51bmcucGVyc29uZW4gfHwgW10p LmZpbHRlcihmdW5jdGlvbihwKSB7IHJldHVybiBwLmFrdGl2ICYmICFwLmdlbG9lc2NodEFtOyB9 KQogICAgICAgICAgICAgICAgICAgICAgIC5zb3J0KGZ1bmN0aW9uKGEsIGIpIHsgcmV0dXJuIChh Lm5hbWUgfHwgJycpLmxvY2FsZUNvbXBhcmUoYi5uYW1lIHx8ICcnLCAnZGUnKTsgfSk7CgogICAg dmFyIGtvZXJwZXIgPSAnJyArCiAgICAgICAgJzxkaXYgY2xhc3M9ImZvcm0tZ3J1cHBlIGZvcm0t cGZsaWNodCI+PGxhYmVsPlRpdGVsPC9sYWJlbD4nICsKICAgICAgICAgICAgJzxpbnB1dCB0eXBl PSJ0ZXh0IiBpZD0ibWl0LXRpdGVsIiBjbGFzcz0iZm9ybS1pbnB1dCIgc3R5bGU9IndpZHRoOjEw MCUiIG1heGxlbmd0aD0iMTIwIiBkYXRhLW1heGxlbmd0aC1jb3VudGVyPSIxIiB2YWx1ZT0iJyAr IGVzY2FwZUF0dHIobS50aXRlbCkgKyAnIiBwbGFjZWhvbGRlcj0iei5CLiBOZXVlIFNjaGljaHRj b2RlLUtvbnZlbnRpb24gYWIgSnVuaSI+PC9kaXY+JyArCiAgICAgICAgJzxkaXYgY2xhc3M9ImZv cm0tZ3J1cHBlIGZvcm0tcGZsaWNodCI+PGxhYmVsPlRleHQ8L2xhYmVsPicgKwogICAgICAgICAg ICAnPGRpdiBpZD0ibWl0LXRleHQiIGNvbnRlbnRlZGl0YWJsZT0idHJ1ZSIgY2xhc3M9ImZvcm0t aW5wdXQiIHN0eWxlPSJtaW4taGVpZ2h0OjE0MHB4O3dpZHRoOjEwMCU7bGluZS1oZWlnaHQ6MS41 Ij4nICsgc2FuaXRpemVSaWNoSHRtbChtLnRleHQgfHwgJycpICsgJzwvZGl2PicgKwogICAgICAg ICAgICAnPHNtYWxsIHN0eWxlPSJjb2xvcjp2YXIoLS10ZXh0LW11dGVkKTtmb250LXNpemU6dmFy KC0tZnMtc20pIj5SaWNoLVRleHQ6IGZldHQva3Vyc2l2L0xpc3RlbiB1ZWJlciBkZW4gUlRFLUZs b2F0aW5nLUJhciBiZWkgRm9rdXMuPC9zbWFsbD48L2Rpdj4nICsKCiAgICAgICAgJzxkaXYgc3R5 bGU9ImRpc3BsYXk6Z3JpZDtncmlkLXRlbXBsYXRlLWNvbHVtbnM6MWZyIDFmcjtnYXA6MCAxNnB4 O2FsaWduLWl0ZW1zOmVuZCI+JyArCiAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJmb3JtLWdydXBw ZSI+PGxhYmVsPlRyaWdnZXI8L2xhYmVsPicgKwogICAgICAgICAgICAgICAgJzxzZWxlY3QgaWQ9 Im1pdC10cmlnZ2VyIiBjbGFzcz0iZm9ybS1pbnB1dCIgc3R5bGU9IndpZHRoOjEwMCUiPicgKwog ICAgICAgICAgICAgICAgICAgICc8b3B0aW9uIHZhbHVlPSJlaW5tYWwiJyArIChtLnRyaWdnZXIg PT09ICdlaW5tYWwnID8gJyBzZWxlY3RlZCcgOiAnJykgKyAnPkVpbm1hbCAoc2llaHQgZGVyIFVz ZXIgZ2VuYXUgMcOXKTwvb3B0aW9uPicgKwogICAgICAgICAgICAgICAgICAgICc8b3B0aW9uIHZh bHVlPSJqZWRlc21hbCInICsgKG0udHJpZ2dlciA9PT0gJ2plZGVzbWFsJyA/ICcgc2VsZWN0ZWQn IDogJycpICsgJz5KZWRlcyBNYWwgKDHDlyBwcm8gS2FsZW5kZXJ0YWcpPC9vcHRpb24+JyArCiAg ICAgICAgICAgICAgICAgICAgJzxvcHRpb24gdmFsdWU9ImJpc0RhdHVtIicgKyAobS50cmlnZ2Vy ID09PSAnYmlzRGF0dW0nID8gJyBzZWxlY3RlZCcgOiAnJykgKyAnPkJpcyBEYXR1bSAodGFlZ2xp Y2ggYmlzIFN0aWNodGFnKTwvb3B0aW9uPicgKwogICAgICAgICAgICAgICAgJzwvc2VsZWN0Pjwv ZGl2PicgKwogICAgICAgICAgICAnPGRpdiBjbGFzcz0iZm9ybS1ncnVwcGUiIGlkPSJtaXQtYmlz RGF0dW0tZ3J1cHBlIiBzdHlsZT0iJyArIChtLnRyaWdnZXIgPT09ICdiaXNEYXR1bScgPyAnJyA6 ICdkaXNwbGF5Om5vbmUnKSArICciPjxsYWJlbD5iaXMgRGF0dW08L2xhYmVsPicgKwogICAgICAg ICAgICAgICAgJzxpbnB1dCB0eXBlPSJkYXRlIiBpZD0ibWl0LWJpc0RhdHVtIiBjbGFzcz0iZm9y bS1pbnB1dCIgc3R5bGU9IndpZHRoOjEwMCUiIHZhbHVlPSInICsgZXNjYXBlQXR0cihtLmJpc0Rh dHVtIHx8ICcnKSArICciPjwvZGl2PicgKwogICAgICAgICc8L2Rpdj4nICsKCiAgICAgICAgJzxm aWVsZHNldCBjbGFzcz0iZm9ybS1ncnVwcGUiIHN0eWxlPSJib3JkZXI6MXB4IHNvbGlkIHZhcigt LWJvcmRlci1saWdodCk7Ym9yZGVyLXJhZGl1czp2YXIoLS1yYWRpdXMtbWQpO3BhZGRpbmc6dmFy KC0tc3AtMykiPicgKwogICAgICAgICAgICAnPGxlZ2VuZCBzdHlsZT0icGFkZGluZzowIHZhcigt LXNwLTIpO2ZvbnQtd2VpZ2h0OjYwMCI+RW1wZmFlbmdlcjwvbGVnZW5kPicgKwogICAgICAgICAg ICAnPGxhYmVsIHN0eWxlPSJkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDo2cHg7 bWFyZ2luLWJvdHRvbTp2YXIoLS1zcC0zKSI+JyArCiAgICAgICAgICAgICAgICAnPGlucHV0IHR5 cGU9ImNoZWNrYm94IiBpZD0ibWl0LWVtcC1hbGxlIicgKyAobS5lbXBmYWVuZ2VyLmFsbGUgPyAn IGNoZWNrZWQnIDogJycpICsgJz4gJyArCiAgICAgICAgICAgICAgICAnPHN0cm9uZz5BbGxlIGVp bmdlbG9nZ3RlbiBVc2VyPC9zdHJvbmc+ICh1ZWJlcnNjaHJlaWJ0IGRpZSBBdXN3YWhsIHVudGVu KScgKwogICAgICAgICAgICAnPC9sYWJlbD4nICsKICAgICAgICAgICAgJzxkaXYgaWQ9Im1pdC1l bXAtc3BleiIgc3R5bGU9IicgKyAobS5lbXBmYWVuZ2VyLmFsbGUgPyAnb3BhY2l0eTowLjU7cG9p bnRlci1ldmVudHM6bm9uZScgOiAnJykgKyAnIj4nICsKICAgICAgICAgICAgICAgICc8ZGl2IGNs YXNzPSJmb3JtLWdydXBwZSI+PGxhYmVsPkRpZW5zdGdydXBwZW48L2xhYmVsPicgKwogICAgICAg ICAgICAgICAgICAgICc8ZGl2IHN0eWxlPSJkaXNwbGF5OmZsZXg7Z2FwOnZhcigtLXNwLTMpO2Zs ZXgtd3JhcDp3cmFwIj4nICsKICAgICAgICAgICAgICAgICAgICBncnVwcGVuLm1hcChmdW5jdGlv bihnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjayA9IChtLmVtcGZhZW5nZXIuZ3J1 cHBlbiB8fCBbXSkuaW5kZXhPZihnKSA+PSAwID8gJyBjaGVja2VkJyA6ICcnOwogICAgICAgICAg ICAgICAgICAgICAgICByZXR1cm4gJzxsYWJlbCBzdHlsZT0iZGlzcGxheTpmbGV4O2FsaWduLWl0 ZW1zOmNlbnRlcjtnYXA6NHB4Ij4nICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8aW5w dXQgdHlwZT0iY2hlY2tib3giIGRhdGEtZW1wLWdydXBwZT0iJyArIGVzY2FwZUF0dHIoZykgKyAn IicgKyBjayArICc+ICcgKyBlc2NhcGVIVE1MKGcpICsKICAgICAgICAgICAgICAgICAgICAgICAg JzwvbGFiZWw+JzsKICAgICAgICAgICAgICAgICAgICB9KS5qb2luKCcnKSArCiAgICAgICAgICAg ICAgICAgICAgJzwvZGl2PjwvZGl2PicgKwogICAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9ImZv cm0tZ3J1cHBlIj48bGFiZWw+Um9sbGVuIC8gRnVua3Rpb25lbjwvbGFiZWw+JyArCiAgICAgICAg ICAgICAgICAgICAgJzxkaXYgc3R5bGU9ImRpc3BsYXk6ZmxleDtnYXA6dmFyKC0tc3AtMyk7Zmxl eC13cmFwOndyYXAiPicgKwogICAgICAgICAgICAgICAgICAgIFsnU1UnLCAnR2VzYW10dmVyYW50 d29ydGxpY2gnXS5jb25jYXQoZnVua3Rpb25lbikubWFwKGZ1bmN0aW9uKHIpIHsKICAgICAgICAg ICAgICAgICAgICAgICAgdmFyIGNrID0gKG0uZW1wZmFlbmdlci5yb2xsZW4gfHwgW10pLmluZGV4 T2YocikgPj0gMCA/ICcgY2hlY2tlZCcgOiAnJzsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0 dXJuICc8bGFiZWwgc3R5bGU9ImRpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjRw eCI+JyArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPGlucHV0IHR5cGU9ImNoZWNrYm94 IiBkYXRhLWVtcC1yb2xsZT0iJyArIGVzY2FwZUF0dHIocikgKyAnIicgKyBjayArICc+ICcgKyBl c2NhcGVIVE1MKHIpICsKICAgICAgICAgICAgICAgICAgICAgICAgJzwvbGFiZWw+JzsKICAgICAg ICAgICAgICAgICAgICB9KS5qb2luKCcnKSArCiAgICAgICAgICAgICAgICAgICAgJzwvZGl2Pjwv ZGl2PicgKwogICAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9ImZvcm0tZ3J1cHBlIj48bGFiZWw+ RWluemVsbmUgUGVyc29uZW4gKE1laHJmYWNoYXVzd2FobCBtaXQgU3RyZy9DbWQpPC9sYWJlbD4n ICsKICAgICAgICAgICAgICAgICAgICAnPHNlbGVjdCBpZD0ibWl0LWVtcC1wZXJzb25lbiIgY2xh c3M9ImZvcm0taW5wdXQiIG11bHRpcGxlIHNpemU9IjYiIHN0eWxlPSJ3aWR0aDoxMDAlIj4nICsK ICAgICAgICAgICAgICAgICAgICBwZXJzb25lbi5tYXAoZnVuY3Rpb24ocCkgewogICAgICAgICAg ICAgICAgICAgICAgICB2YXIgY2sgPSAobS5lbXBmYWVuZ2VyLnBlcnNvbmVuIHx8IFtdKS5zb21l KGZ1bmN0aW9uKGlkKSB7IHJldHVybiBTdHJpbmcoaWQpID09PSBTdHJpbmcocC5pZCk7IH0pID8g JyBzZWxlY3RlZCcgOiAnJzsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG5hbWUgPSAoKHAu dm9ybmFtZSA/IHAudm9ybmFtZSArICcgJyA6ICcnKSArIChwLm5hbWUgfHwgJycpKS50cmltKCk7 CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnPG9wdGlvbiB2YWx1ZT0iJyArIHAuaWQg KyAnIicgKyBjayArICc+JyArIGVzY2FwZUhUTUwobmFtZSkgKyAnICgnICsgZXNjYXBlSFRNTChw LmdydXBwZSB8fCAn4oCTJykgKyAnKTwvb3B0aW9uPic7CiAgICAgICAgICAgICAgICAgICAgfSku am9pbignJykgKwogICAgICAgICAgICAgICAgICAgICc8L3NlbGVjdD48L2Rpdj4nICsKICAgICAg ICAgICAgJzwvZGl2PicgKwogICAgICAgICc8L2ZpZWxkc2V0PicgKwoKICAgICAgICAnPGZpZWxk c2V0IGNsYXNzPSJmb3JtLWdydXBwZSIgc3R5bGU9ImJvcmRlcjoxcHggc29saWQgdmFyKC0tYm9y ZGVyLWxpZ2h0KTtib3JkZXItcmFkaXVzOnZhcigtLXJhZGl1cy1tZCk7cGFkZGluZzp2YXIoLS1z cC0zKSI+JyArCiAgICAgICAgICAgICc8bGVnZW5kIHN0eWxlPSJwYWRkaW5nOjAgdmFyKC0tc3At Mik7Zm9udC13ZWlnaHQ6NjAwIj5BbmhhZW5nZSAob3B0aW9uYWwpPC9sZWdlbmQ+JyArCiAgICAg ICAgICAgICc8ZGl2IGNsYXNzPSJmb3JtLWdydXBwZSI+PGxhYmVsPlRodW1ibmFpbC1CaWxkICht YXguIDIgTUIsIEpQRy9QTkcvV2ViUCk8L2xhYmVsPicgKwogICAgICAgICAgICAgICAgJzxpbnB1 dCB0eXBlPSJmaWxlIiBpZD0ibWl0LWJpbGQtaW5wdXQiIGFjY2VwdD0iaW1hZ2UvanBlZyxpbWFn ZS9wbmcsaW1hZ2Uvd2VicCIgY2xhc3M9ImZvcm0taW5wdXQiPicgKwogICAgICAgICAgICAgICAg JzxkaXYgaWQ9Im1pdC1iaWxkLXZvcnNjaGF1IiBzdHlsZT0ibWFyZ2luLXRvcDp2YXIoLS1zcC0y KSI+JyArCiAgICAgICAgICAgICAgICAgICAgKG0udGh1bWJuYWlsID8gJzxhIGhyZWY9IicgKyBl c2NhcGVBdHRyKG0udGh1bWJuYWlsKSArICciIHRhcmdldD0iX2JsYW5rIj48aW1nIHNyYz0iJyAr IGVzY2FwZUF0dHIobS50aHVtYm5haWwpICsgJyIgYWx0PSJBbmhhbmciIHN0eWxlPSJtYXgtd2lk dGg6MjAwcHg7Ym9yZGVyLXJhZGl1czp2YXIoLS1yYWRpdXMtc20pIj48L2E+IDxidXR0b24gdHlw ZT0iYnV0dG9uIiBjbGFzcz0iYnRuIGJ0bi1zZWsgYnRuLWtsZWluIiBpZD0ibWl0LWJpbGQtZW50 ZmVybmVuIj5FbnRmZXJuZW48L2J1dHRvbj4nIDogJzxzcGFuIHN0eWxlPSJjb2xvcjp2YXIoLS10 ZXh0LW11dGVkKSI+4oCUIGtlaW4gQmlsZCDigJQ8L3NwYW4+JykgKwogICAgICAgICAgICAgICAg JzwvZGl2PicgKwogICAgICAgICAgICAnPC9kaXY+JyArCiAgICAgICAgICAgICc8ZGl2IGNsYXNz PSJmb3JtLWdydXBwZSI+PGxhYmVsPlBERi1BbmhhbmcgKG1heC4gMTAgTUIpPC9sYWJlbD4nICsK ICAgICAgICAgICAgICAgICc8aW5wdXQgdHlwZT0iZmlsZSIgaWQ9Im1pdC1wZGYtaW5wdXQiIGFj Y2VwdD0iYXBwbGljYXRpb24vcGRmIiBjbGFzcz0iZm9ybS1pbnB1dCI+JyArCiAgICAgICAgICAg ICAgICAnPGRpdiBpZD0ibWl0LXBkZi12b3JzY2hhdSIgc3R5bGU9Im1hcmdpbi10b3A6dmFyKC0t c3AtMikiPicgKwogICAgICAgICAgICAgICAgICAgIChtLnBkZiA/ICc8YSBocmVmPSInICsgZXNj YXBlQXR0cihtLnBkZikgKyAnIiB0YXJnZXQ9Il9ibGFuayI+8J+ThCAnICsgZXNjYXBlSFRNTCht LnBkZi5zcGxpdCgnLycpLnBvcCgpKSArICc8L2E+IDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFz cz0iYnRuIGJ0bi1zZWsgYnRuLWtsZWluIiBpZD0ibWl0LXBkZi1lbnRmZXJuZW4iPkVudGZlcm5l bjwvYnV0dG9uPicgOiAnPHNwYW4gc3R5bGU9ImNvbG9yOnZhcigtLXRleHQtbXV0ZWQpIj7igJQg a2VpbiBQREYg4oCUPC9zcGFuPicpICsKICAgICAgICAgICAgICAgICc8L2Rpdj4nICsKICAgICAg ICAgICAgJzwvZGl2PicgKwogICAgICAgICc8L2ZpZWxkc2V0Pic7CgogICAgdmFyIGZ1c3MgPSAn PGJ1dHRvbiBjbGFzcz0iYnRuIiBpZD0ibWl0LWFiYnJlY2hlbiIgdHlwZT0iYnV0dG9uIj5BYmJy ZWNoZW48L2J1dHRvbj4nICsKICAgICAgICAgICAgICAgJzxidXR0b24gY2xhc3M9ImJ0biBidG4t cHJpbWFlciIgaWQ9ImRsZy1zcGVpY2hlcm4iIHR5cGU9ImJ1dHRvbiI+JyArIChpc3ROZXUgPyAn QW5sZWdlbicgOiAnU3BlaWNoZXJuJykgKyAnPC9idXR0b24+JzsKCiAgICAvLyBTdGF0ZSBmdWVy IGRpZSBBbmhhZW5nZSDigJQgd2lyZCBkdXJjaCBVcGxvYWRzL0VudGZlcm5lbiB1ZWJlcnNjaHJp ZWJlbi4KICAgIHZhciBzdGF0ZSA9IHsKICAgICAgICB0aHVtYm5haWw6IG0udGh1bWJuYWlsIHx8 IG51bGwsCiAgICAgICAgcGRmOiBtLnBkZiB8fCBudWxsLAogICAgfTsKCiAgICBtb2RhbFplaWdl bihpc3ROZXUgPyAnTmV1ZSBNaXR0ZWlsdW5nJyA6ICdNaXR0ZWlsdW5nIGJlYXJiZWl0ZW4nLCBr b2VycGVyLCBmdXNzLAogICAgICAgIGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgdGl0ZWwg PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbWl0LXRpdGVsJykudmFsdWUudHJpbSgpOwogICAg ICAgICAgICB2YXIgdGV4dFJhdyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtaXQtdGV4dCcp LmlubmVySFRNTDsKICAgICAgICAgICAgaWYgKCF0aXRlbCkgeyBwZmxpY2h0ZmVsZEZlaGxlcign bWl0LXRpdGVsJywgJ1RpdGVsIGlzdCBQZmxpY2h0ZmVsZCcpOyByZXR1cm47IH0KICAgICAgICAg ICAgLy8gUlRFIGxpZWZlcnQgSFRNTDsgZGVmZW5zaXYgc2FuaXRpemVuICsgYXVmIFBsYWluLUxl bmd0aCBwcnVlZmVuCiAgICAgICAgICAgIHZhciB0ZXh0U2FuID0gc2FuaXRpemVSaWNoSHRtbCh0 ZXh0UmF3KTsKICAgICAgICAgICAgdmFyIHBsYWluTGVuID0gdGV4dFNhbi5yZXBsYWNlKC88W14+ XSs+L2csICcnKS50cmltKCkubGVuZ3RoOwogICAgICAgICAgICBpZiAocGxhaW5MZW4gPT09IDAp IHsgcGZsaWNodGZlbGRGZWhsZXIoJ21pdC10ZXh0JywgJ1RleHQgaXN0IFBmbGljaHRmZWxkJyk7 IHJldHVybjsgfQogICAgICAgICAgICB2YXIgdHJpZ2dlciA9IGRvY3VtZW50LmdldEVsZW1lbnRC eUlkKCdtaXQtdHJpZ2dlcicpLnZhbHVlOwogICAgICAgICAgICB2YXIgYmlzRGF0dW0gPSB0cmln Z2VyID09PSAnYmlzRGF0dW0nID8gKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtaXQtYmlzRGF0 dW0nKS52YWx1ZSB8fCBudWxsKSA6IG51bGw7CiAgICAgICAgICAgIGlmICh0cmlnZ2VyID09PSAn YmlzRGF0dW0nICYmICFiaXNEYXR1bSkgewogICAgICAgICAgICAgICAgcGZsaWNodGZlbGRGZWhs ZXIoJ21pdC1iaXNEYXR1bScsICdiaXMgRGF0dW0gaXN0IFBmbGljaHQgYmVpIFRyaWdnZXIg4oCe YmlzRGF0dW0iJyk7IHJldHVybjsKICAgICAgICAgICAgfQogICAgICAgICAgICB2YXIgYWxsZSA9 IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtaXQtZW1wLWFsbGUnKS5jaGVja2VkOwogICAgICAg ICAgICB2YXIgZ3J1cHBlbiA9IFtdLnNsaWNlLmNhbGwoZG9jdW1lbnQucXVlcnlTZWxlY3RvckFs bCgnaW5wdXRbZGF0YS1lbXAtZ3J1cHBlXTpjaGVja2VkJykpCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIC5tYXAoZnVuY3Rpb24oZWwpIHsgcmV0dXJuIGVsLmdldEF0dHJpYnV0ZSgn ZGF0YS1lbXAtZ3J1cHBlJyk7IH0pOwogICAgICAgICAgICB2YXIgcm9sbGVuID0gW10uc2xpY2Uu Y2FsbChkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdpbnB1dFtkYXRhLWVtcC1yb2xsZV06Y2hl Y2tlZCcpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAubWFwKGZ1bmN0aW9uKGVs KSB7IHJldHVybiBlbC5nZXRBdHRyaWJ1dGUoJ2RhdGEtZW1wLXJvbGxlJyk7IH0pOwogICAgICAg ICAgICB2YXIgcGVyc29uZW5TZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbWl0LWVtcC1w ZXJzb25lbicpOwogICAgICAgICAgICB2YXIgcGVyc29uZW5JZHMgPSBbXS5zbGljZS5jYWxsKHBl cnNvbmVuU2VsLnNlbGVjdGVkT3B0aW9ucykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAubWFwKGZ1bmN0aW9uKG8pIHsgcmV0dXJuIHBhcnNlSW50KG8udmFsdWUsIDEwKTsgfSk7CiAg ICAgICAgICAgIGlmICghYWxsZSAmJiBncnVwcGVuLmxlbmd0aCA9PT0gMCAmJiByb2xsZW4ubGVu Z3RoID09PSAwICYmIHBlcnNvbmVuSWRzLmxlbmd0aCA9PT0gMCkgewogICAgICAgICAgICAgICAg dG9hc3QoJ01pbmRlc3RlbnMgZWluZW4gRW1wZmFlbmdlciB3YWVobGVuIChvZGVyIOKAnkFsbGUi IGFrdGl2aWVyZW4pJywgJ3dhcm51bmcnKTsgcmV0dXJuOwogICAgICAgICAgICB9CiAgICAgICAg ICAgIHZhciBwYXlsb2FkID0gewogICAgICAgICAgICAgICAgdGl0ZWw6IHRpdGVsLAogICAgICAg ICAgICAgICAgdGV4dDogdGV4dFNhbiwKICAgICAgICAgICAgICAgIHRyaWdnZXI6IHRyaWdnZXIs CiAgICAgICAgICAgICAgICBiaXNEYXR1bTogYmlzRGF0dW0sCiAgICAgICAgICAgICAgICBlbXBm YWVuZ2VyOiB7CiAgICAgICAgICAgICAgICAgICAgYWxsZTogYWxsZSwKICAgICAgICAgICAgICAg ICAgICBwZXJzb25lbjogYWxsZSA/IFtdIDogcGVyc29uZW5JZHMsCiAgICAgICAgICAgICAgICAg ICAgZ3J1cHBlbjogIGFsbGUgPyBbXSA6IGdydXBwZW4sCiAgICAgICAgICAgICAgICAgICAgcm9s bGVuOiAgIGFsbGUgPyBbXSA6IHJvbGxlbiwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAg ICAgICB0aHVtYm5haWw6IHN0YXRlLnRodW1ibmFpbCwKICAgICAgICAgICAgICAgIHBkZjogc3Rh dGUucGRmLAogICAgICAgICAgICB9OwogICAgICAgICAgICB2YXIgdXJsID0gaXN0TmV1ID8gJy9h cGkvbWl0dGVpbHVuZ2VuJyA6ICcvYXBpL21pdHRlaWx1bmdlbi8nICsgZW5jb2RlVVJJQ29tcG9u ZW50KG0uaWQpOwogICAgICAgICAgICB2YXIgcCA9IGlzdE5ldSA/IGFwaVBvc3QodXJsLCBwYXls b2FkKSA6IGFwaVB1dCh1cmwsIHBheWxvYWQpOwogICAgICAgICAgICBwLnRoZW4oZnVuY3Rpb24o KSB7CiAgICAgICAgICAgICAgICBtb2RhbFNjaGxpZXNzZW4odHJ1ZSk7CiAgICAgICAgICAgICAg ICB0b2FzdChpc3ROZXUgPyAnTWl0dGVpbHVuZyBhbmdlbGVndCcgOiAnTWl0dGVpbHVuZyBha3R1 YWxpc2llcnQnLCAnZXJmb2xnJyk7CiAgICAgICAgICAgICAgICBtaXR0ZWlsdW5nZW5UYWJSZW5k ZXJuKCk7CiAgICAgICAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uKGUpIHsgdG9hc3QoJ0ZlaGxlcjog JyArIGUubWVzc2FnZSwgJ2ZlaGxlcicpOyB9KTsKICAgICAgICB9CiAgICApOwoKICAgIC8vIFJU RSBhdWYgZGFzIGNvbnRlbnRlZGl0YWJsZS1UZXh0ZmVsZAogICAgdmFyIHJ0ZSA9IGRvY3VtZW50 LmdldEVsZW1lbnRCeUlkKCdtaXQtdGV4dCcpOwogICAgaWYgKHJ0ZSAmJiB0eXBlb2YgcnRlSW5p dCA9PT0gJ2Z1bmN0aW9uJykgcnRlSW5pdChydGUpOwoKICAgIC8vIFRyaWdnZXItV2VjaHNlbDog YmlzRGF0dW0tRmVsZCBlaW4tL2F1c2JsZW5kZW4KICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk KCdtaXQtdHJpZ2dlcicpLmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIGZ1bmN0aW9uKCkgewog ICAgICAgIHZhciBnID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21pdC1iaXNEYXR1bS1ncnVw cGUnKTsKICAgICAgICBpZiAoZykgZy5zdHlsZS5kaXNwbGF5ID0gKHRoaXMudmFsdWUgPT09ICdi aXNEYXR1bScgPyAnJyA6ICdub25lJyk7CiAgICB9KTsKCiAgICAvLyBFbXBmYWVuZ2VyIOKAnkFs bGUiIHRvZ2dlbHQgZGllIHNwZXppZmlzY2hlbiBBdXN3YWhsZW4gdmlzdWVsbCBhdXMKICAgIGRv Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdtaXQtZW1wLWFsbGUnKS5hZGRFdmVudExpc3RlbmVyKCdj aGFuZ2UnLCBmdW5jdGlvbigpIHsKICAgICAgICB2YXIgcyA9IGRvY3VtZW50LmdldEVsZW1lbnRC eUlkKCdtaXQtZW1wLXNwZXonKTsKICAgICAgICBpZiAocykgewogICAgICAgICAgICBzLnN0eWxl Lm9wYWNpdHkgPSB0aGlzLmNoZWNrZWQgPyAnMC41JyA6ICcnOwogICAgICAgICAgICBzLnN0eWxl LnBvaW50ZXJFdmVudHMgPSB0aGlzLmNoZWNrZWQgPyAnbm9uZScgOiAnJzsKICAgICAgICB9CiAg ICB9KTsKCiAgICAvLyBCaWxkLVVwbG9hZAogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21p dC1iaWxkLWlucHV0JykuYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgZnVuY3Rpb24oKSB7CiAg ICAgICAgX2RhdFVwbG9hZFZlcmFyYmVpdGVuKHRoaXMuZmlsZXMgJiYgdGhpcy5maWxlc1swXSwg J2JpbGQnLCBmdW5jdGlvbihwZmFkKSB7CiAgICAgICAgICAgIHN0YXRlLnRodW1ibmFpbCA9IHBm YWQ7CiAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtaXQtYmlsZC12b3JzY2hh dScpLmlubmVySFRNTCA9CiAgICAgICAgICAgICAgICAnPGEgaHJlZj0iJyArIGVzY2FwZUF0dHIo cGZhZCkgKyAnIiB0YXJnZXQ9Il9ibGFuayI+JyArCiAgICAgICAgICAgICAgICAgICAgJzxpbWcg c3JjPSInICsgZXNjYXBlQXR0cihwZmFkKSArICciIGFsdD0iQW5oYW5nIiBzdHlsZT0ibWF4LXdp ZHRoOjIwMHB4O2JvcmRlci1yYWRpdXM6dmFyKC0tcmFkaXVzLXNtKSI+JyArCiAgICAgICAgICAg ICAgICAnPC9hPiA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0biBidG4tc2VrIGJ0bi1r bGVpbiIgaWQ9Im1pdC1iaWxkLWVudGZlcm5lbiI+RW50ZmVybmVuPC9idXR0b24+JzsKICAgICAg ICAgICAgX2JpbGRFbnRmZXJuZW5CaW5kZW4oc3RhdGUpOwogICAgICAgIH0pOwogICAgfSk7CiAg ICBfYmlsZEVudGZlcm5lbkJpbmRlbihzdGF0ZSk7CgogICAgLy8gUERGLVVwbG9hZAogICAgZG9j dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21pdC1wZGYtaW5wdXQnKS5hZGRFdmVudExpc3RlbmVyKCdj aGFuZ2UnLCBmdW5jdGlvbigpIHsKICAgICAgICB2YXIgZmlsZSA9IHRoaXMuZmlsZXMgJiYgdGhp cy5maWxlc1swXTsKICAgICAgICB2YXIgbmFtZSA9IGZpbGUgPyBmaWxlLm5hbWUgOiAnZG9rdS5w ZGYnOwogICAgICAgIF9kYXRVcGxvYWRWZXJhcmJlaXRlbihmaWxlLCAncGRmJywgZnVuY3Rpb24o cGZhZCkgewogICAgICAgICAgICBzdGF0ZS5wZGYgPSBwZmFkOwogICAgICAgICAgICBkb2N1bWVu dC5nZXRFbGVtZW50QnlJZCgnbWl0LXBkZi12b3JzY2hhdScpLmlubmVySFRNTCA9CiAgICAgICAg ICAgICAgICAnPGEgaHJlZj0iJyArIGVzY2FwZUF0dHIocGZhZCkgKyAnIiB0YXJnZXQ9Il9ibGFu ayI+8J+ThCAnICsgZXNjYXBlSFRNTChuYW1lKSArICc8L2E+ICcgKwogICAgICAgICAgICAgICAg JzxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuIGJ0bi1zZWsgYnRuLWtsZWluIiBpZD0i bWl0LXBkZi1lbnRmZXJuZW4iPkVudGZlcm5lbjwvYnV0dG9uPic7CiAgICAgICAgICAgIF9wZGZF bnRmZXJuZW5CaW5kZW4oc3RhdGUpOwogICAgICAgIH0pOwogICAgfSk7CiAgICBfcGRmRW50ZmVy bmVuQmluZGVuKHN0YXRlKTsKCiAgICAvLyBBYmJyZWNoZW4KICAgIGRvY3VtZW50LmdldEVsZW1l bnRCeUlkKCdtaXQtYWJicmVjaGVuJykuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlv bigpIHsgbW9kYWxTY2hsaWVzc2VuKHRydWUpOyB9KTsKfQoKZnVuY3Rpb24gX2JpbGRFbnRmZXJu ZW5CaW5kZW4oc3RhdGUpIHsKICAgIHZhciBidG4gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn bWl0LWJpbGQtZW50ZmVybmVuJyk7CiAgICBpZiAoIWJ0bikgcmV0dXJuOwogICAgYnRuLmFkZEV2 ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oKSB7CiAgICAgICAgc3RhdGUudGh1bWJuYWls ID0gbnVsbDsKICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbWl0LWJpbGQtdm9yc2No YXUnKS5pbm5lckhUTUwgPSAnPHNwYW4gc3R5bGU9ImNvbG9yOnZhcigtLXRleHQtbXV0ZWQpIj7i gJQga2VpbiBCaWxkIOKAlDwvc3Bhbj4nOwogICAgICAgIHZhciBpbnAgPSBkb2N1bWVudC5nZXRF bGVtZW50QnlJZCgnbWl0LWJpbGQtaW5wdXQnKTsKICAgICAgICBpZiAoaW5wKSBpbnAudmFsdWUg PSAnJzsKICAgIH0pOwp9CgpmdW5jdGlvbiBfcGRmRW50ZmVybmVuQmluZGVuKHN0YXRlKSB7CiAg ICB2YXIgYnRuID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21pdC1wZGYtZW50ZmVybmVuJyk7 CiAgICBpZiAoIWJ0bikgcmV0dXJuOwogICAgYnRuLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywg ZnVuY3Rpb24oKSB7CiAgICAgICAgc3RhdGUucGRmID0gbnVsbDsKICAgICAgICBkb2N1bWVudC5n ZXRFbGVtZW50QnlJZCgnbWl0LXBkZi12b3JzY2hhdScpLmlubmVySFRNTCA9ICc8c3BhbiBzdHls ZT0iY29sb3I6dmFyKC0tdGV4dC1tdXRlZCkiPuKAlCBrZWluIFBERiDigJQ8L3NwYW4+JzsKICAg ICAgICB2YXIgaW5wID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21pdC1wZGYtaW5wdXQnKTsK ICAgICAgICBpZiAoaW5wKSBpbnAudmFsdWUgPSAnJzsKICAgIH0pOwp9CgpmdW5jdGlvbiBfZGF0 VXBsb2FkVmVyYXJiZWl0ZW4oZmlsZSwgYXJ0LCBvbkZlcnRpZykgewogICAgaWYgKCFmaWxlKSBy ZXR1cm47CiAgICB2YXIgbWF4ID0gYXJ0ID09PSAncGRmJyA/IDEwICogMTAyNCAqIDEwMjQgOiAy ICogMTAyNCAqIDEwMjQ7CiAgICBpZiAoZmlsZS5zaXplID4gbWF4KSB7CiAgICAgICAgdmFyIGxp bWl0S2IgPSBtYXggLyAxMDI0OwogICAgICAgIHRvYXN0KGFydCArICc6IERhdGVpIHp1IGdyb3Nz IChtYXggJyArIGxpbWl0S2IgKyAnIEtCKScsICdmZWhsZXInKTsgcmV0dXJuOwogICAgfQogICAg dmFyIHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7CiAgICByZWFkZXIub25sb2FkID0gZnVuY3Rp b24oKSB7CiAgICAgICAgdmFyIGRhdGFVcmwgPSByZWFkZXIucmVzdWx0OwogICAgICAgIGFwaVBv c3QoJy9hcGkvbWl0dGVpbHVuZ2VuL3VwbG9hZCcsIHsgYXJ0OiBhcnQsIGRhdGVpbmFtZTogZmls ZS5uYW1lLCBkYXRhVXJsOiBkYXRhVXJsIH0pCiAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uKHJl cykgewogICAgICAgICAgICAgICAgaWYgKHJlcyAmJiByZXMucGZhZCkgb25GZXJ0aWcocmVzLnBm YWQpOwogICAgICAgICAgICAgICAgZWxzZSB0b2FzdCgnVXBsb2FkLUFudHdvcnQgb2huZSBQZmFk JywgJ2ZlaGxlcicpOwogICAgICAgICAgICB9KQogICAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24o ZSkgeyB0b2FzdCgnVXBsb2FkLUZlaGxlcjogJyArIGUubWVzc2FnZSwgJ2ZlaGxlcicpOyB9KTsK ICAgIH07CiAgICByZWFkZXIub25lcnJvciA9IGZ1bmN0aW9uKCkgeyB0b2FzdCgnS29ubnRlIERh dGVpIG5pY2h0IGxlc2VuJywgJ2ZlaGxlcicpOyB9OwogICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwo ZmlsZSk7Cn0K ### FILE: js/admin_personal.js | 108762 Ly8gPT09IGFkbWluX3BlcnNvbmFsLmpzID09PQovLyBQaGFzZSA5LUIgQzQ6IGF1cyBhZG1pbi5q cyBleHRyYWhpZXJ0LiBHcm9lc3N0ZXMgU3ViLU1vZHVsIGRlciBQaGFzZSwKLy8gYnVlbmRlbHQg YWxsZSBQZXJzb25hbC1iZXpvZ2VuZW4gQWRtaW4tRnVua3Rpb25lbjoKLy8KLy8gICAtIFBlcnNv bmFsLVRhYmVsbGUgKG1pdCBOZXVpbXBvcnQtQmxvY2ssIElubGluZS1FZGl0cywgUGFwaWVya29y Yi0KLy8gICAgIEZpbHRlciwgR3J1cHBlbi1UcmVubmVyKQovLyAgIC0gUGVyc29uIE5ldS9CZWFy YmVpdGVuL0xvZXNjaGVuICsgTWFudWVsbGUgU29ydGllcnVuZwovLyAgIC0gSW5saW5lLUVkaXRv cmVuIGZ1ZXIgUmFuZywgRGllbnN0Z3JhZCwgRnVua3Rpb24gdW5kIGJlbGllYmlnZQovLyAgICAg RGF0ZW4tRmVsZGVyIChUZWxlZm9uLCBFLU1haWwsIE5XLUtlbm51bmcsIE9FLCAuLi4pCi8vICAg LSBFLU1haWwtQWt0aW9uIGF1cyBkZXIgUGVyc29uYWwtVGFiZWxsZQovLwovLyBFeHRlcm5lciBL b25zdW1lbnQ6IGFwcC5qcyBiaW5kZXQgfjE1IGRpZXNlciBTeW1ib2xlOyBibGVpYnQgdWViZXIK Ly8gZGFzIFBhc3MtVGhyb3VnaC1SZS1FeHBvcnQgaW4gYWRtaW4uanMgdW52ZXJhZW5kZXJ0IGJp cyBQaGFzZSA5LUIgQzUuCgppbXBvcnQgeyBaIH0gZnJvbSAnLi9jb3JlX3N0YXRlLmpzJzsKaW1w b3J0IHsKZXNjYXBlSFRNTCwgZXNjYXBlQXR0ciwgZGF0dW1Gb3JtYXRERSwgZGF0dW1TdHIsCmdl dEZ1bmt0aW9uZW4sIGdldERpZW5zdGdyYWRlLApfcGVyc29uQW56ZWlnZSwgYWJzZW5kZXJOYW1l RXJtaXR0ZWxuLAphdmF0YXJLcmVpc0h0bWwsIHBlcnNvblNjaGljaHRBbQp9IGZyb20gJy4vY29y ZV91dGlsLmpzJzsKCi8vIHBlcnNvblNjaGljaHRBbSAoUm90YXRpb25zLVNjaGljaHQgRi9TL04g YXVzIGRlciBTdGFuZG9ydC1TY2hpY2h0Zm9sZ2UpCi8vIGxpZWd0IHNlaXQgMjAyNi0wNS0yNyBp biBjb3JlX3V0aWwuanMg4oCUIHdpcmQgaGllciBpbXBvcnRpZXJ0IHVuZCBhdWNoIHZvbQovLyBT Y2hpY2h0LVRlYW0tTW9kdWwgZ2VudXR6dC4KLy8gX2lzdERyaXR0ZUZ1bmt0aW9uIHd1cmRlIGFt IDIwMjYtMDUtMjMgZW50ZmVybnQ6IGRpZSBWSTMtREdMLQovLyBRdWFsaWZpemllcnVuZyBpc3Qg c2VpdGRlbSBmdWVyIGFsbGUgRnVua3Rpb25lbiBwZmxlZ2JhciwgbmljaHQKLy8gbWVociBudXIg ZnVlciAiMy4gTWFubi9GcmF1Ii4KCi8vIE5hZWNoc3RlciBXZWNoc2VsdGFnIGZ1ZXIgZWluZSBQ ZXJzb24gYWIgZ2VnZWJlbmVtIERhdHVtLiBXZWNoc2VsdGFnID0KLy8gVGFnLCBhbiBkZW0gZGll IGFiZ2VsZWl0ZXRlIFNjaGljaHQgc2ljaCBnZWdlbnVlYmVyIGRlbSBWb3J0YWcgYWVuZGVydC4K Ly8gTGllZmVydCB7IGRhdHVtLCB2b24sIG5hY2ggfSBvZGVyIG51bGwuCmZ1bmN0aW9uIF9wZXJz b25OYWVjaHN0ZXJXZWNoc2VsKHBlcnNvbiwgYWJEYXR1bSkgewogICAgaWYgKCFwZXJzb24gfHwg IXBlcnNvbi5ncnVwcGUgfHwgIXBlcnNvbi5vZSkgcmV0dXJuIG51bGw7CiAgICB2YXIgc3RhbmRv cnQgPSAoWi5hZG1pbi5zdGFuZG9ydGUgfHwgW10pLmZpbmQoZnVuY3Rpb24ocykgeyByZXR1cm4g KHMua3VlcnplbCB8fCAnJykgPT09IHBlcnNvbi5vZTsgfSk7CiAgICBpZiAoIXN0YW5kb3J0IHx8 IHN0YW5kb3J0LmlzdFBvb2wpIHJldHVybiBudWxsOwogICAgdmFyIGhldXRlID0gYWJEYXR1bSA/ IG5ldyBEYXRlKGFiRGF0dW0gKyAnVDAwOjAwOjAwJykgOiBuZXcgRGF0ZSgpOwogICAgdmFyIGFr dHVlbGwgPSBwZXJzb25TY2hpY2h0QW0ocGVyc29uLCBkYXR1bVN0cihoZXV0ZSkpOwogICAgaWYg KCFha3R1ZWxsKSByZXR1cm4gbnVsbDsKICAgIGZvciAodmFyIGkgPSAxOyBpIDw9IDYwOyBpKysp IHsKICAgICAgICB2YXIgZCA9IG5ldyBEYXRlKGhldXRlKTsKICAgICAgICBkLnNldERhdGUoZC5n ZXREYXRlKCkgKyBpKTsKICAgICAgICB2YXIgZHMgPSBkYXR1bVN0cihkKTsKICAgICAgICB2YXIg cyA9IHBlcnNvblNjaGljaHRBbShwZXJzb24sIGRzKTsKICAgICAgICBpZiAocyAmJiBzICE9PSBh a3R1ZWxsKSByZXR1cm4geyBkYXR1bTogZHMsIHZvbjogYWt0dWVsbCwgbmFjaDogcyB9OwogICAg fQogICAgcmV0dXJuIG51bGw7Cn0KCi8vIEtvbXBha3RlIEFuemVpZ2UgZnVlciBkaWUgIlJvdGEi LVNwYWx0ZTogRi9TL04tUGlsbGUgKyBIb3Zlci1Ub29sdGlwCi8vIG1pdCBha3R1ZWxsZXIgU2No aWNodCArIG5hZWNoc3RlbSBXZWNoc2VsdGFnLgpmdW5jdGlvbiBfcGVyc29uUm90YVBpbGxlKHBl cnNvbikgewogICAgdmFyIGhldXRlID0gZGF0dW1TdHIobmV3IERhdGUoKSk7CiAgICB2YXIgYWt0 dWVsbCA9IHBlcnNvblNjaGljaHRBbShwZXJzb24sIGhldXRlKTsKICAgIGlmICghYWt0dWVsbCkg cmV0dXJuICc8c3BhbiBjbGFzcz0icm90YS1waWxsZSByb3RhLWxlZXIiIHRpdGxlPSJLZWluZSBT Y2hpY2h0cm90YXRpb24gKFN0YW5kb3J0L0dydXBwZSBuaWNodCB6dW9yZGVuYmFyKSI+4oCUPC9z cGFuPic7CiAgICB2YXIgZmFyYmUgPSBha3R1ZWxsID09PSAnRicgPyAncm90YS1mJyA6IGFrdHVl bGwgPT09ICdTJyA/ICdyb3RhLXMnIDogJ3JvdGEtbic7CiAgICB2YXIgbGFiZWwgPSB7IEY6ICdG csO8aGRpZW5zdCcsIFM6ICdTcMOkdGRpZW5zdCcsIE46ICdOYWNodGRpZW5zdCcgfVtha3R1ZWxs XTsKICAgIHZhciB3ID0gX3BlcnNvbk5hZWNoc3RlcldlY2hzZWwocGVyc29uLCBoZXV0ZSk7CiAg ICB2YXIgdGlwID0gbGFiZWwgKyAnIGhldXRlJzsKICAgIGlmICh3KSB7CiAgICAgICAgdmFyIG5h Y2hMYWJlbCA9IHsgRjogJ0Zyw7xoJywgUzogJ1Nww6R0JywgTjogJ05hY2h0JyB9W3cubmFjaF07 CiAgICAgICAgdGlwICs9ICdcbldlY2hzZWw6ICcgKyBkYXR1bUZvcm1hdERFKHcuZGF0dW0pICsg JyDihpIgJyArIG5hY2hMYWJlbDsKICAgIH0KICAgIHJldHVybiAnPHNwYW4gY2xhc3M9InJvdGEt cGlsbGUgJyArIGZhcmJlICsgJyIgdGl0bGU9IicgKyBlc2NhcGVBdHRyKHRpcCkgKyAnIj4nICsg YWt0dWVsbCArICc8L3NwYW4+JzsKfQppbXBvcnQgeyBhcGksIGFwaVBvc3QsIGFwaVB1dCwgYXBp RGVsZXRlIH0gZnJvbSAnLi9jb3JlX2FwaS5qcyc7CmltcG9ydCB7CnRvYXN0LCBiZXN0YWV0aWdl biwKbW9kYWxaZWlnZW4sIG1vZGFsU2NobGllc3NlbiwKZW50d3VyZkxvZXNjaGVuLCBwZmxpY2h0 ZmVsZEZlaGxlciwgaGlsZmVJY29uCn0gZnJvbSAnLi91aV9kaWFsb2cuanMnOwppbXBvcnQgeyBw ZXJzb25lbk5ldUF1ZmJhdWVuIH0gZnJvbSAnLi9jb3JlX2RhdGVuTGFkZW4uanMnOwppbXBvcnQg ewprb3BmUmVuZGVybiwgbmFtZW5SZW5kZXJuLCBkYXRlbkdyaWRSZW5kZXJuCn0gZnJvbSAnLi9n cmlkX3JlbmRlci5qcyc7CmltcG9ydCB7IG1haWxUcmlnZ2VyRmV1ZXJuIH0gZnJvbSAnLi9lbWFp bF92b3JsYWdlbi5qcyc7Ci8vIGZlYXR1cmVJc3RBa3RpdiBsZWJ0IGltIEJvb3RzdHJhcC1UZWls IHZvbiBhZG1pbi5qcyAoRmVhdHVyZS1Ub2dnbGVzLAovLyBuaWNodCBpbiBlaW5lbSBkZXIgUGhh c2UtOS1CLVN1Yi1Nb2R1bGUpLiBXaXJkIGhpZXIgZnVlcgovLyBwYXBpZXJrb3JiVUkgLyBwZXJz b25hbElubGluZUVkaXQgLyBrb2xsZWdlbkhlcnZvcmhlYmVuIC8KLy8gcGVyUGVyc29uU2ljaHRi YXJrZWl0IC8gZW1haWxBdXRvU3VmZml4IGdlYnJhdWNodC4KLy8gYWRtaW5FbXB0eVplaWxlOiBF bXB0eS1TdGF0ZS1LYXJ0ZSBhbHMgPHRyPiBmdWVyIGxlZXJlIExpc3Rlbi4KaW1wb3J0IHsgZmVh dHVyZUlzdEFrdGl2LCBhZG1pbkVtcHR5WmVpbGUgfSBmcm9tICcuL2FkbWluLmpzJzsKCmV4cG9y dCBmdW5jdGlvbiBwZXJzb25hbFRhYmVsbGVSZW5kZXJuKCkgewogICAgLy8gTmV1aW1wb3J0LUJs b2NrIG9iZW4gcmVuZGVybiAoZnJpc2NoIGltcG9ydGllcnRlIFBlcnNvbmVuKS4KICAgIC8vIFdl bm4ga2VpbmUgdm9yaGFuZGVuLCBibGVuZGV0IGRpZSBGdW5rdGlvbiBkZW4gQ29udGFpbmVyIGF1 cy4KICAgIG5ldWltcG9ydEJsb2NrUmVuZGVybigpOwogICAgLy8gUGFwaWVya29yYi1GZWF0dXJl OiBGaWx0ZXItWmVpbGUgaW4gZGVyIFRvb2xiYXIgamUgbmFjaCBUb2dnbGUtU3RhdHVzCiAgICAv LyBlaW4tIG9kZXIgYXVzYmxlbmRlbiAoQ2hlcnJ5LVBpY2sgMzAwOWVhOCkuCiAgICB2YXIgcGFw aWVya29yYkFrdGl2ID0gZmVhdHVyZUlzdEFrdGl2KCdwYXBpZXJrb3JiVUknKTsKICAgIHZhciBw YXBpZXJrb3JiRmlsdGVyWmVpbGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncGFwaWVya29y Yi1maWx0ZXItemVpbGUnKTsKICAgIGlmIChwYXBpZXJrb3JiRmlsdGVyWmVpbGUpIHBhcGllcmtv cmJGaWx0ZXJaZWlsZS5jbGFzc0xpc3QudG9nZ2xlKCd2ZXJzdGVja3QnLCAhcGFwaWVya29yYkFr dGl2KTsKCiAgICB2YXIgZmlsdGVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FkbWluLXBl cnNvbmFsLWZpbHRlcicpOwogICAgdmFyIHplaWdlVW1nZXNldHp0ZSA9IGZpbHRlciA/IGZpbHRl ci5jaGVja2VkIDogZmFsc2U7CiAgICB2YXIgcGFwaWVya29yYkZpbHRlciA9IGRvY3VtZW50Lmdl dEVsZW1lbnRCeUlkKCdhZG1pbi1wYXBpZXJrb3JiLWZpbHRlcicpOwogICAgdmFyIHplaWdlUGFw aWVya29yYiA9IHBhcGllcmtvcmJBa3RpdiAmJiBwYXBpZXJrb3JiRmlsdGVyICYmIHBhcGllcmtv cmJGaWx0ZXIuY2hlY2tlZDsKCiAgICBmdW5jdGlvbiBpc3RQYXBpZXJrb3JiKHApIHsgcmV0dXJu ICEhcC5nZWxvZXNjaHRBbTsgfQogICAgZnVuY3Rpb24gcGFwaWVya29yYlJlc3RUZXh0KHApIHsK ICAgICAgICBpZiAoIXAuZ2Vsb2VzY2h0QW0pIHJldHVybiAnJzsKICAgICAgICB2YXIgYXVmYmV3 YWhydW5nID0gWi5hZG1pbi5wYXBpZXJrb3JiVGFnZUF1ZmJld2FocnVuZyAhPSBudWxsID8gWi5h ZG1pbi5wYXBpZXJrb3JiVGFnZUF1ZmJld2FocnVuZyA6IDMwOwogICAgICAgIHZhciBzZWl0ID0g bmV3IERhdGUocC5nZWxvZXNjaHRBbSk7CiAgICAgICAgaWYgKGlzTmFOKHNlaXQuZ2V0VGltZSgp KSkgcmV0dXJuICcnOwogICAgICAgIHZhciB0YWdlVmVyZ2FuZ2VuID0gTWF0aC5mbG9vcigoRGF0 ZS5ub3coKSAtIHNlaXQuZ2V0VGltZSgpKSAvIDg2NDAwMDAwKTsKICAgICAgICB2YXIgcmVzdCA9 IE1hdGgubWF4KDAsIGF1ZmJld2FocnVuZyAtIHRhZ2VWZXJnYW5nZW4pOwogICAgICAgIHJldHVy biAnIDxzcGFuIHN0eWxlPSJmb250LXdlaWdodDo0MDA7Zm9udC1zaXplOjEwcHg7Y29sb3I6dmFy KC0tdGV4dC1tdXRlZCkiPihub2NoICcgKyByZXN0ICsgJyBUYWcnICsgKHJlc3QgPT09IDEgPyAn JyA6ICdlJykgKyAnKTwvc3Bhbj4nOwogICAgfQoKICAgIHZhciBhbGxlUGVyc29uZW4gPSAoWi5w bGFudW5nLnBlcnNvbmVuIHx8IFtdKS5zbGljZSgpCiAgICAgICAgLmZpbHRlcihmdW5jdGlvbihw KSB7CiAgICAgICAgICAgIGlmIChpc3RQYXBpZXJrb3JiKHApKSByZXR1cm4gemVpZ2VQYXBpZXJr b3JiOwogICAgICAgICAgICByZXR1cm4gcC5ha3RpdiB8fCB6ZWlnZVVtZ2VzZXR6dGU7CiAgICAg ICAgfSkKICAgICAgICAuc29ydChmdW5jdGlvbihhLCBiKSB7IHJldHVybiAoYS5wb3NpdGlvbiB8 fCA5OTkpIC0gKGIucG9zaXRpb24gfHwgOTk5KTsgfSk7CgogICAgLy8gR3J1cHBlbi1SZWloZW5m b2xnZSBhdXMgYWRtaW4uZ3J1cHBlbiDigJQgc28gZXJzY2hlaW5lbiBkaWUgVHJlbm5lcgogICAg Ly8gaW4gZGVyIEFkbWluLWRlZmluaWVydGVuIEZvbGdlIChBLCBCLCBDLCBXRCwgV0wsIFZELCAu Li4pLgogICAgdmFyIGdydXBwZW5SZWloZW5mb2xnZSA9IChaLmFkbWluLmdydXBwZW4gfHwgW10p Lm1hcChmdW5jdGlvbihnKSB7IHJldHVybiBnLm5hbWU7IH0pOwogICAgdmFyIHBlcnNvbmVuUHJv R3J1cHBlID0ge307CiAgICB2YXIgdW5iZWthbm50ZUdydXBwZSA9IFtdOwogICAgYWxsZVBlcnNv bmVuLmZvckVhY2goZnVuY3Rpb24ocCkgewogICAgICAgIHZhciBnID0gcC5ncnVwcGUgfHwgJyc7 CiAgICAgICAgaWYgKGdydXBwZW5SZWloZW5mb2xnZS5pbmRleE9mKGcpID49IDApIHsKICAgICAg ICAgICAgaWYgKCFwZXJzb25lblByb0dydXBwZVtnXSkgcGVyc29uZW5Qcm9HcnVwcGVbZ10gPSBb XTsKICAgICAgICAgICAgcGVyc29uZW5Qcm9HcnVwcGVbZ10ucHVzaChwKTsKICAgICAgICB9IGVs c2UgewogICAgICAgICAgICB1bmJla2FubnRlR3J1cHBlLnB1c2gocCk7CiAgICAgICAgfQogICAg fSk7CgogICAgdmFyIGlubGluZUVkaXRBa3RpdiA9IGZlYXR1cmVJc3RBa3RpdigncGVyc29uYWxJ bmxpbmVFZGl0JykgJiYgWi5yZWNodGUgJiYgWi5yZWNodGUuaXN0U3VwZXJVc2VyOwogICAgLy8g RGF0ZW5mZWxkZXIsIGRpZSBwZXIgRWluZmFjaC1LbGljayBpbmxpbmUgYmVhcmJlaXRldCB3ZXJk ZW4gZHVlcmZlbi4KICAgIC8vIE5hbWUgbGFldWZ0IHdlaXRlciB1ZWJlciBkZW4gTW9kYWwtRWRp dCAoUGZsaWNodGZlbGQgKyBEaWZmLVRyaWdnZXIpLgogICAgLy8gUG9zaXRpb24vRGllbnN0Z3Jh ZC9GdW5rdGlvbiBoYWJlbiBpaHJlIGVpZ2VuZW4gSW5saW5lLUVkaXRvcmVuLgogICAgLy8gQmVp IGxlZXJlbiBXZXJ0ZW4gd2lyZCBlaW4gIisiLVBsYWNlaG9sZGVyIGdlemVpZ3QsIGRhbWl0IGRl ciBLbGljay0KICAgIC8vIEJlcmVpY2ggYXVjaCBvaG5lIEluaGFsdCBleGlzdGllcnQgKFVzZXIt RmVlZGJhY2sgMjAyNi0wNS0yMykuCiAgICBmdW5jdGlvbiBpbmxpbmVXcmFwKHAsIGZlbGQsIGFu emVpZ2UsIG9wdHMpIHsKICAgICAgICBpZiAoIWlubGluZUVkaXRBa3RpdikgcmV0dXJuIGFuemVp Z2UgfHwgJyc7CiAgICAgICAgdmFyIHR5cCA9IChvcHRzICYmIG9wdHMudHlwKSB8fCAndGV4dCc7 CiAgICAgICAgdmFyIGxlZXIgPSAhYW56ZWlnZSB8fCBhbnplaWdlID09PSAnJzsKICAgICAgICB2 YXIgaW5uZXIgPSBsZWVyCiAgICAgICAgICAgID8gJzxzcGFuIGNsYXNzPSJwZXJzb25hbC1pbmxp bmUtcGxhY2Vob2xkZXIiPmVpbnRyYWdlbjwvc3Bhbj4nCiAgICAgICAgICAgIDogYW56ZWlnZTsK ICAgICAgICB2YXIgY2xzID0gJ3BlcnNvbmFsLWlubGluZScgKyAobGVlciA/ICcgcGVyc29uYWwt aW5saW5lLWxlZXInIDogJycpOwogICAgICAgIHJldHVybiAnPHNwYW4gY2xhc3M9IicgKyBjbHMg KyAnIiBkYXRhLWlkPSInICsgcC5pZCArICciIGRhdGEtZmVsZD0iJyArIGZlbGQgKyAnIiBkYXRh LXR5cD0iJyArIHR5cCArICciIHRpdGxlPSJLbGlja2VuIHp1bSBCZWFyYmVpdGVuIj4nICsgaW5u ZXIgKyAnPC9zcGFuPic7CiAgICB9CgogICAgZnVuY3Rpb24gcGVyc29uWmVpbGUocCkgewogICAg ICAgIHZhciBnciA9IFouZ3J1cHBlbk1hcFtwLmdydXBwZV0gfHwge307CiAgICAgICAgdmFyIHVt Z2VzZXR6dCA9ICFwLmFrdGl2OwogICAgICAgIHZhciBwb3MgPSBwLnBvc2l0aW9uICE9IG51bGwg PyBwLnBvc2l0aW9uIDogJ+KAlCc7CiAgICAgICAgdmFyIHJhbmdJbm5lciA9IFoucmVjaHRlLmlz dFN1cGVyVXNlcgogICAgICAgICAgICA/ICc8c3BhbiBjbGFzcz0icmFuZy1lZGl0IiBkYXRhLWlk PSInICsgcC5pZCArICciIHRpdGxlPSJLbGlja2VuIHp1bSBCZWFyYmVpdGVuIj4nICsgcG9zICsg Jzwvc3Bhbj4nCiAgICAgICAgICAgIDogcG9zOwoKICAgICAgICB2YXIgZGdyZCA9IHAuZGllbnN0 Z3JhZCB8fCAnJzsKICAgICAgICB2YXIgZGdyZEFuemVpZ2UgPSBkZ3JkID8gZXNjYXBlSFRNTChk Z3JkKSA6ICc8c3BhbiBzdHlsZT0iY29sb3I6dmFyKC0tdGV4dC1tdXRlZCk7Zm9udC1zdHlsZTpp dGFsaWMiPuKAlDwvc3Bhbj4nOwogICAgICAgIHZhciBkZ3JkSW5uZXIgPSBaLnJlY2h0ZS5pc3RT dXBlclVzZXIKICAgICAgICAgICAgPyAnPHNwYW4gY2xhc3M9ImRpZW5zdGdyYWQtZWRpdCIgZGF0 YS1pZD0iJyArIHAuaWQgKyAnIiB0aXRsZT0iS2xpY2tlbiB6dW0gQmVhcmJlaXRlbiI+JyArIGRn cmRBbnplaWdlICsgJzwvc3Bhbj4nCiAgICAgICAgICAgIDogZGdyZEFuemVpZ2U7CgogICAgICAg IHZhciBmdW5rdGlvbiA9IHAuZnVua3Rpb24gfHwgJyc7CiAgICAgICAgdmFyIGZ1bmt0aW9uQW56 ZWlnZSA9IGZ1bmt0aW9uID8gZXNjYXBlSFRNTChmdW5rdGlvbikgOiAnPHNwYW4gc3R5bGU9ImNv bG9yOnZhcigtLXRleHQtbXV0ZWQpO2ZvbnQtc3R5bGU6aXRhbGljIj7igJQgb2huZSDigJQ8L3Nw YW4+JzsKICAgICAgICB2YXIgZnVua3Rpb25Jbm5lciA9IFoucmVjaHRlLmlzdFN1cGVyVXNlcgog ICAgICAgICAgICA/ICc8c3BhbiBjbGFzcz0iZnVua3Rpb24tZWRpdCIgZGF0YS1pZD0iJyArIHAu aWQgKyAnIiB0aXRsZT0iS2xpY2tlbiB6dW0gQmVhcmJlaXRlbiI+JyArIGZ1bmt0aW9uQW56ZWln ZSArICc8L3NwYW4+JwogICAgICAgICAgICA6IGZ1bmt0aW9uQW56ZWlnZTsKCiAgICAgICAgLy8g RW1haWwtQnV0dG9uLVN0aWw6CiAgICAgICAgLy8gICBrZWluZSBBZHJlc3NlICAgICAgICAgICAt PiByb3QgKEdlZmFocikKICAgICAgICAvLyAgIEFkcmVzc2UgQHBvbGl6ZWkubnJ3LmRlIC0+IGdy dWVuIChFcmZvbGcpCiAgICAgICAgLy8gICBzb25zdGlnZSBEb21haW4gICAgICAgICAtPiBncnVl biArIHJvdGVyIHJlY2h0ZXIgUmFuZAogICAgICAgIC8vICAgKFRlc3QtQWRyZXNzZSwgb3B0aXNj aCBzb2ZvcnQgZXJrZW5uYmFyKQogICAgICAgIHZhciBlbWFpbERvbWFpbk9rID0gISEocC5lbWFp bCAmJiAvQHBvbGl6ZWlcLm5yd1wuZGUkL2kudGVzdChwLmVtYWlsKSk7CiAgICAgICAgdmFyIGVt YWlsQ2xzOwogICAgICAgIGlmICghcC5lbWFpbCkgICAgICAgICAgICAgIGVtYWlsQ2xzID0gJ2J0 bi1nZWZhaHInOwogICAgICAgIGVsc2UgaWYgKGVtYWlsRG9tYWluT2spICAgIGVtYWlsQ2xzID0g J2J0bi1lcmZvbGcnOwogICAgICAgIGVsc2UgICAgICAgICAgICAgICAgICAgICAgIGVtYWlsQ2xz ID0gJ2J0bi1lcmZvbGcgYnRuLWVtYWlsLXRlc3QnOwogICAgICAgIHZhciBlbWFpbFRpdGxlOwog ICAgICAgIGlmICghcC5lbWFpbCkgICAgICAgICAgICAgIGVtYWlsVGl0bGUgPSAnTm9jaCBrZWlu ZSBFLU1haWwtQWRyZXNzZSBoaW50ZXJsZWd0IOKAlCBLbGljayB6dW0gUGZsZWdlbic7CiAgICAg ICAgZWxzZSBpZiAoZW1haWxEb21haW5PaykgICAgZW1haWxUaXRsZSA9IHAuZW1haWw7CiAgICAg ICAgZWxzZSAgICAgICAgICAgICAgICAgICAgICAgZW1haWxUaXRsZSA9IHAuZW1haWwgKyAnXG7i mqAgVGVzdC0vRnJlbWQtQWRyZXNzZSAobmljaHQgQHBvbGl6ZWkubnJ3LmRlKSc7CiAgICAgICAg Ly8gUGFwaWVya29yYi1MZWJlbnN6eWtsdXMgKENoZXJyeS1QaWNrIDMwMDllYTgpLiBXZW5uIGRh cyBGZWF0dXJlCiAgICAgICAgLy8gYWt0aXYgaXN0IHVuZCBgZ2Vsb2VzY2h0QW1gIGdlc2V0enQ6 IFplaWxlIHdpcmQgcm90LCBzdGF0dAogICAgICAgIC8vIFVtc2V0emVuL1JlYWt0aXZpZXJlbiBz dGVoZW4gIldpZWRlcmhlcnN0ZWxsZW4iIHVuZCAiSmV0enQgbMO2c2NoZW4iCiAgICAgICAgLy8g enVyIFZlcmZ1ZWd1bmcuIEFrdGl2ZS9VbWdlc2V0enRlIGJla29tbWVuIHp1c2FldHpsaWNoIGVp bmVuCiAgICAgICAgLy8gVW1zZXR6ZW4gKyBMb2VzY2hlbiB3dXJkZW4gMjAyNi0wNS0yMyBpbnMg QmVhcmJlaXRlbi1Nb2RhbCB2ZXJsYWdlcnQKICAgICAgICAvLyAoWmVpbGUgd2FyIHp1IHZvbGwp LiBOdXIgIldpZWRlcmhlcnN0ZWxsZW4iIHVuZCAiSmV0enQgbG9lc2NoZW4iCiAgICAgICAgLy8g YmxlaWJlbiBpbiBkZXIgWmVpbGUgZnVlciBQYXBpZXJrb3JiLUVpbnRyYWVnZSBzaWNodGJhciDi gJQgZGEgZ2lidCdzCiAgICAgICAgLy8ga2VpbmVuIE1vZGFsLVBmYWQuCiAgICAgICAgdmFyIGlt UGFwaWVya29yYiA9IHBhcGllcmtvcmJBa3RpdiAmJiBpc3RQYXBpZXJrb3JiKHApOwogICAgICAg IHZhciBha3Rpb25CdG4gPSAnJzsKICAgICAgICBpZiAoaW1QYXBpZXJrb3JiKSB7CiAgICAgICAg ICAgIGFrdGlvbkJ0biA9CiAgICAgICAgICAgICAgICAnPGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1l cmZvbGcgYnRuLWtsZWluIiBkYXRhLWFrdGlvbj0id2llZGVyaGVyc3RlbGxlbiIgZGF0YS1pZD0i JyArIHAuaWQgKyAnIiB0aXRsZT0iQXVzIFBhcGllcmtvcmIgenVyw7xja2hvbGVuIChQZXJzb24g d2lyZCB3aWVkZXIgYWt0aXYpIj5XaWVkZXJoZXJzdGVsbGVuPC9idXR0b24+JyArCiAgICAgICAg ICAgICAgICAnPGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1nZWZhaHIgYnRuLWtsZWluIGJ0bi1sb2Vz Y2hlbiIgZGF0YS1ha3Rpb249ImVuZGd1ZWx0aWctbG9lc2NoZW4iIGRhdGEtaWQ9IicgKyBwLmlk ICsgJyIgdGl0bGU9IlBlcnNvbiBlbmRnw7xsdGlnIGVudGZlcm5lbiAoRWludHJhZWdlIHZlcndh aXNlbiwgTG9nYnVjaCBibGVpYnQpIj5KZXR6dCBsw7ZzY2hlbjwvYnV0dG9uPic7CiAgICAgICAg fQoKICAgICAgICB2YXIgbmFtZVplbGxlID0gJzxkaXYgY2xhc3M9InBlcnNvbmFsLW5hbWUtemVs bGUiPicgKwogICAgICAgICAgICBhdmF0YXJLcmVpc0h0bWwocCwgMjYpICsKICAgICAgICAgICAg JzxzcGFuIGNsYXNzPSJwZXJzb24tbmFtZS1saW5rIiBkYXRhLWlkPSInICsgcC5pZCArICciIHRp dGxlPSJLbGlja2VuIHp1bSBCZWFyYmVpdGVuIj4nICsgZXNjYXBlSFRNTChwLm5hbWUpICsgJzwv c3Bhbj4nICsKICAgICAgICAnPC9kaXY+JzsKICAgICAgICB2YXIgdm9ybmFtZUFuemVpZ2UgPSBl c2NhcGVIVE1MKHAudm9ybmFtZSB8fCAnJyk7CiAgICAgICAgdmFyIG9lQW56ZWlnZSAgICAgID0g ZXNjYXBlSFRNTChwLm9lIHx8ICcnKTsKICAgICAgICB2YXIgdGVsZWZvbkFuemVpZ2UgPSBlc2Nh cGVIVE1MKHAudGVsZWZvbiB8fCAnJyk7CiAgICAgICAgdmFyIG53QW56ZWlnZSAgICAgID0gZXNj YXBlSFRNTChwLm53S2VubnVuZyB8fCAnJyk7CiAgICAgICAgdmFyIGdlYkFuemVpZ2UgICAgID0g cC5nZWJ1cnRzZGF0dW0gPyBkYXR1bUZvcm1hdERFKHAuZ2VidXJ0c2RhdHVtKSA6ICcnOwogICAg ICAgIHZhciB6ZWlsZW5LbGFzc2UgPSBpbVBhcGllcmtvcmIgPyAnIGNsYXNzPSJ6ZWlsZS1wYXBp ZXJrb3JiIicgOiAodW1nZXNldHp0ID8gJyBjbGFzcz0iemVpbGUtdW1nZXNldHp0IicgOiAnJyk7 CiAgICAgICAgcmV0dXJuICc8dHIgZGF0YS1pZD0iJyArIHAuaWQgKyAnIicgKyB6ZWlsZW5LbGFz c2UgKyAnPicgKwogICAgICAgICAgICAnPHRkPjxzdHJvbmc+JyArIG5hbWVaZWxsZSArICc8L3N0 cm9uZz48L3RkPicgKwogICAgICAgICAgICAnPHRkPicgKyBpbmxpbmVXcmFwKHAsICd2b3JuYW1l JywgICAgIHZvcm5hbWVBbnplaWdlKSArICc8L3RkPicgKwogICAgICAgICAgICAnPHRkIHN0eWxl PSJ0ZXh0LWFsaWduOmxlZnQ7Zm9udC1zaXplOjEycHgiPicgKyBmdW5rdGlvbklubmVyICsgJzwv dGQ+JyArCiAgICAgICAgICAgICc8dGQgc3R5bGU9InRleHQtYWxpZ246bGVmdDtmb250LXNpemU6 MTJweCI+JyArIGRncmRJbm5lciArICc8L3RkPicgKwogICAgICAgICAgICAnPHRkIHN0eWxlPSJ0 ZXh0LWFsaWduOmxlZnQ7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NzAwO2NvbG9yOnZhcigt LXRleHQtbXV0ZWQpIiB0aXRsZT0iUm9oZSBQb3NpdGlvbnMtWmFobCAoYXVzIEV4Y2VsLUltcG9y dCknICsgKFoucmVjaHRlLmlzdFN1cGVyVXNlciA/ICcg4oCUIGtsaWNrYmFyIHp1bSBCZWFyYmVp dGVuJyA6ICcnKSArICciPicgKyByYW5nSW5uZXIgKyAnPC90ZD4nICsKICAgICAgICAgICAgJzx0 ZCBzdHlsZT0idGV4dC1hbGlnbjpsZWZ0O2ZvbnQtc2l6ZToxMnB4Ij4nICsgaW5saW5lV3JhcChw LCAnb2UnLCAgICAgICBvZUFuemVpZ2UpICsgJzwvdGQ+JyArCiAgICAgICAgICAgICc8dGQgc3R5 bGU9InRleHQtYWxpZ246bGVmdDtmb250LXNpemU6MTJweCI+JyArIGlubGluZVdyYXAocCwgJ3Rl bGVmb24nLCAgdGVsZWZvbkFuemVpZ2UpICsgJzwvdGQ+JyArCiAgICAgICAgICAgICc8dGQgc3R5 bGU9ImZvbnQtc2l6ZToxMXB4O2NvbG9yOnZhcigtLXRleHQtbXV0ZWQpO21heC13aWR0aDoxMTVw eDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpczt3aGl0ZS1zcGFjZTpub3dy YXAiIHRpdGxlPSInICsgZXNjYXBlQXR0cihwLm53S2VubnVuZyB8fCAnJykgKyAnIj4nICsgaW5s aW5lV3JhcChwLCAnbndLZW5udW5nJywgbndBbnplaWdlKSArICc8L3RkPicgKwogICAgICAgICAg ICAnPHRkIHN0eWxlPSJ0ZXh0LWFsaWduOmNlbnRlciI+JyArIF9wZXJzb25Sb3RhUGlsbGUocCkg KyAnPC90ZD4nICsKICAgICAgICAgICAgJzx0ZCBzdHlsZT0idGV4dC1hbGlnbjpsZWZ0Ij48YnV0 dG9uIGNsYXNzPSJidG4gJyArIGVtYWlsQ2xzICsgJyBidG4ta2xlaW4iIGRhdGEtYWt0aW9uPSJl bWFpbCIgZGF0YS1pZD0iJyArIHAuaWQgKyAnIiB0aXRsZT0iJyArIGVzY2FwZUF0dHIoZW1haWxU aXRsZSkgKyAnIiBzdHlsZT0id2hpdGUtc3BhY2U6bm93cmFwIj5FLU1haWw8L2J1dHRvbj48L3Rk PicgKwogICAgICAgICAgICAnPHRkIHN0eWxlPSJmb250LXNpemU6MTFweDt0ZXh0LWFsaWduOmxl ZnQiPicgKyBpbmxpbmVXcmFwKHAsICdnZWJ1cnRzZGF0dW0nLCBnZWJBbnplaWdlLCB7IHR5cDog J2RhdGUnIH0pICsgJzwvdGQ+JyArCiAgICAgICAgICAgIChmdW5jdGlvbigpIHsKICAgICAgICAg ICAgICAgIC8vIFNwYWx0ZSDigJ5WSTMgREdMIi4gUXVhZHJhdGlzY2hlciBCdXR0b246CiAgICAg ICAgICAgICAgICAvLyAgIGdydWVuICsg4pyTICAgPSBxdWFsaWZpemllcnQKICAgICAgICAgICAg ICAgIC8vICAgcm90ICsgd2Vpc3NlciBRdWVyYmFsa2VuIChWZXJrZWhyc3NjaGlsZCDigJ5WZXJi b3QgZGVyCiAgICAgICAgICAgICAgICAvLyAgIEVpbmZhaHJ0Ii1PcHRpaykgPSBuaWNodCBxdWFs aWZpemllcnQuCiAgICAgICAgICAgICAgICAvLyBLbGljayB0b2dnbGV0IGRhcyBGbGFnIGZ1ZXIg SkVERSBQZXJzb24gKFN1cGVyVXNlciBvbmx5KS4KICAgICAgICAgICAgICAgIHZhciBrbGlja2Jh ciA9IFoucmVjaHRlLmlzdFN1cGVyVXNlcjsKICAgICAgICAgICAgICAgIHZhciBvayA9ICEhcC5l bERnbFF1YWxpZml6aWVydDsKICAgICAgICAgICAgICAgIHZhciB0aXRlbCA9IGtsaWNrYmFyCiAg ICAgICAgICAgICAgICAgICAgPyAnS2xpY2s6IFZJMy1ER0wtUXVhbGlmaXppZXJ1bmcgdW1zY2hh bHRlbiDigJQgYWt0dWVsbCAnICsgKG9rID8gJ2FrdGl2JyA6ICdpbmFrdGl2JykKICAgICAgICAg ICAgICAgICAgICA6IChvayA/ICdWSTMtREdMIHF1YWxpZml6aWVydCcgOiAnTmljaHQgVkkzLURH TCBxdWFsaWZpemllcnQnKTsKICAgICAgICAgICAgICAgIHZhciBidG4gPSAnPHNwYW4gY2xhc3M9 InZpM2RnbC1idG4gJyArIChvayA/ICd2aTNkZ2wtYnRuLW9rJyA6ICd2aTNkZ2wtYnRuLW5vJykg KyAnIiBhcmlhLWxhYmVsPSInICsgZXNjYXBlQXR0cih0aXRlbCkgKyAnIj48L3NwYW4+JzsKICAg ICAgICAgICAgICAgIHZhciBjbHMgPSBrbGlja2JhciA/ICcgY2xhc3M9ImVsZGdsLWVkaXQiJyA6 ICcnOwogICAgICAgICAgICAgICAgdmFyIGRhdGFJZCA9IGtsaWNrYmFyID8gJyBkYXRhLWlkPSIn ICsgcC5pZCArICciJyA6ICcnOwogICAgICAgICAgICAgICAgdmFyIHN0eWxlID0ga2xpY2tiYXIg PyAndGV4dC1hbGlnbjpjZW50ZXI7Y3Vyc29yOnBvaW50ZXInIDogJ3RleHQtYWxpZ246Y2VudGVy JzsKICAgICAgICAgICAgICAgIHJldHVybiAnPHRkJyArIGNscyArIGRhdGFJZCArICcgc3R5bGU9 IicgKyBzdHlsZSArICciIHRpdGxlPSInICsgZXNjYXBlQXR0cih0aXRlbCkgKyAnIj4nICsgYnRu ICsgJzwvdGQ+JzsKICAgICAgICAgICAgfSkoKSArCiAgICAgICAgICAgIChmdW5jdGlvbigpIHsK ICAgICAgICAgICAgICAgIC8vIFNwYWx0ZSDigJ5BbnNwcmVjaHBhcnRuZXIiOiBUb2dnbGUgZnVl ciBFaW50cmFnIGltIEluZm8tCiAgICAgICAgICAgICAgICAvLyBGZW5zdGVyICjigJ5JbmZvcm1h dGlvbiAmIEhpbGZlIikuIFNlaXQgMjAyNi0wNS0yNSBvaG5lCiAgICAgICAgICAgICAgICAvLyBG dW5rdGlvbnMtIG9kZXIgRGllbnN0Z3J1cHBlbi1HYXRpbmcg4oCUIHRoZW9yZXRpc2NoIGthbm4K ICAgICAgICAgICAgICAgIC8vIGplZGUgUGVyc29uIGFscyBBbnNwcmVjaHBhcnRuZXIgYmVuYW5u dCB3ZXJkZW4uIFZpc3VlbGwKICAgICAgICAgICAgICAgIC8vIGlkZW50aXNjaCB6dW0gVkkzLURH TC1CdXR0b246IGdydWVuZXIgSGFrZW4gKGFrdGl2KSBvZGVyCiAgICAgICAgICAgICAgICAvLyBn cmF1ZXIgTWludXMtQmFsa2VuIChpbmFrdGl2KS4KICAgICAgICAgICAgICAgIHZhciBrbGlja2Jh ckFwID0gWi5yZWNodGUuaXN0U3VwZXJVc2VyOwogICAgICAgICAgICAgICAgdmFyIGlzdEFwID0g ISFwLmlzdEFuc3ByZWNocGFydG5lcjsKICAgICAgICAgICAgICAgIHZhciB0aXRlbEFwID0ga2xp Y2tiYXJBcAogICAgICAgICAgICAgICAgICAgID8gJ0tsaWNrOiBBbnNwcmVjaHBhcnRuZXItRmxh ZyB1bXNjaGFsdGVuIOKAlCBha3R1ZWxsICcgKyAoaXN0QXAgPyAnYWt0aXYnIDogJ2luYWt0aXYn KQogICAgICAgICAgICAgICAgICAgIDogKGlzdEFwID8gJ0ltIEluZm8tRmVuc3RlciBhbHMgQW5z cHJlY2hwYXJ0bmVyIGdlbGlzdGV0JyA6ICdOaWNodCBhbHMgQW5zcHJlY2hwYXJ0bmVyIGdlbGlz dGV0Jyk7CiAgICAgICAgICAgICAgICB2YXIgYnRuQXAgPSAnPHNwYW4gY2xhc3M9InZpM2RnbC1i dG4gJyArIChpc3RBcCA/ICd2aTNkZ2wtYnRuLW9rJyA6ICd2aTNkZ2wtYnRuLW9mZicpICsgJyIg YXJpYS1sYWJlbD0iJyArIGVzY2FwZUF0dHIodGl0ZWxBcCkgKyAnIj48L3NwYW4+JzsKICAgICAg ICAgICAgICAgIHZhciBjbHNBcCA9IGtsaWNrYmFyQXAgPyAnIGNsYXNzPSJhbnNwcmVjaHBhcnRu ZXItZWRpdCInIDogJyc7CiAgICAgICAgICAgICAgICB2YXIgaWRBcCA9IGtsaWNrYmFyQXAgPyAn IGRhdGEtaWQ9IicgKyBwLmlkICsgJyInIDogJyc7CiAgICAgICAgICAgICAgICB2YXIgc3R5bGVB cCA9IGtsaWNrYmFyQXAgPyAndGV4dC1hbGlnbjpjZW50ZXI7Y3Vyc29yOnBvaW50ZXInIDogJ3Rl eHQtYWxpZ246Y2VudGVyJzsKICAgICAgICAgICAgICAgIHJldHVybiAnPHRkJyArIGNsc0FwICsg aWRBcCArICcgc3R5bGU9IicgKyBzdHlsZUFwICsgJyIgdGl0bGU9IicgKyBlc2NhcGVBdHRyKHRp dGVsQXApICsgJyI+JyArIGJ0bkFwICsgJzwvdGQ+JzsKICAgICAgICAgICAgfSkoKSArCiAgICAg ICAgICAgIChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIC8vIFNwYWx0ZSDigJ5JbiBQbGFu dW5nIjogYmxlbmRldCBkaWVzZSBlaW5lIFBlcnNvbiBhdXMgZGVyCiAgICAgICAgICAgICAgICAv LyBQbGFudW5nc2Fuc2ljaHQvV29jaGVucGxhbi9QZXJzLiBQbGFuIGF1cyAoYW5hbG9nIEdydXBw ZW4tLwogICAgICAgICAgICAgICAgLy8gRnVua3Rpb25zLWluUGxhbnVuZywgYWJlciBwcm8gUGVy c29uKS4gR3J1ZW4gPSBzaWNodGJhciwKICAgICAgICAgICAgICAgIC8vIHJvdCA9IGF1c2dlYmxl bmRldC4gU3VwZXJVc2VyLW9ubHkuCiAgICAgICAgICAgICAgICB2YXIga2xpY2tiYXJJcCA9IFou cmVjaHRlLmlzdFN1cGVyVXNlciAmJiAhaW1QYXBpZXJrb3JiOwogICAgICAgICAgICAgICAgdmFy IHNpY2h0YmFyID0gcC5pblBsYW51bmcgIT09IGZhbHNlOwogICAgICAgICAgICAgICAgdmFyIHRp dGVsSXAgPSBrbGlja2JhcklwCiAgICAgICAgICAgICAgICAgICAgPyAnS2xpY2s6IFBlcnNvbiBp biBkZXIgUGxhbnVuZyAnICsgKHNpY2h0YmFyID8gJ2F1c2JsZW5kZW4nIDogJ2VpbmJsZW5kZW4n KSArICcg4oCUIGFrdHVlbGwgJyArIChzaWNodGJhciA/ICdzaWNodGJhcicgOiAnYXVzZ2VibGVu ZGV0JykKICAgICAgICAgICAgICAgICAgICA6IChzaWNodGJhciA/ICdJbiBkZXIgUGxhbnVuZ3Nh bnNpY2h0IHNpY2h0YmFyJyA6ICdJbiBkZXIgUGxhbnVuZ3NhbnNpY2h0IGF1c2dlYmxlbmRldCcp OwogICAgICAgICAgICAgICAgdmFyIGJ0bklwID0gJzxzcGFuIGNsYXNzPSJ2aTNkZ2wtYnRuICcg KyAoc2ljaHRiYXIgPyAndmkzZGdsLWJ0bi1vaycgOiAndmkzZGdsLWJ0bi1ubycpICsgJyIgYXJp YS1sYWJlbD0iJyArIGVzY2FwZUF0dHIodGl0ZWxJcCkgKyAnIj48L3NwYW4+JzsKICAgICAgICAg ICAgICAgIHZhciBjbHNJcCA9IGtsaWNrYmFySXAgPyAnIGNsYXNzPSJpbnBsYW51bmctZWRpdCIn IDogJyc7CiAgICAgICAgICAgICAgICB2YXIgaWRJcCA9IGtsaWNrYmFySXAgPyAnIGRhdGEtaWQ9 IicgKyBwLmlkICsgJyInIDogJyc7CiAgICAgICAgICAgICAgICB2YXIgc3R5bGVJcCA9IGtsaWNr YmFySXAgPyAndGV4dC1hbGlnbjpjZW50ZXI7Y3Vyc29yOnBvaW50ZXInIDogJ3RleHQtYWxpZ246 Y2VudGVyJzsKICAgICAgICAgICAgICAgIHJldHVybiAnPHRkJyArIGNsc0lwICsgaWRJcCArICcg c3R5bGU9IicgKyBzdHlsZUlwICsgJyIgdGl0bGU9IicgKyBlc2NhcGVBdHRyKHRpdGVsSXApICsg JyI+JyArIGJ0bklwICsgJzwvdGQ+JzsKICAgICAgICAgICAgfSkoKSArCiAgICAgICAgICAgICc8 dGQgc3R5bGU9InRleHQtYWxpZ246bGVmdCI+JyArIChpbVBhcGllcmtvcmIKICAgICAgICAgICAg ICAgID8gJzxzcGFuIGNsYXNzPSJ0ZXh0LWZlaGxlciIgdGl0bGU9IkltIFBhcGllcmtvcmIgc2Vp dCAnICsgZXNjYXBlQXR0cihwLmdlbG9lc2NodEFtKSArICciPlBhcGllcmtvcmInICsgcGFwaWVy a29yYlJlc3RUZXh0KHApICsgJzwvc3Bhbj4nCiAgICAgICAgICAgICAgICA6ICh1bWdlc2V0enQK ICAgICAgICAgICAgICAgICAgICA/ICc8c3BhbiBjbGFzcz0idGV4dC1mZWhsZXIiIHRpdGxlPSJV bWdlc2V0enQg4oCUIG5pY2h0IGluIGRlciBQbGFudW5nIj5VbWdlc2V0enQ8L3NwYW4+JwogICAg ICAgICAgICAgICAgICAgIDogJzxzcGFuIGNsYXNzPSJ0ZXh0LWVyZm9sZyI+QWt0aXY8L3NwYW4+ JykpICsgJzwvdGQ+JyArCiAgICAgICAgICAgICc8dGQ+PGRpdiBzdHlsZT0iZGlzcGxheTpmbGV4 O2dhcDo2cHg7anVzdGlmeS1jb250ZW50OmZsZXgtc3RhcnQ7d2hpdGUtc3BhY2U6bm93cmFwIj4n ICsKICAgICAgICAgICAgICAgICc8YnV0dG9uIGNsYXNzPSJidG4gYnRuLXByaW1hZXIgYnRuLWts ZWluIiBkYXRhLWFrdGlvbj0iYmVhcmJlaXRlbiIgZGF0YS1pZD0iJyArIHAuaWQgKyAnIj5CZWFy YmVpdGVuPC9idXR0b24+JyArCiAgICAgICAgICAgICAgICAoWi5yZWNodGUuaXN0U3VwZXJVc2Vy ICYmICFpbVBhcGllcmtvcmIKICAgICAgICAgICAgICAgICAgICA/ICc8YnV0dG9uIGNsYXNzPSJi dG4gYnRuLXNlayBidG4ta2xlaW4iIGRhdGEtYWt0aW9uPSJwZXJzb24tdGVzdGVuIiBkYXRhLWlk PSInICsgcC5pZCArICciIHRpdGxlPSJPYmVyZmzDpGNoZSBhbHMgZGllc2UgUGVyc29uIHRlc3Rl biAobnVyIGxva2FsLCBTZXJ2ZXItUmVjaHRlIGJsZWliZW4gU1UpIj5UZXN0ZW48L2J1dHRvbj4n CiAgICAgICAgICAgICAgICAgICAgOiAnJykgKwogICAgICAgICAgICAgICAgYWt0aW9uQnRuICsK ICAgICAgICAgICAgJzwvZGl2PjwvdGQ+JyArCiAgICAgICAgJzwvdHI+JzsKICAgIH0KCiAgICBm dW5jdGlvbiB0cmVubmVyWmVpbGUoZ3JOYW1lKSB7CiAgICAgICAgdmFyIGcgPSAoWi5hZG1pbi5n cnVwcGVuIHx8IFtdKS5maW5kKGZ1bmN0aW9uKHgpIHsgcmV0dXJuIHgubmFtZSA9PT0gZ3JOYW1l OyB9KSB8fCB7fTsKICAgICAgICB2YXIgYmV6ID0gZy5iZXplaWNobnVuZyB8fCBnck5hbWU7CiAg ICAgICAgcmV0dXJuICc8dHIgY2xhc3M9ImdydXBwZW4tdHJlbm5lci16ZWlsZSIgc3R5bGU9ImJh Y2tncm91bmQ6JyArIGVzY2FwZUF0dHIoKGcuaGludGVyZ3J1bmQgfHwgJyM4ODgnKSArICcyMicp ICsgJyI+JyArCiAgICAgICAgICAgICc8dGQgY29sc3Bhbj0iMTYiIHN0eWxlPSJwYWRkaW5nOjhw eCAxMnB4O2ZvbnQtd2VpZ2h0OjcwMDtib3JkZXItdG9wOjJweCBzb2xpZCAnICsgZXNjYXBlQXR0 cihnLmhpbnRlcmdydW5kIHx8ICcjODg4JykgKyAnO2JvcmRlci1ib3R0b206MXB4IHNvbGlkIHZh cigtLWJvcmRlci1saWdodCkiPicgKwogICAgICAgICAgICAnPHNwYW4gY2xhc3M9ImdydXBwZW4t YmFkZ2UiIHN0eWxlPSJiYWNrZ3JvdW5kOicgKyBlc2NhcGVBdHRyKGcuaGludGVyZ3J1bmQgfHwg JyM2NjYnKSArICc7Y29sb3I6JyArIGVzY2FwZUF0dHIoZy5zY2hyaWZ0IHx8ICcjZmZmJykgKyAn O21hcmdpbi1yaWdodDo4cHgiPicgKyBlc2NhcGVIVE1MKGdyTmFtZSkgKyAnPC9zcGFuPicgKwog ICAgICAgICAgICAnPHNwYW4gc3R5bGU9ImNvbG9yOnZhcigtLXRleHQtaGVhZGluZykiPicgKyBl c2NhcGVIVE1MKGJleikgKyAnPC9zcGFuPicgKwogICAgICAgICAgICAnPC90ZD48L3RyPic7CiAg ICB9CgogICAgdmFyIGh0bWwgPSAnJzsKICAgIGdydXBwZW5SZWloZW5mb2xnZS5mb3JFYWNoKGZ1 bmN0aW9uKGdyTmFtZSkgewogICAgICAgIHZhciBsaXN0ZSA9IHBlcnNvbmVuUHJvR3J1cHBlW2dy TmFtZV07CiAgICAgICAgaWYgKCFsaXN0ZSB8fCAhbGlzdGUubGVuZ3RoKSByZXR1cm47CiAgICAg ICAgaHRtbCArPSB0cmVubmVyWmVpbGUoZ3JOYW1lKTsKICAgICAgICBsaXN0ZS5mb3JFYWNoKGZ1 bmN0aW9uKHApIHsgaHRtbCArPSBwZXJzb25aZWlsZShwKTsgfSk7CiAgICB9KTsKICAgIGlmICh1 bmJla2FubnRlR3J1cHBlLmxlbmd0aCkgewogICAgICAgIGh0bWwgKz0gJzx0ciBjbGFzcz0iZ3J1 cHBlbi10cmVubmVyLXplaWxlIj48dGQgY29sc3Bhbj0iMTUiIHN0eWxlPSJwYWRkaW5nOjhweCAx MnB4O2ZvbnQtd2VpZ2h0OjcwMDtjb2xvcjp2YXIoLS10ZXh0LW11dGVkKTtib3JkZXItdG9wOjJw eCBzb2xpZCB2YXIoLS1ib3JkZXItbGlnaHQpIj7igJQgb2huZSBHcnVwcGUg4oCUPC90ZD48L3Ry Pic7CiAgICAgICAgdW5iZWthbm50ZUdydXBwZS5mb3JFYWNoKGZ1bmN0aW9uKHApIHsgaHRtbCAr PSBwZXJzb25aZWlsZShwKTsgfSk7CiAgICB9CiAgICAvLyBXZW5uIHVlYmVyaGF1cHQga2VpbmUg UGVyc29uZW4gZ2VyZW5kZXJ0IHdlcmRlbiAoZnJpc2NoZXIgU3RhbmQgLwogICAgLy8gUmVzZXQg LyBoYXJ0ZSBGaWx0ZXIpLCBFbXB0eS1TdGF0ZSB6ZWlnZW4gc3RhdHQgbGVlcmVuIDx0Ym9keT4u CiAgICBpZiAoIWh0bWwpIHsKICAgICAgICBodG1sID0gYWRtaW5FbXB0eVplaWxlKDE1LCAnXHV7 MUY0NjR9JywKICAgICAgICAgICAgJ05vY2gga2VpbmUgUGVyc29uZW4gZXJmYXNzdCcsCiAgICAg ICAgICAgICdQZXJzb25lbiB3ZXJkZW4gaW4gZGVyIFRhYmVsbGUgcHJvIERpZW5zdGdydXBwZSBn cnVwcGllcnQuIEtsaWNrZSBvYmVuIGF1ZiDigJ5OZXVlIFBlcnNvbiIsIG9kZXIgaW1wb3J0aWVy ZSBlaW5lIHZvcmhhbmRlbmUgRXhjZWwtTGlzdGUgaW0gVGFiIOKAnkV4Y2VsLUltcG9ydCIuJyk7 CiAgICB9CiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncGVyc29uYWwtdGJvZHknKS5pbm5l ckhUTUwgPSBodG1sOwp9CgovLyA9PT09PSBBZG1pbjogTmV1aW1wb3J0LUJsb2NrID09PT09Ci8v Ci8vIFBlcnNvbmVuLCBkaWUgZGVyIEV4Y2VsLUltcG9ydCBmcmlzY2ggYW5nZWxlZ3QgaGF0LCB0 cmFnZW4gZWluZW4KLy8gYGltcG9ydE5ldUFtYC1NYXJrZXIuIFNvbGFuZ2UgZGllc2VyIGdlc2V0 enQgaXN0LCBlcnNjaGVpbnQgZGllIFBlcnNvbgovLyBpbSBCbG9jayBvYmVuIMO8YmVyIGRlciBU YWJlbGxlIOKAlCBtaXQgSW5saW5lLVNlbGVjdHMgZnVlciBEaWVuc3RncnVwcGUKLy8gdW5kIEZ1 bmt0aW9uIChkaWUgYmVpZGVuIFBmbGljaHRmZWxkZXIsIGRpZSBkZXIgRXhjZWwtSW1wb3J0IG5p Y2h0Ci8vIGF1dG9tYXRpc2NoIGhlcmxlaXRlbiBrYW5uKS4gUGVyIEtsaWNrIGF1ZiAiRXJsZWRp Z3QiIHdpcmQgZGVyIE1hcmtlcgovLyBlbnRmZXJudCB1bmQgZGllIFBlcnNvbiB3YW5kZXJ0IGlu IGRpZSBub3JtYWxlIFRhYmVsbGUuCmV4cG9ydCBmdW5jdGlvbiBuZXVpbXBvcnRCbG9ja1JlbmRl cm4oKSB7CiAgICB2YXIgYm94ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BlcnNvbmFsLW5l dWltcG9ydC1ibG9jaycpOwogICAgaWYgKCFib3gpIHJldHVybjsKICAgIHZhciBuZXVlID0gKFou cGxhbnVuZy5wZXJzb25lbiB8fCBbXSkuZmlsdGVyKGZ1bmN0aW9uKHApIHsKICAgICAgICByZXR1 cm4gcC5pbXBvcnROZXVBbSAmJiAhcC5nZWxvZXNjaHRBbTsKICAgIH0pLnNvcnQoZnVuY3Rpb24o YSwgYikgeyByZXR1cm4gKGEucG9zaXRpb24gfHwgOTk5KSAtIChiLnBvc2l0aW9uIHx8IDk5OSk7 IH0pOwogICAgaWYgKCFuZXVlLmxlbmd0aCkgewogICAgICAgIGJveC5jbGFzc0xpc3QuYWRkKCd2 ZXJzdGVja3QnKTsKICAgICAgICBib3guaW5uZXJIVE1MID0gJyc7CiAgICAgICAgcmV0dXJuOwog ICAgfQogICAgYm94LmNsYXNzTGlzdC5yZW1vdmUoJ3ZlcnN0ZWNrdCcpOwogICAgdmFyIGdydXBw ZW4gPSAoWi5hZG1pbi5ncnVwcGVuIHx8IFtdKS5tYXAoZnVuY3Rpb24oZykgeyByZXR1cm4gZy5u YW1lOyB9KTsKICAgIHZhciB6ZWlsZW4gPSBuZXVlLm1hcChmdW5jdGlvbihwKSB7CiAgICAgICAg dmFyIHBpZCA9IHAuaWQ7CiAgICAgICAgdmFyIGdycE9wdCA9ICc8b3B0aW9uIHZhbHVlPSIiJyAr ICghcC5ncnVwcGUgPyAnIHNlbGVjdGVkJyA6ICcnKSArICc+4oCUIEdydXBwZSB3w6RobGVuIOKA lDwvb3B0aW9uPicgKwogICAgICAgICAgICBncnVwcGVuLm1hcChmdW5jdGlvbihnKSB7CiAgICAg ICAgICAgICAgICByZXR1cm4gJzxvcHRpb24gdmFsdWU9IicgKyBlc2NhcGVBdHRyKGcpICsgJyIn ICsgKGcgPT09IHAuZ3J1cHBlID8gJyBzZWxlY3RlZCcgOiAnJykgKyAnPicgKyBlc2NhcGVIVE1M KGcpICsgJzwvb3B0aW9uPic7CiAgICAgICAgICAgIH0pLmpvaW4oJycpOwogICAgICAgIHZhciBm dW5rT3B0ID0gJzxvcHRpb24gdmFsdWU9IiInICsgKCFwLmZ1bmt0aW9uID8gJyBzZWxlY3RlZCcg OiAnJykgKyAnPuKAlCBvaG5lIEZ1bmt0aW9uIOKAlDwvb3B0aW9uPicgKwogICAgICAgICAgICAo Z2V0RnVua3Rpb25lbigpIHx8IFtdKS5tYXAoZnVuY3Rpb24oZikgewogICAgICAgICAgICAgICAg cmV0dXJuICc8b3B0aW9uIHZhbHVlPSInICsgZXNjYXBlQXR0cihmLmNvZGUpICsgJyInICsgKGYu Y29kZSA9PT0gcC5mdW5rdGlvbiA/ICcgc2VsZWN0ZWQnIDogJycpICsgJz4nICsgZXNjYXBlSFRN TChmLmNvZGUpICsgJzwvb3B0aW9uPic7CiAgICAgICAgICAgIH0pLmpvaW4oJycpOwogICAgICAg IHZhciBkZXRhaWwgPSBbXTsKICAgICAgICBpZiAocC5vZSkgICAgICBkZXRhaWwucHVzaCgnT0U6 IDxzdHJvbmc+JyArIGVzY2FwZUhUTUwocC5vZSkgKyAnPC9zdHJvbmc+Jyk7CiAgICAgICAgaWYg KHAudGVsZWZvbikgZGV0YWlsLnB1c2goJ1RlbDogJyArIGVzY2FwZUhUTUwocC50ZWxlZm9uKSk7 CiAgICAgICAgaWYgKHAucG9zaXRpb24gIT0gbnVsbCkgZGV0YWlsLnB1c2goJ1Jhbmc6ICcgKyBl c2NhcGVIVE1MKFN0cmluZyhwLnBvc2l0aW9uKSkpOwogICAgICAgIHZhciBkZXRhaWxIdG1sID0g ZGV0YWlsLmxlbmd0aCA/ICc8ZGl2IGNsYXNzPSJuZXVpbXBvcnQtZGV0YWlsIj4nICsgZGV0YWls LmpvaW4oJyAmbmJzcDvCtyZuYnNwOyAnKSArICc8L2Rpdj4nIDogJyc7CiAgICAgICAgcmV0dXJu ICc8ZGl2IGNsYXNzPSJuZXVpbXBvcnQtemVpbGUiIGRhdGEtaWQ9IicgKyBwaWQgKyAnIj4nICsK ICAgICAgICAgICAgJzxkaXYgY2xhc3M9Im5ldWltcG9ydC1uYW1lIj4nICsKICAgICAgICAgICAg ICAgICc8c3Ryb25nPicgKyBlc2NhcGVIVE1MKHAubmFtZSB8fCAnJykgKyAnPC9zdHJvbmc+JyAr CiAgICAgICAgICAgICAgICAnPGlucHV0IHR5cGU9InRleHQiIGNsYXNzPSJmb3JtLWlucHV0IG5l dWltcG9ydC12b3JuYW1lIiBkYXRhLWlkPSInICsgcGlkICsgJyIgZGF0YS1mZWxkPSJ2b3JuYW1l IiB2YWx1ZT0iJyArIGVzY2FwZUF0dHIocC52b3JuYW1lIHx8ICcnKSArICciIHBsYWNlaG9sZGVy PSJWb3JuYW1lIOKApiIgc3R5bGU9Im1hcmdpbi1sZWZ0OjhweDt3aWR0aDoxNjBweDtmb250LXNp emU6MTNweCI+JyArCiAgICAgICAgICAgICAgICBkZXRhaWxIdG1sICsKICAgICAgICAgICAgJzwv ZGl2PicgKwogICAgICAgICAgICAnPGRpdiBjbGFzcz0ibmV1aW1wb3J0LWZlbGRlciI+JyArCiAg ICAgICAgICAgICAgICAnPHNlbGVjdCBjbGFzcz0iZm9ybS1pbnB1dCBuZXVpbXBvcnQtZmVsZCIg ZGF0YS1pZD0iJyArIHBpZCArICciIGRhdGEtZmVsZD0iZ3J1cHBlIiBzdHlsZT0id2lkdGg6MTMw cHgiIHRpdGxlPSJEaWVuc3RncnVwcGUg4oCUIFBmbGljaHRmZWxkLCBkYW1pdCBkaWUgUGVyc29u IGluIGRlciBQbGFudW5nIGVyc2NoZWludCI+JyArIGdycE9wdCArICc8L3NlbGVjdD4nICsKICAg ICAgICAgICAgICAgICc8c2VsZWN0IGNsYXNzPSJmb3JtLWlucHV0IG5ldWltcG9ydC1mZWxkIiBk YXRhLWlkPSInICsgcGlkICsgJyIgZGF0YS1mZWxkPSJmdW5rdGlvbiIgc3R5bGU9IndpZHRoOjE2 MHB4IiB0aXRsZT0iU3RhbW0tRnVua3Rpb24gKG9wdGlvbmFsLCBrYW5uIHNww6R0ZXIgZ2VzZXR6 dCB3ZXJkZW4pIj4nICsgZnVua09wdCArICc8L3NlbGVjdD4nICsKICAgICAgICAgICAgJzwvZGl2 PicgKwogICAgICAgICAgICAnPGRpdiBjbGFzcz0ibmV1aW1wb3J0LWFrdGlvbmVuIj4nICsKICAg ICAgICAgICAgICAgICc8YnV0dG9uIGNsYXNzPSJidG4gYnRuLXByaW1hZXIgYnRuLWtsZWluIiBk YXRhLW5ldWltcG9ydC1ha3Rpb249ImJlYXJiZWl0ZW4iIGRhdGEtaWQ9IicgKyBwaWQgKyAnIiB0 aXRsZT0iVm9sbHN0w6RuZGlnZW4gQmVhcmJlaXRlbi1EaWFsb2cgw7ZmZm5lbiI+QmVhcmJlaXRl bjwvYnV0dG9uPicgKwogICAgICAgICAgICAgICAgJzxidXR0b24gY2xhc3M9ImJ0biBidG4tZXJm b2xnIGJ0bi1rbGVpbiIgZGF0YS1uZXVpbXBvcnQtYWt0aW9uPSJlcmxlZGlndCIgZGF0YS1pZD0i JyArIHBpZCArICciIHRpdGxlPSJBdXMgZGVtIE5ldWltcG9ydC1CbG9jayBlbnRmZXJuZW4g4oCU IFBlcnNvbiBibGVpYnQgYWt0aXYiPkVybGVkaWd0PC9idXR0b24+JyArCiAgICAgICAgICAgICAg ICAnPGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1nZWZhaHIgYnRuLWtsZWluIiBkYXRhLW5ldWltcG9y dC1ha3Rpb249InZlcndlcmZlbiIgZGF0YS1pZD0iJyArIHBpZCArICciIHRpdGxlPSJQZXJzb24g a29tcGxldHQgbMO2c2NoZW4gKEV4Y2VsLUltcG9ydCB3YXIgZWluIEZlaGxpbXBvcnQpIj5WZXJ3 ZXJmZW48L2J1dHRvbj4nICsKICAgICAgICAgICAgJzwvZGl2PicgKwogICAgICAgICc8L2Rpdj4n OwogICAgfSkuam9pbignJyk7CiAgICB2YXIgYWxsZUVybGVkaWdlbkJ0biA9IG5ldWUubGVuZ3Ro ID49IDIKICAgICAgICA/ICc8YnV0dG9uIGNsYXNzPSJidG4gYnRuLXNlayBidG4ta2xlaW4iIGlk PSJuZXVpbXBvcnQtYWxsZS1lcmxlZGlndCIgdGl0bGU9Ik1hcmtlciBiZWkgYWxsZW4gUGVyc29u ZW4gaW0gQmxvY2sgZW50ZmVybmVuIOKAlCBTdGFtbWRhdGVuIGJsZWliZW4gZXJoYWx0ZW4iPkFs bGUgYWxzIGVybGVkaWd0IG1hcmtpZXJlbjwvYnV0dG9uPicKICAgICAgICA6ICcnOwogICAgYm94 LmlubmVySFRNTCA9CiAgICAgICAgJzxkaXYgY2xhc3M9Im5ldWltcG9ydC1rb3BmIj4nICsKICAg ICAgICAgICAgJzxkaXY+JyArCiAgICAgICAgICAgICAgICAnPGgzPk5ldSBpbXBvcnRpZXJ0IMK3 ICcgKyBuZXVlLmxlbmd0aCArICcgUGVyc29uJyArIChuZXVlLmxlbmd0aCA9PT0gMSA/ICcnIDog J2VuJykgKyAnPC9oMz4nICsKICAgICAgICAgICAgICAgICc8cD5EaWVzZSBQZXJzb25lbiB3dXJk ZW4gZ2VyYWRlIHBlciBFeGNlbC1JbXBvcnQgYW5nZWxlZ3QuIEJpdHRlIERpZW5zdGdydXBwZSAo UGZsaWNodCkgdW5kIG9wdGlvbmFsIFZvcm5hbWUvRnVua3Rpb24gZXJnw6RuemVuLCBkYW5uIGF1 ZiA8ZW0+RXJsZWRpZ3Q8L2VtPiBrbGlja2VuLjwvcD4nICsKICAgICAgICAgICAgJzwvZGl2Picg KwogICAgICAgICAgICAnPGRpdj4nICsgYWxsZUVybGVkaWdlbkJ0biArICc8L2Rpdj4nICsKICAg ICAgICAnPC9kaXY+JyArCiAgICAgICAgJzxkaXYgY2xhc3M9Im5ldWltcG9ydC1saXN0ZSI+JyAr IHplaWxlbiArICc8L2Rpdj4nOwogICAgLy8gRXZlbnQtQmluZGluZ3MKICAgIGJveC5xdWVyeVNl bGVjdG9yQWxsKCcubmV1aW1wb3J0LWZlbGQnKS5mb3JFYWNoKGZ1bmN0aW9uKHNlbCkgewogICAg ICAgIHNlbC5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCBmdW5jdGlvbigpIHsKICAgICAgICAg ICAgbmV1aW1wb3J0RmVsZFNwZWljaGVybihwYXJzZUludChzZWwuZ2V0QXR0cmlidXRlKCdkYXRh LWlkJyksIDEwKSwgc2VsLmdldEF0dHJpYnV0ZSgnZGF0YS1mZWxkJyksIHNlbC52YWx1ZSk7CiAg ICAgICAgfSk7CiAgICB9KTsKICAgIGJveC5xdWVyeVNlbGVjdG9yQWxsKCcubmV1aW1wb3J0LXZv cm5hbWUnKS5mb3JFYWNoKGZ1bmN0aW9uKGlucCkgewogICAgICAgIGlucC5hZGRFdmVudExpc3Rl bmVyKCdibHVyJywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIG5ldWltcG9ydEZlbGRTcGVpY2hl cm4ocGFyc2VJbnQoaW5wLmdldEF0dHJpYnV0ZSgnZGF0YS1pZCcpLCAxMCksICd2b3JuYW1lJywg aW5wLnZhbHVlLnRyaW0oKSk7CiAgICAgICAgfSk7CiAgICAgICAgaW5wLmFkZEV2ZW50TGlzdGVu ZXIoJ2tleWRvd24nLCBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIGlmIChlLmtleSA9PT0gJ0Vu dGVyJykgeyBlLnByZXZlbnREZWZhdWx0KCk7IGlucC5ibHVyKCk7IH0KICAgICAgICB9KTsKICAg IH0pOwogICAgYm94LnF1ZXJ5U2VsZWN0b3JBbGwoJ1tkYXRhLW5ldWltcG9ydC1ha3Rpb25dJyku Zm9yRWFjaChmdW5jdGlvbihidG4pIHsKICAgICAgICBidG4uYWRkRXZlbnRMaXN0ZW5lcignY2xp Y2snLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgdmFyIGlkID0gcGFyc2VJbnQoYnRuLmdldEF0 dHJpYnV0ZSgnZGF0YS1pZCcpLCAxMCk7CiAgICAgICAgICAgIHZhciBha3QgPSBidG4uZ2V0QXR0 cmlidXRlKCdkYXRhLW5ldWltcG9ydC1ha3Rpb24nKTsKICAgICAgICAgICAgaWYgKGFrdCA9PT0g J2VybGVkaWd0JykgICAgbmV1aW1wb3J0RXJsZWRpZ3QoaWQpOwogICAgICAgICAgICBlbHNlIGlm IChha3QgPT09ICd2ZXJ3ZXJmZW4nKSAgIG5ldWltcG9ydFZlcndlcmZlbihpZCk7CiAgICAgICAg ICAgIGVsc2UgaWYgKGFrdCA9PT0gJ2JlYXJiZWl0ZW4nKSAgcGVyc29uQmVhcmJlaXRlbkRpYWxv ZyhpZCk7CiAgICAgICAgfSk7CiAgICB9KTsKICAgIHZhciBhbGxlQnRuID0gZG9jdW1lbnQuZ2V0 RWxlbWVudEJ5SWQoJ25ldWltcG9ydC1hbGxlLWVybGVkaWd0Jyk7CiAgICBpZiAoYWxsZUJ0bikg YWxsZUJ0bi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKCkgewogICAgICAgIGJl c3RhZXRpZ2VuKAogICAgICAgICAgICAnQWxsZSAnICsgbmV1ZS5sZW5ndGggKyAnIFBlcnNvbmVu IGF1cyBkZW0gTmV1aW1wb3J0LUJsb2NrIGVudGZlcm5lbj9cblxuJyArCiAgICAgICAgICAgICdE aWUgU3RhbW1kYXRlbiBibGVpYmVuIGVyaGFsdGVuLCBudXIgZGVyIE5ldWltcG9ydC1NYXJrZXIg d2lyZCB6dXLDvGNrZ2VzZXR6dC4nLAogICAgICAgICAgICBmdW5jdGlvbigpIHsgbmV1aW1wb3J0 QWxsZUVybGVkaWd0KG5ldWUubWFwKGZ1bmN0aW9uKHApIHsgcmV0dXJuIHAuaWQ7IH0pKTsgfSwK ICAgICAgICAgICAgeyB0aXRlbDogJ0FsbGUgYWxzIGVybGVkaWd0IG1hcmtpZXJlbicsIGphVGV4 dDogJ0VybGVkaWd0IG1hcmtpZXJlbicgfQogICAgICAgICk7CiAgICB9KTsKfQoKZXhwb3J0IGZ1 bmN0aW9uIG5ldWltcG9ydEZlbGRTcGVpY2hlcm4oaWQsIGZlbGQsIHdlcnQpIHsKICAgIHZhciBw ZXJzb24gPSAoWi5wbGFudW5nLnBlcnNvbmVuIHx8IFtdKS5maW5kKGZ1bmN0aW9uKHApIHsgcmV0 dXJuIHAuaWQgPT09IGlkOyB9KTsKICAgIGlmICghcGVyc29uKSByZXR1cm47CiAgICBpZiAoU3Ry aW5nKHBlcnNvbltmZWxkXSB8fCAnJykgPT09IFN0cmluZyh3ZXJ0IHx8ICcnKSkgcmV0dXJuOwog ICAgdmFyIHVwZGF0ZSA9IHt9OyB1cGRhdGVbZmVsZF0gPSB3ZXJ0OwogICAgYXBpUHV0KCcvYXBp L3BlcnNvbmVuLycgKyBpZCwgdXBkYXRlKS50aGVuKGZ1bmN0aW9uKCkgewogICAgICAgIHBlcnNv bltmZWxkXSA9IHdlcnQ7CiAgICAgICAgcGVyc29uZW5OZXVBdWZiYXVlbigpOwogICAgICAgIC8v IFRhYmVsbGUgKyBCbG9jayBuZXUsIGZhbGxzIEdydXBwZW4tQWVuZGVydW5nIGRpZSBTb3J0aWVy dW5nIGJlZWluZmx1c3N0CiAgICAgICAgcGVyc29uYWxUYWJlbGxlUmVuZGVybigpOwogICAgICAg IGlmICh0eXBlb2YgbmFtZW5SZW5kZXJuID09PSAnZnVuY3Rpb24nKSB7CiAgICAgICAgICAgIG5h bWVuUmVuZGVybigpOwogICAgICAgICAgICBkYXRlbkdyaWRSZW5kZXJuKCk7CiAgICAgICAgICAg IGtvcGZSZW5kZXJuKCk7CiAgICAgICAgfQogICAgfSkuY2F0Y2goZnVuY3Rpb24oZSkgeyB0b2Fz dCgnRmVobGVyOiAnICsgZS5tZXNzYWdlLCAnZmVobGVyJyk7IH0pOwp9CgpleHBvcnQgZnVuY3Rp b24gbmV1aW1wb3J0RXJsZWRpZ3QoaWQpIHsKICAgIC8vIE1hcmtlciBlbnRmZXJuZW46IFBVVCBt aXQgaW1wb3J0TmV1QW09bnVsbC4gU2VydmVyIHNjaHJlaWJ0IGRhcyBGZWxkCiAgICAvLyBlaW5m YWNoIHVtLCBpbiBkZXIgRGF0ZWkgc3RlaHQgZGFubiBpbXBvcnROZXVBbTogbnVsbCDigJQgZGVy IEZpbHRlcgogICAgLy8gInAuaW1wb3J0TmV1QW0iIGlzdCBmYWxzeSB1bmQgZGllIFBlcnNvbiBl cnNjaGVpbnQgbmljaHQgbWVociBpbSBCbG9jay4KICAgIGFwaVB1dCgnL2FwaS9wZXJzb25lbi8n ICsgaWQsIHsgaW1wb3J0TmV1QW06IG51bGwgfSkudGhlbihmdW5jdGlvbigpIHsKICAgICAgICB2 YXIgcCA9IChaLnBsYW51bmcucGVyc29uZW4gfHwgW10pLmZpbmQoZnVuY3Rpb24oeCkgeyByZXR1 cm4geC5pZCA9PT0gaWQ7IH0pOwogICAgICAgIGlmIChwKSBwLmltcG9ydE5ldUFtID0gbnVsbDsK ICAgICAgICBwZXJzb25hbFRhYmVsbGVSZW5kZXJuKCk7CiAgICAgICAgdG9hc3QoJ1BlcnNvbiBh dXMgTmV1aW1wb3J0LUJsb2NrIGVudGZlcm50JywgJ2VyZm9sZycpOwogICAgfSkuY2F0Y2goZnVu Y3Rpb24oZSkgeyB0b2FzdCgnRmVobGVyOiAnICsgZS5tZXNzYWdlLCAnZmVobGVyJyk7IH0pOwp9 CgpleHBvcnQgZnVuY3Rpb24gbmV1aW1wb3J0QWxsZUVybGVkaWd0KGlkcykgewogICAgLy8gU2Vx dWVuemllbGwgZHVyY2hnZWhlbiwgZGFtaXQgU2VydmVyLUxhc3QgYmVncmVuenQgYmxlaWJ0IHVu ZCBkZXIKICAgIC8vIGxldHp0ZSBQVVQgZGllIFJlbmRlcmluZy1Ba3R1YWxpc2llcnVuZyB0cmln Z2VybiBrYW5uLgogICAgdmFyIGkgPSAwOwogICAgZnVuY3Rpb24gbmFlY2hzdGUoKSB7CiAgICAg ICAgaWYgKGkgPj0gaWRzLmxlbmd0aCkgewogICAgICAgICAgICB0b2FzdChpZHMubGVuZ3RoICsg JyBQZXJzb24nICsgKGlkcy5sZW5ndGggPT09IDEgPyAnJyA6ICdlbicpICsgJyBhdXMgTmV1aW1w b3J0LUJsb2NrIGVudGZlcm50JywgJ2VyZm9sZycpOwogICAgICAgICAgICBwZXJzb25hbFRhYmVs bGVSZW5kZXJuKCk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgICAgdmFyIGlk ID0gaWRzW2krK107CiAgICAgICAgYXBpUHV0KCcvYXBpL3BlcnNvbmVuLycgKyBpZCwgeyBpbXBv cnROZXVBbTogbnVsbCB9KS50aGVuKGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgcCA9ICha LnBsYW51bmcucGVyc29uZW4gfHwgW10pLmZpbmQoZnVuY3Rpb24oeCkgeyByZXR1cm4geC5pZCA9 PT0gaWQ7IH0pOwogICAgICAgICAgICBpZiAocCkgcC5pbXBvcnROZXVBbSA9IG51bGw7CiAgICAg ICAgICAgIG5hZWNoc3RlKCk7CiAgICAgICAgfSkuY2F0Y2goZnVuY3Rpb24oZSkgewogICAgICAg ICAgICB0b2FzdCgnRmVobGVyIGJlaSBJRCAnICsgaWQgKyAnOiAnICsgZS5tZXNzYWdlLCAnZmVo bGVyJyk7CiAgICAgICAgICAgIHBlcnNvbmFsVGFiZWxsZVJlbmRlcm4oKTsKICAgICAgICB9KTsK ICAgIH0KICAgIG5hZWNoc3RlKCk7Cn0KCmV4cG9ydCBmdW5jdGlvbiBuZXVpbXBvcnRWZXJ3ZXJm ZW4oaWQpIHsKICAgIHZhciBwZXJzb24gPSAoWi5wbGFudW5nLnBlcnNvbmVuIHx8IFtdKS5maW5k KGZ1bmN0aW9uKHApIHsgcmV0dXJuIHAuaWQgPT09IGlkOyB9KTsKICAgIGlmICghcGVyc29uKSBy ZXR1cm47CiAgICBiZXN0YWV0aWdlbigKICAgICAgICAnUGVyc29uICInICsgKHBlcnNvbi5uYW1l IHx8ICgnSUQgJyArIGlkKSkgKyAnIiBlbmRnw7xsdGlnIGzDtnNjaGVuP1xuXG4nICsKICAgICAg ICAnVmVyd2VuZGUgZGFzIG51ciwgd2VubiBkZXIgRXhjZWwtSW1wb3J0IGRpZXNlIFBlcnNvbiBm w6Rsc2NobGljaCBhbmdlbGVndCBoYXQuICcgKwogICAgICAgICdEaWUgU3RhbW1kYXRlbiBnZWhl biB2ZXJsb3Jlbi4nLAogICAgICAgIGZ1bmN0aW9uKCkgewogICAgICAgICAgICBmZXRjaCgnL2Fw aS9wZXJzb25lbi8nICsgaWQgKyAnP2VuZGd1ZWx0aWc9MScsIHsgbWV0aG9kOiAnREVMRVRFJyB9 KS50aGVuKGZ1bmN0aW9uKHIpIHsKICAgICAgICAgICAgICAgIGlmICghci5vaykgcmV0dXJuIHIu anNvbigpLnRoZW4oZnVuY3Rpb24oYikgeyB0aHJvdyBuZXcgRXJyb3IoYi5mZWhsZXIgfHwgKCdI VFRQICcgKyByLnN0YXR1cykpOyB9KTsKICAgICAgICAgICAgICAgIFoucGxhbnVuZy5wZXJzb25l biA9IChaLnBsYW51bmcucGVyc29uZW4gfHwgW10pLmZpbHRlcihmdW5jdGlvbih4KSB7IHJldHVy biB4LmlkICE9PSBpZDsgfSk7CiAgICAgICAgICAgICAgICBwZXJzb25lbk5ldUF1ZmJhdWVuKCk7 CiAgICAgICAgICAgICAgICBwZXJzb25hbFRhYmVsbGVSZW5kZXJuKCk7CiAgICAgICAgICAgICAg ICBpZiAodHlwZW9mIG5hbWVuUmVuZGVybiA9PT0gJ2Z1bmN0aW9uJykgewogICAgICAgICAgICAg ICAgICAgIG5hbWVuUmVuZGVybigpOwogICAgICAgICAgICAgICAgICAgIGRhdGVuR3JpZFJlbmRl cm4oKTsKICAgICAgICAgICAgICAgICAgICBrb3BmUmVuZGVybigpOwogICAgICAgICAgICAgICAg fQogICAgICAgICAgICAgICAgdG9hc3QoJ1BlcnNvbiB2ZXJ3b3JmZW4nLCAnZXJmb2xnJyk7CiAg ICAgICAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uKGUpIHsgdG9hc3QoJ0ZlaGxlcjogJyArIGUubWVz c2FnZSwgJ2ZlaGxlcicpOyB9KTsKICAgICAgICB9LAogICAgICAgIHsgdGl0ZWw6ICdQZXJzb24g dmVyd2VyZmVuJywgamFUZXh0OiAnRW5kZ8O8bHRpZyBsw7ZzY2hlbicsIGphRGFuZ2VyOiB0cnVl IH0KICAgICk7Cn0KCmV4cG9ydCBmdW5jdGlvbiBwZXJzb25TdGF0dXNTZXR6ZW4oaWQsIGFrdGl2 KSB7CiAgICBhcGlQdXQoJy9hcGkvcGVyc29uZW4vJyArIGlkLCB7IGFrdGl2OiBha3RpdiB9KS50 aGVuKGZ1bmN0aW9uKCkgewogICAgICAgIHZhciBwID0gWi5wbGFudW5nLnBlcnNvbmVuLmZpbmQo ZnVuY3Rpb24oeCkgeyByZXR1cm4geC5pZCA9PT0gaWQ7IH0pOwogICAgICAgIGlmIChwKSBwLmFr dGl2ID0gYWt0aXY7CiAgICAgICAgcGVyc29uZW5OZXVBdWZiYXVlbigpOwogICAgICAgIHBlcnNv bmFsVGFiZWxsZVJlbmRlcm4oKTsKICAgICAgICBpZiAodHlwZW9mIG5hbWVuUmVuZGVybiA9PT0g J2Z1bmN0aW9uJykgewogICAgICAgICAgICBuYW1lblJlbmRlcm4oKTsKICAgICAgICAgICAgZGF0 ZW5HcmlkUmVuZGVybigpOwogICAgICAgICAgICBrb3BmUmVuZGVybigpOwogICAgICAgIH0KICAg ICAgICB0b2FzdChha3RpdiA/ICdQZXJzb24gcmVha3RpdmllcnQnIDogJ1BlcnNvbiB1bWdlc2V0 enQnLCAnZXJmb2xnJyk7CiAgICB9KS5jYXRjaChmdW5jdGlvbihlKSB7IHRvYXN0KCdGZWhsZXI6 ICcgKyBlLm1lc3NhZ2UsICdmZWhsZXInKTsgfSk7Cn0KCmV4cG9ydCBmdW5jdGlvbiBwZXJzb25C ZWFyYmVpdGVuRGlhbG9nKGlkKSB7CiAgICB2YXIgcGVyc29uID0gKFoucGxhbnVuZy5wZXJzb25l biB8fCBbXSkuZmluZChmdW5jdGlvbihwKSB7IHJldHVybiBwLmlkID09PSBpZDsgfSk7CiAgICBp ZiAoIXBlcnNvbikgcmV0dXJuOwogICAgdmFyIGdydXBwZW4gPSAoWi5hZG1pbi5ncnVwcGVuIHx8 IFtdKS5tYXAoZnVuY3Rpb24oZykgeyByZXR1cm4gZy5uYW1lOyB9KTsKCiAgICAvLyBBa3R1ZWxs ZSBSYW5nLVBvc2l0aW9uIChQbGF0eiBpbiBkZXIgYWt0aXYgc29ydGllcnRlbiBMaXN0ZSkg4oCU IHJlYWQtb25seSwKICAgIC8vIHdpcmQgdmlhIFBmZWlsZSDilrIv4pa8IGluIGRlciBQZXJzb25h bC1UYWJlbGxlIGdlYWVuZGVydCwgbmljaHQgaGllci4KICAgIC8vIFp1c2FldHpsaWNoIHplaWdl biB3aXIgZGllIHJvaGUgcG9zaXRpb24gKEV4Y2VsLVJhbmd6YWhsKSwgZGFtaXQgZGVyCiAgICAv LyBVc2VyIGVya2VubnQsIG9iIGRpZSBSYW5nb3JkbnVuZyBhdXMgZWluZW0gSW1wb3J0IHVlYmVy bm9tbWVuIHd1cmRlLgogICAgdmFyIGFrdGl2ZSA9IChaLnBsYW51bmcucGVyc29uZW4gfHwgW10p CiAgICAgICAgLmZpbHRlcihmdW5jdGlvbih4KSB7IHJldHVybiB4LmFrdGl2OyB9KQogICAgICAg IC5zb3J0KGZ1bmN0aW9uKGEsIGIpIHsgcmV0dXJuIChhLnBvc2l0aW9uIHx8IDk5OSkgLSAoYi5w b3NpdGlvbiB8fCA5OTkpOyB9KTsKICAgIHZhciByYW5nSWR4ID0gYWt0aXZlLmZpbmRJbmRleChm dW5jdGlvbih4KSB7IHJldHVybiB4LmlkID09PSBpZDsgfSk7CiAgICB2YXIgcmFuZ1RleHQgPSAn 4oCUJzsKICAgIGlmIChwZXJzb24uYWt0aXYgJiYgcmFuZ0lkeCA+PSAwKSB7CiAgICAgICAgcmFu Z1RleHQgPSAnUmFuZyAnICsgKHJhbmdJZHggKyAxKSArICcgdm9uICcgKyBha3RpdmUubGVuZ3Ro OwogICAgICAgIGlmIChwZXJzb24ucG9zaXRpb24gIT0gbnVsbCkgcmFuZ1RleHQgKz0gJyDCtyBQ b3NpdGlvbiAnICsgcGVyc29uLnBvc2l0aW9uOwogICAgfQoKICAgIHZhciBrb2VycGVyID0gYXZh dGFyQmxvY2tIdG1sKHBlcnNvbikgKwogICAgICAgICc8ZGl2IHN0eWxlPSJkaXNwbGF5OmdyaWQ7 Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjFmciAxZnI7Z2FwOjAgMTZweCI+JyArCiAgICAgICAgJzxk aXYgY2xhc3M9ImZvcm0tZ3J1cHBlIGZvcm0tcGZsaWNodCI+PGxhYmVsPk5hbWU8L2xhYmVsPjxp bnB1dCB0eXBlPSJ0ZXh0IiBpZD0iZGxnLW5hbWUiIGNsYXNzPSJmb3JtLWlucHV0IiBzdHlsZT0i d2lkdGg6MTAwJSIgdmFsdWU9IicgKyBlc2NhcGVBdHRyKHBlcnNvbi5uYW1lKSArICciPjwvZGl2 PicgKwogICAgICAgICc8ZGl2IGNsYXNzPSJmb3JtLWdydXBwZSI+PGxhYmVsPlZvcm5hbWU8L2xh YmVsPjxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0iZGxnLXZvcm5hbWUiIGNsYXNzPSJmb3JtLWlucHV0 IiBzdHlsZT0id2lkdGg6MTAwJSIgdmFsdWU9IicgKyBlc2NhcGVBdHRyKHBlcnNvbi52b3JuYW1l IHx8ICcnKSArICciPjwvZGl2PicgKwogICAgICAgICc8ZGl2IGNsYXNzPSJmb3JtLWdydXBwZSI+ PGxhYmVsPkRpZW5zdGdyYWQ8L2xhYmVsPjxzZWxlY3QgaWQ9ImRsZy1kaWVuc3RncmFkIiBjbGFz cz0iZm9ybS1pbnB1dCIgc3R5bGU9IndpZHRoOjEwMCUiPicgKwogICAgICAgICc8b3B0aW9uIHZh bHVlPSIiJyArICghcGVyc29uLmRpZW5zdGdyYWQgPyAnIHNlbGVjdGVkJyA6ICcnKSArICc+4oCU IG9obmUg4oCUPC9vcHRpb24+JyArCiAgICAgICAgZ2V0RGllbnN0Z3JhZGUoKS5tYXAoZnVuY3Rp b24oZykgewogICAgICAgICAgICByZXR1cm4gJzxvcHRpb24gdmFsdWU9IicgKyBlc2NhcGVBdHRy KGcpICsgJyInICsgKGcgPT09IHBlcnNvbi5kaWVuc3RncmFkID8gJyBzZWxlY3RlZCcgOiAnJykg KyAnPicgKyBlc2NhcGVIVE1MKGcpICsgJzwvb3B0aW9uPic7CiAgICAgICAgfSkuam9pbignJykg KwogICAgICAgICc8L3NlbGVjdD48L2Rpdj4nICsKICAgICAgICAnPGRpdiBjbGFzcz0iZm9ybS1n cnVwcGUiPjxsYWJlbD5EaWVuc3RncnVwcGU8L2xhYmVsPjxzZWxlY3QgaWQ9ImRsZy1ncnVwcGUi IGNsYXNzPSJmb3JtLWlucHV0IiBzdHlsZT0id2lkdGg6MTAwJSI+JyArCiAgICAgICAgZ3J1cHBl bi5tYXAoZnVuY3Rpb24oZykgeyByZXR1cm4gJzxvcHRpb24nICsgKGcgPT09IHBlcnNvbi5ncnVw cGUgPyAnIHNlbGVjdGVkJyA6ICcnKSArICc+JyArIGVzY2FwZUhUTUwoZykgKyAnPC9vcHRpb24+ JzsgfSkuam9pbignJykgKwogICAgICAgICc8L3NlbGVjdD48L2Rpdj4nICsKICAgICAgICAnPGRp diBjbGFzcz0iZm9ybS1ncnVwcGUiPjxsYWJlbD5GdW5rdGlvbjwvbGFiZWw+PHNlbGVjdCBpZD0i ZGxnLWZ1bmt0aW9uIiBjbGFzcz0iZm9ybS1pbnB1dCIgc3R5bGU9IndpZHRoOjEwMCUiIHRpdGxl PSJTdGFtbS1GdW5rdGlvbjogYmVzdGltbXQgZGllIFZlcmFudHdvcnR1bmdzLVJlaWhlbmZvbGdl IGluIGRlciBTY2hpY2h0Ij4nICsKICAgICAgICAnPG9wdGlvbiB2YWx1ZT0iIicgKyAoIXBlcnNv bi5mdW5rdGlvbiA/ICcgc2VsZWN0ZWQnIDogJycpICsgJz7igJQgb2huZSBGdW5rdGlvbiDigJQ8 L29wdGlvbj4nICsKICAgICAgICBnZXRGdW5rdGlvbmVuKCkubWFwKGZ1bmN0aW9uKGYpIHsKICAg ICAgICAgICAgcmV0dXJuICc8b3B0aW9uIHZhbHVlPSInICsgZXNjYXBlQXR0cihmLmNvZGUpICsg JyInICsgKGYuY29kZSA9PT0gcGVyc29uLmZ1bmt0aW9uID8gJyBzZWxlY3RlZCcgOiAnJykgKyAn PicgKyBlc2NhcGVIVE1MKGYuY29kZSkgKyAnPC9vcHRpb24+JzsKICAgICAgICB9KS5qb2luKCcn KSArCiAgICAgICAgJzwvc2VsZWN0PjwvZGl2PicgKwogICAgICAgICc8ZGl2IGNsYXNzPSJmb3Jt LWdydXBwZSIgaWQ9ImRsZy1lbGRnbC1ncnVwcGUiPicgKwogICAgICAgICAgICAnPGxhYmVsPlZJ MyBER0w8L2xhYmVsPicgKwogICAgICAgICAgICBlbGRnbFRvZ2dsZUh0bWwocGVyc29uLmVsRGds UXVhbGlmaXppZXJ0KSArCiAgICAgICAgJzwvZGl2PicgKwogICAgICAgICc8ZGl2IGNsYXNzPSJm b3JtLWdydXBwZSI+PGxhYmVsPk9FIChTdGFuZG9ydCk8L2xhYmVsPjxpbnB1dCB0eXBlPSJ0ZXh0 IiBpZD0iZGxnLW9lIiBjbGFzcz0iZm9ybS1pbnB1dCIgc3R5bGU9IndpZHRoOjEwMCUiIHZhbHVl PSInICsgZXNjYXBlQXR0cihwZXJzb24ub2UgfHwgJycpICsgJyIgcGxhY2Vob2xkZXI9InouQi4g S0EsIEhBLCBCTyI+PC9kaXY+JyArCiAgICAgICAgJzxkaXYgY2xhc3M9ImZvcm0tZ3J1cHBlIj48 bGFiZWw+VGVsZWZvbjwvbGFiZWw+PGlucHV0IHR5cGU9InRleHQiIGlkPSJkbGctdGVsZWZvbiIg Y2xhc3M9ImZvcm0taW5wdXQiIHN0eWxlPSJ3aWR0aDoxMDAlIiB2YWx1ZT0iJyArIGVzY2FwZUF0 dHIocGVyc29uLnRlbGVmb24gfHwgJycpICsgJyIgcGxhY2Vob2xkZXI9InouQi4gNDUyMCI+PC9k aXY+JyArCiAgICAgICAgJzxkaXYgY2xhc3M9ImZvcm0tZ3J1cHBlIj48bGFiZWw+TlctS2VubnVu ZzwvbGFiZWw+PGlucHV0IHR5cGU9InRleHQiIGlkPSJkbGctbndrZW5udW5nIiBjbGFzcz0iZm9y bS1pbnB1dCIgc3R5bGU9IndpZHRoOjEwMCUiIHZhbHVlPSInICsgZXNjYXBlQXR0cihwZXJzb24u bndLZW5udW5nIHx8ICcnKSArICciIHBsYWNlaG9sZGVyPSJET01BSU5cXHVzZXIiPjwvZGl2Picg KwogICAgICAgICc8ZGl2IGNsYXNzPSJmb3JtLWdydXBwZSI+PGxhYmVsPkUtTWFpbDwvbGFiZWw+ PGlucHV0IHR5cGU9ImVtYWlsIiBpZD0iZGxnLWVtYWlsIiBjbGFzcz0iZm9ybS1pbnB1dCIgc3R5 bGU9IndpZHRoOjEwMCUiIHZhbHVlPSInICsgZXNjYXBlQXR0cihwZXJzb24uZW1haWwgfHwgJycp ICsgJyIgcGxhY2Vob2xkZXI9IkJlbmFjaHJpY2h0aWd1bmcgYmVpIMOEbmRlcnVuZ2VuIj48L2Rp dj4nICsKICAgICAgICAnPGRpdiBjbGFzcz0iZm9ybS1ncnVwcGUiPjxsYWJlbD5HZWJ1cnRzZGF0 dW08L2xhYmVsPjxpbnB1dCB0eXBlPSJkYXRlIiBpZD0iZGxnLWdlYnVydHNkYXR1bSIgY2xhc3M9 ImZvcm0taW5wdXQiIHN0eWxlPSJ3aWR0aDoxMDAlIiB2YWx1ZT0iJyArIGVzY2FwZUF0dHIocGVy c29uLmdlYnVydHNkYXR1bSB8fCAnJykgKyAnIj48L2Rpdj4nICsKICAgICAgICAnPGRpdiBjbGFz cz0iZm9ybS1ncnVwcGUiPjxsYWJlbD5SYW5nZm9sZ2U8L2xhYmVsPjxpbnB1dCB0eXBlPSJ0ZXh0 IiBjbGFzcz0iZm9ybS1pbnB1dCIgc3R5bGU9IndpZHRoOjEwMCU7YmFja2dyb3VuZDp2YXIoLS1i Zy1tdXRlZCk7Y29sb3I6dmFyKC0tdGV4dC1tdXRlZCkiIHZhbHVlPSInICsgZXNjYXBlQXR0cihy YW5nVGV4dCkgKyAnIiByZWFkb25seSB0aXRsZT0iV2lyZCB1ZWJlciBkaWUgUGZlaWxlIOKWsi/i lrwgaW4gZGVyIFBlcnNvbmFsLVRhYmVsbGUgZ2VhZW5kZXJ0Ij48L2Rpdj4nICsKICAgICAgICAv LyBTY2hpY2h0cm90YXRpb24gYXVzIFN0YW5kb3J0ICsgRGllbnN0Z3J1cHBlIGFiZ2VsZWl0ZXQg KFBoYXNlIDMsCiAgICAgICAgLy8gcmVhZC1vbmx5KS4gUGZsZWdlIGVyZm9sZ3QgaW5kaXJla3Q6 IFN0YW5kb3J0LVNjaGljaHRmb2xnZSBpbQogICAgICAgIC8vIEFkbWluLVRhYiAiU3RhbmRvcnRl IiArIERpZW5zdGdydXBwZSBvYmVuIGltIHNlbGJlbiBNb2RhbC4KICAgICAgICAoZnVuY3Rpb24o KSB7CiAgICAgICAgICAgIHZhciBoZXV0ZSA9IGRhdHVtU3RyKG5ldyBEYXRlKCkpOwogICAgICAg ICAgICB2YXIgc2NoaWNodCA9IHBlcnNvblNjaGljaHRBbShwZXJzb24sIGhldXRlKTsKICAgICAg ICAgICAgdmFyIHcgPSBfcGVyc29uTmFlY2hzdGVyV2VjaHNlbChwZXJzb24sIGhldXRlKTsKICAg ICAgICAgICAgaWYgKCFzY2hpY2h0KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJzxkaXYgY2xh c3M9ImZvcm0tZ3J1cHBlIj48bGFiZWw+U2NoaWNodHJvdGF0aW9uPC9sYWJlbD4nICsKICAgICAg ICAgICAgICAgICAgICAnPGlucHV0IHR5cGU9InRleHQiIGNsYXNzPSJmb3JtLWlucHV0IiBzdHls ZT0id2lkdGg6MTAwJTtiYWNrZ3JvdW5kOnZhcigtLWJnLW11dGVkKTtjb2xvcjp2YXIoLS10ZXh0 LW11dGVkKSIgcmVhZG9ubHkgdmFsdWU9IuKAlCBuaWNodCB6dW9yZGVuYmFyIChTdGFuZG9ydC9H cnVwcGUgZmVobHQgb2RlciBQb29sKSIgdGl0bGU9IlBlcnNvbiBoYXQga2VpbmUgU3RhbmRvcnQt Um90YXRpb24uIFouQi4gV0wvVkQvUG9vbC1NaXRhcmJlaXRlci4iPjwvZGl2Pic7CiAgICAgICAg ICAgIH0KICAgICAgICAgICAgdmFyIGFrdHVlbGxMYWJlbCA9IHsgRjogJ0Zyw7xoc2NoaWNodCcs IFM6ICdTcMOkdHNjaGljaHQnLCBOOiAnTmFjaHRzY2hpY2h0JyB9W3NjaGljaHRdOwogICAgICAg ICAgICB2YXIgaW5mbyA9IGFrdHVlbGxMYWJlbDsKICAgICAgICAgICAgaWYgKHcpIHsKICAgICAg ICAgICAgICAgIHZhciBuYWNoTGFiZWwgPSB7IEY6ICdGcsO8aCcsIFM6ICdTcMOkdCcsIE46ICdO YWNodCcgfVt3Lm5hY2hdOwogICAgICAgICAgICAgICAgaW5mbyArPSAnIMK3IFdlY2hzZWwgJyAr IGRhdHVtRm9ybWF0REUody5kYXR1bSkgKyAnIOKGkiAnICsgbmFjaExhYmVsOwogICAgICAgICAg ICB9CiAgICAgICAgICAgIHJldHVybiAnPGRpdiBjbGFzcz0iZm9ybS1ncnVwcGUiPjxsYWJlbD5T Y2hpY2h0cm90YXRpb24gKGF1cyBTdGFuZG9ydCArIEdydXBwZSk8L2xhYmVsPicgKwogICAgICAg ICAgICAgICAgJzxpbnB1dCB0eXBlPSJ0ZXh0IiBjbGFzcz0iZm9ybS1pbnB1dCIgc3R5bGU9Indp ZHRoOjEwMCU7YmFja2dyb3VuZDp2YXIoLS1iZy1tdXRlZCk7Y29sb3I6dmFyKC0tdGV4dC1tdXRl ZCkiIHJlYWRvbmx5IHZhbHVlPSInICsgZXNjYXBlQXR0cihpbmZvKSArICciIHRpdGxlPSJIZXV0 aWdlciBTdGFuZCBsYXV0IFN0YW5kb3J0LVNjaGljaHRmb2xnZSB1bmQgRGllbnN0Z3J1cHBlLiBB ZW5kZXJ1bmdlbiBlcmZvbGdlbiB1ZWJlciBkaWUgU3RhbmRvcnQtU2NoaWNodGZvbGdlIGltIFRh YiBTdGFuZG9ydGUgKyBEaWVuc3RncnVwcGVuIG9iZW4uIj48L2Rpdj4nOwogICAgICAgIH0pKCkg KwogICAgICAgICc8ZGl2IGNsYXNzPSJmb3JtLWdydXBwZSI+PGxhYmVsPlN0YXR1czwvbGFiZWw+ PHNlbGVjdCBpZD0iZGxnLWFrdGl2IiBjbGFzcz0iZm9ybS1pbnB1dCIgc3R5bGU9IndpZHRoOjEw MCUiPicgKwogICAgICAgICc8b3B0aW9uIHZhbHVlPSJ0cnVlIicgKyAocGVyc29uLmFrdGl2ID8g JyBzZWxlY3RlZCcgOiAnJykgKyAnPkFrdGl2IChpbiBkZXIgUGxhbnVuZyk8L29wdGlvbj4nICsK ICAgICAgICAnPG9wdGlvbiB2YWx1ZT0iZmFsc2UiJyArICghcGVyc29uLmFrdGl2ID8gJyBzZWxl Y3RlZCcgOiAnJykgKyAnPlVtZ2VzZXR6dCAobmljaHQgaW4gZGVyIFBsYW51bmcpPC9vcHRpb24+ JyArCiAgICAgICAgJzwvc2VsZWN0PjwvZGl2PicgKwogICAgICAgIC8vIFByby1QZXJzb24gYXVz IGRlciBQbGFudW5nIGF1c2JsZW5kZW4gKFN1cGVyVXNlci1vbmx5KSDigJQgUGVuZGFudCB6dXIK ICAgICAgICAvLyBUb2dnbGUtU3BhbHRlIGluIGRlciBQZXJzb25hbC1UYWJlbGxlLgogICAgICAg IChaLnJlY2h0ZS5pc3RTdXBlclVzZXIKICAgICAgICAgICAgPyAnPGRpdiBjbGFzcz0iZm9ybS1n cnVwcGUiPjxsYWJlbD5QbGFudW5nc2Fuc2ljaHQ8L2xhYmVsPicgKwogICAgICAgICAgICAgICc8 bGFiZWwgc3R5bGU9ImRpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjhweDtmb250 LXNpemU6MTNweDtjdXJzb3I6cG9pbnRlciI+JyArCiAgICAgICAgICAgICAgJzxpbnB1dCB0eXBl PSJjaGVja2JveCIgaWQ9ImRsZy1pbnBsYW51bmciJyArIChwZXJzb24uaW5QbGFudW5nID09PSBm YWxzZSA/ICcgY2hlY2tlZCcgOiAnJykgKyAnPiAnICsKICAgICAgICAgICAgICAnSW4gUGxhbnVu ZyAvIFdvY2hlbnBsYW4gLyBQZXJzLiBQbGFuIGF1c2JsZW5kZW48L2xhYmVsPicgKwogICAgICAg ICAgICAgICc8ZGl2IHN0eWxlPSJmb250LXNpemU6MTFweDtjb2xvcjp2YXIoLS10ZXh0LW11dGVk KTttYXJnaW4tdG9wOjJweCI+UGVyc29uIGJsZWlidCBpbiBkZXIgUGVyc29uYWx2ZXJ3YWx0dW5n IHBmbGVnYmFyLCBlcnNjaGVpbnQgYWJlciBuaWNodCBpbiBkZW4gUGxhbnVuZ3NhbnNpY2h0ZW4u PC9kaXY+PC9kaXY+JwogICAgICAgICAgICA6ICcnKSArCiAgICAgICAgJzwvZGl2Pic7CgogICAg Ly8gWmVsbC1FZGl0LVJlY2h0ZS1TZWt0aW9uIOKAlCBudXIgZnVlciBTdXBlclVzZXIgc2ljaHRi YXIgKGFuZGVyZSBzb2xsZW4KICAgIC8vIGtlaW5lIFp1Z3JpZmZzcmVjaHRlIHZlcmFlbmRlcm4g a29lbm5lbiwgYXVjaCBuaWNodCBpaHJlIGVpZ2VuZW4pLgogICAgaWYgKFoucmVjaHRlLmlzdFN1 cGVyVXNlcikgewogICAgICAgIHZhciBlciA9IHBlcnNvbi5lZGl0UmVjaHRlIHx8IHt9OwogICAg ICAgIC8vIFNvcnRpZXJ1bmcgYWxwaGFiZXRpc2NoIG5hY2ggTmFjaG5hbWUsIFRpZWJyZWFrZXIg Vm9ybmFtZSAoVXNlci1XdW5zY2ggQy4yOgogICAgICAgIC8vIE1pdGJlYXJiZWl0ZXIgc29sbGVu IGltbWVyIGFscGhhYmV0aXNjaCBlcnNjaGVpbmVuLCB1bmFiaGFlbmdpZyB2b24gRXhjZWwtUG9z aXRpb24pLgogICAgICAgIHZhciBwZXJzb25lbiA9IChaLnBsYW51bmcucGVyc29uZW4gfHwgW10p LnNsaWNlKCkKICAgICAgICAgICAgLmZpbHRlcihmdW5jdGlvbih4KSB7IHJldHVybiB4LmFrdGl2 ICYmIHguaWQgIT09IHBlcnNvbi5pZDsgfSkKICAgICAgICAgICAgLnNvcnQoZnVuY3Rpb24oYSwg YikgewogICAgICAgICAgICAgICAgdmFyIGMgPSAoYS5uYW1lIHx8ICcnKS5sb2NhbGVDb21wYXJl KGIubmFtZSB8fCAnJywgJ2RlJyk7CiAgICAgICAgICAgICAgICBpZiAoYyAhPT0gMCkgcmV0dXJu IGM7CiAgICAgICAgICAgICAgICByZXR1cm4gKGEudm9ybmFtZSB8fCAnJykubG9jYWxlQ29tcGFy ZShiLnZvcm5hbWUgfHwgJycsICdkZScpOwogICAgICAgICAgICB9KTsKICAgICAgICB2YXIgc3Rh bmRvcnRlID0gKFouYWRtaW4uc3RhbmRvcnRlIHx8IFtdKS5tYXAoZnVuY3Rpb24ocykgeyByZXR1 cm4gcy5rdWVyemVsIHx8IHMubmFtZTsgfSkuZmlsdGVyKEJvb2xlYW4pOwogICAgICAgIGZ1bmN0 aW9uIGVyQ2hrKGlkLCBsYWJlbCwgY2hlY2tlZCkgewogICAgICAgICAgICByZXR1cm4gJzxsYWJl bCBzdHlsZT0iZGlzcGxheTppbmxpbmUtZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjZweDtt YXJnaW46MnB4IDEycHggMnB4IDA7Y3Vyc29yOnBvaW50ZXIiPjxpbnB1dCB0eXBlPSJjaGVja2Jv eCIgY2xhc3M9ImVkaXQtcmVjaHQtY2hrIiBkYXRhLXdlcnQ9IicgKyBlc2NhcGVBdHRyKGlkKSAr ICciJyArIChjaGVja2VkID8gJyBjaGVja2VkJyA6ICcnKSArICc+PHNwYW4+JyArIGVzY2FwZUhU TUwobGFiZWwpICsgJzwvc3Bhbj48L2xhYmVsPic7CiAgICAgICAgfQogICAgICAgIC8vIE1pa3Jv dGVhbS1Lb2xsZWdlbiBkZXIgYmVhcmJlaXRldGVuIFBlcnNvbiAoVW5pb24gdWViZXIgYWxsZSBU ZWFtcywKICAgICAgICAvLyBpbiBkZW5lbiBzaWUgTWl0Z2xpZWQgaXN0OyBvaG5lIHNpZSBzZWxi c3QpLiBXaXJkIGdlbnV0enQgZnVlciBlaW5lCiAgICAgICAgLy8gZWlnZW5lIFNla3Rpb24gIk1l aW4gTWlrcm90ZWFtIiBtaXQgVm9yaGFrZW4gYmVpbSBFcnN0LUtvbmZpZ3VyaWVyZW4uCiAgICAg ICAgdmFyIG1pa3JvSWRzID0gW107CiAgICAgICAgKFouYWRtaW4ubWlrcm90ZWFtcyB8fCBbXSku Zm9yRWFjaChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIGlmICghdCB8fCAhdC5wZXJzb25JZHMg fHwgdC5wZXJzb25JZHMuaW5kZXhPZihwZXJzb24uaWQpIDwgMCkgcmV0dXJuOwogICAgICAgICAg ICB0LnBlcnNvbklkcy5mb3JFYWNoKGZ1bmN0aW9uKHBpZCkgewogICAgICAgICAgICAgICAgdmFy IG4gPSBOdW1iZXIocGlkKTsKICAgICAgICAgICAgICAgIGlmIChuICE9PSBOdW1iZXIocGVyc29u LmlkKSAmJiBtaWtyb0lkcy5pbmRleE9mKG4pIDwgMCkgbWlrcm9JZHMucHVzaChuKTsKICAgICAg ICAgICAgfSk7CiAgICAgICAgfSk7CiAgICAgICAgLy8gTWlrcm90ZWFtIHdpcmQgbnVyIGJlaW0g ZXJzdGVuIE9lZmZuZW4gZWluZXMgbm9jaCBuaWUga29uZmlndXJpZXJ0ZW4KICAgICAgICAvLyBF aW50cmFncyB2b3JnZWhha3Qg4oCUIHNvbnN0IHJlc3Bla3RpZXJlbiB3aXIgZGllIGV4cGxpeml0 ZSBTVS1XYWhsLgogICAgICAgIHZhciBtaWtyb1ByZXNlbGVjdCA9ICFwZXJzb24uZWRpdFJlY2h0 ZTsKICAgICAgICAvLyBQZXJzb25lbiB3ZXJkZW4gYWxzIEJsb2NrLUxhYmVscyBnZXJlbmRlcnQs IGRhbWl0IGRhcyBFbHRlcm4tQ29udGFpbmVyCiAgICAgICAgLy8gcGVyIENTUyBjb2x1bW4tY291 bnQgZGllIExpc3RlIGFscGhhYmV0aXNjaCBpbiBTcGFsdGVuIGZsb3d0LgogICAgICAgIGZ1bmN0 aW9uIGVyQ2hrUGVyc29uKHApIHsKICAgICAgICAgICAgdmFyIHBpZCA9IE51bWJlcihwLmlkKTsK ICAgICAgICAgICAgdmFyIGNoZWNrZWQgPSAoZXIucGVyc29uZW5JZHMgfHwgW10pLmluZGV4T2Yo cGlkKSA+PSAwOwogICAgICAgICAgICBpZiAobWlrcm9QcmVzZWxlY3QgJiYgbWlrcm9JZHMuaW5k ZXhPZihwaWQpID49IDApIGNoZWNrZWQgPSB0cnVlOwogICAgICAgICAgICB2YXIgbmFtZSA9ICgo cC52b3JuYW1lID8gcC52b3JuYW1lICsgJyAnIDogJycpICsgcC5uYW1lKTsKICAgICAgICAgICAg cmV0dXJuICc8bGFiZWwgY2xhc3M9ImVyLXBlcnNvbmVuLXplaWxlIj4nICsKICAgICAgICAgICAg ICAgICc8aW5wdXQgdHlwZT0iY2hlY2tib3giIGNsYXNzPSJlZGl0LXJlY2h0LWNoayIgZGF0YS13 ZXJ0PSJQXycgKyBwLmlkICsgJyInICsgKGNoZWNrZWQgPyAnIGNoZWNrZWQnIDogJycpICsgJz4n ICsKICAgICAgICAgICAgICAgICc8c3BhbiBjbGFzcz0iZXItcGVyc29uZW4tbmFtZSI+JyArIGVz Y2FwZUhUTUwobmFtZSkgKyAnPC9zcGFuPicgKwogICAgICAgICAgICAgICAgJzxzcGFuIGNsYXNz PSJlci1wZXJzb25lbi1ncnVwcGUiPicgKyBlc2NhcGVIVE1MKHAuZ3J1cHBlIHx8ICcnKSArICc8 L3NwYW4+JyArCiAgICAgICAgICAgICc8L2xhYmVsPic7CiAgICAgICAgfQogICAgICAgIC8vIE1p a3JvdGVhbS1NaXRnbGllZGVyIHdlcmRlbiBhdXMgZGVuIG5hY2hmb2xnZW5kZW4gU2VrdGlvbmVu IGhlcmF1cy0KICAgICAgICAvLyBnZWZpbHRlcnQsIGRhbWl0IHNpZSBuaWNodCBkb3BwZWx0IGVy c2NoZWluZW4uCiAgICAgICAgdmFyIG1pa3JvUGVyc29uZW4gPSBwZXJzb25lbi5maWx0ZXIoZnVu Y3Rpb24ocCkgeyByZXR1cm4gbWlrcm9JZHMuaW5kZXhPZihOdW1iZXIocC5pZCkpID49IDA7IH0p OwogICAgICAgIHZhciByZXN0UGVyc29uZW4gID0gcGVyc29uZW4uZmlsdGVyKGZ1bmN0aW9uKHAp IHsgcmV0dXJuIG1pa3JvSWRzLmluZGV4T2YoTnVtYmVyKHAuaWQpKSA8IDA7IH0pOwogICAgICAg IHZhciBtaWtyb0ZpZWxkc2V0ID0gJyc7CiAgICAgICAgaWYgKG1pa3JvUGVyc29uZW4ubGVuZ3Ro KSB7CiAgICAgICAgICAgIG1pa3JvRmllbGRzZXQgPQogICAgICAgICAgICAgICAgJzxmaWVsZHNl dCBjbGFzcz0ia29sbGVnZW4tbWlrcm8iPicgKwogICAgICAgICAgICAgICAgICAgICc8bGVnZW5k Pk1laW4gTWlrcm90ZWFtICcgKwogICAgICAgICAgICAgICAgICAgICc8YnV0dG9uIHR5cGU9ImJ1 dHRvbiIgY2xhc3M9ImJ0biBidG4tc2VrIGJ0bi1rbGVpbiIgZGF0YS1ha3Rpb249ImtvbGxlZ2Vu LW1pa3JvLWFsbGUiIHN0eWxlPSJtYXJnaW4tbGVmdDo4cHgiPkFsbGUgbWFya2llcmVuPC9idXR0 b24+PC9sZWdlbmQ+JyArCiAgICAgICAgICAgICAgICAgICAgbWlrcm9QZXJzb25lbi5tYXAoZXJD aGtQZXJzb24pLmpvaW4oJycpICsKICAgICAgICAgICAgICAgICc8L2ZpZWxkc2V0Pic7CiAgICAg ICAgfQogICAgICAgIC8vIENoZXJyeS1QaWNrIDg5ZWIzYzcgKGhpbnRlciBUb2dnbGUgYGZlYXR1 cmVzLmtvbGxlZ2VuSGVydm9yaGViZW5gKToKICAgICAgICAvLyBEaXJla3RlIEtvbGxlZ2VuIChn bGVpY2hlciBTdGFuZG9ydCArIGdsZWljaGUgRGllbnN0Z3J1cHBlIHdpZSBkaWUKICAgICAgICAv LyBiZWFyYmVpdGV0ZSBQZXJzb24pIHdlcmRlbiBpbiBlaW5lciBlaWdlbmVuIFNla3Rpb24gbWl0 IEhlcnZvcmhlYnVuZwogICAgICAgIC8vIHVuZCAiQWxsZSBtYXJraWVyZW4iLUJ1dHRvbiBnZXJl bmRlcnQ7IGFsbGUgYW5kZXJlbiBQZXJzb25lbiBmb2xnZW4KICAgICAgICAvLyBkYXJ1bnRlciBt aXQgZWlnZW5lbSBCdXR0b24uCiAgICAgICAgdmFyIHBlcnNDYnM7CiAgICAgICAgaWYgKGZlYXR1 cmVJc3RBa3Rpdigna29sbGVnZW5IZXJ2b3JoZWJlbicpKSB7CiAgICAgICAgICAgIHZhciBtZWlu ZU9lICAgICA9IHBlcnNvbi5vZSB8fCAnJzsKICAgICAgICAgICAgdmFyIG1laW5lR3J1cHBlID0g cGVyc29uLmdydXBwZSB8fCAnJzsKICAgICAgICAgICAgdmFyIGRpcmVrdGUgPSByZXN0UGVyc29u ZW4uZmlsdGVyKGZ1bmN0aW9uKHApIHsgcmV0dXJuIChwLm9lIHx8ICcnKSA9PT0gbWVpbmVPZSAm JiAocC5ncnVwcGUgfHwgJycpID09PSBtZWluZUdydXBwZTsgfSk7CiAgICAgICAgICAgIHZhciBy ZXN0ICAgID0gcmVzdFBlcnNvbmVuLmZpbHRlcihmdW5jdGlvbihwKSB7IHJldHVybiAhKChwLm9l IHx8ICcnKSA9PT0gbWVpbmVPZSAmJiAocC5ncnVwcGUgfHwgJycpID09PSBtZWluZUdydXBwZSk7 IH0pOwogICAgICAgICAgICB2YXIga29udGV4dExhYmVsID0gJ09FOiAnICsgZXNjYXBlSFRNTCht ZWluZU9lIHx8ICfigJQnKSArICcsIEdydXBwZTogJyArIGVzY2FwZUhUTUwobWVpbmVHcnVwcGUg fHwgJ+KAlCcpOwogICAgICAgICAgICBwZXJzQ2JzID0gbWlrcm9GaWVsZHNldCArCiAgICAgICAg ICAgICAgICAnPGZpZWxkc2V0IGNsYXNzPSJrb2xsZWdlbi1kaXJla3QiPicgKwogICAgICAgICAg ICAgICAgICAgICc8bGVnZW5kPkRpcmVrdGUgS29sbGVnZW4gPHNwYW4gc3R5bGU9ImNvbG9yOnZh cigtLXRleHQtbXV0ZWQpO2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MTFweCI+KCcgKyBrb250 ZXh0TGFiZWwgKyAnKTwvc3Bhbj4gJyArCiAgICAgICAgICAgICAgICAgICAgJzxidXR0b24gdHlw ZT0iYnV0dG9uIiBjbGFzcz0iYnRuIGJ0bi1zZWsgYnRuLWtsZWluIiBkYXRhLWFrdGlvbj0ia29s bGVnZW4tZGlyZWt0LWFsbGUiIHN0eWxlPSJtYXJnaW4tbGVmdDo4cHgiPkFsbGUgbWFya2llcmVu PC9idXR0b24+PC9sZWdlbmQ+JyArCiAgICAgICAgICAgICAgICAgICAgKGRpcmVrdGUubGVuZ3Ro ID8gZGlyZWt0ZS5tYXAoZXJDaGtQZXJzb24pLmpvaW4oJycpIDogJzxzcGFuIHN0eWxlPSJjb2xv cjp2YXIoLS10ZXh0LW11dGVkKSI+4oCUIGtlaW5lIGRpcmVrdGVuIEtvbGxlZ2VuIHZvcmhhbmRl biDigJQ8L3NwYW4+JykgKwogICAgICAgICAgICAgICAgJzwvZmllbGRzZXQ+JyArCiAgICAgICAg ICAgICAgICAnPGZpZWxkc2V0IGNsYXNzPSJrb2xsZWdlbi1yZXN0Ij4nICsKICAgICAgICAgICAg ICAgICAgICAnPGxlZ2VuZD5BbGxlIMO8YnJpZ2VuICcgKwogICAgICAgICAgICAgICAgICAgICc8 YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0biBidG4tc2VrIGJ0bi1rbGVpbiIgZGF0YS1h a3Rpb249ImtvbGxlZ2VuLXJlc3QtYWxsZSIgc3R5bGU9Im1hcmdpbi1sZWZ0OjhweCI+QWxsZSBt YXJraWVyZW48L2J1dHRvbj48L2xlZ2VuZD4nICsKICAgICAgICAgICAgICAgICAgICAocmVzdC5s ZW5ndGggPyByZXN0Lm1hcChlckNoa1BlcnNvbikuam9pbignJykgOiAnPHNwYW4gc3R5bGU9ImNv bG9yOnZhcigtLXRleHQtbXV0ZWQpIj7igJQga2VpbmUg4oCUPC9zcGFuPicpICsKICAgICAgICAg ICAgICAgICc8L2ZpZWxkc2V0Pic7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgcGVyc0Ni cyA9IG1pa3JvRmllbGRzZXQgKyByZXN0UGVyc29uZW4ubWFwKGVyQ2hrUGVyc29uKS5qb2luKCcn KTsKICAgICAgICB9CiAgICAgICAgdmFyIGdyQ2JzID0gKFouYWRtaW4uZ3J1cHBlbiB8fCBbXSku bWFwKGZ1bmN0aW9uKGdyKSB7CiAgICAgICAgICAgIHJldHVybiBlckNoaygnR18nICsgZ3IubmFt ZSwgKGdyLmJlemVpY2hudW5nIHx8IGdyLm5hbWUpLCAoZXIuZGllbnN0Z3J1cHBlbiB8fCBbXSku aW5kZXhPZihnci5uYW1lKSA+PSAwKTsKICAgICAgICB9KS5qb2luKCcnKTsKICAgICAgICB2YXIg c3RDYnMgPSBzdGFuZG9ydGUubWFwKGZ1bmN0aW9uKHMpIHsKICAgICAgICAgICAgcmV0dXJuIGVy Q2hrKCdTXycgKyBzLCBzLCAoZXIuc3RhbmRvcnRlIHx8IFtdKS5pbmRleE9mKHMpID49IDApOwog ICAgICAgIH0pLmpvaW4oJycpOwoKICAgICAgICBrb2VycGVyICs9CiAgICAgICAgICAgICc8ZGV0 YWlscyBzdHlsZT0ibWFyZ2luLXRvcDoxNnB4O2JvcmRlcjoxcHggc29saWQgdmFyKC0tYm9yZGVy LWxpZ2h0KTtib3JkZXItcmFkaXVzOjRweDtwYWRkaW5nOjhweCAxMnB4Ij4nICsKICAgICAgICAg ICAgJzxzdW1tYXJ5IHN0eWxlPSJjdXJzb3I6cG9pbnRlcjtmb250LXdlaWdodDo2MDAiPlBsYW51 bmcgKG51ciBTdXBlclVzZXIpJyArCiAgICAgICAgICAgICAgICAnPHNwYW4gc3R5bGU9ImZvbnQt d2VpZ2h0OjQwMDtjb2xvcjp2YXIoLS10ZXh0LW11dGVkKTtmb250LXNpemU6MTFweDttYXJnaW4t bGVmdDo4cHgiPuKAlCBlaWdlbmUgWmVpbGUgaXN0IGltbWVyIGVybGF1YnQ8L3NwYW4+JyArCiAg ICAgICAgICAgICc8L3N1bW1hcnk+JyArCiAgICAgICAgICAgICc8cCBzdHlsZT0ibWFyZ2luOjhw eCAwO2ZvbnQtc2l6ZToxMnB4O2NvbG9yOnZhcigtLXRleHQtbXV0ZWQpIj5EaWVzZSBQZXJzb24g ZGFyZiB6dXPDpHR6bGljaCBkaWUgUGxhbnVuZ3N6ZWxsZW4gZm9sZ2VuZGVyIEVpbnRyw6RnZSDD pG5kZXJuOjwvcD4nICsKICAgICAgICAgICAgJzxoNCBzdHlsZT0ibWFyZ2luOjhweCAwIDRweCI+ RWluemVsbmUgUGVyc29uZW48L2g0PicgKwogICAgICAgICAgICAnPGRpdiBpZD0iZXItcGVyc29u ZW4iIGNsYXNzPSJlci1wZXJzb25lbi1ncmlkIj4nICsKICAgICAgICAgICAgICAgIChwZXJzQ2Jz IHx8ICc8c3BhbiBzdHlsZT0iY29sb3I6dmFyKC0tdGV4dC1tdXRlZCkiPktlaW5lIHdlaXRlcmVu IGFrdGl2ZW4gUGVyc29uZW48L3NwYW4+JykgKwogICAgICAgICAgICAnPC9kaXY+JyArCiAgICAg ICAgICAgICc8aDQgc3R5bGU9Im1hcmdpbjo4cHggMCA0cHgiPkdhbnplIERpZW5zdGdydXBwZW48 L2g0PicgKwogICAgICAgICAgICAnPGRpdiBpZD0iZXItZGllbnN0Z3J1cHBlbiI+JyArIChnckNi cyB8fCAnPHNwYW4gc3R5bGU9ImNvbG9yOnZhcigtLXRleHQtbXV0ZWQpIj5LZWluZSBEaWVuc3Rn cnVwcGVuIGtvbmZpZ3VyaWVydDwvc3Bhbj4nKSArICc8L2Rpdj4nICsKICAgICAgICAgICAgJzxo NCBzdHlsZT0ibWFyZ2luOjhweCAwIDRweCI+R2FuemUgU3RhbmRvcnRlIChPRSk8L2g0PicgKwog ICAgICAgICAgICAnPGRpdiBpZD0iZXItc3RhbmRvcnRlIj4nICsgKHN0Q2JzIHx8ICc8c3BhbiBz dHlsZT0iY29sb3I6dmFyKC0tdGV4dC1tdXRlZCkiPktlaW5lIFN0YW5kb3J0ZSBrb25maWd1cmll cnQ8L3NwYW4+JykgKyAnPC9kaXY+JyArCiAgICAgICAgICAgICc8L2RldGFpbHM+JzsKCiAgICAg ICAgLy8gQ2hlcnJ5LVBpY2sgN2FmNjViMTogUGVyLVBlcnNvbi1TaWNodGJhcmtlaXQgKFNVLW9u bHkpLiBUb2dnbGUKICAgICAgICAvLyBgZmVhdHVyZXMucGVyUGVyc29uU2ljaHRiYXJrZWl0YCBz Y2hhbHRldCBudXIgZGllIFVJIGZyZWk7IGRlcgogICAgICAgIC8vIFNjaGVtYS1PdmVycmlkZSBg cGVyc29uLnNlaGVuYCBncmVpZnQgc2VydmVyc2VpdGlnIGltbWVyLgogICAgICAgIGlmIChmZWF0 dXJlSXN0QWt0aXYoJ3BlclBlcnNvblNpY2h0YmFya2VpdCcpKSB7CiAgICAgICAgICAgIHZhciBw cyA9IChwZXJzb24uc2VoZW4gJiYgdHlwZW9mIHBlcnNvbi5zZWhlbiA9PT0gJ29iamVjdCcpID8g cGVyc29uLnNlaGVuIDoge307CiAgICAgICAgICAgIGZ1bmN0aW9uIHNlaGVuU2VsZWN0KGlkQXR0 ciwgbGFiZWwsIGFrdHVlbGxlcldlcnQpIHsKICAgICAgICAgICAgICAgIGZ1bmN0aW9uIG9wdCh2 LCB0eHQpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgc2VsID0gKGFrdHVlbGxlcldlcnQgPT09 IHYgfHwgKHYgPT09IG51bGwgJiYgKGFrdHVlbGxlcldlcnQgPT0gbnVsbCkpKSA/ICcgc2VsZWN0 ZWQnIDogJyc7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICc8b3B0aW9uIHZhbHVlPSInICsg KHYgPT09IG51bGwgPyAnJyA6IFN0cmluZyh2KSkgKyAnIicgKyBzZWwgKyAnPicgKyBlc2NhcGVI VE1MKHR4dCkgKyAnPC9vcHRpb24+JzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg IHJldHVybiAnPGRpdiBjbGFzcz0iZm9ybS1ncnVwcGUiPjxsYWJlbCBmb3I9IicgKyBpZEF0dHIg KyAnIj4nICsgZXNjYXBlSFRNTChsYWJlbCkgKyAnPC9sYWJlbD4nICsKICAgICAgICAgICAgICAg ICAgICAnPHNlbGVjdCBpZD0iJyArIGlkQXR0ciArICciIGNsYXNzPSJmb3JtLWlucHV0IiBzdHls ZT0id2lkdGg6MjAwcHgiPicgKwogICAgICAgICAgICAgICAgICAgICAgICBvcHQobnVsbCwgICfi gJQgU3RhbmRhcmQg4oCUJykgKwogICAgICAgICAgICAgICAgICAgICAgICBvcHQodHJ1ZSwgICdT aWNodGJhcicpICsKICAgICAgICAgICAgICAgICAgICAgICAgb3B0KGZhbHNlLCAnVmVyc3RlY2t0 JykgKwogICAgICAgICAgICAgICAgICAgICc8L3NlbGVjdD48L2Rpdj4nOwogICAgICAgICAgICB9 CiAgICAgICAgICAgIGtvZXJwZXIgKz0KICAgICAgICAgICAgICAgICc8ZGV0YWlscyBzdHlsZT0i bWFyZ2luLXRvcDoxNnB4O2JvcmRlcjoxcHggc29saWQgdmFyKC0tYm9yZGVyLWxpZ2h0KTtib3Jk ZXItcmFkaXVzOjRweDtwYWRkaW5nOjhweCAxMnB4Ij4nICsKICAgICAgICAgICAgICAgICc8c3Vt bWFyeSBzdHlsZT0iY3Vyc29yOnBvaW50ZXI7Zm9udC13ZWlnaHQ6NjAwIj5Qcm8tUGVyc29uLVNp Y2h0YmFya2VpdCAobnVyIFN1cGVyVXNlciknICsKICAgICAgICAgICAgICAgICAgICAnPHNwYW4g c3R5bGU9ImZvbnQtd2VpZ2h0OjQwMDtjb2xvcjp2YXIoLS10ZXh0LW11dGVkKTtmb250LXNpemU6 MTFweDttYXJnaW4tbGVmdDo4cHgiPuKAlCBTdGFuZGFyZCBmb2xndCBkZXIgUm9sbGU8L3NwYW4+ JyArCiAgICAgICAgICAgICAgICAnPC9zdW1tYXJ5PicgKwogICAgICAgICAgICAgICAgJzxwIHN0 eWxlPSJtYXJnaW46OHB4IDA7Zm9udC1zaXplOjEycHg7Y29sb3I6dmFyKC0tdGV4dC1tdXRlZCki PsOcYmVyc2NocmVpYnQgZGllIHJvbGxlbmJhc2llcnRlIFRhYi1TaWNodGJhcmtlaXQgZsO8ciBk aWVzZSBlaW5lIFBlcnNvbi4g4oCeU3RhbmRhcmQiIGJlZGV1dGV0OiBWZXJoYWx0ZW4gcmljaHRl dCBzaWNoIG5hY2ggaWhyZXIgUm9sbGUgKHJlZ3Vsw6RyIC8gRmFjaGF1ZnNpY2h0IC8gU1UpLjwv cD4nICsKICAgICAgICAgICAgICAgICc8ZGl2IHN0eWxlPSJkaXNwbGF5OmZsZXg7Z2FwOjI0cHg7 ZmxleC13cmFwOndyYXAiPicgKwogICAgICAgICAgICAgICAgICAgIHNlaGVuU2VsZWN0KCdkbGct c2VoZW4tbG9nYnVjaCcsICAgJ0xvZ2J1Y2ggc2VoZW4nLCAgIHBzLmxvZ2J1Y2ggICA9PT0gdW5k ZWZpbmVkID8gbnVsbCA6IHBzLmxvZ2J1Y2gpICsKICAgICAgICAgICAgICAgICAgICBzZWhlblNl bGVjdCgnZGxnLXNlaGVuLXN0YXRpc3RpaycsICdTdGF0aXN0aWsgc2VoZW4nLCBwcy5zdGF0aXN0 aWsgPT09IHVuZGVmaW5lZCA/IG51bGwgOiBwcy5zdGF0aXN0aWspICsKICAgICAgICAgICAgICAg ICc8L2Rpdj4nICsKICAgICAgICAgICAgICAgICc8L2RldGFpbHM+JzsKICAgICAgICB9CiAgICB9 CgogICAgdmFyIGRsZ1RpdGVsID0gKHBlcnNvbi52b3JuYW1lID8gcGVyc29uLnZvcm5hbWUgKyAn ICcgOiAnJykgKyBwZXJzb24ubmFtZTsKICAgIHZhciBwYXBpZXJrb3JiQWt0aXZMb2thbCA9IGZl YXR1cmVJc3RBa3RpdigncGFwaWVya29yYlVJJyk7CiAgICB2YXIgdW1zZXR6ZW5MYWJlbCA9IHBl cnNvbi5ha3RpdiA9PT0gZmFsc2UgPyAnUmVha3RpdmllcmVuJyA6ICdVbXNldHplbic7CiAgICB2 YXIgdW1zZXR6ZW5DbHMgICA9IHBlcnNvbi5ha3RpdiA9PT0gZmFsc2UgPyAnYnRuLWVyZm9sZycg OiAnYnRuLWdlZmFocic7CiAgICB2YXIgdW1zZXR6ZW5UaXRsZSA9IHBlcnNvbi5ha3RpdiA9PT0g ZmFsc2UKICAgICAgICA/ICdQZXJzb24gd2llZGVyIGluIGRpZSBQbGFudW5nIGF1Zm5laG1lbicK ICAgICAgICA6ICdQZXJzb24gYXVzIGRlciBQbGFudW5nIGVudGZlcm5lbiAoRWludHLDpGdlIGJs ZWliZW4gZXJoYWx0ZW4pJzsKICAgIHZhciBmdXNzSHRtbCA9CiAgICAgICAgJzxidXR0b24gdHlw ZT0iYnV0dG9uIiBjbGFzcz0iYnRuICcgKyB1bXNldHplbkNscyArICciIGlkPSJkbGctdW1zZXR6 ZW4iIHRpdGxlPSInICsgZXNjYXBlQXR0cih1bXNldHplblRpdGxlKSArICciPicgKyB1bXNldHpl bkxhYmVsICsgJzwvYnV0dG9uPicgKwogICAgICAgIChwYXBpZXJrb3JiQWt0aXZMb2thbAogICAg ICAgICAgICA/ICc8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0biBidG4tZ2VmYWhyIiBp ZD0iZGxnLWxvZXNjaGVuIiB0aXRsZT0iUGVyc29uIHVuZCBBTExFIFBsYW5kYXRlbiBlbmRnw7xs dGlnIGVudGZlcm5lbiI+TMO2c2NoZW48L2J1dHRvbj4nCiAgICAgICAgICAgIDogJycpICsKICAg ICAgICAnPHNwYW4gc3R5bGU9ImZsZXg6MSI+PC9zcGFuPicgKwogICAgICAgICc8YnV0dG9uIHR5 cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0biBidG4tcHJpbWFlciIgaWQ9ImRsZy1zcGVpY2hlcm4iPlNw ZWljaGVybjwvYnV0dG9uPic7CiAgICBtb2RhbFplaWdlbignUGVyc29uIGJlYXJiZWl0ZW46ICcg KyBkbGdUaXRlbCwga29lcnBlciwgZnVzc0h0bWwsCiAgICAgICAgZnVuY3Rpb24oKSB7CiAgICAg ICAgICAgIHZhciBkbGdGdW5rID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2RsZy1mdW5rdGlv bicpLnZhbHVlOwogICAgICAgICAgICB2YXIgZGxnRWxkZ2xFbCA9IGRvY3VtZW50LmdldEVsZW1l bnRCeUlkKCdkbGctZWxkZ2wnKTsKICAgICAgICAgICAgdmFyIGRhdGVuID0gewogICAgICAgICAg ICAgICAgbmFtZTogZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2RsZy1uYW1lJykudmFsdWUudHJp bSgpLAogICAgICAgICAgICAgICAgdm9ybmFtZTogZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Rs Zy12b3JuYW1lJykudmFsdWUsCiAgICAgICAgICAgICAgICBncnVwcGU6IGRvY3VtZW50LmdldEVs ZW1lbnRCeUlkKCdkbGctZ3J1cHBlJykudmFsdWUsCiAgICAgICAgICAgICAgICBmdW5rdGlvbjog ZGxnRnVuaywKICAgICAgICAgICAgICAgIG9lOiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZGxn LW9lJykudmFsdWUsCiAgICAgICAgICAgICAgICBkaWVuc3RncmFkOiBkb2N1bWVudC5nZXRFbGVt ZW50QnlJZCgnZGxnLWRpZW5zdGdyYWQnKS52YWx1ZSwKICAgICAgICAgICAgICAgIHRlbGVmb246 IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkbGctdGVsZWZvbicpLnZhbHVlLAogICAgICAgICAg ICAgICAgbndLZW5udW5nOiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZGxnLW53a2VubnVuZycp LnZhbHVlLAogICAgICAgICAgICAgICAgZW1haWw6IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdk bGctZW1haWwnKS52YWx1ZSwKICAgICAgICAgICAgICAgIGdlYnVydHNkYXR1bTogZG9jdW1lbnQu Z2V0RWxlbWVudEJ5SWQoJ2RsZy1nZWJ1cnRzZGF0dW0nKS52YWx1ZSwKICAgICAgICAgICAgICAg IGFrdGl2OiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZGxnLWFrdGl2JykudmFsdWUgPT09ICd0 cnVlJywKICAgICAgICAgICAgICAgIGVsRGdsUXVhbGlmaXppZXJ0OiBkbGdFbGRnbEVsID8gZGxn RWxkZ2xFbC5jaGVja2VkIDogZmFsc2UKICAgICAgICAgICAgfTsKICAgICAgICAgICAgaWYgKCFk YXRlbi5uYW1lKSB7IHBmbGljaHRmZWxkRmVobGVyKCdkbGctbmFtZScsICdOYW1lIGlzdCBlaW4g UGZsaWNodGZlbGQnKTsgcmV0dXJuOyB9CiAgICAgICAgICAgIC8vIFByby1QZXJzb24tQXVzYmxl bmRlbiAoU1Utb25seSkuIENoZWNrYm94IGFrdGl2ID0gYXVzYmxlbmRlbiAtPgogICAgICAgICAg ICAvLyBpblBsYW51bmc9ZmFsc2UuIE51ciBzZW5kZW4sIHdlbm4gZGFzIEZlbGQgaW0gRE9NIGlz dCAoU1UpLCBzb25zdAogICAgICAgICAgICAvLyBibGVpYnQgZWluIGV2dGwuIHZvcmhhbmRlbmVy IFdlcnQgdW5hbmdldGFzdGV0LgogICAgICAgICAgICB2YXIgZGxnSW5QbGFudW5nRWwgPSBkb2N1 bWVudC5nZXRFbGVtZW50QnlJZCgnZGxnLWlucGxhbnVuZycpOwogICAgICAgICAgICBpZiAoZGxn SW5QbGFudW5nRWwpIGRhdGVuLmluUGxhbnVuZyA9ICFkbGdJblBsYW51bmdFbC5jaGVja2VkOwog ICAgICAgICAgICAvLyBQcm8tUGVyc29uLVNpY2h0YmFya2VpdDogbnVyIGxlc2VuIHdlbm4gVG9n Z2xlIGFrdGl2IFVORCBTVQogICAgICAgICAgICAvLyAoRHJvcGRvd25zIGV4aXN0aWVyZW4gc29u c3QgbmljaHQgaW0gRE9NKS4gV2VydGU6ICcnID0gbnVsbAogICAgICAgICAgICAvLyAoU3RhbmRh cmQvUm9sbGUpLCAndHJ1ZScgPSBleHBsaXppdCBzaWNodGJhciwgJ2ZhbHNlJyA9CiAgICAgICAg ICAgIC8vIGV4cGxpeml0IHZlcnN0ZWNrdC4gV2lyIHNlbmRlbiBkYXMgT2JqZWt0IGltbWVyIGtv bXBsZXR0LAogICAgICAgICAgICAvLyBkYW1pdCBTZXJ2ZXIgYWx0ZSBPdmVycmlkZXMgZW50ZmVy bmVuIGthbm4uCiAgICAgICAgICAgIGlmIChaLnJlY2h0ZS5pc3RTdXBlclVzZXIgJiYgZmVhdHVy ZUlzdEFrdGl2KCdwZXJQZXJzb25TaWNodGJhcmtlaXQnKSkgewogICAgICAgICAgICAgICAgdmFy IHNlTG9nRWwgID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2RsZy1zZWhlbi1sb2didWNoJyk7 CiAgICAgICAgICAgICAgICB2YXIgc2VTdGF0RWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn ZGxnLXNlaGVuLXN0YXRpc3RpaycpOwogICAgICAgICAgICAgICAgaWYgKHNlTG9nRWwgJiYgc2VT dGF0RWwpIHsKICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBsZXNlKHYpIHsKICAgICAgICAg ICAgICAgICAgICAgICAgaWYgKHYgPT09ICcnKSAgICAgIHJldHVybiBudWxsOwogICAgICAgICAg ICAgICAgICAgICAgICBpZiAodiA9PT0gJ3RydWUnKSAgcmV0dXJuIHRydWU7CiAgICAgICAgICAg ICAgICAgICAgICAgIGlmICh2ID09PSAnZmFsc2UnKSByZXR1cm4gZmFsc2U7CiAgICAgICAgICAg ICAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAg ICAgICAgICAgICBkYXRlbi5zZWhlbiA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgbG9nYnVj aDogICBsZXNlKHNlTG9nRWwudmFsdWUpLAogICAgICAgICAgICAgICAgICAgICAgICBzdGF0aXN0 aWs6IGxlc2Uoc2VTdGF0RWwudmFsdWUpCiAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAg ICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICAvLyBaZWxsLUVkaXQtUmVjaHRlOiBu dXIgdWViZXJuZWhtZW4gd2VubiBTVSAoU2VrdGlvbiBleGlzdGllcnQgc29uc3QgbmljaHQpCiAg ICAgICAgICAgIGlmIChaLnJlY2h0ZS5pc3RTdXBlclVzZXIpIHsKICAgICAgICAgICAgICAgIHZh ciBlclAgPSBbXSwgZXJHID0gW10sIGVyUyA9IFtdOwogICAgICAgICAgICAgICAgZG9jdW1lbnQu cXVlcnlTZWxlY3RvckFsbCgnI2VyLXBlcnNvbmVuIC5lZGl0LXJlY2h0LWNoaycpLmZvckVhY2go ZnVuY3Rpb24oYykgewogICAgICAgICAgICAgICAgICAgIGlmIChjLmNoZWNrZWQpIGVyUC5wdXNo KHBhcnNlSW50KGMuZ2V0QXR0cmlidXRlKCdkYXRhLXdlcnQnKS5zbGljZSgyKSkpOwogICAgICAg ICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcj ZXItZGllbnN0Z3J1cHBlbiAuZWRpdC1yZWNodC1jaGsnKS5mb3JFYWNoKGZ1bmN0aW9uKGMpIHsK ICAgICAgICAgICAgICAgICAgICBpZiAoYy5jaGVja2VkKSBlckcucHVzaChjLmdldEF0dHJpYnV0 ZSgnZGF0YS13ZXJ0Jykuc2xpY2UoMikpOwogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAg ICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcjZXItc3RhbmRvcnRlIC5lZGl0LXJlY2h0 LWNoaycpLmZvckVhY2goZnVuY3Rpb24oYykgewogICAgICAgICAgICAgICAgICAgIGlmIChjLmNo ZWNrZWQpIGVyUy5wdXNoKGMuZ2V0QXR0cmlidXRlKCdkYXRhLXdlcnQnKS5zbGljZSgyKSk7CiAg ICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIGRhdGVuLmVkaXRSZWNodGUgPSB7IHBl cnNvbmVuSWRzOiBlclAsIGRpZW5zdGdydXBwZW46IGVyRywgc3RhbmRvcnRlOiBlclMgfTsKICAg ICAgICAgICAgfQogICAgICAgICAgICBhcGlQdXQoJy9hcGkvcGVyc29uZW4vJyArIGlkLCBkYXRl bikudGhlbihmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciBwID0gWi5wbGFudW5nLnBl cnNvbmVuLmZpbmQoZnVuY3Rpb24oeCkgeyByZXR1cm4geC5pZCA9PT0gaWQ7IH0pOwogICAgICAg ICAgICAgICAgaWYgKHApIE9iamVjdC5hc3NpZ24ocCwgZGF0ZW4pOwogICAgICAgICAgICAgICAg ZW50d3VyZkxvZXNjaGVuKCdwZXJzb25fZWRpdF8nICsgaWQpOwogICAgICAgICAgICAgICAgcGVy c29uZW5OZXVBdWZiYXVlbigpOwogICAgICAgICAgICAgICAgbW9kYWxTY2hsaWVzc2VuKHRydWUp OwogICAgICAgICAgICAgICAgcGVyc29uYWxUYWJlbGxlUmVuZGVybigpOwogICAgICAgICAgICAg ICAgaWYgKHR5cGVvZiBuYW1lblJlbmRlcm4gPT09ICdmdW5jdGlvbicpIHsKICAgICAgICAgICAg ICAgICAgICBuYW1lblJlbmRlcm4oKTsKICAgICAgICAgICAgICAgICAgICBkYXRlbkdyaWRSZW5k ZXJuKCk7CiAgICAgICAgICAgICAgICAgICAga29wZlJlbmRlcm4oKTsKICAgICAgICAgICAgICAg IH0KICAgICAgICAgICAgICAgIHRvYXN0KCdQZXJzb24gYWt0dWFsaXNpZXJ0JywgJ2VyZm9sZycp OwogICAgICAgICAgICAgICAgLy8gSWRlbnRpdGFldHMtQWVuZGVydW5nZW4gKG53S2VubnVuZy9l bWFpbCkgZXJ6ZXVnZW4gc2VpdCBQaGFzZSA0CiAgICAgICAgICAgICAgICAvLyAoMjAyNi0wNS0y MCkgZWluZW4gU2VydmVyLXNlaXRpZ2VuIEluLUFwcC1IaW53ZWlzIHN0YXR0IG1haWx0by4KICAg ICAgICAgICAgfSkuY2F0Y2goZnVuY3Rpb24oZSkgeyB0b2FzdCgnRmVobGVyOiAnICsgZS5tZXNz YWdlLCAnZmVobGVyJyk7IH0pOwogICAgICAgIH0sCiAgICAgICAgJ3BlcnNvbl9lZGl0XycgKyBp ZCwgIC8vIFNwZWMgRi40OiBtb2RhbEtleSBha3RpdmllcnQgRW50d3VyZi1TeXN0ZW0KICAgICAg ICB7IGF1dG9TYXZlOiB0cnVlIH0gICAgLy8gUGFrZXQtQyAoMjAyNi0wNS0yOSk6IFNjaGxpZXNz ZW4gc3BlaWNoZXJ0IGF1dG9tYXRpc2NoCiAgICApOwoKICAgIC8vIERpZSBWSTMtREdMLUNoZWNr Ym94IGlzdCBzZWl0IDIwMjYtMDUtMjMgZnVlciBhbGxlIEZ1bmt0aW9uZW4KICAgIC8vIHNpY2h0 YmFyIOKAlCBrZWluIEZ1bmt0aW9ucy1hYmhhZW5naWdlciBUb2dnbGUgbWVociBub2V0aWcuCiAg ICBlbGRnbFRvZ2dsZUxpc3RlbmVyQmluZGVuKCk7CiAgICBhdmF0YXJVcGxvYWRIYW5kbGVyQmlu ZGVuKHBlcnNvbik7CgogICAgLy8gVW1zZXR6ZW4vUmVha3RpdmllcmVuLUJ1dHRvbiBpbSBNb2Rh bC1Gb290ZXIgKHNlaXQgMjAyNi0wNS0yMywKICAgIC8vIGZydWVoZXIgaW5saW5lIGluIGRlciBU YWJlbGxlbnplaWxlKS4KICAgIHZhciBkbGdVbXNldHplbkJ0biA9IGRvY3VtZW50LmdldEVsZW1l bnRCeUlkKCdkbGctdW1zZXR6ZW4nKTsKICAgIGlmIChkbGdVbXNldHplbkJ0bikgewogICAgICAg IGRsZ1Vtc2V0emVuQnRuLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oKSB7CiAg ICAgICAgICAgIHZhciB3aWxsQWt0aXYgPSBwZXJzb24uYWt0aXYgPT09IGZhbHNlOwogICAgICAg ICAgICBiZXN0YWV0aWdlbigKICAgICAgICAgICAgICAgIHdpbGxBa3RpdgogICAgICAgICAgICAg ICAgICAgID8gcGVyc29uLm5hbWUgKyAnIHdpZWRlciBpbiBkaWUgUGxhbnVuZyBhdWZuZWhtZW4/ JwogICAgICAgICAgICAgICAgICAgIDogcGVyc29uLm5hbWUgKyAnIGF1cyBkZXIgUGxhbnVuZyBl bnRmZXJuZW4/XG5cbkRpZSBiaXNoZXJpZ2VuIEVpbnRyw6RnZSBibGVpYmVuIGVyaGFsdGVuIHVu ZCB0YXVjaGVuIHdpZWRlciBhdWYsIHdlbm4gZGllIFBlcnNvbiBzcMOkdGVyIHJlYWt0aXZpZXJ0 IHdpcmQuJywKICAgICAgICAgICAgICAgIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAg IHBlcnNvblN0YXR1c1NldHplbihpZCwgd2lsbEFrdGl2KTsKICAgICAgICAgICAgICAgICAgICBt b2RhbFNjaGxpZXNzZW4odHJ1ZSk7CiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAg eyB0aXRlbDogd2lsbEFrdGl2ID8gJ1JlYWt0aXZpZXJlbicgOiAnVW1zZXR6ZW4nLCBqYVRleHQ6 IHdpbGxBa3RpdiA/ICdSZWFrdGl2aWVyZW4nIDogJ1Vtc2V0emVuJywgamFEYW5nZXI6ICF3aWxs QWt0aXYgfQogICAgICAgICAgICApOwogICAgICAgIH0pOwogICAgfQogICAgLy8gRW5kZ3VlbHRp Zy1Mb2VzY2hlbi1CdXR0b24gaW0gTW9kYWwtRm9vdGVyIG1pdCBrcmFlZnRpZ2VyIEhUTUwtV2Fy bnVuZy4KICAgIC8vIGJlc3RhZXRpZ2VuKCkgZXNjYXBlZCBkZW4gVGV4dCwgZGFoZXIgbnV0emVu IHdpciBoaWVyIG1vZGFsWmVpZ2VuKCkKICAgIC8vIGRpcmVrdCBmdWVyIGRhcyBIVE1MLWZvcm1h dGllcnRlIFdhcm4tTW9kYWwuCiAgICB2YXIgZGxnTG9lQnRuID0gZG9jdW1lbnQuZ2V0RWxlbWVu dEJ5SWQoJ2RsZy1sb2VzY2hlbicpOwogICAgaWYgKGRsZ0xvZUJ0bikgewogICAgICAgIGRsZ0xv ZUJ0bi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2 YXIgcE5hbWUgPSAocGVyc29uLnZvcm5hbWUgPyBwZXJzb24udm9ybmFtZSArICcgJyA6ICcnKSAr IHBlcnNvbi5uYW1lOwogICAgICAgICAgICAvLyBBbnphaGwgZGVyIGhpbnRlcmxlZ3RlbiBFaW50 cmFlZ2UgZnVlciBQZXJzb24gemFlaGxlbiwgZGFtaXQgZGVyCiAgICAgICAgICAgIC8vIFVzZXIg aW4gZGVyIFdhcm51bmcgd2Vpc3MsIHdpZSB2aWVsIHZlcmxvcmVuIGdlaHQuCiAgICAgICAgICAg IHZhciBhbnpFaW50cmFlZ2UgPSAwOwogICAgICAgICAgICBpZiAoWi5wbGFudW5nICYmIFoucGxh bnVuZy5laW50cmFlZ2UpIHsKICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKFoucGxhbnVuZy5l aW50cmFlZ2UpLmZvckVhY2goZnVuY3Rpb24oZCkgewogICAgICAgICAgICAgICAgICAgIHZhciBl ID0gWi5wbGFudW5nLmVpbnRyYWVnZVtkXTsKICAgICAgICAgICAgICAgICAgICBpZiAoZSAmJiBl W1N0cmluZyhpZCldKSBhbnpFaW50cmFlZ2UrKzsKICAgICAgICAgICAgICAgIH0pOwogICAgICAg ICAgICB9CiAgICAgICAgICAgIHZhciBhbnpLb21tZW50YXJlID0gMDsKICAgICAgICAgICAgaWYg KFoucGxhbnVuZyAmJiBaLnBsYW51bmcua29tbWVudGFyZSkgewogICAgICAgICAgICAgICAgT2Jq ZWN0LmtleXMoWi5wbGFudW5nLmtvbW1lbnRhcmUpLmZvckVhY2goZnVuY3Rpb24oZCkgewogICAg ICAgICAgICAgICAgICAgIHZhciBrID0gWi5wbGFudW5nLmtvbW1lbnRhcmVbZF07CiAgICAgICAg ICAgICAgICAgICAgaWYgKGsgJiYga1tTdHJpbmcoaWQpXSkgYW56S29tbWVudGFyZSsrOwogICAg ICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdmFyIGtvZXJwZXIgPQog ICAgICAgICAgICAgICAgJzxkaXYgc3R5bGU9ImxpbmUtaGVpZ2h0OjEuNTUiPicgKwogICAgICAg ICAgICAgICAgICAgICc8cCBzdHlsZT0ibWFyZ2luLXRvcDowIj48c3Ryb25nPicgKyBlc2NhcGVI VE1MKHBOYW1lKSArICc8L3N0cm9uZz4gd2lya2xpY2ggZW5kZ8O8bHRpZyBsw7ZzY2hlbj88L3A+ JyArCiAgICAgICAgICAgICAgICAgICAgJzxwIHN0eWxlPSJjb2xvcjp2YXIoLS1mYXJiZS1mZWhs ZXIpO2ZvbnQtd2VpZ2h0OjYwMDttYXJnaW46MTBweCAwIDRweCI+RGllc2UgQWt0aW9uIGVudGZl cm50IHVud2lkZXJydWZsaWNoOjwvcD4nICsKICAgICAgICAgICAgICAgICAgICAnPHVsIHN0eWxl PSJtYXJnaW46MCAwIDEwcHggMjBweCI+JyArCiAgICAgICAgICAgICAgICAgICAgICAgICc8bGk+ YWxsZSBTdGFtbWRhdGVuIGRlciBQZXJzb24gKE5hbWUsIEZ1bmt0aW9uLCBEaWVuc3RncmFkLCBU ZWxlZm9uLCBOVy1LZW5udW5nLCDigKYpPC9saT4nICsKICAgICAgICAgICAgICAgICAgICAgICAg JzxsaT48c3Ryb25nPicgKyBhbnpFaW50cmFlZ2UgKyAnPC9zdHJvbmc+IGhpbnRlcmxlZ3RlIFNj aGljaHQtRWludHInICsgKGFuekVpbnRyYWVnZSA9PT0gMSA/ICdhZycgOiAnw6RnZScpICsgJyBp bSBnZXNhbXRlbiBQbGFudW5ncy1aZWl0cmF1bTwvbGk+JyArCiAgICAgICAgICAgICAgICAgICAg ICAgICc8bGk+PHN0cm9uZz4nICsgYW56S29tbWVudGFyZSArICc8L3N0cm9uZz4gS29tbWVudGFy JyArIChhbnpLb21tZW50YXJlID09PSAxID8gJycgOiAnZScpICsgJyB6dSBkaWVzZXIgUGVyc29u PC9saT4nICsKICAgICAgICAgICAgICAgICAgICAnPC91bD4nICsKICAgICAgICAgICAgICAgICAg ICAnPHAgc3R5bGU9ImNvbG9yOnZhcigtLXRleHQtbXV0ZWQpO2ZvbnQtc2l6ZToxMnB4O21hcmdp bjo4cHggMCAwIj5EYXMgTG9nYnVjaCBibGVpYnQgYWxzIEF1ZGl0LVNwdXIgZXJoYWx0ZW4g4oCU IGRpZSBBa3Rpb24gaXN0IG5pY2h0IMO8YmVyIOKAnldpZWRlcmhlcnN0ZWxsZW4iIHp1csO8Y2tu ZWhtYmFyLjwvcD4nICsKICAgICAgICAgICAgICAgICc8L2Rpdj4nOwogICAgICAgICAgICB2YXIg ZnVzcyA9CiAgICAgICAgICAgICAgICAnPGJ1dHRvbiBjbGFzcz0iYnRuIiBpZD0ibG9lLWFiYnJl Y2hlbiIgdHlwZT0iYnV0dG9uIj5BYmJyZWNoZW48L2J1dHRvbj4nICsKICAgICAgICAgICAgICAg ICc8YnV0dG9uIGNsYXNzPSJidG4gYnRuLWdlZmFociIgaWQ9ImxvZS1iZXN0YWV0aWdlbiIgdHlw ZT0iYnV0dG9uIj5FbmRnw7xsdGlnIGzDtnNjaGVuPC9idXR0b24+JzsKICAgICAgICAgICAgbW9k YWxaZWlnZW4oJ1BlcnNvbiBlbmRnw7xsdGlnIGzDtnNjaGVuIOKAlCAnICsgcE5hbWUsIGtvZXJw ZXIsIGZ1c3MsIG51bGwsIG51bGwsIHsgcmVpbmVyRGlhbG9nOiB0cnVlIH0pOwogICAgICAgICAg ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbG9lLWFiYnJlY2hlbicpLmFkZEV2ZW50TGlzdGVu ZXIoJ2NsaWNrJywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBtb2RhbFNjaGxpZXNzZW4o dHJ1ZSk7CiAgICAgICAgICAgICAgICAvLyBCZWFyYmVpdGVuLU1vZGFsIG5ldSB6ZWlnZW4sIGRh bWl0IGRlciBVc2VyIGRvcnQgd2VpdGVybWFjaGVuIGthbm4KICAgICAgICAgICAgICAgIHBlcnNv bkJlYXJiZWl0ZW5EaWFsb2coaWQpOwogICAgICAgICAgICB9KTsKICAgICAgICAgICAgZG9jdW1l bnQuZ2V0RWxlbWVudEJ5SWQoJ2xvZS1iZXN0YWV0aWdlbicpLmFkZEV2ZW50TGlzdGVuZXIoJ2Ns aWNrJywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBhcGlEZWxldGUoJy9hcGkvcGVyc29u ZW4vJyArIGlkICsgJz9lbmRndWVsdGlnPTEnKS50aGVuKGZ1bmN0aW9uKCkgewogICAgICAgICAg ICAgICAgICAgIFoucGxhbnVuZy5wZXJzb25lbiA9IChaLnBsYW51bmcucGVyc29uZW4gfHwgW10p LmZpbHRlcihmdW5jdGlvbih4KSB7IHJldHVybiB4LmlkICE9PSBpZDsgfSk7CiAgICAgICAgICAg ICAgICAgICAgaWYgKFoucGxhbnVuZy5laW50cmFlZ2UpIHsKICAgICAgICAgICAgICAgICAgICAg ICAgT2JqZWN0LmtleXMoWi5wbGFudW5nLmVpbnRyYWVnZSkuZm9yRWFjaChmdW5jdGlvbihkKSB7 CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoWi5wbGFudW5nLmVpbnRyYWVnZVtkXSkg ZGVsZXRlIFoucGxhbnVuZy5laW50cmFlZ2VbZF1bU3RyaW5nKGlkKV07CiAgICAgICAgICAgICAg ICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBp ZiAoWi5wbGFudW5nLmtvbW1lbnRhcmUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0 LmtleXMoWi5wbGFudW5nLmtvbW1lbnRhcmUpLmZvckVhY2goZnVuY3Rpb24oZCkgewogICAgICAg ICAgICAgICAgICAgICAgICAgICAgaWYgKFoucGxhbnVuZy5rb21tZW50YXJlW2RdKSBkZWxldGUg Wi5wbGFudW5nLmtvbW1lbnRhcmVbZF1bU3RyaW5nKGlkKV07CiAgICAgICAgICAgICAgICAgICAg ICAgIH0pOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbnR3dXJm TG9lc2NoZW4oJ3BlcnNvbl9lZGl0XycgKyBpZCk7CiAgICAgICAgICAgICAgICAgICAgbW9kYWxT Y2hsaWVzc2VuKHRydWUpOwogICAgICAgICAgICAgICAgICAgIHBlcnNvbmVuTmV1QXVmYmF1ZW4o KTsKICAgICAgICAgICAgICAgICAgICBwZXJzb25hbFRhYmVsbGVSZW5kZXJuKCk7CiAgICAgICAg ICAgICAgICAgICAgaWYgKHR5cGVvZiBuYW1lblJlbmRlcm4gPT09ICdmdW5jdGlvbicpIHsKICAg ICAgICAgICAgICAgICAgICAgICAgbmFtZW5SZW5kZXJuKCk7CiAgICAgICAgICAgICAgICAgICAg ICAgIGRhdGVuR3JpZFJlbmRlcm4oKTsKICAgICAgICAgICAgICAgICAgICAgICAga29wZlJlbmRl cm4oKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgdG9hc3QoJ1Bl cnNvbiBlbmRnw7xsdGlnIGdlbMO2c2NodCcsICdlcmZvbGcnKTsKICAgICAgICAgICAgICAgIH0p LmNhdGNoKGZ1bmN0aW9uKGUpIHsgdG9hc3QoJ0ZlaGxlcjogJyArIGUubWVzc2FnZSwgJ2ZlaGxl cicpOyB9KTsKICAgICAgICAgICAgfSk7CiAgICAgICAgfSk7CiAgICB9CgogICAgLy8gIkFsbGUg bWFya2llcmVuIi1CdXR0b25zIGZ1ZXIgZGllIERpcmVrdGUtS29sbGVnZW4vUmVzdC1TZWt0aW9u ZW4sCiAgICAvLyB3ZW5uIGRlciBUb2dnbGUgYWt0aXYgaXN0IChDaGVycnktUGljayA4OWViM2M3 KS4gV2VubiBkaWUgQnV0dG9ucwogICAgLy8gaW0gTWFya3VwIGZlaGxlbiAoRmVhdHVyZSBhdXMp LCBwYXNzaWVydCBoaWVyIG5pY2h0cy4KICAgIHZhciBlclBlcnNvbmVuID0gZG9jdW1lbnQuZ2V0 RWxlbWVudEJ5SWQoJ2VyLXBlcnNvbmVuJyk7CiAgICBpZiAoZXJQZXJzb25lbikgZXJQZXJzb25l bi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKGUpIHsKICAgICAgICB2YXIgYnRu ID0gZS50YXJnZXQuY2xvc2VzdCgnYnV0dG9uW2RhdGEtYWt0aW9uXScpOwogICAgICAgIGlmICgh YnRuKSByZXR1cm47CiAgICAgICAgdmFyIGFrdGlvbiA9IGJ0bi5nZXRBdHRyaWJ1dGUoJ2RhdGEt YWt0aW9uJyk7CiAgICAgICAgdmFyIHNlbGVjdG9yID0gYWt0aW9uID09PSAna29sbGVnZW4tZGly ZWt0LWFsbGUnCiAgICAgICAgICAgID8gJy5rb2xsZWdlbi1kaXJla3QgLmVkaXQtcmVjaHQtY2hr JwogICAgICAgICAgICA6IChha3Rpb24gPT09ICdrb2xsZWdlbi1yZXN0LWFsbGUnICA/ICcua29s bGVnZW4tcmVzdCAuZWRpdC1yZWNodC1jaGsnCiAgICAgICAgICAgIDogKGFrdGlvbiA9PT0gJ2tv bGxlZ2VuLW1pa3JvLWFsbGUnID8gJy5rb2xsZWdlbi1taWtybyAuZWRpdC1yZWNodC1jaGsnIDog bnVsbCkpOwogICAgICAgIGlmICghc2VsZWN0b3IpIHJldHVybjsKICAgICAgICAvLyBUb2dnbGUt VmVyaGFsdGVuOiB3ZW5uIGFsbGUgYmVyZWl0cyBhbiwgYWxsZSBhdXMg4oCUIHNvbnN0IGFsbGUg YW4uCiAgICAgICAgdmFyIGJveGVuID0gZXJQZXJzb25lbi5xdWVyeVNlbGVjdG9yQWxsKHNlbGVj dG9yKTsKICAgICAgICB2YXIgYWxsZUFuID0gYm94ZW4ubGVuZ3RoID4gMCAmJiBBcnJheS5wcm90 b3R5cGUuZXZlcnkuY2FsbChib3hlbiwgZnVuY3Rpb24oYykgeyByZXR1cm4gYy5jaGVja2VkOyB9 KTsKICAgICAgICBib3hlbi5mb3JFYWNoKGZ1bmN0aW9uKGMpIHsgYy5jaGVja2VkID0gIWFsbGVB bjsgfSk7CiAgICB9KTsKfQoKZXhwb3J0IGZ1bmN0aW9uIHBlcnNvbk5ldURpYWxvZygpIHsKICAg IHZhciBncnVwcGVuID0gKFouYWRtaW4uZ3J1cHBlbiB8fCBbXSkubWFwKGZ1bmN0aW9uKGcpIHsg cmV0dXJuIGcubmFtZTsgfSk7CiAgICB2YXIgYWxsZSA9IChaLnBsYW51bmcucGVyc29uZW4gfHwg W10pLnNsaWNlKCkKICAgICAgICAuZmlsdGVyKGZ1bmN0aW9uKHApIHsgcmV0dXJuIHAuYWt0aXY7 IH0pCiAgICAgICAgLnNvcnQoZnVuY3Rpb24oYSwgYikgeyByZXR1cm4gKGEucG9zaXRpb24gfHwg OTk5KSAtIChiLnBvc2l0aW9uIHx8IDk5OSk7IH0pOwogICAgdmFyIHJlZk9wdGlvbmVuID0gYWxs ZS5tYXAoZnVuY3Rpb24ocCkgewogICAgICAgIHZhciBsYWJlbCA9IChwLnZvcm5hbWUgPyBwLnZv cm5hbWUgKyAnICcgOiAnJykgKyBwLm5hbWUgKyAnICgnICsgcC5ncnVwcGUgKyAnKSc7CiAgICAg ICAgcmV0dXJuICc8b3B0aW9uIHZhbHVlPSInICsgcC5pZCArICciPicgKyBlc2NhcGVIVE1MKGxh YmVsKSArICc8L29wdGlvbj4nOwogICAgfSkuam9pbignJyk7CgogICAgdmFyIGtvZXJwZXIgPSAn PGRpdiBzdHlsZT0iZGlzcGxheTpncmlkO2dyaWQtdGVtcGxhdGUtY29sdW1uczoxZnIgMWZyO2dh cDowIDE2cHgiPicgKwogICAgICAgICc8ZGl2IGNsYXNzPSJmb3JtLWdydXBwZSBmb3JtLXBmbGlj aHQiPjxsYWJlbD5OYW1lPC9sYWJlbD48aW5wdXQgdHlwZT0idGV4dCIgaWQ9ImRsZy1uYW1lIiBj bGFzcz0iZm9ybS1pbnB1dCIgc3R5bGU9IndpZHRoOjEwMCUiPjwvZGl2PicgKwogICAgICAgICc8 ZGl2IGNsYXNzPSJmb3JtLWdydXBwZSI+PGxhYmVsPlZvcm5hbWU8L2xhYmVsPjxpbnB1dCB0eXBl PSJ0ZXh0IiBpZD0iZGxnLXZvcm5hbWUiIGNsYXNzPSJmb3JtLWlucHV0IiBzdHlsZT0id2lkdGg6 MTAwJSI+PC9kaXY+JyArCiAgICAgICAgJzxkaXYgY2xhc3M9ImZvcm0tZ3J1cHBlIj48bGFiZWw+ RGllbnN0Z3JhZDwvbGFiZWw+PHNlbGVjdCBpZD0iZGxnLWRpZW5zdGdyYWQiIGNsYXNzPSJmb3Jt LWlucHV0IiBzdHlsZT0id2lkdGg6MTAwJSI+JyArCiAgICAgICAgJzxvcHRpb24gdmFsdWU9IiIg c2VsZWN0ZWQ+4oCUIG9obmUg4oCUPC9vcHRpb24+JyArCiAgICAgICAgZ2V0RGllbnN0Z3JhZGUo KS5tYXAoZnVuY3Rpb24oZykgewogICAgICAgICAgICByZXR1cm4gJzxvcHRpb24gdmFsdWU9Iicg KyBlc2NhcGVBdHRyKGcpICsgJyI+JyArIGVzY2FwZUhUTUwoZykgKyAnPC9vcHRpb24+JzsKICAg ICAgICB9KS5qb2luKCcnKSArCiAgICAgICAgJzwvc2VsZWN0PjwvZGl2PicgKwogICAgICAgICc8 ZGl2IGNsYXNzPSJmb3JtLWdydXBwZSBmb3JtLXBmbGljaHQiPjxsYWJlbD5EaWVuc3RncnVwcGU8 L2xhYmVsPjxzZWxlY3QgaWQ9ImRsZy1ncnVwcGUiIGNsYXNzPSJmb3JtLWlucHV0IiBzdHlsZT0i d2lkdGg6MTAwJSI+JyArCiAgICAgICAgZ3J1cHBlbi5tYXAoZnVuY3Rpb24oZykgeyByZXR1cm4g JzxvcHRpb24+JyArIGVzY2FwZUhUTUwoZykgKyAnPC9vcHRpb24+JzsgfSkuam9pbignJykgKwog ICAgICAgICc8L3NlbGVjdD48L2Rpdj4nICsKICAgICAgICAnPGRpdiBjbGFzcz0iZm9ybS1ncnVw cGUiPjxsYWJlbD5GdW5rdGlvbjwvbGFiZWw+PHNlbGVjdCBpZD0iZGxnLWZ1bmt0aW9uIiBjbGFz cz0iZm9ybS1pbnB1dCIgc3R5bGU9IndpZHRoOjEwMCUiIHRpdGxlPSJTdGFtbS1GdW5rdGlvbjog YmVzdGltbXQgZGllIFZlcmFudHdvcnR1bmdzLVJlaWhlbmZvbGdlIGluIGRlciBTY2hpY2h0Ij4n ICsKICAgICAgICAnPG9wdGlvbiB2YWx1ZT0iIiBzZWxlY3RlZD7igJQgb2huZSBGdW5rdGlvbiDi gJQ8L29wdGlvbj4nICsKICAgICAgICBnZXRGdW5rdGlvbmVuKCkubWFwKGZ1bmN0aW9uKGYpIHsK ICAgICAgICAgICAgcmV0dXJuICc8b3B0aW9uIHZhbHVlPSInICsgZXNjYXBlQXR0cihmLmNvZGUp ICsgJyI+JyArIGVzY2FwZUhUTUwoZi5jb2RlKSArICc8L29wdGlvbj4nOwogICAgICAgIH0pLmpv aW4oJycpICsKICAgICAgICAnPC9zZWxlY3Q+PC9kaXY+JyArCiAgICAgICAgJzxkaXYgY2xhc3M9 ImZvcm0tZ3J1cHBlIiBpZD0iZGxnLWVsZGdsLWdydXBwZSI+JyArCiAgICAgICAgICAgICc8bGFi ZWw+VkkzIERHTDwvbGFiZWw+JyArCiAgICAgICAgICAgIGVsZGdsVG9nZ2xlSHRtbChmYWxzZSkg KwogICAgICAgICc8L2Rpdj4nICsKICAgICAgICAnPGRpdiBjbGFzcz0iZm9ybS1ncnVwcGUiPjxs YWJlbD5PRSAoU3RhbmRvcnQpPC9sYWJlbD48aW5wdXQgdHlwZT0idGV4dCIgaWQ9ImRsZy1vZSIg Y2xhc3M9ImZvcm0taW5wdXQiIHN0eWxlPSJ3aWR0aDoxMDAlIiBwbGFjZWhvbGRlcj0iei5CLiBL QSwgSEEsIEJPIj48L2Rpdj4nICsKICAgICAgICAnPGRpdiBjbGFzcz0iZm9ybS1ncnVwcGUiPjxs YWJlbD5UZWxlZm9uPC9sYWJlbD48aW5wdXQgdHlwZT0idGV4dCIgaWQ9ImRsZy10ZWxlZm9uIiBj bGFzcz0iZm9ybS1pbnB1dCIgc3R5bGU9IndpZHRoOjEwMCUiIHBsYWNlaG9sZGVyPSJ6LkIuIDQ1 MjAiPjwvZGl2PicgKwogICAgICAgICc8ZGl2IGNsYXNzPSJmb3JtLWdydXBwZSI+PGxhYmVsPk5X LUtlbm51bmc8L2xhYmVsPjxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0iZGxnLW53a2VubnVuZyIgY2xh c3M9ImZvcm0taW5wdXQiIHN0eWxlPSJ3aWR0aDoxMDAlIiBwbGFjZWhvbGRlcj0iRE9NQUlOXFx1 c2VyIj48L2Rpdj4nICsKICAgICAgICAnPGRpdiBjbGFzcz0iZm9ybS1ncnVwcGUiPjxsYWJlbD5F LU1haWw8L2xhYmVsPjxpbnB1dCB0eXBlPSJlbWFpbCIgaWQ9ImRsZy1lbWFpbCIgY2xhc3M9ImZv cm0taW5wdXQiIHN0eWxlPSJ3aWR0aDoxMDAlIiBwbGFjZWhvbGRlcj0iQmVuYWNocmljaHRpZ3Vu ZyBiZWkgw4RuZGVydW5nZW4iPjwvZGl2PicgKwogICAgICAgICc8ZGl2IGNsYXNzPSJmb3JtLWdy dXBwZSI+PGxhYmVsPkdlYnVydHNkYXR1bTwvbGFiZWw+PGlucHV0IHR5cGU9ImRhdGUiIGlkPSJk bGctZ2VidXJ0c2RhdHVtIiBjbGFzcz0iZm9ybS1pbnB1dCIgc3R5bGU9IndpZHRoOjEwMCUiPjwv ZGl2PicgKwogICAgICAgICc8L2Rpdj4nICsKICAgICAgICAnPGhyIHN0eWxlPSJtYXJnaW46MTJw eCAwO2JvcmRlcjpub25lO2JvcmRlci10b3A6MXB4IHNvbGlkIHZhcigtLWJvcmRlci1saWdodCki PicgKwogICAgICAgICc8ZGl2IHN0eWxlPSJkaXNwbGF5OmdyaWQ7Z3JpZC10ZW1wbGF0ZS1jb2x1 bW5zOjFmciAyZnI7Z2FwOjAgMTZweCI+JyArCiAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJmb3Jt LWdydXBwZSI+PGxhYmVsPkVpbnJlaWhlbjwvbGFiZWw+PHNlbGVjdCBpZD0iZGxnLWVpbnJlaWhl biIgY2xhc3M9ImZvcm0taW5wdXQiIHN0eWxlPSJ3aWR0aDoxMDAlIj4nICsKICAgICAgICAgICAg ICAgICc8b3B0aW9uIHZhbHVlPSJ1bnRlbiIgc2VsZWN0ZWQ+R2FueiB1bnRlbiBhbmjDpG5nZW48 L29wdGlvbj4nICsKICAgICAgICAgICAgICAgICc8b3B0aW9uIHZhbHVlPSJ2b3IiPlZvciBQZXJz b27igKY8L29wdGlvbj4nICsKICAgICAgICAgICAgICAgICc8b3B0aW9uIHZhbHVlPSJuYWNoIj5O YWNoIFBlcnNvbuKApjwvb3B0aW9uPicgKwogICAgICAgICAgICAnPC9zZWxlY3Q+PC9kaXY+JyAr CiAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJmb3JtLWdydXBwZSI+PGxhYmVsPlJlZmVyZW56cGVy c29uPC9sYWJlbD48c2VsZWN0IGlkPSJkbGctcmVmIiBjbGFzcz0iZm9ybS1pbnB1dCIgc3R5bGU9 IndpZHRoOjEwMCUiIGRpc2FibGVkPicgKwogICAgICAgICAgICAgICAgJzxvcHRpb24gdmFsdWU9 IiI+4oCUIGtlaW5lIOKAlDwvb3B0aW9uPicgKyByZWZPcHRpb25lbiArCiAgICAgICAgICAgICc8 L3NlbGVjdD48L2Rpdj4nICsKICAgICAgICAnPC9kaXY+JzsKCiAgICBtb2RhbFplaWdlbignTmV1 ZSBQZXJzb24gYW5sZWdlbicsIGtvZXJwZXIsCiAgICAgICAgJzxidXR0b24gY2xhc3M9ImJ0biBi dG4tZXJmb2xnIiBpZD0iZGxnLXNwZWljaGVybiI+QW5sZWdlbjwvYnV0dG9uPicsCiAgICAgICAg ZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHZhciBlaW5yZWloZW4gPSBkb2N1bWVudC5nZXRFbGVt ZW50QnlJZCgnZGxnLWVpbnJlaWhlbicpLnZhbHVlOwogICAgICAgICAgICB2YXIgcmVmU2VsID0g ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2RsZy1yZWYnKTsKICAgICAgICAgICAgdmFyIHJlZklk ID0gcmVmU2VsLnZhbHVlID8gcGFyc2VJbnQocmVmU2VsLnZhbHVlKSA6IG51bGw7CiAgICAgICAg ICAgIGlmICgoZWlucmVpaGVuID09PSAndm9yJyB8fCBlaW5yZWloZW4gPT09ICduYWNoJykgJiYg IXJlZklkKSB7CiAgICAgICAgICAgICAgICB0b2FzdCgnQml0dGUgZWluZSBSZWZlcmVuenBlcnNv biB3w6RobGVuIG9kZXIgIkdhbnogdW50ZW4iIGF1c3fDpGhsZW4nLCAnd2FybnVuZycpOwogICAg ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHZhciBkbGdGdW5r MiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkbGctZnVua3Rpb24nKS52YWx1ZTsKICAgICAg ICAgICAgdmFyIGRsZ0VsZGdsRWwyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2RsZy1lbGRn bCcpOwogICAgICAgICAgICB2YXIgZGF0ZW4gPSB7CiAgICAgICAgICAgICAgICBuYW1lOiBkb2N1 bWVudC5nZXRFbGVtZW50QnlJZCgnZGxnLW5hbWUnKS52YWx1ZS50cmltKCksCiAgICAgICAgICAg ICAgICB2b3JuYW1lOiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZGxnLXZvcm5hbWUnKS52YWx1 ZSwKICAgICAgICAgICAgICAgIGdydXBwZTogZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2RsZy1n cnVwcGUnKS52YWx1ZSwKICAgICAgICAgICAgICAgIGZ1bmt0aW9uOiBkbGdGdW5rMiwKICAgICAg ICAgICAgICAgIG9lOiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZGxnLW9lJykudmFsdWUsCiAg ICAgICAgICAgICAgICBkaWVuc3RncmFkOiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZGxnLWRp ZW5zdGdyYWQnKS52YWx1ZSwKICAgICAgICAgICAgICAgIHRlbGVmb246IGRvY3VtZW50LmdldEVs ZW1lbnRCeUlkKCdkbGctdGVsZWZvbicpLnZhbHVlLAogICAgICAgICAgICAgICAgbndLZW5udW5n OiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZGxnLW53a2VubnVuZycpLnZhbHVlLAogICAgICAg ICAgICAgICAgZW1haWw6IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkbGctZW1haWwnKS52YWx1 ZSwKICAgICAgICAgICAgICAgIGdlYnVydHNkYXR1bTogZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo J2RsZy1nZWJ1cnRzZGF0dW0nKS52YWx1ZSwKICAgICAgICAgICAgICAgIGVsRGdsUXVhbGlmaXpp ZXJ0OiBkbGdFbGRnbEVsMiA/IGRsZ0VsZGdsRWwyLmNoZWNrZWQgOiBmYWxzZSwKICAgICAgICAg ICAgICAgIGVpbnJlaWhlbjogZWlucmVpaGVuLAogICAgICAgICAgICAgICAgcmVmZXJlbnpJZDog cmVmSWQKICAgICAgICAgICAgfTsKICAgICAgICAgICAgaWYgKCFkYXRlbi5uYW1lKSB7IHBmbGlj aHRmZWxkRmVobGVyKCdkbGctbmFtZScsICdOYW1lIGlzdCBlaW4gUGZsaWNodGZlbGQnKTsgcmV0 dXJuOyB9CiAgICAgICAgICAgIGFwaVBvc3QoJy9hcGkvcGVyc29uZW4nLCBkYXRlbikudGhlbihm dW5jdGlvbihyKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gYXBpKCcvYXBpL3BsYW51bmcnKS50 aGVuKGZ1bmN0aW9uKHApIHsKICAgICAgICAgICAgICAgICAgICBaLnBsYW51bmcgPSBwOwogICAg ICAgICAgICAgICAgICAgIHBlcnNvbmVuTmV1QXVmYmF1ZW4oKTsKICAgICAgICAgICAgICAgICAg ICBtb2RhbFNjaGxpZXNzZW4oKTsKICAgICAgICAgICAgICAgICAgICBwZXJzb25hbFRhYmVsbGVS ZW5kZXJuKCk7CiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBuYW1lblJlbmRlcm4gPT09 ICdmdW5jdGlvbicpIHsKICAgICAgICAgICAgICAgICAgICAgICAgbmFtZW5SZW5kZXJuKCk7CiAg ICAgICAgICAgICAgICAgICAgICAgIGRhdGVuR3JpZFJlbmRlcm4oKTsKICAgICAgICAgICAgICAg ICAgICAgICAga29wZlJlbmRlcm4oKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg ICAgICAgICAgdG9hc3QoJ1BlcnNvbiBhbmdlbGVndCAoUG9zLiAnICsgci5wb3NpdGlvbiArICcp JywgJ2VyZm9sZycpOwogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIH0pLmNhdGNoKGZ1 bmN0aW9uKGUpIHsgdG9hc3QoJ0ZlaGxlcjogJyArIGUubWVzc2FnZSwgJ2ZlaGxlcicpOyB9KTsK ICAgICAgICB9CiAgICApOwoKICAgIHZhciBlaW5TZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ ZCgnZGxnLWVpbnJlaWhlbicpOwogICAgdmFyIHJlZkRkID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5 SWQoJ2RsZy1yZWYnKTsKICAgIGVpblNlbC5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCBmdW5j dGlvbigpIHsKICAgICAgICByZWZEZC5kaXNhYmxlZCA9IChlaW5TZWwudmFsdWUgPT09ICd1bnRl bicpOwogICAgfSk7CgogICAgLy8gVkkzLURHTC1DaGVja2JveCBibGVpYnQgZnVlciBhbGxlIEZ1 bmt0aW9uZW4gc2ljaHRiYXIgKHNlaXQgMjAyNi0wNS0yMykuCiAgICBlbGRnbFRvZ2dsZUxpc3Rl bmVyQmluZGVuKCk7Cn0KCi8vID09PT09IEFkbWluOiBNYW51ZWxsZSBTb3J0aWVydW5nIChEcmFn ICYgRHJvcCkgPT09PT0KCi8vIExpc3RldCBhbGxlIGFrdGl2ZW4gRnVlaHJ1bmdza3JhZWZ0ZSAo R3J1cHBlbiBB4oCTQyB1bmQgV0QpIHVuZCBlcmxhdWJ0Ci8vIGRlcmVuIE5ldWFub3JkbnVuZyBw ZXIgRHJhZyZEcm9wLiBCZWltIFNwZWljaGVybiB3ZXJkZW4gZGllIFBvc2l0aW9uZW4KLy8gYWxz IDEuLk4gaW4gZGVyIG5ldWVuIFJlaWhlbmZvbGdlIHZlcmdlYmVuIOKAlCBpbm5lcmhhbGIgZWlu ZXIgR3J1cHBlCi8vIHNvcnRpZXJ0IHBlcnNvbmVuTmV1QXVmYmF1ZW4oKSBvaG5laGluIG5hY2gg R3J1cHBlIHByaW1hZXIuCmV4cG9ydCBmdW5jdGlvbiBtYW51ZWxsZVNvcnRpZXJ1bmdEaWFsb2co KSB7CiAgICB2YXIgZXJsYXVidGUgPSBbJ0EnLCAnQicsICdDJywgJ1dEJ107CiAgICB2YXIgZ3J1 cHBlblJhbmcgPSB7fTsKICAgIGVybGF1YnRlLmZvckVhY2goZnVuY3Rpb24oZywgaSkgeyBncnVw cGVuUmFuZ1tnXSA9IGk7IH0pOwogICAgdmFyIHBlcnNvbmVuID0gKFoucGxhbnVuZy5wZXJzb25l biB8fCBbXSkKICAgICAgICAuZmlsdGVyKGZ1bmN0aW9uKHApIHsgcmV0dXJuIHAuYWt0aXYgJiYg ZXJsYXVidGUuaW5kZXhPZihwLmdydXBwZSkgPj0gMDsgfSkKICAgICAgICAuc29ydChmdW5jdGlv bihhLCBiKSB7CiAgICAgICAgICAgIHZhciByQSA9IGdydXBwZW5SYW5nW2EuZ3J1cHBlXSwgckIg PSBncnVwcGVuUmFuZ1tiLmdydXBwZV07CiAgICAgICAgICAgIGlmIChyQSAhPT0gckIpIHJldHVy biByQSAtIHJCOwogICAgICAgICAgICByZXR1cm4gKGEucG9zaXRpb24gfHwgOTk5KSAtIChiLnBv c2l0aW9uIHx8IDk5OSk7CiAgICAgICAgfSk7CgogICAgdmFyIGtvZXJwZXIgPSAnPHAgc3R5bGU9 Im1hcmdpbjowIDAgMTBweCAwO2NvbG9yOnZhcigtLXRleHQtbXV0ZWQpO2ZvbnQtc2l6ZToxM3B4 Ij5aaWVoZSBQZXJzb25lbiBhbSDimLAtR3JpZmYgaW4gZGllIGdld8O8bnNjaHRlIFJlaWhlbmZv bGdlIOKAlCBvZGVyIG51dHplIOKWsiAvIOKWvCBuZWJlbiBqZWRlciBaZWlsZSAoVGFzdGF0dXIt VmFyaWFudGUpLiDigJ5TcGVpY2hlcm4iIMO8YmVybmltbXQgZGllIG5ldWUgUmFuZ2ZvbGdlLicg KwogICAgICAgIGhpbGZlSWNvbignRGllIFJlaWhlbmZvbGdlIGJlc3RpbW10IG51ciBkaWUgQW56 ZWlnZSBpbiBkZXIgUGxhbnRhZmVsIHVuZCBpbSBXb2NoZW5wbGFuLCBuaWNodCBkaWUgZmFjaGxp Y2hlIFJhbmdvcmRudW5nIChGdW5rdGlvbikuIERpZSBQb3NpdGlvbnMtWmFobGVuIGF1cyBkZW0g RXhjZWwtSW1wb3J0IGJsZWliZW4gZXJoYWx0ZW4g4oCUIHNpZSB3ZXJkZW4gbnVyIG5ldSB6dWdl b3JkbmV0LCBzb2Rhc3MgZGllIFNvcnRpZXJ1bmcgZGVpbmVyIERyYWcmRHJvcC1SZWloZW5mb2xn ZSBlbnRzcHJpY2h0LicpICsKICAgICAgICAnPC9wPicgKwogICAgICAgICc8ZGl2IGlkPSJtcy1s aXN0ZSIgY2xhc3M9Im1zLWxpc3RlIj4nOwogICAgcGVyc29uZW4uZm9yRWFjaChmdW5jdGlvbihw KSB7CiAgICAgICAgdmFyIGcgPSBaLmdydXBwZW5NYXBbcC5ncnVwcGVdIHx8IHt9OwogICAgICAg IHZhciBkaWVuc3RncmFkID0gcC5kaWVuc3RncmFkID8gZXNjYXBlSFRNTChwLmRpZW5zdGdyYWQp ICsgJyAnIDogJyc7CiAgICAgICAga29lcnBlciArPSAnPGRpdiBjbGFzcz0ibXMtemVpbGUiIGRy YWdnYWJsZT0idHJ1ZSIgZGF0YS1pZD0iJyArIHAuaWQgKyAnIj4nICsKICAgICAgICAgICAgJzxz cGFuIGNsYXNzPSJtcy1ncmlmZiIgdGl0bGU9IlppZWhlbiI+4piwPC9zcGFuPicgKwogICAgICAg ICAgICAnPHNwYW4gY2xhc3M9ImdydXBwZW4tYmFkZ2UiIHN0eWxlPSJiYWNrZ3JvdW5kOicgKyBl c2NhcGVBdHRyKGcuaGludGVyZ3J1bmQgfHwgJyM2NjYnKSArICc7Y29sb3I6JyArIGVzY2FwZUF0 dHIoZy5zY2hyaWZ0IHx8ICcjZmZmJykgKyAnIj4nICsgZXNjYXBlSFRNTChwLmdydXBwZSkgKyAn PC9zcGFuPicgKwogICAgICAgICAgICAnPHNwYW4gY2xhc3M9Im1zLW5hbWUiPicgKyBkaWVuc3Rn cmFkICsgZXNjYXBlSFRNTChwLm5hbWUpICsgKHAudm9ybmFtZSA/ICcsICcgKyBlc2NhcGVIVE1M KHAudm9ybmFtZSkgOiAnJykgKyAnPC9zcGFuPicgKwogICAgICAgICAgICAnPHNwYW4gY2xhc3M9 Im1zLXJhbmciIHRpdGxlPSJBa3R1ZWxsZSBQb3NpdGlvbnMtWmFobCI+UG9zaXRpb24gJyArIChw LnBvc2l0aW9uICE9IG51bGwgPyBwLnBvc2l0aW9uIDogJ+KAlCcpICsgJzwvc3Bhbj4nICsKICAg ICAgICAgICAgLy8gVVgtQXVkaXQgU3ByaW50IDMuNiAoMjAyNi0wNS0yOSk6IFRhc3RhdHVyLUJ1 dHRvbnMgYWxzCiAgICAgICAgICAgIC8vIGExMXktQWx0ZXJuYXRpdmUgenVtIERyYWcmRHJvcC4K ICAgICAgICAgICAgJzxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0ibXMtcGZlaWwiIGRhdGEt cmljaHR1bmc9ImhvY2giIHRpdGxlPSJFaW5lIFBvc2l0aW9uIGhvY2giIGFyaWEtbGFiZWw9IkVp bmUgUG9zaXRpb24gaG9jaCI+4payPC9idXR0b24+JyArCiAgICAgICAgICAgICc8YnV0dG9uIHR5 cGU9ImJ1dHRvbiIgY2xhc3M9Im1zLXBmZWlsIiBkYXRhLXJpY2h0dW5nPSJydW50ZXIiIHRpdGxl PSJFaW5lIFBvc2l0aW9uIHJ1bnRlciIgYXJpYS1sYWJlbD0iRWluZSBQb3NpdGlvbiBydW50ZXIi PuKWvDwvYnV0dG9uPicgKwogICAgICAgICc8L2Rpdj4nOwogICAgfSk7CiAgICBrb2VycGVyICs9 ICc8L2Rpdj4nOwoKICAgIHZhciBmdXNzID0gJzxidXR0b24gY2xhc3M9ImJ0biIgaWQ9Im1zLWFi YnJlY2hlbiI+QWJicmVjaGVuPC9idXR0b24+JyArCiAgICAgICAgICAgICAgICc8YnV0dG9uIGNs YXNzPSJidG4gYnRuLXByaW1hZXIiIGlkPSJtcy1zcGVpY2hlcm4iPlNwZWljaGVybjwvYnV0dG9u Pic7CiAgICBtb2RhbFplaWdlbignTWFudWVsbGUgU29ydGllcnVuZyDigJQgRsO8aHJ1bmdza3LD pGZ0ZSAoQeKAk0MsIFdEKScsIGtvZXJwZXIsIGZ1c3MsIG51bGwpOwoKICAgIHZhciBsaXN0ZSA9 IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtcy1saXN0ZScpOwogICAgdmFyIGdlem9nZW4gPSBu dWxsOwoKICAgIGxpc3RlLmFkZEV2ZW50TGlzdGVuZXIoJ2RyYWdzdGFydCcsIGZ1bmN0aW9uKGUp IHsKICAgICAgICB2YXIgemVpbGUgPSBlLnRhcmdldC5jbG9zZXN0ID8gZS50YXJnZXQuY2xvc2Vz dCgnLm1zLXplaWxlJykgOiBudWxsOwogICAgICAgIGlmICghemVpbGUpIHJldHVybjsKICAgICAg ICBnZXpvZ2VuID0gemVpbGU7CiAgICAgICAgemVpbGUuY2xhc3NMaXN0LmFkZCgnbXMtZHJhZ2dp bmcnKTsKICAgICAgICB0cnkgeyBlLmRhdGFUcmFuc2Zlci5lZmZlY3RBbGxvd2VkID0gJ21vdmUn OyBlLmRhdGFUcmFuc2Zlci5zZXREYXRhKCd0ZXh0L3BsYWluJywgemVpbGUuZ2V0QXR0cmlidXRl KCdkYXRhLWlkJykpOyB9IGNhdGNoIChfKSB7fQogICAgfSk7CiAgICBsaXN0ZS5hZGRFdmVudExp c3RlbmVyKCdkcmFnZW5kJywgZnVuY3Rpb24oKSB7CiAgICAgICAgaWYgKGdlem9nZW4pIGdlem9n ZW4uY2xhc3NMaXN0LnJlbW92ZSgnbXMtZHJhZ2dpbmcnKTsKICAgICAgICBnZXpvZ2VuID0gbnVs bDsKICAgIH0pOwogICAgbGlzdGUuYWRkRXZlbnRMaXN0ZW5lcignZHJhZ292ZXInLCBmdW5jdGlv bihlKSB7CiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgIGlmICghZ2V6b2dlbikg cmV0dXJuOwogICAgICAgIHZhciB6aWVsID0gZS50YXJnZXQuY2xvc2VzdCA/IGUudGFyZ2V0LmNs b3Nlc3QoJy5tcy16ZWlsZScpIDogbnVsbDsKICAgICAgICBpZiAoIXppZWwgfHwgemllbCA9PT0g Z2V6b2dlbikgcmV0dXJuOwogICAgICAgIHZhciByZWN0ID0gemllbC5nZXRCb3VuZGluZ0NsaWVu dFJlY3QoKTsKICAgICAgICB2YXIgb2JlcmhhbGIgPSAoZS5jbGllbnRZIC0gcmVjdC50b3ApIDwg KHJlY3QuaGVpZ2h0IC8gMik7CiAgICAgICAgaWYgKG9iZXJoYWxiKSB6aWVsLnBhcmVudE5vZGUu aW5zZXJ0QmVmb3JlKGdlem9nZW4sIHppZWwpOwogICAgICAgIGVsc2UgICAgICAgICAgemllbC5w YXJlbnROb2RlLmluc2VydEJlZm9yZShnZXpvZ2VuLCB6aWVsLm5leHRTaWJsaW5nKTsKICAgIH0p OwoKICAgIC8vIFVYLUF1ZGl0IFNwcmludCAzLjYgKDIwMjYtMDUtMjkpOiBUYXN0YXR1ci1OYXZp Z2F0aW9uIHZpYSDilrIv4pa8LUJ1dHRvbnMKICAgIC8vIGFscyBBbHRlcm5hdGl2ZSB6dW0gRHJh ZyZEcm9wIChhMTF5LUFuZm9yZGVydW5nLCBkYSBEcmFnJkRyb3AgZnVlcgogICAgLy8gVGFzdGF0 dXItL1NjcmVlbnJlYWRlci1OdXR6ZXIgbmljaHQgYmVkaWVuYmFyIGlzdCkuCiAgICBsaXN0ZS5h ZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKGUpIHsKICAgICAgICB2YXIgYnRuID0g ZS50YXJnZXQgJiYgZS50YXJnZXQuY2xvc2VzdCAmJiBlLnRhcmdldC5jbG9zZXN0KCcubXMtcGZl aWwnKTsKICAgICAgICBpZiAoIWJ0bikgcmV0dXJuOwogICAgICAgIHZhciB6ZWlsZSA9IGJ0bi5j bG9zZXN0KCcubXMtemVpbGUnKTsKICAgICAgICBpZiAoIXplaWxlKSByZXR1cm47CiAgICAgICAg dmFyIHJpY2h0dW5nID0gYnRuLmdldEF0dHJpYnV0ZSgnZGF0YS1yaWNodHVuZycpOwogICAgICAg IGlmIChyaWNodHVuZyA9PT0gJ2hvY2gnKSB7CiAgICAgICAgICAgIHZhciBwcmV2ID0gemVpbGUu cHJldmlvdXNFbGVtZW50U2libGluZzsKICAgICAgICAgICAgaWYgKHByZXYpIHplaWxlLnBhcmVu dE5vZGUuaW5zZXJ0QmVmb3JlKHplaWxlLCBwcmV2KTsKICAgICAgICB9IGVsc2UgewogICAgICAg ICAgICB2YXIgbmV4dCA9IHplaWxlLm5leHRFbGVtZW50U2libGluZzsKICAgICAgICAgICAgaWYg KG5leHQpIHplaWxlLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKG5leHQsIHplaWxlKTsKICAgICAg ICB9CiAgICAgICAgLy8gRm9rdXMgYXVmIGdsZWljaGVtIEJ1dHRvbiBiZWhhbHRlbiwgZGFtaXQg d2VpdGVyZSDilrIv4pa8LUtsaWNrcwogICAgICAgIC8vIChvZGVyIEVudGVyIHZpYSBLZXlib2Fy ZCkgb2huZSBNYXVzIHdlaXRlcmdlaGVuIGtvZW5uZW4uCiAgICAgICAgdHJ5IHsgYnRuLmZvY3Vz KCk7IH0gY2F0Y2ggKF8pIHt9CiAgICB9KTsKCiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn bXMtYWJicmVjaGVuJykuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBtb2RhbFNjaGxpZXNzZW4p OwogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21zLXNwZWljaGVybicpLmFkZEV2ZW50TGlz dGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oKSB7CiAgICAgICAgLy8gTmV1ZSBET00tUmVpaGVuZm9s Z2UgZWluc2FtbWVsbgogICAgICAgIHZhciBpZHNOZXUgPSBbXTsKICAgICAgICBkb2N1bWVudC5x dWVyeVNlbGVjdG9yQWxsKCcjbXMtbGlzdGUgLm1zLXplaWxlJykuZm9yRWFjaChmdW5jdGlvbihl bCkgewogICAgICAgICAgICBpZHNOZXUucHVzaChwYXJzZUludChlbC5nZXRBdHRyaWJ1dGUoJ2Rh dGEtaWQnKSwgMTApKTsKICAgICAgICB9KTsKICAgICAgICAvLyBCaXNoZXJpZ2UgUG9zaXRpb25z LVphaGxlbiBkZXIgYmV0ZWlsaWd0ZW4gUGVyc29uZW4gKHNvcnRpZXJ0IGF1ZnN0ZWlnZW5kKQog ICAgICAgIC8vIGJsZWliZW4gZXJoYWx0ZW4g4oCUIHNpZSB3ZXJkZW4gbnVyIG5ldSB6dWdlb3Jk bmV0LiBTbyBnZWh0IGRpZSBTdHJ1a3R1cgogICAgICAgIC8vIGF1cyBkZW0gRXhjZWwtSW1wb3J0 ICgxMTEsIDExMiwgMTIxLCAuLi4pIG5pY2h0IHZlcmxvcmVuLgogICAgICAgIHZhciBwb3NpdGlv bmVuQWx0ID0gaWRzTmV1Lm1hcChmdW5jdGlvbihpZCkgewogICAgICAgICAgICB2YXIgcCA9ICha LnBsYW51bmcucGVyc29uZW4gfHwgW10pLmZpbmQoZnVuY3Rpb24oeCkgeyByZXR1cm4geC5pZCA9 PT0gaWQ7IH0pOwogICAgICAgICAgICByZXR1cm4gcCAmJiBwLnBvc2l0aW9uICE9IG51bGwgPyBw LnBvc2l0aW9uIDogOTk5OTsKICAgICAgICB9KS5zbGljZSgpLnNvcnQoZnVuY3Rpb24oYSwgYikg eyByZXR1cm4gYSAtIGI7IH0pOwogICAgICAgIHZhciByZWloZSA9IGlkc05ldS5tYXAoZnVuY3Rp b24oaWQsIGkpIHsKICAgICAgICAgICAgcmV0dXJuIHsgaWQ6IGlkLCBwb3NpdGlvbjogcG9zaXRp b25lbkFsdFtpXSB9OwogICAgICAgIH0pOwogICAgICAgIGFwaVB1dCgnL2FwaS9wZXJzb25lbi9y ZWloZW5mb2xnZScsIHJlaWhlKS50aGVuKGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZWloZS5m b3JFYWNoKGZ1bmN0aW9uKHIpIHsKICAgICAgICAgICAgICAgIHZhciBwID0gKFoucGxhbnVuZy5w ZXJzb25lbiB8fCBbXSkuZmluZChmdW5jdGlvbih4KSB7IHJldHVybiB4LmlkID09PSByLmlkOyB9 KTsKICAgICAgICAgICAgICAgIGlmIChwKSBwLnBvc2l0aW9uID0gci5wb3NpdGlvbjsKICAgICAg ICAgICAgfSk7CiAgICAgICAgICAgIG1vZGFsU2NobGllc3NlbigpOwogICAgICAgICAgICBwZXJz b25lbk5ldUF1ZmJhdWVuKCk7CiAgICAgICAgICAgIHBlcnNvbmFsVGFiZWxsZVJlbmRlcm4oKTsK ICAgICAgICAgICAgaWYgKHR5cGVvZiBuYW1lblJlbmRlcm4gPT09ICdmdW5jdGlvbicpIHsKICAg ICAgICAgICAgICAgIG5hbWVuUmVuZGVybigpOwogICAgICAgICAgICAgICAgZGF0ZW5HcmlkUmVu ZGVybigpOwogICAgICAgICAgICAgICAga29wZlJlbmRlcm4oKTsKICAgICAgICAgICAgfQogICAg ICAgICAgICB0b2FzdCgnUmVpaGVuZm9sZ2UgZ2VzcGVpY2hlcnQgKCcgKyByZWloZS5sZW5ndGgg KyAnIFBlcnNvbmVuKScsICdlcmZvbGcnKTsKICAgICAgICB9KS5jYXRjaChmdW5jdGlvbihlKSB7 IHRvYXN0KCdGZWhsZXI6ICcgKyBlLm1lc3NhZ2UsICdmZWhsZXInKTsgfSk7CiAgICB9KTsKfQoK Ly8gPT09PT0gQWRtaW46IFJhbmcgaW5saW5lIGVkaXRpZXJlbiAobnVyIFN1cGVyVXNlcikgPT09 PT0KCi8vIEVyc2V0enQgZGFzIC5yYW5nLWVkaXQtU3BhbiBkdXJjaCBlaW4gbnVtYmVyLUlucHV0 LiBFbnRlci9CbHVyIHNwZWljaGVydCwKLy8gRXNjYXBlIGJyaWNodCBhYi4gQmVpbSBTcGVpY2hl cm4gd2lyZCBudXIgZGllIFJvaHphaGwgcGVyc2lzdGllcnQg4oCUIGRpZQovLyBTb3J0aWVydW5n IGluIGRlciBQbGFudGFmZWwgZXJnaWJ0IHNpY2ggdWViZXIgcGVyc29uZW5OZXVBdWZiYXVlbigp LgpleHBvcnQgZnVuY3Rpb24gcmFuZ0lubGluZUVkaXQoaWQsIHNwYW4pIHsKICAgIGlmICghWi5y ZWNodGUuaXN0U3VwZXJVc2VyKSByZXR1cm47CiAgICB2YXIgcGVyc29uID0gKFoucGxhbnVuZy5w ZXJzb25lbiB8fCBbXSkuZmluZChmdW5jdGlvbihwKSB7IHJldHVybiBwLmlkID09PSBpZDsgfSk7 CiAgICBpZiAoIXBlcnNvbikgcmV0dXJuOwogICAgdmFyIGFsdCA9IHBlcnNvbi5wb3NpdGlvbiAh PSBudWxsID8gcGVyc29uLnBvc2l0aW9uIDogJyc7CgogICAgdmFyIGlucHV0ID0gZG9jdW1lbnQu Y3JlYXRlRWxlbWVudCgnaW5wdXQnKTsKICAgIGlucHV0LnR5cGUgPSAnbnVtYmVyJzsKICAgIGlu cHV0Lm1pbiA9ICcwJzsKICAgIGlucHV0LnN0ZXAgPSAnMSc7CiAgICBpbnB1dC52YWx1ZSA9IFN0 cmluZyhhbHQpOwogICAgaW5wdXQuY2xhc3NOYW1lID0gJ3JhbmctZWRpdC1pbnB1dCc7CiAgICBz cGFuLnJlcGxhY2VXaXRoKGlucHV0KTsKICAgIGlucHV0LmZvY3VzKCk7CiAgICBpbnB1dC5zZWxl Y3QoKTsKCiAgICB2YXIgYWJnZXNjaGxvc3NlbiA9IGZhbHNlOwogICAgZnVuY3Rpb24gdWViZXJu ZWhtZW4oKSB7CiAgICAgICAgaWYgKGFiZ2VzY2hsb3NzZW4pIHJldHVybjsKICAgICAgICBhYmdl c2NobG9zc2VuID0gdHJ1ZTsKICAgICAgICB2YXIgdiA9IGlucHV0LnZhbHVlLnRyaW0oKTsKICAg ICAgICB2YXIgbmV1ID0gdiA9PT0gJycgPyBudWxsIDogcGFyc2VJbnQodiwgMTApOwogICAgICAg IGlmICh2ICE9PSAnJyAmJiAoaXNOYU4obmV1KSB8fCBuZXUgPCAwKSkgewogICAgICAgICAgICB0 b2FzdCgnVW5nw7xsdGlnZSBSYW5nemFobCcsICd3YXJudW5nJyk7CiAgICAgICAgICAgIHBlcnNv bmFsVGFiZWxsZVJlbmRlcm4oKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAg ICBpZiAobmV1ID09PSBhbHQgfHwgKG5ldSA9PSBudWxsICYmIGFsdCA9PT0gJycpKSB7CiAgICAg ICAgICAgIHBlcnNvbmFsVGFiZWxsZVJlbmRlcm4oKTsKICAgICAgICAgICAgcmV0dXJuOwogICAg ICAgIH0KICAgICAgICBhcGlQdXQoJy9hcGkvcGVyc29uZW4vJyArIGlkLCB7IHBvc2l0aW9uOiBu ZXUgfSkudGhlbihmdW5jdGlvbigpIHsKICAgICAgICAgICAgcGVyc29uLnBvc2l0aW9uID0gbmV1 OwogICAgICAgICAgICBwZXJzb25lbk5ldUF1ZmJhdWVuKCk7CiAgICAgICAgICAgIHBlcnNvbmFs VGFiZWxsZVJlbmRlcm4oKTsKICAgICAgICAgICAgaWYgKHR5cGVvZiBuYW1lblJlbmRlcm4gPT09 ICdmdW5jdGlvbicpIHsKICAgICAgICAgICAgICAgIG5hbWVuUmVuZGVybigpOwogICAgICAgICAg ICAgICAgZGF0ZW5HcmlkUmVuZGVybigpOwogICAgICAgICAgICAgICAga29wZlJlbmRlcm4oKTsK ICAgICAgICAgICAgfQogICAgICAgICAgICB0b2FzdCgnUmFuZyBha3R1YWxpc2llcnQnLCAnZXJm b2xnJyk7CiAgICAgICAgfSkuY2F0Y2goZnVuY3Rpb24oZSkgewogICAgICAgICAgICB0b2FzdCgn RmVobGVyOiAnICsgZS5tZXNzYWdlLCAnZmVobGVyJyk7CiAgICAgICAgICAgIHBlcnNvbmFsVGFi ZWxsZVJlbmRlcm4oKTsKICAgICAgICB9KTsKICAgIH0KICAgIGZ1bmN0aW9uIGFiYnJlY2hlbigp IHsKICAgICAgICBpZiAoYWJnZXNjaGxvc3NlbikgcmV0dXJuOwogICAgICAgIGFiZ2VzY2hsb3Nz ZW4gPSB0cnVlOwogICAgICAgIHBlcnNvbmFsVGFiZWxsZVJlbmRlcm4oKTsKICAgIH0KCiAgICBp bnB1dC5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgZnVuY3Rpb24oZSkgewogICAgICAgIGlm IChlLmtleSA9PT0gJ0VudGVyJykgICAgICAgeyBlLnByZXZlbnREZWZhdWx0KCk7IHVlYmVybmVo bWVuKCk7IH0KICAgICAgICBlbHNlIGlmIChlLmtleSA9PT0gJ0VzY2FwZScpIHsgZS5wcmV2ZW50 RGVmYXVsdCgpOyBhYmJyZWNoZW4oKTsgfQogICAgfSk7CiAgICBpbnB1dC5hZGRFdmVudExpc3Rl bmVyKCdibHVyJywgdWViZXJuZWhtZW4pOwp9CgovLyA9PT09PSBBZG1pbjogRGllbnN0Z3JhZCBp bmxpbmUgZWRpdGllcmVuIChudXIgU3VwZXJVc2VyKSA9PT09PQoKZXhwb3J0IGZ1bmN0aW9uIGRp ZW5zdGdyYWRJbmxpbmVFZGl0KGlkLCBzcGFuKSB7CiAgICBpZiAoIVoucmVjaHRlLmlzdFN1cGVy VXNlcikgcmV0dXJuOwogICAgdmFyIHBlcnNvbiA9IChaLnBsYW51bmcucGVyc29uZW4gfHwgW10p LmZpbmQoZnVuY3Rpb24ocCkgeyByZXR1cm4gcC5pZCA9PT0gaWQ7IH0pOwogICAgaWYgKCFwZXJz b24pIHJldHVybjsKICAgIHZhciBhbHQgPSBwZXJzb24uZGllbnN0Z3JhZCB8fCAnJzsKCiAgICB2 YXIgc2VsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2VsZWN0Jyk7CiAgICBzZWwuY2xhc3NO YW1lID0gJ2RpZW5zdGdyYWQtZWRpdC1pbnB1dCc7CiAgICB2YXIgbGVlck9wdCA9IGRvY3VtZW50 LmNyZWF0ZUVsZW1lbnQoJ29wdGlvbicpOwogICAgbGVlck9wdC52YWx1ZSA9ICcnOwogICAgbGVl ck9wdC50ZXh0Q29udGVudCA9ICfigJQgb2huZSDigJQnOwogICAgaWYgKCFhbHQpIGxlZXJPcHQu c2VsZWN0ZWQgPSB0cnVlOwogICAgc2VsLmFwcGVuZENoaWxkKGxlZXJPcHQpOwogICAgZ2V0RGll bnN0Z3JhZGUoKS5mb3JFYWNoKGZ1bmN0aW9uKGcpIHsKICAgICAgICB2YXIgbyA9IGRvY3VtZW50 LmNyZWF0ZUVsZW1lbnQoJ29wdGlvbicpOwogICAgICAgIG8udmFsdWUgPSBnOwogICAgICAgIG8u dGV4dENvbnRlbnQgPSBnOwogICAgICAgIGlmIChnID09PSBhbHQpIG8uc2VsZWN0ZWQgPSB0cnVl OwogICAgICAgIHNlbC5hcHBlbmRDaGlsZChvKTsKICAgIH0pOwogICAgc3Bhbi5yZXBsYWNlV2l0 aChzZWwpOwogICAgc2VsLmZvY3VzKCk7CgogICAgdmFyIGFiZ2VzY2hsb3NzZW4gPSBmYWxzZTsK ICAgIGZ1bmN0aW9uIHVlYmVybmVobWVuKCkgewogICAgICAgIGlmIChhYmdlc2NobG9zc2VuKSBy ZXR1cm47CiAgICAgICAgYWJnZXNjaGxvc3NlbiA9IHRydWU7CiAgICAgICAgdmFyIG5ldSA9IHNl bC52YWx1ZSB8fCAnJzsKICAgICAgICBpZiAobmV1ID09PSBhbHQpIHsgcGVyc29uYWxUYWJlbGxl UmVuZGVybigpOyByZXR1cm47IH0KICAgICAgICBhcGlQdXQoJy9hcGkvcGVyc29uZW4vJyArIGlk LCB7IGRpZW5zdGdyYWQ6IG5ldSB9KS50aGVuKGZ1bmN0aW9uKCkgewogICAgICAgICAgICBwZXJz b24uZGllbnN0Z3JhZCA9IG5ldTsKICAgICAgICAgICAgcGVyc29uYWxUYWJlbGxlUmVuZGVybigp OwogICAgICAgICAgICBpZiAodHlwZW9mIG5hbWVuUmVuZGVybiA9PT0gJ2Z1bmN0aW9uJykgbmFt ZW5SZW5kZXJuKCk7CiAgICAgICAgICAgIHRvYXN0KG5ldSA/ICgnRGllbnN0Z3JhZDogJyArIG5l dSkgOiAnRGllbnN0Z3JhZCBlbnRmZXJudCcsICdlcmZvbGcnKTsKICAgICAgICB9KS5jYXRjaChm dW5jdGlvbihlKSB7CiAgICAgICAgICAgIHRvYXN0KCdGZWhsZXI6ICcgKyBlLm1lc3NhZ2UsICdm ZWhsZXInKTsKICAgICAgICAgICAgcGVyc29uYWxUYWJlbGxlUmVuZGVybigpOwogICAgICAgIH0p OwogICAgfQogICAgZnVuY3Rpb24gYWJicmVjaGVuKCkgewogICAgICAgIGlmIChhYmdlc2NobG9z c2VuKSByZXR1cm47CiAgICAgICAgYWJnZXNjaGxvc3NlbiA9IHRydWU7CiAgICAgICAgcGVyc29u YWxUYWJlbGxlUmVuZGVybigpOwogICAgfQogICAgc2VsLmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5n ZScsIHVlYmVybmVobWVuKTsKICAgIHNlbC5hZGRFdmVudExpc3RlbmVyKCdibHVyJywgdWViZXJu ZWhtZW4pOwogICAgc2VsLmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBmdW5jdGlvbihlKSB7 CiAgICAgICAgaWYgKGUua2V5ID09PSAnRXNjYXBlJykgeyBlLnByZXZlbnREZWZhdWx0KCk7IGFi YnJlY2hlbigpOyB9CiAgICB9KTsKfQoKLy8gPT09PT0gQWRtaW46IEZ1bmt0aW9uIGlubGluZSBl ZGl0aWVyZW4gKG51ciBTdXBlclVzZXIpID09PT09CgovLyBFcnNldHp0IGRhcyAuZnVua3Rpb24t ZWRpdC1TcGFuIGR1cmNoIGVpbiBEcm9wZG93bi4gQ2hhbmdlL0JsdXIgc3BlaWNoZXJ0LAovLyBF c2NhcGUgYnJpY2h0IGFiLiBBZW5kZXJ1bmcgZ3JlaWZ0IGRpcmVrdCBpbiBkZ2xzSW5TY2hpY2h0 KCkg4oCUIGRpZSBQbGFuLQovLyB0YWZlbCB1bmQgQmVzZXR6dW5nc2tvbnRyb2xsZSByZWNobmVu IGF1dG9tYXRpc2NoIG5hY2guCmV4cG9ydCBmdW5jdGlvbiBmdW5rdGlvbklubGluZUVkaXQoaWQs IHNwYW4pIHsKICAgIGlmICghWi5yZWNodGUuaXN0U3VwZXJVc2VyKSByZXR1cm47CiAgICB2YXIg cGVyc29uID0gKFoucGxhbnVuZy5wZXJzb25lbiB8fCBbXSkuZmluZChmdW5jdGlvbihwKSB7IHJl dHVybiBwLmlkID09PSBpZDsgfSk7CiAgICBpZiAoIXBlcnNvbikgcmV0dXJuOwogICAgdmFyIGFs dCA9IHBlcnNvbi5mdW5rdGlvbiB8fCAnJzsKCiAgICB2YXIgc2VsID0gZG9jdW1lbnQuY3JlYXRl RWxlbWVudCgnc2VsZWN0Jyk7CiAgICBzZWwuY2xhc3NOYW1lID0gJ2Z1bmt0aW9uLWVkaXQtaW5w dXQnOwogICAgdmFyIGxlZXJPcHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdvcHRpb24nKTsK ICAgIGxlZXJPcHQudmFsdWUgPSAnJzsKICAgIGxlZXJPcHQudGV4dENvbnRlbnQgPSAn4oCUIG9o bmUg4oCUJzsKICAgIGlmICghYWx0KSBsZWVyT3B0LnNlbGVjdGVkID0gdHJ1ZTsKICAgIHNlbC5h cHBlbmRDaGlsZChsZWVyT3B0KTsKICAgIGdldEZ1bmt0aW9uZW4oKS5mb3JFYWNoKGZ1bmN0aW9u KGYpIHsKICAgICAgICB2YXIgbyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ29wdGlvbicpOwog ICAgICAgIG8udmFsdWUgPSBmLmNvZGU7CiAgICAgICAgby50ZXh0Q29udGVudCA9IGYuY29kZTsK ICAgICAgICBpZiAoZi5jb2RlID09PSBhbHQpIG8uc2VsZWN0ZWQgPSB0cnVlOwogICAgICAgIHNl bC5hcHBlbmRDaGlsZChvKTsKICAgIH0pOwogICAgc3Bhbi5yZXBsYWNlV2l0aChzZWwpOwogICAg c2VsLmZvY3VzKCk7CgogICAgdmFyIGFiZ2VzY2hsb3NzZW4gPSBmYWxzZTsKICAgIGZ1bmN0aW9u IHVlYmVybmVobWVuKCkgewogICAgICAgIGlmIChhYmdlc2NobG9zc2VuKSByZXR1cm47CiAgICAg ICAgYWJnZXNjaGxvc3NlbiA9IHRydWU7CiAgICAgICAgdmFyIG5ldSA9IHNlbC52YWx1ZSB8fCAn JzsKICAgICAgICBpZiAobmV1ID09PSBhbHQpIHsgcGVyc29uYWxUYWJlbGxlUmVuZGVybigpOyBy ZXR1cm47IH0KICAgICAgICBhcGlQdXQoJy9hcGkvcGVyc29uZW4vJyArIGlkLCB7IGZ1bmt0aW9u OiBuZXUgfSkudGhlbihmdW5jdGlvbigpIHsKICAgICAgICAgICAgcGVyc29uLmZ1bmt0aW9uID0g bmV1OwogICAgICAgICAgICBwZXJzb25hbFRhYmVsbGVSZW5kZXJuKCk7CiAgICAgICAgICAgIHRv YXN0KG5ldSA/ICgnRnVua3Rpb24gZ2VzZXR6dDogJyArIG5ldSkgOiAnRnVua3Rpb24gZW50ZmVy bnQnLCAnZXJmb2xnJyk7CiAgICAgICAgfSkuY2F0Y2goZnVuY3Rpb24oZSkgewogICAgICAgICAg ICB0b2FzdCgnRmVobGVyOiAnICsgZS5tZXNzYWdlLCAnZmVobGVyJyk7CiAgICAgICAgICAgIHBl cnNvbmFsVGFiZWxsZVJlbmRlcm4oKTsKICAgICAgICB9KTsKICAgIH0KICAgIGZ1bmN0aW9uIGFi YnJlY2hlbigpIHsKICAgICAgICBpZiAoYWJnZXNjaGxvc3NlbikgcmV0dXJuOwogICAgICAgIGFi Z2VzY2hsb3NzZW4gPSB0cnVlOwogICAgICAgIHBlcnNvbmFsVGFiZWxsZVJlbmRlcm4oKTsKICAg IH0KICAgIHNlbC5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCB1ZWJlcm5laG1lbik7CiAgICBz ZWwuYWRkRXZlbnRMaXN0ZW5lcignYmx1cicsIHVlYmVybmVobWVuKTsKICAgIHNlbC5hZGRFdmVu dExpc3RlbmVyKCdrZXlkb3duJywgZnVuY3Rpb24oZSkgewogICAgICAgIGlmIChlLmtleSA9PT0g J0VzY2FwZScpIHsgZS5wcmV2ZW50RGVmYXVsdCgpOyBhYmJyZWNoZW4oKTsgfQogICAgfSk7Cn0K Ci8vID09PT09IEFkbWluOiBBbnNwcmVjaHBhcnRuZXItRmxhZyBpbmxpbmUgdG9nZ2xlbiAoU3Vw ZXJVc2VyIG9ubHkpID09PT09Ci8vCi8vIEtsaWNrIGF1ZiBkYXMgU3ltYm9sIGluIGRlciBTcGFs dGUg4oCeQW5zcHJlY2hwYXJ0bmVyIiB0b2dnbGV0IGRhcyBGbGFnCi8vIHAuaXN0QW5zcHJlY2hw YXJ0bmVyLiBTZWl0IDIwMjYtMDUtMjUgb2huZSBGdW5rdGlvbnMtL0RpZW5zdGdydXBwZW4tCi8v IEdhdGluZyDigJQgamVkZSBQZXJzb24ga2FubiB0aGVvcmV0aXNjaCBhbHMgQW5zcHJlY2hwYXJ0 bmVyIGJlbmFubnQgd2VyZGVuLgpleHBvcnQgZnVuY3Rpb24gYW5zcHJlY2hwYXJ0bmVySW5saW5l VG9nZ2xlKGlkKSB7CiAgICBpZiAoIVoucmVjaHRlLmlzdFN1cGVyVXNlcikgcmV0dXJuOwogICAg dmFyIHBlcnNvbiA9IChaLnBsYW51bmcucGVyc29uZW4gfHwgW10pLmZpbmQoZnVuY3Rpb24ocCkg eyByZXR1cm4gcC5pZCA9PT0gaWQ7IH0pOwogICAgaWYgKCFwZXJzb24pIHJldHVybjsKICAgIHZh ciBuZXUgPSAhcGVyc29uLmlzdEFuc3ByZWNocGFydG5lcjsKICAgIGFwaVB1dCgnL2FwaS9wZXJz b25lbi8nICsgaWQsIHsgaXN0QW5zcHJlY2hwYXJ0bmVyOiBuZXUgfSkudGhlbihmdW5jdGlvbigp IHsKICAgICAgICBwZXJzb24uaXN0QW5zcHJlY2hwYXJ0bmVyID0gbmV1OwogICAgICAgIHBlcnNv bmFsVGFiZWxsZVJlbmRlcm4oKTsKICAgICAgICB0b2FzdChuZXUgPyAnQWxzIEFuc3ByZWNocGFy dG5lciBtYXJraWVydCcgOiAnQW5zcHJlY2hwYXJ0bmVyLU1hcmtpZXJ1bmcgZW50ZmVybnQnLCAn ZXJmb2xnJyk7CiAgICB9KS5jYXRjaChmdW5jdGlvbihlKSB7CiAgICAgICAgdG9hc3QoJ0ZlaGxl cjogJyArIGUubWVzc2FnZSwgJ2ZlaGxlcicpOwogICAgICAgIHBlcnNvbmFsVGFiZWxsZVJlbmRl cm4oKTsKICAgIH0pOwp9CgovLyA9PT09PSBBZG1pbjogUGVyc29uIGF1cyBkZXIgUGxhbnVuZyBl aW4tL2F1c2JsZW5kZW4gKFN1cGVyVXNlcikgPT09PT0KCi8vIFByby1QZXJzb24tU2ljaHRiYXJr ZWl0IGluIFBsYW51bmdzYW5zaWNodC9Xb2NoZW5wbGFuL1BlcnMuIFBsYW4uIFNldHp0Ci8vIHBl cnNvbi5pblBsYW51bmcgKGZhbHNlID0gYXVzZ2VibGVuZGV0KSB1bmQgYmF1dCBkaWUgUGVyc29u ZW5saXN0ZSArCi8vIGRhcyBHcmlkIG5ldSBhdWYsIGRhbWl0IGRpZSBQZXJzb24gc29mb3J0IGVy c2NoZWludC92ZXJzY2h3aW5kZXQuCmV4cG9ydCBmdW5jdGlvbiBpblBsYW51bmdJbmxpbmVUb2dn bGUoaWQpIHsKICAgIGlmICghWi5yZWNodGUuaXN0U3VwZXJVc2VyKSByZXR1cm47CiAgICB2YXIg cGVyc29uID0gKFoucGxhbnVuZy5wZXJzb25lbiB8fCBbXSkuZmluZChmdW5jdGlvbihwKSB7IHJl dHVybiBwLmlkID09PSBpZDsgfSk7CiAgICBpZiAoIXBlcnNvbikgcmV0dXJuOwogICAgdmFyIG5l dVNpY2h0YmFyID0gcGVyc29uLmluUGxhbnVuZyA9PT0gZmFsc2U7ICAgLy8gYWt0dWVsbCBhdXNn ZWJsZW5kZXQgLT4gd2llZGVyIGVpbmJsZW5kZW4KICAgIHZhciBuZXVJblBsYW51bmcgPSAhIW5l dVNpY2h0YmFyOyAgICAgICAgICAgICAgIC8vIHRydWUgPSBzaWNodGJhciwgZmFsc2UgPSBhdXNn ZWJsZW5kZXQKICAgIGFwaVB1dCgnL2FwaS9wZXJzb25lbi8nICsgaWQsIHsgaW5QbGFudW5nOiBu ZXVJblBsYW51bmcgfSkudGhlbihmdW5jdGlvbigpIHsKICAgICAgICBwZXJzb24uaW5QbGFudW5n ID0gbmV1SW5QbGFudW5nOwogICAgICAgIHBlcnNvbmFsVGFiZWxsZVJlbmRlcm4oKTsKICAgICAg ICAvLyBQbGFudW5ncy1HcmlkIG5ldSBhdWZiYXVlbiDigJQgUGVyc29uIGVyc2NoZWludC92ZXJz Y2h3aW5kZXQgc29mb3J0LgogICAgICAgIHBlcnNvbmVuTmV1QXVmYmF1ZW4oKTsKICAgICAgICBp ZiAodHlwZW9mIG5hbWVuUmVuZGVybiA9PT0gJ2Z1bmN0aW9uJykgeyBuYW1lblJlbmRlcm4oKTsg ZGF0ZW5HcmlkUmVuZGVybigpOyBrb3BmUmVuZGVybigpOyB9CiAgICAgICAgdG9hc3QobmV1SW5Q bGFudW5nID8gJ1BlcnNvbiB3aXJkIGluIGRlciBQbGFudW5nIGFuZ2V6ZWlndCcgOiAnUGVyc29u IGluIGRlciBQbGFudW5nIGF1c2dlYmxlbmRldCcsICdlcmZvbGcnKTsKICAgIH0pLmNhdGNoKGZ1 bmN0aW9uKGUpIHsKICAgICAgICB0b2FzdCgnRmVobGVyOiAnICsgZS5tZXNzYWdlLCAnZmVobGVy Jyk7CiAgICAgICAgcGVyc29uYWxUYWJlbGxlUmVuZGVybigpOwogICAgfSk7Cn0KCi8vID09PT09 IEFkbWluOiBWSTMgREdMIGlubGluZSB0b2dnbGVuIChTdXBlclVzZXIsIGZ1ZXIgYWxsZSBQZXJz b25lbikgPT09PT0KCi8vIEJvb2wtSW5saW5lLUVkaXQgb2huZSBFZGl0LU1vZHVzOiBTaW5nbGUt S2xpY2sgYXVmIGRhcyBTeW1ib2wgdG9nZ2xldAovLyBkYXMgYGVsRGdsUXVhbGlmaXppZXJ0YC1G bGFnIGRlciBQZXJzb24sIHNwZWljaGVydCB2aWEgUFVUIHVuZCByZW5kZXJ0Ci8vIGRpZSBUYWJl bGxlIG5ldS4gRnJ1ZWhlciBudXIgZnVlciAzLiBNYW5uL0ZyYXUsIHNlaXQgMjAyNi0wNS0yMyBm dWVyCi8vIGFsbGUgUGVyc29uZW4gKGF1Y2ggREdML0RHTGluL0F0LURHTC9XREYgbXVlc3NlbiBl eHBsaXppdCBxdWFsaWZpemllcnQKLy8gd2VyZGVuLCB3ZW5uIGRhcyBnZXd1ZW5zY2h0IGlzdCDi gJQgSW1wbGljaXQtREdMLUxvZ2lrIGluCi8vIGlzdERnbFF1YWxpZml6aWVydCgpIGJsZWlidCBh YmVyIGFscyBGYWxsYmFjayBiZXN0ZWhlbikuCmV4cG9ydCBmdW5jdGlvbiBlbGRnbElubGluZVRv Z2dsZShpZCkgewogICAgaWYgKCFaLnJlY2h0ZS5pc3RTdXBlclVzZXIpIHJldHVybjsKICAgIHZh ciBwZXJzb24gPSAoWi5wbGFudW5nLnBlcnNvbmVuIHx8IFtdKS5maW5kKGZ1bmN0aW9uKHApIHsg cmV0dXJuIHAuaWQgPT09IGlkOyB9KTsKICAgIGlmICghcGVyc29uKSByZXR1cm47CiAgICB2YXIg bmV1ID0gIXBlcnNvbi5lbERnbFF1YWxpZml6aWVydDsKICAgIGFwaVB1dCgnL2FwaS9wZXJzb25l bi8nICsgaWQsIHsgZWxEZ2xRdWFsaWZpemllcnQ6IG5ldSB9KS50aGVuKGZ1bmN0aW9uKCkgewog ICAgICAgIHBlcnNvbi5lbERnbFF1YWxpZml6aWVydCA9IG5ldTsKICAgICAgICBwZXJzb25hbFRh YmVsbGVSZW5kZXJuKCk7CiAgICAgICAgdG9hc3QobmV1ID8gJ1ZJMyBER0wgcXVhbGlmaXppZXJ0 JyA6ICdWSTMgREdMIFF1YWxpZml6aWVydW5nIGVudGZlcm50JywgJ2VyZm9sZycpOwogICAgfSku Y2F0Y2goZnVuY3Rpb24oZSkgewogICAgICAgIHRvYXN0KCdGZWhsZXI6ICcgKyBlLm1lc3NhZ2Us ICdmZWhsZXInKTsKICAgICAgICBwZXJzb25hbFRhYmVsbGVSZW5kZXJuKCk7CiAgICB9KTsKfQoK Ly8gYXZhdGFyVXJsIC8gYXZhdGFySW5pdGlhbGVuIC8gYXZhdGFyS3JlaXNIdG1sIGxlYmVuIGlu IGNvcmVfdXRpbC5qcywKLy8gZGFtaXQgZ3JpZF9yZW5kZXIuanMgLyB3b2NoZW5wbGFuLmpzIHNp ZSBlYmVuZmFsbHMgbnV0emVuIGtvZW5uZW4uCgovLyA9PT09PSBQZXJzb24tSG92ZXItUG9wb3Zl ciA9PT09PQovLyBTY2h3ZWJlbmRlcyBNaW5pLU1vZGFsIG1pdCBBdmF0YXIsIFN0YW1tZGF0ZW4g KyAxNC1UYWdlLVNjaGljaHQtVm9yc2NoYXUuCi8vIFdpcmQgZHVyY2ggbW91c2VvdmVyIGF1ZiAu bmFtZW4temVpbGUgLyAucGVyc29uYWwtbmFtZS16ZWxsZSAvIFdvY2hlbi0KLy8gcGxhbi1OYW1l bnMtRWxlbWVudGUgZ2V0cmlnZ2VydCAoRXZlbnQtRGVsZWdhdGlvbiBpbiBhcHAuanMpLiBTaW5n bGUtCi8vIEluc3RhbnogaW0gQm9keSwgbmV1IGJlZnVlbGx0ICsgcG9zaXRpb25pZXJ0IGJlaSBq ZWRlbSBUcmlnZ2VyLgoKdmFyIHBwX3plaWdlVGltZXIgPSBudWxsOwp2YXIgcHBfdmVyc3RlY2tU aW1lciA9IG51bGw7CgpmdW5jdGlvbiBwcF9uYWVjaHN0ZTE0VGFnZSgpIHsKICAgIHZhciB0YWdl ID0gW107CiAgICB2YXIgaGV1dGUgPSBuZXcgRGF0ZSgpOwogICAgaGV1dGUuc2V0SG91cnMoMCwg MCwgMCwgMCk7CiAgICBmb3IgKHZhciBpID0gMDsgaSA8IDE0OyBpKyspIHsKICAgICAgICB2YXIg ZCA9IG5ldyBEYXRlKGhldXRlLmdldFRpbWUoKSArIGkgKiA4NjQwMDAwMCk7CiAgICAgICAgdGFn ZS5wdXNoKGQpOwogICAgfQogICAgcmV0dXJuIHRhZ2U7Cn0KCmZ1bmN0aW9uIHBwX2h0bWwocGVy c29uKSB7CiAgICB2YXIgZGcgICA9IHBlcnNvbi5kaWVuc3RncmFkIHx8ICcnOwogICAgdmFyIG5h bWUgPSAoKHBlcnNvbi52b3JuYW1lIHx8ICcnKSArICcgJyArIHBlcnNvbi5uYW1lKS50cmltKCk7 CiAgICB2YXIgZmt0ICA9IHBlcnNvbi5mdW5rdGlvbiB8fCAn4oCUJzsKICAgIC8vIERpZW5zdGdy dXBwZW4tQmV6ZWljaG51bmcgc3RhdHQgbnVyIEt1ZXJ6ZWwgKCJBIiAtPiAiR3J1cHBlIEEg4oCU IFdlc3RmYWxlbiBOb3JkIiBvLmFlLikKICAgIHZhciBncnVwcGUgPSBwZXJzb24uZ3J1cHBlIHx8 ICcnOwogICAgdmFyIGdydXBwZUFueiA9IGdydXBwZTsKICAgIGlmIChncnVwcGUgJiYgWi5ncnVw cGVuTWFwICYmIFouZ3J1cHBlbk1hcFtncnVwcGVdICYmIFouZ3J1cHBlbk1hcFtncnVwcGVdLmJl emVpY2hudW5nKSB7CiAgICAgICAgZ3J1cHBlQW56ID0gZ3J1cHBlICsgJyDigJQgJyArIFouZ3J1 cHBlbk1hcFtncnVwcGVdLmJlemVpY2hudW5nOwogICAgfQogICAgaWYgKCFncnVwcGVBbnopIGdy dXBwZUFueiA9ICfigJQnOwogICAgLy8gU3RhbmRvcnQtS3VlcnplbCAtPiBWb2xsZXIgTmFtZSAo VXNlci1GZWVkYmFjayAyMDI2LTA1LTIzKTogIkFSIiAtPiAiQXJuc2JlcmciLgogICAgdmFyIG9l S3VlcnplbCA9IHBlcnNvbi5vZSB8fCAnJzsKICAgIHZhciBvZUFueiA9IG9lS3VlcnplbDsKICAg IGlmIChvZUt1ZXJ6ZWwgJiYgWi5hZG1pbiAmJiBaLmFkbWluLnN0YW5kb3J0ZSkgewogICAgICAg IHZhciBzdCA9IFouYWRtaW4uc3RhbmRvcnRlLmZpbmQoZnVuY3Rpb24ocykgewogICAgICAgICAg ICByZXR1cm4gKHMua3VlcnplbCB8fCAnJykudG9Mb3dlckNhc2UoKSA9PT0gb2VLdWVyemVsLnRv TG93ZXJDYXNlKCk7CiAgICAgICAgfSk7CiAgICAgICAgaWYgKHN0ICYmIHN0Lm5hbWUpIG9lQW56 ID0gc3QubmFtZTsKICAgIH0KICAgIGlmICghb2VBbnopIG9lQW56ID0gJ+KAlCc7CiAgICB2YXIg dGVsICA9IHBlcnNvbi50ZWxlZm9uIHx8ICcnOwoKICAgIHZhciBoZXV0ZVRzID0gbmV3IERhdGUo bmV3IERhdGUoKS5zZXRIb3VycygwLDAsMCwwKSkuZ2V0VGltZSgpOwogICAgdmFyIHRhZ2VIdG1s ID0gcHBfbmFlY2hzdGUxNFRhZ2UoKS5tYXAoZnVuY3Rpb24oZCkgewogICAgICAgIHZhciBkU3Ry ID0gZGF0dW1TdHIoZCk7CiAgICAgICAgdmFyIGUgPSAoWi5wbGFudW5nLmVpbnRyYWVnZSB8fCB7 fSlbZFN0cl0gfHwge307CiAgICAgICAgdmFyIGNvZGUgPSBlW1N0cmluZyhwZXJzb24uaWQpXSB8 fCAnJzsKICAgICAgICB2YXIgZmFyYmVuID0gKFouY29kZU1hcCB8fCB7fSlbY29kZV0gfHwge307 CiAgICAgICAgdmFyIGJnID0gZmFyYmVuLmhpbnRlcmdydW5kIHx8ICcnOwogICAgICAgIHZhciBm ZyA9IGZhcmJlbi5zY2hyaWZ0IHx8ICcnOwogICAgICAgIHZhciB3dCA9IFsnU28nLCdNbycsJ0Rp JywnTWknLCdEbycsJ0ZyJywnU2EnXVtkLmdldERheSgpXTsKICAgICAgICB2YXIgaXN0V0UgPSAo ZC5nZXREYXkoKSA9PT0gMCB8fCBkLmdldERheSgpID09PSA2KTsKICAgICAgICB2YXIgZGQgPSAo JzAnICsgZC5nZXREYXRlKCkpLnNsaWNlKC0yKTsKICAgICAgICB2YXIgbW0gPSAoJzAnICsgKGQu Z2V0TW9udGgoKSArIDEpKS5zbGljZSgtMik7CiAgICAgICAgdmFyIGlzdEhldXRlID0gKGQuZ2V0 VGltZSgpID09PSBoZXV0ZVRzKTsKICAgICAgICB2YXIgYW56ZWlnZSA9IGZhcmJlbi5rdWVyemVs IHx8IGNvZGUgfHwgJ+KAlCc7CiAgICAgICAgdmFyIGNvZGVTdHlsZSA9ICcnOwogICAgICAgIGlm IChiZykgY29kZVN0eWxlID0gJ2JhY2tncm91bmQ6JyArIGVzY2FwZUF0dHIoYmcpICsgJztjb2xv cjonICsgZXNjYXBlQXR0cihmZyB8fCAnIzAwMCcpOwogICAgICAgIHZhciBjbHMgPSAncHB2LXRh Zyc7CiAgICAgICAgaWYgKGlzdEhldXRlKSBjbHMgKz0gJyBwcHYtdGFnLWhldXRlJzsKICAgICAg ICBpZiAoaXN0V0UpICAgIGNscyArPSAnIHBwdi10YWctd2UnOwogICAgICAgIGlmICghY29kZSkg ICAgY2xzICs9ICcgcHB2LXRhZy1sZWVyJzsKICAgICAgICByZXR1cm4gJzxkaXYgY2xhc3M9Iicg KyBjbHMgKyAnIj4nICsKICAgICAgICAgICAgJzxzcGFuIGNsYXNzPSJwcHYtdGFnLXd0Ij4nICsg d3QgKyAnPC9zcGFuPicgKwogICAgICAgICAgICAnPHNwYW4gY2xhc3M9InBwdi10YWctZGF0dW0i PicgKyBkZCArICcuJyArIG1tICsgJy48L3NwYW4+JyArCiAgICAgICAgICAgICc8c3BhbiBjbGFz cz0icHB2LXRhZy1jb2RlIiBzdHlsZT0iJyArIGNvZGVTdHlsZSArICciPicgKyBlc2NhcGVIVE1M KGFuemVpZ2UpICsgJzwvc3Bhbj4nICsKICAgICAgICAnPC9kaXY+JzsKICAgIH0pLmpvaW4oJycp OwoKICAgIHJldHVybiAnPGRpdiBjbGFzcz0icHB2LWtvcGYiPicgKwogICAgICAgICAgICAnPGRp diBjbGFzcz0icHB2LWF2YXRhciI+JyArIGF2YXRhcktyZWlzSHRtbChwZXJzb24sIDU2KSArICc8 L2Rpdj4nICsKICAgICAgICAgICAgJzxkaXYgY2xhc3M9InBwdi1rb3BmLXRleHQiPicgKwogICAg ICAgICAgICAgICAgJzxkaXYgY2xhc3M9InBwdi1uYW1lIj4nICsgKGRnID8gZXNjYXBlSFRNTChk ZykgKyAnICcgOiAnJykgKyBlc2NhcGVIVE1MKG5hbWUpICsgJzwvZGl2PicgKwogICAgICAgICAg ICAgICAgJzxkaXYgY2xhc3M9InBwdi1tZXRhIj4nICsgZXNjYXBlSFRNTChma3QpICsgJyDCtyAn ICsgZXNjYXBlSFRNTChncnVwcGVBbnopICsgKG9lQW56ICE9PSAn4oCUJyA/ICcgwrcgJyArIGVz Y2FwZUhUTUwob2VBbnopIDogJycpICsgJzwvZGl2PicgKwogICAgICAgICAgICAgICAgKHRlbCA/ ICc8ZGl2IGNsYXNzPSJwcHYtbWV0YSI+VGVsLiAnICsgZXNjYXBlSFRNTCh0ZWwpICsgJzwvZGl2 PicgOiAnJykgKwogICAgICAgICAgICAnPC9kaXY+JyArCiAgICAgICAgJzwvZGl2PicgKwogICAg ICAgICc8ZGl2IGNsYXNzPSJwcHYtdGFnZS10aXRlbCI+TsOkY2hzdGUgMTQgVGFnZTwvZGl2Picg KwogICAgICAgICc8ZGl2IGNsYXNzPSJwcHYtdGFnZSI+JyArIHRhZ2VIdG1sICsgJzwvZGl2Pic7 Cn0KCmZ1bmN0aW9uIHBwX3Bvc2l0aW9uaWVyZW4ocG9wb3ZlciwgYW5rZXIpIHsKICAgIHZhciBh ciA9IGFua2VyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOwogICAgdmFyIHZ3ID0gd2luZG93Lmlu bmVyV2lkdGg7CiAgICB2YXIgdmggPSB3aW5kb3cuaW5uZXJIZWlnaHQ7CiAgICAvLyBQb3BvdmVy IHVuc2ljaHRiYXIgbWVzc2VuLCBkYW5uIHBvc2l0aW9uaWVyZW4KICAgIHBvcG92ZXIuY2xhc3NM aXN0LnJlbW92ZSgndmVyc3RlY2t0Jyk7CiAgICBwb3BvdmVyLnN0eWxlLnZpc2liaWxpdHkgPSAn aGlkZGVuJzsKICAgIHZhciBwdyA9IHBvcG92ZXIub2Zmc2V0V2lkdGg7CiAgICB2YXIgcGggPSBw b3BvdmVyLm9mZnNldEhlaWdodDsKICAgIHZhciByYW5kID0gODsKICAgIC8vIEJldm9yenVndCBy ZWNodHMgbmViZW4gZGVtIEFua2VyLCBzb25zdCBsaW5rcwogICAgdmFyIGxlZnQgPSBhci5yaWdo dCArIHJhbmQ7CiAgICBpZiAobGVmdCArIHB3ID4gdncgLSA2KSBsZWZ0ID0gYXIubGVmdCAtIHB3 IC0gcmFuZDsKICAgIGlmIChsZWZ0IDwgNikgbGVmdCA9IDY7CiAgICAvLyBWZXJ0aWthbDogdG9w IGFtIEFua2VyLCBhYmVyIG5pY2h0IGFiZ2VzY2huaXR0ZW4KICAgIHZhciB0b3AgPSBhci50b3A7 CiAgICBpZiAodG9wICsgcGggPiB2aCAtIDYpIHRvcCA9IHZoIC0gcGggLSA2OwogICAgaWYgKHRv cCA8IDYpIHRvcCA9IDY7CiAgICBwb3BvdmVyLnN0eWxlLmxlZnQgPSBNYXRoLnJvdW5kKGxlZnQp ICsgJ3B4JzsKICAgIHBvcG92ZXIuc3R5bGUudG9wICA9IE1hdGgucm91bmQodG9wKSAgKyAncHgn OwogICAgcG9wb3Zlci5zdHlsZS52aXNpYmlsaXR5ID0gJyc7Cn0KCmV4cG9ydCBmdW5jdGlvbiBw ZXJzb25Qb3BvdmVyWmVpZ2VuKHBlcnNvbklkLCBhbmtlckVsKSB7CiAgICBpZiAocHBfdmVyc3Rl Y2tUaW1lcikgeyBjbGVhclRpbWVvdXQocHBfdmVyc3RlY2tUaW1lcik7IHBwX3ZlcnN0ZWNrVGlt ZXIgPSBudWxsOyB9CiAgICBpZiAocHBfemVpZ2VUaW1lcikgICB7IGNsZWFyVGltZW91dChwcF96 ZWlnZVRpbWVyKTsgcHBfemVpZ2VUaW1lciA9IG51bGw7IH0KICAgIHBwX3plaWdlVGltZXIgPSBz ZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewogICAgICAgIHBwX3plaWdlVGltZXIgPSBudWxsOwogICAg ICAgIHZhciBwZXJzb24gPSAoWi5wbGFudW5nLnBlcnNvbmVuIHx8IFtdKS5maW5kKGZ1bmN0aW9u KHApIHsgcmV0dXJuIFN0cmluZyhwLmlkKSA9PT0gU3RyaW5nKHBlcnNvbklkKTsgfSk7CiAgICAg ICAgaWYgKCFwZXJzb24pIHJldHVybjsKICAgICAgICB2YXIgcG9wID0gZG9jdW1lbnQuZ2V0RWxl bWVudEJ5SWQoJ3ZpMy1wZXJzb24tcG9wb3ZlcicpOwogICAgICAgIGlmICghcG9wKSByZXR1cm47 CiAgICAgICAgcG9wLmlubmVySFRNTCA9IHBwX2h0bWwocGVyc29uKTsKICAgICAgICBwb3Auc2V0 QXR0cmlidXRlKCdhcmlhLWhpZGRlbicsICdmYWxzZScpOwogICAgICAgIHBwX3Bvc2l0aW9uaWVy ZW4ocG9wLCBhbmtlckVsKTsKICAgIH0sIDM4MCk7Cn0KCmV4cG9ydCBmdW5jdGlvbiBwZXJzb25Q b3BvdmVyVmVyc3RlY2tlbigpIHsKICAgIGlmIChwcF96ZWlnZVRpbWVyKSB7IGNsZWFyVGltZW91 dChwcF96ZWlnZVRpbWVyKTsgcHBfemVpZ2VUaW1lciA9IG51bGw7IH0KICAgIGlmIChwcF92ZXJz dGVja1RpbWVyKSBjbGVhclRpbWVvdXQocHBfdmVyc3RlY2tUaW1lcik7CiAgICBwcF92ZXJzdGVj a1RpbWVyID0gc2V0VGltZW91dChmdW5jdGlvbigpIHsKICAgICAgICB2YXIgcG9wID0gZG9jdW1l bnQuZ2V0RWxlbWVudEJ5SWQoJ3ZpMy1wZXJzb24tcG9wb3ZlcicpOwogICAgICAgIGlmIChwb3Ap IHsKICAgICAgICAgICAgcG9wLmNsYXNzTGlzdC5hZGQoJ3ZlcnN0ZWNrdCcpOwogICAgICAgICAg ICBwb3Auc2V0QXR0cmlidXRlKCdhcmlhLWhpZGRlbicsICd0cnVlJyk7CiAgICAgICAgfQogICAg fSwgMTIwKTsKfQoKLy8gU2VsZi1TZXJ2aWNlOiBrbGVpbmVzIE1pbmktTW9kYWwgbnVyIGZ1ZXIg ZGVuIEF2YXRhci1CbG9jayBkZXIgZWlnZW5lbgovLyBQZXJzb24uIFdpcmQgdm9tICJtZWluLWF2 YXRhci1idG4iIGluIGRlciBUb3BiYXIgZ2V0cmlnZ2VydC4gU2VydmVyLQovLyBzZWl0aWcgaGFi ZW4gYWxsZSBVc2VyIGRhcyBSZWNodCwgaWhyZW4gZWlnZW5lbiBBdmF0YXIgenUgcGZsZWdlbgov LyAoUE9TVCAvYXBpL3BlcnNvbmVuLzxlaWdlbmVJZD4vYXZhdGFyIOKAlCBDaGVjayB2aWEgbWVp bmVQZXJzb25JZCkuCmV4cG9ydCBmdW5jdGlvbiBtZWluUHJvZmlsTW9kYWxPZWZmbmVuKCkgewog ICAgaWYgKCFaLnJlY2h0ZSB8fCAhWi5yZWNodGUubWVpbmVQZXJzb25JZCkgewogICAgICAgIHRv YXN0KCdFaWdlbmUgUGVyc29uIG5pY2h0IHp1Z2VvcmRuZXQg4oCUIFByb2ZpbGJpbGQga2FubiBu aWNodCBnZXBmbGVndCB3ZXJkZW4nLCAnd2FybnVuZycpOwogICAgICAgIHJldHVybjsKICAgIH0K ICAgIHZhciBpZCA9IFoucmVjaHRlLm1laW5lUGVyc29uSWQ7CiAgICB2YXIgcGVyc29uID0gKFou cGxhbnVuZy5wZXJzb25lbiB8fCBbXSkuZmluZChmdW5jdGlvbihwKSB7IHJldHVybiBTdHJpbmco cC5pZCkgPT09IFN0cmluZyhpZCk7IH0pOwogICAgaWYgKCFwZXJzb24pIHsgdG9hc3QoJ0VpZ2Vu ZSBQZXJzb24gbmljaHQgaW4gZGVyIFBlcnNvbmFsbGlzdGUgZ2VmdW5kZW4nLCAnd2FybnVuZycp OyByZXR1cm47IH0KCiAgICB2YXIga29lcnBlciA9IGF2YXRhckJsb2NrSHRtbChwZXJzb24pICsK ICAgICAgICAnPGRpdiBzdHlsZT0iZm9udC1zaXplOjEycHg7Y29sb3I6dmFyKC0tdGV4dC1tdXRl ZCk7bWFyZ2luLXRvcDo0cHgiPicgKwogICAgICAgICAgICAnSGllciBrYW5uc3QgZHUgZGVpbiBQ cm9maWxiaWxkIGhvY2hsYWRlbiBvZGVyIGVudGZlcm5lbi4gQW5kZXJlIFN0YW1tZGF0ZW4gJyAr CiAgICAgICAgICAgICdwZmxlZ3QgZGllIEFkbWluaXN0cmF0aW9uIMO8YmVyIGRpZSBQZXJzb25h bHZlcndhbHR1bmcuJyArCiAgICAgICAgJzwvZGl2Pic7CiAgICBtb2RhbFplaWdlbignTWVpbiBQ cm9maWwg4oCUICcgKyAoKHBlcnNvbi52b3JuYW1lIHx8ICcnKSArICcgJyArIHBlcnNvbi5uYW1l KS50cmltKCksIGtvZXJwZXIsCiAgICAgICAgJzxidXR0b24gY2xhc3M9ImJ0biBidG4tcHJpbWFl ciIgdHlwZT0iYnV0dG9uIiBpZD0icHJvZmlsLXNjaGxpZXNzZW4iPlNjaGxpZcOfZW48L2J1dHRv bj4nLAogICAgICAgIG51bGwsIG51bGwsIHsgcmVpbmVyRGlhbG9nOiB0cnVlIH0pOwogICAgYXZh dGFyVXBsb2FkSGFuZGxlckJpbmRlbihwZXJzb24sIGZ1bmN0aW9uKCkgewogICAgICAgIHZhciBh dkJ0biA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtZWluLWF2YXRhci1idG4nKTsKICAgICAg ICBpZiAoYXZCdG4pIGF2QnRuLmlubmVySFRNTCA9IGF2YXRhcktyZWlzSHRtbChwZXJzb24sIDI4 KTsKICAgIH0pOwogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Byb2ZpbC1zY2hsaWVzc2Vu JykuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbigpIHsgbW9kYWxTY2hsaWVzc2Vu KHRydWUpOyB9KTsKfQoKLy8gQmVmdWVsbHQgZGVuIFRvcGJhci1BdmF0YXIgbWl0IGRlbSBha3R1 ZWxsZW4gQmlsZCBkZXIgZWluZ2Vsb2dndGVuIFBlcnNvbi4KLy8gV2lyZCBiZWltIExvZ2luICsg bmFjaCBqZWRlbSBBdmF0YXItVXBsb2FkIGF1ZmdlcnVmZW4uCmV4cG9ydCBmdW5jdGlvbiBtZWlu QXZhdGFyVG9wYmFyQWt0dWFsaXNpZXJlbigpIHsKICAgIHZhciBidG4gPSBkb2N1bWVudC5nZXRF bGVtZW50QnlJZCgnbWVpbi1hdmF0YXItYnRuJyk7CiAgICBpZiAoIWJ0bikgcmV0dXJuOwogICAg aWYgKCFaLnJlY2h0ZSB8fCAhWi5yZWNodGUubWVpbmVQZXJzb25JZCkgewogICAgICAgIGJ0bi5j bGFzc0xpc3QuYWRkKCd2ZXJzdGVja3QnKTsKICAgICAgICByZXR1cm47CiAgICB9CiAgICB2YXIg cGVyc29uID0gKFoucGxhbnVuZy5wZXJzb25lbiB8fCBbXSkuZmluZChmdW5jdGlvbihwKSB7IHJl dHVybiBTdHJpbmcocC5pZCkgPT09IFN0cmluZyhaLnJlY2h0ZS5tZWluZVBlcnNvbklkKTsgfSk7 CiAgICBpZiAoIXBlcnNvbikgeyBidG4uY2xhc3NMaXN0LmFkZCgndmVyc3RlY2t0Jyk7IHJldHVy bjsgfQogICAgYnRuLmNsYXNzTGlzdC5yZW1vdmUoJ3ZlcnN0ZWNrdCcpOwogICAgYnRuLmlubmVy SFRNTCA9IGF2YXRhcktyZWlzSHRtbChwZXJzb24sIDI4KTsKfQoKZnVuY3Rpb24gYXZhdGFyQmxv Y2tIdG1sKHBlcnNvbikgewogICAgdmFyIGhhdEJpbGQgPSAhIXBlcnNvbi5hdmF0YXJUczsKICAg IHZhciBkYXJmRWRpdGllcmVuID0gWi5yZWNodGUgJiYgKAogICAgICAgIFoucmVjaHRlLmlzdFN1 cGVyVXNlciB8fAogICAgICAgIFoucmVjaHRlLmlzdEZhY2hhdWZzaWNodCB8fAogICAgICAgICha LnJlY2h0ZS5tZWluZVBlcnNvbklkICYmIFN0cmluZyhaLnJlY2h0ZS5tZWluZVBlcnNvbklkKSA9 PT0gU3RyaW5nKHBlcnNvbi5pZCkpCiAgICApOwogICAgcmV0dXJuICc8ZGl2IGNsYXNzPSJkbGct YXZhdGFyLWJsb2NrIj4nICsKICAgICAgICAnPGRpdiBpZD0iZGxnLWF2YXRhci12b3JzY2hhdSIg Y2xhc3M9ImRsZy1hdmF0YXItdm9yc2NoYXUiPicgKyBhdmF0YXJLcmVpc0h0bWwocGVyc29uLCA3 MikgKyAnPC9kaXY+JyArCiAgICAgICAgJzxkaXYgY2xhc3M9ImRsZy1hdmF0YXItYWt0aW9uZW4i PicgKwogICAgICAgICAgICAnPGRpdiBjbGFzcz0iZGxnLWF2YXRhci1uYW1lIj4nICsgZXNjYXBl SFRNTCgoKHBlcnNvbi52b3JuYW1lIHx8ICcnKSArICcgJyArIChwZXJzb24ubmFtZSB8fCAnJykp LnRyaW0oKSB8fCAnUGVyc29uJykgKyAnPC9kaXY+JyArCiAgICAgICAgICAgIChkYXJmRWRpdGll cmVuCiAgICAgICAgICAgICAgICA/ICc8aW5wdXQgdHlwZT0iZmlsZSIgaWQ9ImRsZy1hdmF0YXIt ZmlsZSIgYWNjZXB0PSJpbWFnZS9qcGVnLGltYWdlL3BuZyxpbWFnZS93ZWJwIiBzdHlsZT0iZGlz cGxheTpub25lIj4nICsKICAgICAgICAgICAgICAgICAgJzxidXR0b24gdHlwZT0iYnV0dG9uIiBp ZD0iZGxnLWF2YXRhci11cGxvYWQiIGNsYXNzPSJidG4gYnRuLXNlayBidG4ta2xlaW4iPicgKyAo aGF0QmlsZCA/ICdCaWxkIMOkbmRlcm4nIDogJ0JpbGQgaG9jaGxhZGVuJykgKyAnPC9idXR0b24+ JyArCiAgICAgICAgICAgICAgICAgIChoYXRCaWxkID8gJzxidXR0b24gdHlwZT0iYnV0dG9uIiBp ZD0iZGxnLWF2YXRhci1sb2VzY2hlbiIgY2xhc3M9ImJ0biBidG4tc2VrIGJ0bi1rbGVpbiI+Qmls ZCBlbnRmZXJuZW48L2J1dHRvbj4nIDogJycpCiAgICAgICAgICAgICAgICA6ICc8ZGl2IGNsYXNz PSJkbGctYXZhdGFyLWhpbndlaXMiPlByb2ZpbGJpbGQtUGZsZWdlIGlzdCBkZWFrdGl2aWVydCAo a2VpbmUgQmVyZWNodGlndW5nKS48L2Rpdj4nKSArCiAgICAgICAgJzwvZGl2PicgKwogICAgJzwv ZGl2Pic7Cn0KCi8vIFNrYWxpZXJ0IGVpbiBGaWxlIGF1ZiAoa29uZmlndXJpZXJiYXJlcykgTnhO LVF1YWRyYXQgcGVyIGNlbnRlci1jcm9wCi8vIHVuZCBnaWJ0IGVpbmUgSlBFRy1EYXRhLVVSTCB6 dXJ1ZWNrLiBaaWVsZ3JvZXNzZSBzdGV1ZXJ0Ci8vIFouYWRtaW4uYXZhdGFyR3JvZXNzZSAoRGVm YXVsdCAyMDApLiBTZXJ2ZXIgcHJ1ZWZ0IHp1c2FldHpsaWNoIGRlbgovLyAyNTAtS0ItQnl0ZS1D YXA7IGRhbWl0IGlzdCBhdWNoIGJlaSA2MDAgcHggZGllIERhdGVpIGtsZWluIGdlbnVnLgpmdW5j dGlvbiBhdmF0YXJTa2FsaWVyZW4oZmlsZSkgewogICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0 aW9uKHJlc29sdmUsIHJlamVjdCkgewogICAgICAgIGlmICghZmlsZSkgeyByZWplY3QobmV3IEVy cm9yKCdLZWluIEZpbGUnKSk7IHJldHVybjsgfQogICAgICAgIGlmIChmaWxlLnNpemUgPiA4ICog MTAyNCAqIDEwMjQpIHsgcmVqZWN0KG5ldyBFcnJvcignRGF0ZWkgenUgZ3Jvc3MgKG1heCA4IE1C IE9yaWdpbmFsKScpKTsgcmV0dXJuOyB9CiAgICAgICAgdmFyIHJlYWRlciA9IG5ldyBGaWxlUmVh ZGVyKCk7CiAgICAgICAgcmVhZGVyLm9uZXJyb3IgPSBmdW5jdGlvbigpIHsgcmVqZWN0KG5ldyBF cnJvcignRGF0ZWkga29ubnRlIG5pY2h0IGdlbGVzZW4gd2VyZGVuJykpOyB9OwogICAgICAgIHJl YWRlci5vbmxvYWQgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHZhciBpbWcgPSBuZXcgSW1h Z2UoKTsKICAgICAgICAgICAgaW1nLm9uZXJyb3IgPSBmdW5jdGlvbigpIHsgcmVqZWN0KG5ldyBF cnJvcignS2VpbiBnw7xsdGlnZXMgQmlsZCcpKTsgfTsKICAgICAgICAgICAgaW1nLm9ubG9hZCA9 IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyIHppZWwgPSBwYXJzZUludCgoWi5hZG1p biAmJiBaLmFkbWluLmF2YXRhckdyb2Vzc2UpLCAxMCk7CiAgICAgICAgICAgICAgICBpZiAoaXNO YU4oemllbCkgfHwgemllbCA8IDEwMCkgemllbCA9IDIwMDsKICAgICAgICAgICAgICAgIGVsc2Ug aWYgKHppZWwgPiA2MDApIHppZWwgPSA2MDA7CiAgICAgICAgICAgICAgICB2YXIgY2FudmFzID0g ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7CiAgICAgICAgICAgICAgICBjYW52YXMu d2lkdGggPSB6aWVsOyBjYW52YXMuaGVpZ2h0ID0gemllbDsKICAgICAgICAgICAgICAgIHZhciBj dHggPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKTsKICAgICAgICAgICAgICAgIC8vIENlbnRlci1D cm9wOiBrbGVpbmVyZSBEaW1lbnNpb24gZGVmaW5pZXJ0IGRhcyBRdWFkcmF0CiAgICAgICAgICAg ICAgICB2YXIgc3JjID0gTWF0aC5taW4oaW1nLndpZHRoLCBpbWcuaGVpZ2h0KTsKICAgICAgICAg ICAgICAgIHZhciBzeCA9IChpbWcud2lkdGggIC0gc3JjKSAvIDI7CiAgICAgICAgICAgICAgICB2 YXIgc3kgPSAoaW1nLmhlaWdodCAtIHNyYykgLyAyOwogICAgICAgICAgICAgICAgY3R4LmZpbGxT dHlsZSA9ICcjZmZmJzsKICAgICAgICAgICAgICAgIGN0eC5maWxsUmVjdCgwLCAwLCB6aWVsLCB6 aWVsKTsKICAgICAgICAgICAgICAgIGN0eC5kcmF3SW1hZ2UoaW1nLCBzeCwgc3ksIHNyYywgc3Jj LCAwLCAwLCB6aWVsLCB6aWVsKTsKICAgICAgICAgICAgICAgIHJlc29sdmUoY2FudmFzLnRvRGF0 YVVSTCgnaW1hZ2UvanBlZycsIDAuODUpKTsKICAgICAgICAgICAgfTsKICAgICAgICAgICAgaW1n LnNyYyA9IGUudGFyZ2V0LnJlc3VsdDsKICAgICAgICB9OwogICAgICAgIHJlYWRlci5yZWFkQXNE YXRhVVJMKGZpbGUpOwogICAgfSk7Cn0KCmZ1bmN0aW9uIGF2YXRhclVwbG9hZEhhbmRsZXJCaW5k ZW4ocGVyc29uLCByZWZyZXNoSG9vaykgewogICAgdmFyIGZpbGVJbnAgPSBkb2N1bWVudC5nZXRF bGVtZW50QnlJZCgnZGxnLWF2YXRhci1maWxlJyk7CiAgICB2YXIgYnRuVXAgICA9IGRvY3VtZW50 LmdldEVsZW1lbnRCeUlkKCdkbGctYXZhdGFyLXVwbG9hZCcpOwogICAgdmFyIGJ0bkRlbCAgPSBk b2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZGxnLWF2YXRhci1sb2VzY2hlbicpOwogICAgdmFyIHZv cnNjaGF1ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2RsZy1hdmF0YXItdm9yc2NoYXUnKTsK ICAgIGlmIChidG5VcCAmJiBmaWxlSW5wKSB7CiAgICAgICAgYnRuVXAuYWRkRXZlbnRMaXN0ZW5l cignY2xpY2snLCBmdW5jdGlvbigpIHsgZmlsZUlucC5jbGljaygpOyB9KTsKICAgICAgICBmaWxl SW5wLmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2 YXIgZmlsZSA9IGZpbGVJbnAuZmlsZXMgJiYgZmlsZUlucC5maWxlc1swXTsKICAgICAgICAgICAg aWYgKCFmaWxlKSByZXR1cm47CiAgICAgICAgICAgIGF2YXRhclNrYWxpZXJlbihmaWxlKS50aGVu KGZ1bmN0aW9uKGRhdGFVcmwpIHsKICAgICAgICAgICAgICAgIHJldHVybiBhcGlQb3N0KCcvYXBp L3BlcnNvbmVuLycgKyBwZXJzb24uaWQgKyAnL2F2YXRhcicsIHsgZGF0YVVybDogZGF0YVVybCB9 KTsKICAgICAgICAgICAgfSkudGhlbihmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHBlcnNv bi5hdmF0YXJUcyA9IERhdGUubm93KCk7CiAgICAgICAgICAgICAgICBpZiAodm9yc2NoYXUpIHZv cnNjaGF1LmlubmVySFRNTCA9IGF2YXRhcktyZWlzSHRtbChwZXJzb24sIDcyKTsKICAgICAgICAg ICAgICAgIGlmIChidG5VcCkgYnRuVXAudGV4dENvbnRlbnQgPSAnQmlsZCDDpG5kZXJuJzsKICAg ICAgICAgICAgICAgIHBlcnNvbmVuTmV1QXVmYmF1ZW4oKTsKICAgICAgICAgICAgICAgIHBlcnNv bmFsVGFiZWxsZVJlbmRlcm4oKTsKICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgbmFtZW5SZW5k ZXJuID09PSAnZnVuY3Rpb24nKSBuYW1lblJlbmRlcm4oKTsKICAgICAgICAgICAgICAgIGlmIChy ZWZyZXNoSG9vaykgcmVmcmVzaEhvb2soKTsKICAgICAgICAgICAgICAgIHRvYXN0KCdQcm9maWxi aWxkIGdlc3BlaWNoZXJ0JywgJ2VyZm9sZycpOwogICAgICAgICAgICB9KS5jYXRjaChmdW5jdGlv bihlKSB7CiAgICAgICAgICAgICAgICB0b2FzdCgnRmVobGVyOiAnICsgKGUgJiYgZS5tZXNzYWdl IHx8IGUpLCAnZmVobGVyJyk7CiAgICAgICAgICAgIH0pOwogICAgICAgIH0pOwogICAgfQogICAg aWYgKGJ0bkRlbCkgewogICAgICAgIGJ0bkRlbC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1 bmN0aW9uKCkgewogICAgICAgICAgICBhcGlEZWxldGUoJy9hcGkvcGVyc29uZW4vJyArIHBlcnNv bi5pZCArICcvYXZhdGFyJykudGhlbihmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHBlcnNv bi5hdmF0YXJUcyA9IG51bGw7CiAgICAgICAgICAgICAgICBpZiAodm9yc2NoYXUpIHZvcnNjaGF1 LmlubmVySFRNTCA9IGF2YXRhcktyZWlzSHRtbChwZXJzb24sIDcyKTsKICAgICAgICAgICAgICAg IGlmIChidG5EZWwpIGJ0bkRlbC5yZW1vdmUoKTsKICAgICAgICAgICAgICAgIGlmIChidG5VcCkg YnRuVXAudGV4dENvbnRlbnQgPSAnQmlsZCBob2NobGFkZW4nOwogICAgICAgICAgICAgICAgcGVy c29uZW5OZXVBdWZiYXVlbigpOwogICAgICAgICAgICAgICAgcGVyc29uYWxUYWJlbGxlUmVuZGVy bigpOwogICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBuYW1lblJlbmRlcm4gPT09ICdmdW5jdGlv bicpIG5hbWVuUmVuZGVybigpOwogICAgICAgICAgICAgICAgaWYgKHJlZnJlc2hIb29rKSByZWZy ZXNoSG9vaygpOwogICAgICAgICAgICAgICAgdG9hc3QoJ1Byb2ZpbGJpbGQgZW50ZmVybnQnLCAn ZXJmb2xnJyk7CiAgICAgICAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAg ICAgIHRvYXN0KCdGZWhsZXI6ICcgKyAoZSAmJiBlLm1lc3NhZ2UgfHwgZSksICdmZWhsZXInKTsK ICAgICAgICAgICAgfSk7CiAgICAgICAgfSk7CiAgICB9Cn0KCi8vID09PT09IFZJMy1ER0wtVG9n Z2xlIGltIFBlcnNvbi1Nb2RhbCA9PT09PQovLyBWaXN1ZWxsZSBWYXJpYW50ZSBkZXMgU3RhdHVz LUJ1dHRvbnMgYXVzIGRlciBQZXJzb25hbC1UYWJlbGxlOgovLyBncm9zc2Uga2xpY2tiYXJlIEth cnRlIG1pdCBncnVlbmVtIEhha2VuIG9kZXIgcm90ZW0gUXVlcmJhbGtlbiBwbHVzCi8vIEtsYXJ0 ZXh0LVN0YXR1cy4gSGlkZGVuIENoZWNrYm94ICNkbGctZWxkZ2wgaGFlbHQgZGVuIFN0YXRlIChT YXZlLQovLyBIYW5kbGVyIGxpZXN0IC5jaGVja2VkIHdpZSB6dXZvciDigJQga2VpbiBCcnVjaCku CmZ1bmN0aW9uIGVsZGdsVG9nZ2xlSHRtbChha3RpdikgewogICAgdmFyIG9rID0gISFha3RpdjsK ICAgIHJldHVybiAnPGJ1dHRvbiB0eXBlPSJidXR0b24iIGlkPSJkbGctZWxkZ2wtdG9nZ2xlIiBj bGFzcz0iZGxnLWVsZGdsLXRvZ2dsZSAnICsgKG9rID8gJ2FrdGl2JyA6ICdpbmFrdGl2JykgKyAn IiBhcmlhLXByZXNzZWQ9IicgKyAob2sgPyAndHJ1ZScgOiAnZmFsc2UnKSArICciPicgKwogICAg ICAgICc8c3BhbiBjbGFzcz0idmkzZGdsLWJ0biAnICsgKG9rID8gJ3ZpM2RnbC1idG4tb2snIDog J3ZpM2RnbC1idG4tbm8nKSArICciPjwvc3Bhbj4nICsKICAgICAgICAnPHNwYW4gY2xhc3M9ImRs Zy1lbGRnbC10ZXh0Ij4nICsKICAgICAgICAgICAgJzxzcGFuIGNsYXNzPSJkbGctZWxkZ2wtc3Rh dHVzIj4nICsgKG9rID8gJ3F1YWxpZml6aWVydCcgOiAnbmljaHQgcXVhbGlmaXppZXJ0JykgKyAn PC9zcGFuPicgKwogICAgICAgICAgICAnPHNwYW4gY2xhc3M9ImRsZy1lbGRnbC1oaW50Ij5LbGlj a2VuIHp1bSAnICsgKG9rID8gJ0F1ZmhlYmVuJyA6ICdBa3RpdmllcmVuJykgKyAnPC9zcGFuPicg KwogICAgICAgICc8L3NwYW4+JyArCiAgICAnPC9idXR0b24+JyArCiAgICAnPGlucHV0IHR5cGU9 ImNoZWNrYm94IiBpZD0iZGxnLWVsZGdsIiBzdHlsZT0icG9zaXRpb246YWJzb2x1dGU7bGVmdDot OTk5OXB4IicgKyAob2sgPyAnIGNoZWNrZWQnIDogJycpICsgJz4nOwp9CgovLyBDbGljay1IYW5k bGVyIGZ1ZXIgZGVuIFRvZ2dsZS1CdXR0b24uIFdpcmQgbmFjaCBtb2RhbFplaWdlbigpIGltCi8v IFBlcnNvbi1Nb2RhbCBhbmdlaGFlbmd0LiBUb2dnbGV0IGhpZGRlbiBDaGVja2JveCArIHZpc3Vl bGxlIEtsYXNzZW4uCmZ1bmN0aW9uIGVsZGdsVG9nZ2xlTGlzdGVuZXJCaW5kZW4oKSB7CiAgICB2 YXIgYnRuID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2RsZy1lbGRnbC10b2dnbGUnKTsKICAg IHZhciBjaGsgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZGxnLWVsZGdsJyk7CiAgICBpZiAo IWJ0biB8fCAhY2hrKSByZXR1cm47CiAgICBidG4uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBm dW5jdGlvbigpIHsKICAgICAgICBjaGsuY2hlY2tlZCA9ICFjaGsuY2hlY2tlZDsKICAgICAgICAv LyBNb2RhbC1EaXJ0eS1UcmFja2luZzogbWFudWVsbGVzIGNoYW5nZS1FdmVudCwgd2VpbCB3aXIg ZGllCiAgICAgICAgLy8gQ2hlY2tib3ggcHJvZ3JhbW1hdGlzY2ggdG9nZ2xlbiAoa2VpbiBVc2Vy LUlucHV0LUV2ZW50KS4KICAgICAgICBjaGsuZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoJ2NoYW5n ZScsIHsgYnViYmxlczogdHJ1ZSB9KSk7CiAgICAgICAgdmFyIG9rID0gY2hrLmNoZWNrZWQ7CiAg ICAgICAgYnRuLmNsYXNzTGlzdC50b2dnbGUoJ2FrdGl2Jywgb2spOwogICAgICAgIGJ0bi5jbGFz c0xpc3QudG9nZ2xlKCdpbmFrdGl2JywgIW9rKTsKICAgICAgICBidG4uc2V0QXR0cmlidXRlKCdh cmlhLXByZXNzZWQnLCBvayA/ICd0cnVlJyA6ICdmYWxzZScpOwogICAgICAgIHZhciBxdWFkID0g YnRuLnF1ZXJ5U2VsZWN0b3IoJy52aTNkZ2wtYnRuJyk7CiAgICAgICAgaWYgKHF1YWQpIHsKICAg ICAgICAgICAgcXVhZC5jbGFzc0xpc3QudG9nZ2xlKCd2aTNkZ2wtYnRuLW9rJywgb2spOwogICAg ICAgICAgICBxdWFkLmNsYXNzTGlzdC50b2dnbGUoJ3ZpM2RnbC1idG4tbm8nLCAhb2spOwogICAg ICAgIH0KICAgICAgICB2YXIgc3RhdHVzID0gYnRuLnF1ZXJ5U2VsZWN0b3IoJy5kbGctZWxkZ2wt c3RhdHVzJyk7CiAgICAgICAgaWYgKHN0YXR1cykgc3RhdHVzLnRleHRDb250ZW50ID0gb2sgPyAn cXVhbGlmaXppZXJ0JyA6ICduaWNodCBxdWFsaWZpemllcnQnOwogICAgICAgIHZhciBoaW50ID0g YnRuLnF1ZXJ5U2VsZWN0b3IoJy5kbGctZWxkZ2wtaGludCcpOwogICAgICAgIGlmIChoaW50KSBo aW50LnRleHRDb250ZW50ID0gJ0tsaWNrZW4genVtICcgKyAob2sgPyAnQXVmaGViZW4nIDogJ0Fr dGl2aWVyZW4nKTsKICAgIH0pOwp9CgovLyA9PT09PSBHZWJ1cnRzdGFnLUF1c3dhaGwgYWxzIEJ1 dHRvbi1HcmlkLU1vZGFsID09PT09Ci8vCi8vIDMxIFRhZy1CdXR0b25zICg1LXplaWxpZywgNy1z cGFsdGlnKSArIDEyIE1vbmF0LUJ1dHRvbnMgKDN4NCkgKyAzNyBKYWhyLQovLyBCdXR0b25zIGZ1 ZXIgMTk2NC0yMDAwICg1eDgpLiBBa3R1ZWxsIGdld2FlaGx0ZSBCdXR0b25zIHNpbmQgaGVydm9y LQovLyBnZWhvYmVuLiBEaXJ0eS1UcmFja2luZyBudXR6dCBkYXMgZWluZ2ViYXV0ZSBNb2RhbC1T eXN0ZW0gKFoubW9kYWxEaXJ0eQovLyArIG1vZGFsRGlydHlCZXN0YWV0aWd1bmdaZWlnZW4gYmVp bSBTY2hsaWVzc2VuKS4KCnZhciBHQl9KQUhSRV9WT04gPSAxOTY0Owp2YXIgR0JfSkFIUkVfQklT ID0gMjAwMDsKdmFyIEdCX01PTkFURSA9IFsnSmFuJywnRmViJywnTcOkcicsJ0FwcicsJ01haScs J0p1bicsJ0p1bCcsJ0F1ZycsJ1NlcCcsJ09rdCcsJ05vdicsJ0RleiddOwovLyBNb2R1bC1TdGF0 ZTogbnVyIHdhZWhyZW5kIGRhcyBNb2RhbCBvZmZlbiBpc3QgZ2VzZXR6dC4gQ2xpY2stSGFuZGxl ciBpbgovLyBhcHAuanMgbGllc3QgaGllciBhYi4KZXhwb3J0IHZhciBnZWJ1cnRzdGFnTW9kYWxT dGF0ZSA9IHsgb2ZmZW46IGZhbHNlLCBwZXJzb25JZDogbnVsbCwgd2VydGU6IHsgdGFnOiBudWxs LCBtb25hdDogbnVsbCwgamFocjogbnVsbCB9LCB1cnNwcnVuZzogJycgfTsKCmZ1bmN0aW9uIGdi UGFkKG4pIHsgcmV0dXJuIG4gPCAxMCA/ICcwJyArIG4gOiAnJyArIG47IH0KCmZ1bmN0aW9uIGdi UGFyc2VEYXR1bShzdHIpIHsKICAgIGlmICghc3RyIHx8IHN0ci5sZW5ndGggPCAxMCkgcmV0dXJu IHsgdGFnOiBudWxsLCBtb25hdDogbnVsbCwgamFocjogbnVsbCB9OwogICAgdmFyIHQgPSBzdHIu c3BsaXQoJy0nKTsKICAgIHJldHVybiB7CiAgICAgICAgamFocjogIHBhcnNlSW50KHRbMF0sIDEw KSB8fCBudWxsLAogICAgICAgIG1vbmF0OiBwYXJzZUludCh0WzFdLCAxMCkgfHwgbnVsbCwKICAg ICAgICB0YWc6ICAgcGFyc2VJbnQodFsyXSwgMTApIHx8IG51bGwKICAgIH07Cn0KCmZ1bmN0aW9u IGdiQnRuR3JpZCh0eXAsIHZvbiwgYmlzLCBsYWJlbHMpIHsKICAgIHZhciBzID0gZ2VidXJ0c3Rh Z01vZGFsU3RhdGUud2VydGU7CiAgICB2YXIgaHRtbCA9ICcnOwogICAgZm9yICh2YXIgaSA9IHZv bjsgaSA8PSBiaXM7IGkrKykgewogICAgICAgIHZhciBsYmwgPSBsYWJlbHMgPyBsYWJlbHNbaSAt IHZvbl0gOiBTdHJpbmcoaSk7CiAgICAgICAgdmFyIGNscyA9ICdnYi1idG4nICsgKHNbdHlwXSA9 PT0gaSA/ICcgYWt0aXYnIDogJycpOwogICAgICAgIGh0bWwgKz0gJzxidXR0b24gdHlwZT0iYnV0 dG9uIiBjbGFzcz0iJyArIGNscyArICciIGRhdGEtZ2ItdHlwPSInICsgdHlwICsgJyIgZGF0YS1n Yi13ZXJ0PSInICsgaSArICciPicgKyBlc2NhcGVIVE1MKGxibCkgKyAnPC9idXR0b24+JzsKICAg IH0KICAgIHJldHVybiBodG1sOwp9CgpmdW5jdGlvbiBnYkFuemVpZ2UoKSB7CiAgICB2YXIgcyA9 IGdlYnVydHN0YWdNb2RhbFN0YXRlLndlcnRlOwogICAgaWYgKCFzLnRhZyB8fCAhcy5tb25hdCB8 fCAhcy5qYWhyKSByZXR1cm4gJzxlbSBzdHlsZT0iY29sb3I6dmFyKC0tdGV4dC1tdXRlZCkiPkJp dHRlIFRhZywgTW9uYXQgdW5kIEphaHIgYXVzd8OkaGxlbi48L2VtPic7CiAgICByZXR1cm4gJzxz dHJvbmc+JyArIGdiUGFkKHMudGFnKSArICcuJyArIGdiUGFkKHMubW9uYXQpICsgJy4nICsgcy5q YWhyICsgJzwvc3Ryb25nPic7Cn0KCmV4cG9ydCBmdW5jdGlvbiBnZWJ1cnRzdGFnTW9kYWxJbmhh bHRSZW5kZXJuKCkgewogICAgcmV0dXJuICc8ZGl2IGNsYXNzPSJnYi1ha3R1ZWxsIj5HZXfDpGhs dDogJyArIGdiQW56ZWlnZSgpICsgJzwvZGl2PicgKwogICAgICAgICc8ZGl2IGNsYXNzPSJnYi1z ZWt0aW9uIj48ZGl2IGNsYXNzPSJnYi1zZWt0aW9uLXRpdGVsIj5UYWc8L2Rpdj4nICsKICAgICAg ICAgICAgJzxkaXYgY2xhc3M9ImdiLWdyaWQgZ2ItZ3JpZC10YWciPicgKyBnYkJ0bkdyaWQoJ3Rh ZycsIDEsIDMxKSArICc8L2Rpdj4nICsKICAgICAgICAnPC9kaXY+JyArCiAgICAgICAgJzxkaXYg Y2xhc3M9ImdiLXNla3Rpb24iPjxkaXYgY2xhc3M9ImdiLXNla3Rpb24tdGl0ZWwiPk1vbmF0PC9k aXY+JyArCiAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJnYi1ncmlkIGdiLWdyaWQtbW9uYXQiPicg KyBnYkJ0bkdyaWQoJ21vbmF0JywgMSwgMTIsIEdCX01PTkFURSkgKyAnPC9kaXY+JyArCiAgICAg ICAgJzwvZGl2PicgKwogICAgICAgICc8ZGl2IGNsYXNzPSJnYi1zZWt0aW9uIj48ZGl2IGNsYXNz PSJnYi1zZWt0aW9uLXRpdGVsIj5KYWhyPC9kaXY+JyArCiAgICAgICAgICAgICc8ZGl2IGNsYXNz PSJnYi1ncmlkIGdiLWdyaWQtamFociI+JyArIGdiQnRuR3JpZCgnamFocicsIEdCX0pBSFJFX1ZP TiwgR0JfSkFIUkVfQklTKSArICc8L2Rpdj4nICsKICAgICAgICAnPC9kaXY+JzsKfQoKZXhwb3J0 IGZ1bmN0aW9uIGdlYnVydHN0YWdNb2RhbFJlZnJlc2goKSB7CiAgICB2YXIgYyA9IGRvY3VtZW50 LmdldEVsZW1lbnRCeUlkKCdnYi1tb2RhbC1pbmhhbHQnKTsKICAgIGlmICghYykgcmV0dXJuOwog ICAgYy5pbm5lckhUTUwgPSBnZWJ1cnRzdGFnTW9kYWxJbmhhbHRSZW5kZXJuKCk7CiAgICBpZiAo SlNPTi5zdHJpbmdpZnkoZ2VidXJ0c3RhZ01vZGFsU3RhdGUud2VydGUpICE9PSBnZWJ1cnRzdGFn TW9kYWxTdGF0ZS51cnNwcnVuZykgewogICAgICAgIFoubW9kYWxEaXJ0eSA9IHRydWU7CiAgICB9 Cn0KCmV4cG9ydCBmdW5jdGlvbiBnZWJ1cnRzdGFnTW9kYWxPZWZmbmVuKGlkKSB7CiAgICB2YXIg cGVyc29uID0gKFoucGxhbnVuZy5wZXJzb25lbiB8fCBbXSkuZmluZChmdW5jdGlvbihwKSB7IHJl dHVybiBwLmlkID09PSBpZDsgfSk7CiAgICBpZiAoIXBlcnNvbikgcmV0dXJuOwogICAgdmFyIHRl aWxlID0gZ2JQYXJzZURhdHVtKHBlcnNvbi5nZWJ1cnRzZGF0dW0gfHwgJycpOwogICAgZ2VidXJ0 c3RhZ01vZGFsU3RhdGUub2ZmZW4gPSB0cnVlOwogICAgZ2VidXJ0c3RhZ01vZGFsU3RhdGUucGVy c29uSWQgPSBpZDsKICAgIGdlYnVydHN0YWdNb2RhbFN0YXRlLndlcnRlID0geyB0YWc6IHRlaWxl LnRhZywgbW9uYXQ6IHRlaWxlLm1vbmF0LCBqYWhyOiB0ZWlsZS5qYWhyIH07CiAgICBnZWJ1cnRz dGFnTW9kYWxTdGF0ZS51cnNwcnVuZyA9IEpTT04uc3RyaW5naWZ5KGdlYnVydHN0YWdNb2RhbFN0 YXRlLndlcnRlKTsKCiAgICB2YXIgdGl0ZWwgPSAoKHBlcnNvbi52b3JuYW1lIHx8ICcnKSArICcg JyArIChwZXJzb24ubmFtZSB8fCAnJykpLnRyaW0oKSB8fCAnUGVyc29uJzsKICAgIHZhciBrb2Vy cGVyID0gJzxkaXYgaWQ9ImdiLW1vZGFsLWluaGFsdCI+JyArIGdlYnVydHN0YWdNb2RhbEluaGFs dFJlbmRlcm4oKSArICc8L2Rpdj4nOwogICAgdmFyIGZ1c3MgPQogICAgICAgICc8YnV0dG9uIHR5 cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0biIgaWQ9ImdiLWxvZXNjaGVuIiB0aXRsZT0iR2VidXJ0c2Rh dHVtIGVudGZlcm5lbiI+TMO2c2NoZW48L2J1dHRvbj4nICsKICAgICAgICAnPHNwYW4gc3R5bGU9 ImZsZXg6MSI+PC9zcGFuPicgKwogICAgICAgICc8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9 ImJ0biIgaWQ9ImdiLWFiYnJlY2hlbiI+QWJicmVjaGVuPC9idXR0b24+JyArCiAgICAgICAgJzxi dXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuIGJ0bi1wcmltYWVyIiBpZD0iZGxnLXNwZWlj aGVybiI+U3BlaWNoZXJuPC9idXR0b24+JzsKCiAgICBtb2RhbFplaWdlbignR2VidXJ0c3RhZyDi gJQgJyArIHRpdGVsLCBrb2VycGVyLCBmdXNzLCBmdW5jdGlvbigpIHsKICAgICAgICB2YXIgcyA9 IGdlYnVydHN0YWdNb2RhbFN0YXRlLndlcnRlOwogICAgICAgIGlmICghcy50YWcgfHwgIXMubW9u YXQgfHwgIXMuamFocikgewogICAgICAgICAgICB0b2FzdCgnQml0dGUgVGFnLCBNb25hdCB1bmQg SmFociBhdXN3w6RobGVuJywgJ3dhcm51bmcnKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAg IH0KICAgICAgICAvLyBWYWxpZGllcnVuZzogMzEuMDIgZXRjLiBlcmtlbm5lbgogICAgICAgIHZh ciBkID0gbmV3IERhdGUocy5qYWhyLCBzLm1vbmF0IC0gMSwgcy50YWcpOwogICAgICAgIGlmIChk LmdldERhdGUoKSAhPT0gcy50YWcgfHwgZC5nZXRNb250aCgpICE9PSBzLm1vbmF0IC0gMSB8fCBk LmdldEZ1bGxZZWFyKCkgIT09IHMuamFocikgewogICAgICAgICAgICB0b2FzdCgnVW5nw7xsdGln ZXMgRGF0dW0gKHouQi4gMzEuIEZlYnJ1YXIpIOKAlCBiaXR0ZSBrb3JyaWdpZXJlbicsICd3YXJu dW5nJyk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgICAgdmFyIGRhdHVtU3Ry ID0gcy5qYWhyICsgJy0nICsgZ2JQYWQocy5tb25hdCkgKyAnLScgKyBnYlBhZChzLnRhZyk7CiAg ICAgICAgYXBpUHV0KCcvYXBpL3BlcnNvbmVuLycgKyBpZCwgeyBnZWJ1cnRzZGF0dW06IGRhdHVt U3RyIH0pLnRoZW4oZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHBlcnNvbi5nZWJ1cnRzZGF0dW0g PSBkYXR1bVN0cjsKICAgICAgICAgICAgZ2VidXJ0c3RhZ01vZGFsU3RhdGUub2ZmZW4gPSBmYWxz ZTsKICAgICAgICAgICAgcGVyc29uYWxUYWJlbGxlUmVuZGVybigpOwogICAgICAgICAgICB0b2Fz dCgnR2VidXJ0c3RhZyBnZXNwZWljaGVydCcsICdlcmZvbGcnKTsKICAgICAgICAgICAgbW9kYWxT Y2hsaWVzc2VuKHRydWUpOwogICAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uKGUpIHsKICAgICAgICAg ICAgdG9hc3QoJ0ZlaGxlcjogJyArIGUubWVzc2FnZSwgJ2ZlaGxlcicpOwogICAgICAgIH0pOwog ICAgfSk7CgogICAgLy8gRm9vdGVyLUJ1dHRvbnMgYmluZGVuCiAgICBkb2N1bWVudC5nZXRFbGVt ZW50QnlJZCgnZ2ItYWJicmVjaGVuJykuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlv bigpIHsKICAgICAgICAvLyBtb2RhbFNjaGxpZXNzZW4oKSBsb2VzdCBiZWkgWi5tb2RhbERpcnR5 IGF1dG9tYXRpc2NoIGRhcwogICAgICAgIC8vIEJlc3RhZXRpZ3VuZ3MtTW9kYWwgYXVzIChTcGVp Y2hlcm4gLyBWZXJ3ZXJmZW4gLyBBYmJyZWNoZW4pLgogICAgICAgIG1vZGFsU2NobGllc3Nlbigp OwogICAgfSk7CiAgICB2YXIgbG9lQnRuID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2diLWxv ZXNjaGVuJyk7CiAgICBpZiAobG9lQnRuKSB7CiAgICAgICAgbG9lQnRuLmFkZEV2ZW50TGlzdGVu ZXIoJ2NsaWNrJywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGFwaVB1dCgnL2FwaS9wZXJzb25l bi8nICsgaWQsIHsgZ2VidXJ0c2RhdHVtOiAnJyB9KS50aGVuKGZ1bmN0aW9uKCkgewogICAgICAg ICAgICAgICAgcGVyc29uLmdlYnVydHNkYXR1bSA9ICcnOwogICAgICAgICAgICAgICAgZ2VidXJ0 c3RhZ01vZGFsU3RhdGUub2ZmZW4gPSBmYWxzZTsKICAgICAgICAgICAgICAgIHBlcnNvbmFsVGFi ZWxsZVJlbmRlcm4oKTsKICAgICAgICAgICAgICAgIHRvYXN0KCdHZWJ1cnRzZGF0dW0gZW50ZmVy bnQnLCAnZXJmb2xnJyk7CiAgICAgICAgICAgICAgICBtb2RhbFNjaGxpZXNzZW4odHJ1ZSk7CiAg ICAgICAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uKGUpIHsgdG9hc3QoJ0ZlaGxlcjogJyArIGUubWVz c2FnZSwgJ2ZlaGxlcicpOyB9KTsKICAgICAgICB9KTsKICAgIH0KfQoKLy8gQ2xpY2stSGFuZGxl ciBmdWVyIGVpbnplbG5lIFRhZy9Nb25hdC9KYWhyLUJ1dHRvbnMgaW0gTW9kYWwuIFdpcmQgcGVy Ci8vIEV2ZW50LURlbGVnYXRpb24gaW0gYXBwLmpzIG1vZGFsLUNvbnRhaW5lci1IYW5kbGVyIGF1 ZmdlcnVmZW4uCmV4cG9ydCBmdW5jdGlvbiBnZWJ1cnRzdGFnTW9kYWxLbGljayh0eXAsIHdlcnQp IHsKICAgIGlmICghZ2VidXJ0c3RhZ01vZGFsU3RhdGUub2ZmZW4pIHJldHVybjsKICAgIGdlYnVy dHN0YWdNb2RhbFN0YXRlLndlcnRlW3R5cF0gPSB3ZXJ0OwogICAgZ2VidXJ0c3RhZ01vZGFsUmVm cmVzaCgpOwp9CgovLyA9PT09PSBBZG1pbjogR2VuZXJpc2NoZXIgSW5saW5lLUVkaXQgZnVlciBi ZWxpZWJpZ2UgRGF0ZW4tRmVsZGVyID09PT09Ci8vCi8vIE51dHp0IGRhcyBgcGVyc29uYWwtaW5s aW5lYC1TcGFuLU1hcmt1cCBhdXMgcGVyc29uWmVpbGUgKENoZXJyeS1QaWNrCi8vIGQ0MzQ2MWEs IGhpbnRlciBUb2dnbGUgYGZlYXR1cmVzLnBlcnNvbmFsSW5saW5lRWRpdGApLiBEb3BwZWxrbGlj ayBhdWYKLy8gZWluIG1hcmtpZXJ0ZXMgU3BhbiBlcnNldHp0IGVzIGR1cmNoIGVpbiA8aW5wdXQ+ LCBCbHVyL0VudGVyIHNwZWljaGVydCwKLy8gRXNjYXBlIHJvbGx0IHp1cnVlY2suIFVudGVyc3R1 ZXR6dGUgZGF0YS10eXAtV2VydGU6ICd0ZXh0JywgJ2RhdGUnLgpleHBvcnQgZnVuY3Rpb24gcGVy c29uYWxGZWxkSW5saW5lRWRpdChpZCwgc3BhbikgewogICAgaWYgKCFaLnJlY2h0ZSB8fCAhWi5y ZWNodGUuaXN0U3VwZXJVc2VyKSByZXR1cm47CiAgICB2YXIgcGVyc29uID0gKFoucGxhbnVuZy5w ZXJzb25lbiB8fCBbXSkuZmluZChmdW5jdGlvbihwKSB7IHJldHVybiBwLmlkID09PSBpZDsgfSk7 CiAgICBpZiAoIXBlcnNvbikgcmV0dXJuOwogICAgdmFyIGZlbGQgPSBzcGFuLmdldEF0dHJpYnV0 ZSgnZGF0YS1mZWxkJyk7CiAgICB2YXIgdHlwICA9IHNwYW4uZ2V0QXR0cmlidXRlKCdkYXRhLXR5 cCcpIHx8ICd0ZXh0JzsKICAgIGlmICghZmVsZCkgcmV0dXJuOwogICAgLy8gR2VidXJ0c2RhdHVt IG51dHp0IGVpbmVuIGRlZGl6aWVydGVuIEJ1dHRvbi1HcmlkLURpYWxvZyBzdGF0dAogICAgLy8g SW5saW5lLURhdGUtSW5wdXQgKFVzZXItRmVlZGJhY2sgMjAyNi0wNS0yMykuCiAgICBpZiAoZmVs ZCA9PT0gJ2dlYnVydHNkYXR1bScpIHsgZ2VidXJ0c3RhZ01vZGFsT2VmZm5lbihpZCk7IHJldHVy bjsgfQoKICAgIHZhciBha3R1ZWxsZXJXZXJ0ID0gcGVyc29uW2ZlbGRdOwogICAgaWYgKGFrdHVl bGxlcldlcnQgPT0gbnVsbCkgYWt0dWVsbGVyV2VydCA9ICcnOwoKICAgIHZhciBpbnB1dCA9IGRv Y3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0Jyk7CiAgICBpbnB1dC50eXBlID0gdHlwID09PSAn ZGF0ZScgPyAnZGF0ZScgOiAndGV4dCc7CiAgICBpbnB1dC52YWx1ZSA9IFN0cmluZyhha3R1ZWxs ZXJXZXJ0KTsKICAgIGlucHV0LmNsYXNzTmFtZSA9ICdwZXJzb25hbC1pbmxpbmUtaW5wdXQnOwog ICAgaW5wdXQuc3R5bGUuZm9udCA9ICdpbmhlcml0JzsKICAgIGlucHV0LnN0eWxlLnBhZGRpbmcg PSAnMnB4IDRweCc7CiAgICBpbnB1dC5zdHlsZS53aWR0aCA9IHR5cCA9PT0gJ2RhdGUnID8gJzE0 MHB4JyA6ICcxMDAlJzsKICAgIHNwYW4ucmVwbGFjZVdpdGgoaW5wdXQpOwogICAgaW5wdXQuZm9j dXMoKTsKICAgIHRyeSB7IGlucHV0LnNlbGVjdCgpOyB9IGNhdGNoIChlKSB7fQoKICAgIHZhciBh Ymdlc2NobG9zc2VuID0gZmFsc2U7CiAgICBmdW5jdGlvbiB1ZWJlcm5laG1lbigpIHsKICAgICAg ICBpZiAoYWJnZXNjaGxvc3NlbikgcmV0dXJuOwogICAgICAgIGFiZ2VzY2hsb3NzZW4gPSB0cnVl OwogICAgICAgIHZhciBuZXUgPSBpbnB1dC52YWx1ZTsKICAgICAgICBpZiAodHlwICE9PSAnZGF0 ZScpIG5ldSA9IG5ldS50cmltKCk7CiAgICAgICAgaWYgKFN0cmluZyhuZXUpID09PSBTdHJpbmco YWt0dWVsbGVyV2VydCB8fCAnJykpIHsKICAgICAgICAgICAgcGVyc29uYWxUYWJlbGxlUmVuZGVy bigpOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIHZhciB1cGRhdGUgPSB7 fTsKICAgICAgICB1cGRhdGVbZmVsZF0gPSBuZXU7CiAgICAgICAgYXBpUHV0KCcvYXBpL3BlcnNv bmVuLycgKyBpZCwgdXBkYXRlKS50aGVuKGZ1bmN0aW9uKCkgewogICAgICAgICAgICBwZXJzb25b ZmVsZF0gPSBuZXU7CiAgICAgICAgICAgIHBlcnNvbmVuTmV1QXVmYmF1ZW4oKTsKICAgICAgICAg ICAgcGVyc29uYWxUYWJlbGxlUmVuZGVybigpOwogICAgICAgICAgICBpZiAodHlwZW9mIG5hbWVu UmVuZGVybiA9PT0gJ2Z1bmN0aW9uJykgewogICAgICAgICAgICAgICAgbmFtZW5SZW5kZXJuKCk7 CiAgICAgICAgICAgICAgICBkYXRlbkdyaWRSZW5kZXJuKCk7CiAgICAgICAgICAgICAgICBrb3Bm UmVuZGVybigpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHRvYXN0KCdHZXNwZWljaGVydCcs ICdlcmZvbGcnKTsKICAgICAgICB9KS5jYXRjaChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHRv YXN0KCdGZWhsZXI6ICcgKyBlLm1lc3NhZ2UsICdmZWhsZXInKTsKICAgICAgICAgICAgcGVyc29u YWxUYWJlbGxlUmVuZGVybigpOwogICAgICAgIH0pOwogICAgfQogICAgZnVuY3Rpb24gYWJicmVj aGVuKCkgewogICAgICAgIGlmIChhYmdlc2NobG9zc2VuKSByZXR1cm47CiAgICAgICAgYWJnZXNj aGxvc3NlbiA9IHRydWU7CiAgICAgICAgcGVyc29uYWxUYWJlbGxlUmVuZGVybigpOwogICAgfQog ICAgaW5wdXQuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIGZ1bmN0aW9uKGUpIHsKICAgICAg ICBpZiAoZS5rZXkgPT09ICdFbnRlcicpICAgICAgIHsgZS5wcmV2ZW50RGVmYXVsdCgpOyB1ZWJl cm5laG1lbigpOyB9CiAgICAgICAgZWxzZSBpZiAoZS5rZXkgPT09ICdFc2NhcGUnKSB7IGUucHJl dmVudERlZmF1bHQoKTsgYWJicmVjaGVuKCk7IH0KICAgIH0pOwogICAgaW5wdXQuYWRkRXZlbnRM aXN0ZW5lcignYmx1cicsIHVlYmVybmVobWVuKTsKfQoKLy8gPT09PT0gQWRtaW46IEUtTWFpbC1B a3Rpb24gYXVzIGRlciBQZXJzb25hbC1UYWJlbGxlID09PT09CgovLyBLbGVpbmVzIE1vZGFsIG1p dCB6d2VpIEFrdGlvbmVuOiBBZHJlc3NlIGJlYXJiZWl0ZW4gb2RlciBNYWlsIHNjaHJlaWJlbi4K Ly8gS2xpY2sgYXVmIGRhcyBPdmVybGF5IHNjaGxpZXNzdCBkYXMgTW9kYWwgKGdsb2JhbCBpbiBt b2RhbC1vdmVybGF5LUhhbmRsZXIpLgpleHBvcnQgZnVuY3Rpb24gcGVyc29uRW1haWxEaWFsb2co aWQpIHsKICAgIHZhciBwZXJzb24gPSAoWi5wbGFudW5nLnBlcnNvbmVuIHx8IFtdKS5maW5kKGZ1 bmN0aW9uKHApIHsgcmV0dXJuIHAuaWQgPT09IGlkOyB9KTsKICAgIGlmICghcGVyc29uKSByZXR1 cm47CiAgICB2YXIgYWt0dWVsbGUgPSBwZXJzb24uZW1haWwgfHwgJyc7CiAgICB2YXIgdGl0ZWwg PSAoKHBlcnNvbi52b3JuYW1lIHx8ICcnKSArICcgJyArIChwZXJzb24ubmFtZSB8fCAnJykpLnRy aW0oKTsKCiAgICB2YXIga29lcnBlciA9CiAgICAgICAgJzxkaXYgY2xhc3M9ImZvcm0tZ3J1cHBl Ij4nICsKICAgICAgICAgICAgJzxsYWJlbD5IaW50ZXJsZWd0ZSBFLU1haWwtQWRyZXNzZTwvbGFi ZWw+JyArCiAgICAgICAgICAgICc8aW5wdXQgdHlwZT0iZW1haWwiIGlkPSJwZW1sLWFkcmVzc2Ui IGNsYXNzPSJmb3JtLWlucHV0IiBzdHlsZT0id2lkdGg6MTAwJSIgdmFsdWU9IicgKyBlc2NhcGVB dHRyKGFrdHVlbGxlKSArICciIHBsYWNlaG9sZGVyPSJiZWlzcGllbEBwb2xpemVpLm5ydy5kZSI+ JyArCiAgICAgICAgJzwvZGl2PicgKwogICAgICAgICc8ZGl2IHN0eWxlPSJkaXNwbGF5OmZsZXg7 Z2FwOjEwcHg7bWFyZ2luLXRvcDoxNnB4O2ZsZXgtd3JhcDp3cmFwIj4nICsKICAgICAgICAgICAg JzxidXR0b24gY2xhc3M9ImJ0biBidG4tcHJpbWFlciIgaWQ9InBlbWwtc3BlaWNoZXJuIj5BZHJl c3NlIHNwZWljaGVybjwvYnV0dG9uPicgKwogICAgICAgICAgICAnPGJ1dHRvbiBjbGFzcz0iYnRu IGJ0bi1lcmZvbGciIGlkPSJwZW1sLXNjaHJlaWJlbiInICsgKGFrdHVlbGxlID8gJycgOiAnIGRp c2FibGVkIHRpdGxlPSJFcnN0IGVpbmUgQWRyZXNzZSBoaW50ZXJsZWdlbiInKSArICc+RS1NYWls IHNjaHJlaWJlbjwvYnV0dG9uPicgKwogICAgICAgICc8L2Rpdj4nOwoKICAgIG1vZGFsWmVpZ2Vu KCdFLU1haWwg4oCUICcgKyB0aXRlbCwga29lcnBlciwgJycsIG51bGwpOwoKICAgIGRvY3VtZW50 LmdldEVsZW1lbnRCeUlkKCdwZW1sLXNwZWljaGVybicpLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNr JywgZnVuY3Rpb24oKSB7CiAgICAgICAgdmFyIG5ldSA9IChkb2N1bWVudC5nZXRFbGVtZW50QnlJ ZCgncGVtbC1hZHJlc3NlJykudmFsdWUgfHwgJycpLnRyaW0oKTsKICAgICAgICAvLyBBdXRvLVN1 ZmZpeDogV2VubiBGZWF0dXJlIGFrdGl2IGlzdCB1bmQgZGllIEVpbmdhYmUga2VpbiAiQCIgZW50 aGFlbHQsCiAgICAgICAgLy8gaGFlbmdlbiB3aXIgZGllIGluIGRlciBBZG1pbi1Lb25maWcgaGlu dGVybGVndGUgRG9tYWluIGFuLgogICAgICAgIC8vIChDaGVycnktUGljayAxYjg3Y2Q1LikgRGVm YXVsdC1Eb21haW4gZmFsbHMgbmljaHRzIGtvbmZpZ3VyaWVydDoKICAgICAgICAvLyAiQHBvbGl6 ZWkubnJ3LmRlIiAoc2llaGUgYWRtaW4uanNvbi9TZXJ2ZXItQWxsb3dsaXN0KS4KICAgICAgICBp ZiAobmV1ICYmIGZlYXR1cmVJc3RBa3RpdignZW1haWxBdXRvU3VmZml4JykgJiYgbmV1LmluZGV4 T2YoJ0AnKSA8IDApIHsKICAgICAgICAgICAgdmFyIGRvbWFpbiA9IChaLmFkbWluICYmIFouYWRt aW4uZW1haWxBdXRvRG9tYWluKSB8fCAnQHBvbGl6ZWkubnJ3LmRlJzsKICAgICAgICAgICAgaWYg KGRvbWFpbi5jaGFyQXQoMCkgIT09ICdAJykgZG9tYWluID0gJ0AnICsgZG9tYWluOwogICAgICAg ICAgICBuZXUgPSBuZXUgKyBkb21haW47CiAgICAgICAgfQogICAgICAgIGlmIChuZXUgJiYgIS9e W15cc0BdK0BbXlxzQF0rXC5bXlxzQF0rJC8udGVzdChuZXUpKSB7CiAgICAgICAgICAgIHRvYXN0 KCdVbmfDvGx0aWdlIEUtTWFpbC1BZHJlc3NlJywgJ3dhcm51bmcnKTsKICAgICAgICAgICAgcmV0 dXJuOwogICAgICAgIH0KICAgICAgICBhcGlQdXQoJy9hcGkvcGVyc29uZW4vJyArIGlkLCB7IGVt YWlsOiBuZXUgfSkudGhlbihmdW5jdGlvbigpIHsKICAgICAgICAgICAgcGVyc29uLmVtYWlsID0g bmV1OwogICAgICAgICAgICAvLyBmb3JjZT10cnVlOiBkaWUgQWRyZXNzZSBJU1QgZ2VzcGVpY2hl cnQgLT4gZGlyZWt0IHNjaGxpZXNzZW4sIHNvbnN0CiAgICAgICAgICAgIC8vIHNjaGxhZWd0IGRh cyBEaXJ0eS1UcmFja2luZyAoVXNlciBoYXQgamEgaW5zIEZlbGQgZ2V0aXBwdCkgZmFlbHNjaC0K ICAgICAgICAgICAgLy8gbGljaGVyd2Vpc2UgZGllICJVbmdlc3BlaWNoZXJ0ZSDDhG5kZXJ1bmdl biItUnVlY2tmcmFnZSB2b3IuCiAgICAgICAgICAgIG1vZGFsU2NobGllc3Nlbih0cnVlKTsKICAg ICAgICAgICAgcGVyc29uYWxUYWJlbGxlUmVuZGVybigpOwogICAgICAgICAgICB0b2FzdChuZXUg PyAnRS1NYWlsIGdlc3BlaWNoZXJ0JyA6ICdFLU1haWwgZW50ZmVybnQnLCAnZXJmb2xnJyk7CiAg ICAgICAgfSkuY2F0Y2goZnVuY3Rpb24oZSkgeyB0b2FzdCgnRmVobGVyOiAnICsgZS5tZXNzYWdl LCAnZmVobGVyJyk7IH0pOwogICAgfSk7CgogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Bl bWwtc2NocmVpYmVuJykuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbigpIHsKICAg ICAgICB2YXIgemllbCA9IChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncGVtbC1hZHJlc3NlJyku dmFsdWUgfHwgJycpLnRyaW0oKTsKICAgICAgICBpZiAoIXppZWwpIHsgdG9hc3QoJ0tlaW5lIEFk cmVzc2UgaGludGVybGVndCcsICd3YXJudW5nJyk7IHJldHVybjsgfQogICAgICAgIHdpbmRvdy5s b2NhdGlvbi5ocmVmID0gJ21haWx0bzonICsgZW5jb2RlVVJJQ29tcG9uZW50KHppZWwpOwogICAg fSk7Cn0K ### FILE: js/admin_rollen.js | 43278 Ly8gPT09IGFkbWluX3JvbGxlbi5qcyA9PT0KLy8gUGhhc2UgOS1CIEMxOiBhdXMgYWRtaW4uanMg ZXh0cmFoaWVydC4gVmVyd2FsdGV0IGRpZSB6d2VpIHJvbGxlbi0KLy8gbmFoZW4gQWRtaW4tVGFi czoKLy8gICAxLiBTdXBlclVzZXItTGlzdGUgKFouYWRtaW4uc3VwZXJVc2VyKQovLyAgIDIuIEZh Y2hhdWZzaWNodC1MaXN0ZSAoWi5hZG1pbi5mYWNoYXVmc2ljaHQpIGlua2wuIGdyYW51bGFyZSBT dWItCi8vICAgICAgU2ljaHRiYXJrZWl0IGZ1ZXIgQWRtaW4tU3ViLVRhYnMgKyBTdGF0aXN0aWst QmVyZWljaGUgdW5kCi8vICAgICAgUGxhbnVuZ3MtUmVjaHRlIChQZXJzb25lbi9HcnVwcGVuL1N0 YW5kb3J0ZSkuCi8vCi8vIEZlYXR1cmVzLVRvZ2dsZXMgKGZlYXR1cmVzUmVuZGVybi9mZWF0dXJl SXN0QWt0aXYpIGJsZWliZW4gYmV3dXNzdAovLyBpbiBhZG1pbi5qcyDigJQgQm9vdHN0cmFwLVZl cmFudHdvcnR1bmcsIGtlaW4gZWlnZW5lcyBSb2xsZW4tS29uemVwdC4KLy8gWmVudHJhbGVyIERp cnR5LVRyYWNrZXIgKGRpcnR5VHJhY2tlckVpbnJpY2h0ZW4pIGJsZWlidCBlYmVuZmFsbHMKLy8g aW4gYWRtaW4uanMgKGNyb3NzY3V0dGluZykuCi8vCi8vIFBhc3MtVGhyb3VnaC1SZS1FeHBvcnRz IGluIGFkbWluLmpzIHN0ZWxsZW4gc2ljaGVyLCBkYXNzIGV4dGVybmUKLy8gS29uc3VtZW50ZW4g KGFwcC5qcywgc3RhdGlzdGlrLmpzLCDigKYpIHVudmVyYWVuZGVydCBibGVpYmVuLgoKaW1wb3J0 IHsgWiB9IGZyb20gJy4vY29yZV9zdGF0ZS5qcyc7CmltcG9ydCB7IGVzY2FwZUhUTUwsIGVzY2Fw ZUF0dHIgfSBmcm9tICcuL2NvcmVfdXRpbC5qcyc7CmltcG9ydCB7IGFwaVB1dCB9IGZyb20gJy4v Y29yZV9hcGkuanMnOwppbXBvcnQgewogICAgdG9hc3QsCiAgICBtb2RhbFplaWdlbiwgbW9kYWxT Y2hsaWVzc2VuLAogICAgZGlydHlTZXR6ZW4sIGRpcnR5SXN0Cn0gZnJvbSAnLi91aV9kaWFsb2cu anMnOwppbXBvcnQgeyB2ZXJhbnR3b3J0dW5nc01haWx0b0ZldWVybiB9IGZyb20gJy4vZW1haWxf dm9ybGFnZW4uanMnOwppbXBvcnQgeyB0YWJlbGxlRmVsZGVyTGVzZW4gfSBmcm9tICcuL2FkbWlu X2NvbW1vbi5qcyc7CgovLyA9PT09PSBBZG1pbjogU3VwZXJVc2VyLVZlcndhbHR1bmcgPT09PT0K CmV4cG9ydCBmdW5jdGlvbiBzdXBlclVzZXJSZW5kZXJuKCkgewogICAgdmFyIG5hdkJ0biA9IGRv Y3VtZW50LmdldEVsZW1lbnRCeUlkKCduYXYtc3VwZXJ1c2VyJyk7CiAgICBpZiAobmF2QnRuKSBu YXZCdG4uc3R5bGUuZGlzcGxheSA9IFoucmVjaHRlLmlzdFN1cGVyVXNlciA/ICcnIDogJ25vbmUn OwoKICAgIHZhciB0Ym9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzdXBlcnVzZXItdGJv ZHknKTsKICAgIHZhciBidG5OZXUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYnRuLXN1cGVy dXNlci1uZXUnKTsKICAgIHZhciBidG5TcGVpY2hlcm4gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ ZCgnYnRuLXN1cGVydXNlci1zcGVpY2hlcm4nKTsKICAgIHZhciBrZWluUmVjaHQgPSBkb2N1bWVu dC5nZXRFbGVtZW50QnlJZCgnc3VwZXJ1c2VyLWtlaW4tcmVjaHQnKTsKCiAgICBpZiAoIVoucmVj aHRlLmlzdFN1cGVyVXNlcikgewogICAgICAgIGlmIChidG5OZXUpIGJ0bk5ldS5zdHlsZS5kaXNw bGF5ID0gJ25vbmUnOwogICAgICAgIGlmIChidG5TcGVpY2hlcm4pIGJ0blNwZWljaGVybi5zdHls ZS5kaXNwbGF5ID0gJ25vbmUnOwogICAgICAgIGlmIChrZWluUmVjaHQpIGtlaW5SZWNodC5jbGFz c0xpc3QucmVtb3ZlKCd2ZXJzdGVja3QnKTsKICAgICAgICBpZiAodGJvZHkpIHRib2R5LmlubmVy SFRNTCA9ICcnOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBpZiAoYnRuTmV1KSBidG5OZXUu c3R5bGUuZGlzcGxheSA9ICcnOwogICAgaWYgKGJ0blNwZWljaGVybikgYnRuU3BlaWNoZXJuLnN0 eWxlLmRpc3BsYXkgPSAnJzsKICAgIGlmIChrZWluUmVjaHQpIGtlaW5SZWNodC5jbGFzc0xpc3Qu YWRkKCd2ZXJzdGVja3QnKTsKCiAgICB2YXIgbGlzdGUgPSBaLmFkbWluLnN1cGVyVXNlciB8fCBb XTsKICAgIHZhciBodG1sID0gJyc7CiAgICBsaXN0ZS5mb3JFYWNoKGZ1bmN0aW9uKHN1LCBpKSB7 CiAgICAgICAgaHRtbCArPSAnPHRyPicgKwogICAgICAgICAgICAnPHRkPjxpbnB1dCB0eXBlPSJ0 ZXh0IiB2YWx1ZT0iJyArIGVzY2FwZUF0dHIoc3UubmFtZSB8fCAnJykgKyAnIiBkYXRhLWlkeD0i JyArIGkgKyAnIiBkYXRhLWZlbGQ9Im5hbWUiIGNsYXNzPSJzdXBlcnVzZXItaW5wdXQiIHN0eWxl PSJ3aWR0aDoxMDAlIj48L3RkPicgKwogICAgICAgICAgICAnPHRkPjxpbnB1dCB0eXBlPSJ0ZXh0 IiB2YWx1ZT0iJyArIGVzY2FwZUF0dHIoc3UubndLZW5udW5nIHx8ICcnKSArICciIGRhdGEtaWR4 PSInICsgaSArICciIGRhdGEtZmVsZD0ibndLZW5udW5nIiBjbGFzcz0ic3VwZXJ1c2VyLWlucHV0 IiBzdHlsZT0id2lkdGg6MTAwJSI+PC90ZD4nICsKICAgICAgICAgICAgJzx0ZD48aW5wdXQgdHlw ZT0idGV4dCIgdmFsdWU9IicgKyBlc2NhcGVBdHRyKHN1Lm9lIHx8ICcnKSArICciIGRhdGEtaWR4 PSInICsgaSArICciIGRhdGEtZmVsZD0ib2UiIGNsYXNzPSJzdXBlcnVzZXItaW5wdXQiIHBsYWNl aG9sZGVyPSJ6LkIuIFZJMyBLYW1lbiIgc3R5bGU9IndpZHRoOjEwMCUiPjwvdGQ+JyArCiAgICAg ICAgICAgICc8dGQ+PGlucHV0IHR5cGU9InRleHQiIHZhbHVlPSInICsgZXNjYXBlQXR0cihzdS50 ZWxlZm9uIHx8ICcnKSArICciIGRhdGEtaWR4PSInICsgaSArICciIGRhdGEtZmVsZD0idGVsZWZv biIgY2xhc3M9InN1cGVydXNlci1pbnB1dCIgcGxhY2Vob2xkZXI9InouQi4gNDUyMCIgc3R5bGU9 IndpZHRoOjEwMCUiPjwvdGQ+JyArCiAgICAgICAgICAgICc8dGQ+PGJ1dHRvbiBjbGFzcz0iYnRu IGJ0bi1nZWZhaHIgYnRuLWtsZWluIGJ0bi1sb2VzY2hlbiIgZGF0YS1ha3Rpb249InN1cGVydXNl ci1sb2VzY2hlbiIgZGF0YS1pZHg9IicgKyBpICsgJyIgdGl0bGU9IkzDtnNjaGVuIj5Mw7ZzY2hl bjwvYnV0dG9uPjwvdGQ+PC90cj4nOwogICAgfSk7CiAgICB0Ym9keS5pbm5lckhUTUwgPSBodG1s Owp9CgpleHBvcnQgZnVuY3Rpb24gc3VwZXJVc2VyQXVzVGFiZWxsZUxlc2VuKCkgewogICAgcmV0 dXJuIHRhYmVsbGVGZWxkZXJMZXNlbignc3VwZXJ1c2VyLWlucHV0JykKICAgICAgICAuZmlsdGVy KGZ1bmN0aW9uKHN1KSB7IHJldHVybiBzdS5uYW1lICYmIHN1Lm53S2VubnVuZzsgfSk7Cn0KCi8v ID09PT09IEFkbWluOiBGYWNoYXVmc2ljaHQgPT09PT0KLy8gTnVyIFN1cGVyVXNlciBkYXJmIEVp bnRyYWVnZSBoaWVyIGFlbmRlcm4gKGFuYWxvZyB6dXIgU3VwZXJVc2VyLVZlcndhbHR1bmcpLgov LyBEYXRlbnN0cnVrdHVyIHBybyBFaW50cmFnOgovLyAgIHsgbmFtZSwgbndLZW5udW5nLCBzZWhl bjp7YWRtaW5pc3RyYXRpb24sc3RhdGlzdGlrLGxvZ2J1Y2gsYmFja3Vwc30sCi8vICAgICBlZGl0 aWVyZW46e3BlcnNvbmVuSWRzW10sIGRpZW5zdGdydXBwZW5bXSwgc3RhbmRvcnRlW119IH0KCmV4 cG9ydCBmdW5jdGlvbiBmYWNoYXVmc2ljaHRSZW5kZXJuKCkgewogICAgdmFyIHRib2R5ID0gZG9j dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ZhY2hhdWZzaWNodC10Ym9keScpOwogICAgdmFyIGJ0bk5l dSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdidG4tZmFjaGF1ZnNpY2h0LW5ldScpOwogICAg dmFyIGJ0blNwZWljaGVybiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdidG4tZmFjaGF1ZnNp Y2h0LXNwZWljaGVybicpOwogICAgdmFyIGtlaW5SZWNodCA9IGRvY3VtZW50LmdldEVsZW1lbnRC eUlkKCdmYWNoYXVmc2ljaHQta2Vpbi1yZWNodCcpOwogICAgaWYgKCF0Ym9keSkgcmV0dXJuOwoK ICAgIGlmICghWi5yZWNodGUuaXN0U3VwZXJVc2VyKSB7CiAgICAgICAgaWYgKGJ0bk5ldSkgYnRu TmV1LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CiAgICAgICAgaWYgKGJ0blNwZWljaGVybikgYnRu U3BlaWNoZXJuLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CiAgICAgICAgaWYgKGtlaW5SZWNodCkg a2VpblJlY2h0LmNsYXNzTGlzdC5yZW1vdmUoJ3ZlcnN0ZWNrdCcpOwogICAgICAgIHRib2R5Lmlu bmVySFRNTCA9ICcnOwogICAgICAgIHJldHVybjsKICAgIH0KICAgIGlmIChidG5OZXUpIGJ0bk5l dS5zdHlsZS5kaXNwbGF5ID0gJyc7CiAgICBpZiAoYnRuU3BlaWNoZXJuKSBidG5TcGVpY2hlcm4u c3R5bGUuZGlzcGxheSA9ICcnOwogICAgaWYgKGtlaW5SZWNodCkga2VpblJlY2h0LmNsYXNzTGlz dC5hZGQoJ3ZlcnN0ZWNrdCcpOwoKICAgIHZhciBsaXN0ZSA9IFouYWRtaW4uZmFjaGF1ZnNpY2h0 IHx8IFtdOwogICAgZnVuY3Rpb24gY2hrKGlkeCwgZmVsZCwgY2hlY2tlZCkgewogICAgICAgIHJl dHVybiAnPGlucHV0IHR5cGU9ImNoZWNrYm94IiBjbGFzcz0iZmFjaGF1ZnNpY2h0LWNoayIgZGF0 YS1pZHg9IicgKyBpZHggKyAnIiBkYXRhLWZlbGQ9IicgKyBmZWxkICsgJyInICsgKGNoZWNrZWQg PyAnIGNoZWNrZWQnIDogJycpICsgJz4nOwogICAgfQogICAgdmFyIGh0bWwgPSAnJzsKICAgIGxp c3RlLmZvckVhY2goZnVuY3Rpb24oZmEsIGkpIHsKICAgICAgICB2YXIgcyA9IGZhLnNlaGVuIHx8 IHt9OwogICAgICAgIHZhciBlZCA9IGZhLmVkaXRpZXJlbiB8fCB7fTsKICAgICAgICB2YXIgcGxh bkxhYmVsID0gZmFjaGF1ZnNpY2h0UGxhbkxhYmVsKGVkKTsKICAgICAgICAvLyBHcmFudWxhcmUg U3ViLVNpY2h0LUJ1dHRvbnMgKEZpbmRpbmcgQy45IC8gU3BlYyBGLjIpOiB6ZWlnZW4KICAgICAg ICAvLyBrb256aXNlIHdpZSB2aWVsZSBBZG1pbi1TdWJ0YWJzIC8gU3RhdGlzdGlrLUJlcmVpY2hl IHNpY2h0YmFyCiAgICAgICAgLy8gc2luZC4gS2xpY2sgb2VmZm5ldCBqZXdlaWxpZ2VzIERldGFp bC1Nb2RhbC4KICAgICAgICB2YXIgYWRtaW5MYWJlbCA9IGZhY2hhdWZzaWNodFN1YlNpY2h0TGFi ZWwoJ2FkbWluJywgZmEuYWRtaW5TaWNodGJhcmtlaXQsIHMuYWRtaW5pc3RyYXRpb24pOwogICAg ICAgIHZhciBzdGF0TGFiZWwgID0gZmFjaGF1ZnNpY2h0U3ViU2ljaHRMYWJlbCgnc3RhdCcsICBm YS5zdGF0aXN0aWtTaWNodGJhcmtlaXQsIHMuc3RhdGlzdGlrKTsKCiAgICAgICAgaHRtbCArPSAn PHRyPicgKwogICAgICAgICAgICAnPHRkPjxpbnB1dCB0eXBlPSJ0ZXh0IiB2YWx1ZT0iJyArIGVz Y2FwZUF0dHIoZmEubmFtZSB8fCAnJykgKyAnIiBkYXRhLWlkeD0iJyArIGkgKyAnIiBkYXRhLWZl bGQ9Im5hbWUiIGNsYXNzPSJmYWNoYXVmc2ljaHQtaW5wdXQiIHN0eWxlPSJ3aWR0aDoxMDAlIj48 L3RkPicgKwogICAgICAgICAgICAnPHRkPjxpbnB1dCB0eXBlPSJ0ZXh0IiB2YWx1ZT0iJyArIGVz Y2FwZUF0dHIoZmEubndLZW5udW5nIHx8ICcnKSArICciIGRhdGEtaWR4PSInICsgaSArICciIGRh dGEtZmVsZD0ibndLZW5udW5nIiBjbGFzcz0iZmFjaGF1ZnNpY2h0LWlucHV0IiBzdHlsZT0id2lk dGg6MTAwJSIgcGxhY2Vob2xkZXI9IkRPTUFJTlxcdXNlciBvZGVyIE5XMDUzNjA5Ij48L3RkPicg KwogICAgICAgICAgICAnPHRkIHN0eWxlPSJ0ZXh0LWFsaWduOmNlbnRlciI+JyArIGNoayhpLCAn YWRtaW5pc3RyYXRpb24nLCAhIXMuYWRtaW5pc3RyYXRpb24pICsgJzwvdGQ+JyArCiAgICAgICAg ICAgICc8dGQgc3R5bGU9InRleHQtYWxpZ246Y2VudGVyIj4nICsgY2hrKGksICdzdGF0aXN0aWsn LCAgICAgICEhcy5zdGF0aXN0aWspICsgJzwvdGQ+JyArCiAgICAgICAgICAgICc8dGQgc3R5bGU9 InRleHQtYWxpZ246Y2VudGVyIj4nICsgY2hrKGksICdsb2didWNoJywgICAgICAgICEhcy5sb2di dWNoKSArICc8L3RkPicgKwogICAgICAgICAgICAnPHRkIHN0eWxlPSJ0ZXh0LWFsaWduOmNlbnRl ciI+JyArIGNoayhpLCAnYmFja3VwcycsICAgICAgICAhIXMuYmFja3VwcykgKyAnPC90ZD4nICsK ICAgICAgICAgICAgJzx0ZCBzdHlsZT0idGV4dC1hbGlnbjpjZW50ZXIiPicgKwogICAgICAgICAg ICAgICAgJzxpbnB1dCB0eXBlPSJjaGVja2JveCIgY2xhc3M9ImZhY2hhdWZzaWNodC1nZXNhbXQt Y2hrIiBkYXRhLWlkeD0iJyArIGkgKyAnIicgKyAoZmEuZ2VzYW10dmVyYW50d29ydGxpY2ggPyAn IGNoZWNrZWQnIDogJycpICsgJyB0aXRsZT0iR2VzYW10dmVyYW50d29ydGxpY2ggZsO8ciBkaWUg QmVzZXR6dW5nIOKAlCBzY2hhbHRldCBkZW4gSGVhZGVyLVRhYiBQcsO8ZnVuZyBmcmVpIj4nICsK ICAgICAgICAgICAgJzwvdGQ+JyArCiAgICAgICAgICAgICc8dGQ+JyArCiAgICAgICAgICAgICAg ICAnPGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1zZWsgYnRuLWtsZWluIGZhY2hhdWZzaWNodC1zdWJz aWNodC1idG4iIGRhdGEtYWt0aW9uPSJmYWNoYXVmc2ljaHQtc3Vic2ljaHQiIGRhdGEtaWR4PSIn ICsgaSArICciJyArIChzLmFkbWluaXN0cmF0aW9uID8gJycgOiAnIGRpc2FibGVkJykgKyAnIHRp dGxlPSInICsgZXNjYXBlQXR0cihzLmFkbWluaXN0cmF0aW9uID8gJ1dlbGNoZSBBZG1pbi1TdWIt VGFicyBkYXJmIGRpZXNlIEZhY2hhdWZzaWNodCBzZWhlbj8nIDogJ0Vyc3QgIkFkbWluIi1Iw6Rr Y2hlbiBvYmVuIHNldHplbicpICsgJyIgc3R5bGU9IndpZHRoOjEwMCU7dGV4dC1hbGlnbjpsZWZ0 Ij4nICsgZXNjYXBlSFRNTChhZG1pbkxhYmVsKSArICc8L2J1dHRvbj4nICsKICAgICAgICAgICAg ICAgICc8YnV0dG9uIGNsYXNzPSJidG4gYnRuLXNlayBidG4ta2xlaW4gZmFjaGF1ZnNpY2h0LXN1 YnNpY2h0LWJ0biIgZGF0YS1ha3Rpb249ImZhY2hhdWZzaWNodC1zdGF0c2ljaHQiIGRhdGEtaWR4 PSInICsgaSArICciJyArIChzLnN0YXRpc3RpayA/ICcnIDogJyBkaXNhYmxlZCcpICsgJyB0aXRs ZT0iJyArIGVzY2FwZUF0dHIocy5zdGF0aXN0aWsgPyAnV2VsY2hlIFN0YXRpc3Rpay1CZXJlaWNo ZSBkYXJmIGRpZXNlIEZhY2hhdWZzaWNodCBzZWhlbj8nIDogJ0Vyc3QgIlN0YXRpc3RpayItSMOk a2NoZW4gb2JlbiBzZXR6ZW4nKSArICciIHN0eWxlPSJ3aWR0aDoxMDAlO3RleHQtYWxpZ246bGVm dDttYXJnaW4tdG9wOjNweCI+JyArIGVzY2FwZUhUTUwoc3RhdExhYmVsKSArICc8L2J1dHRvbj4n ICsKICAgICAgICAgICAgJzwvdGQ+JyArCiAgICAgICAgICAgICc8dGQ+JyArCiAgICAgICAgICAg ICAgICAnPGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1zZWsgYnRuLWtsZWluIGZhY2hhdWZzaWNodC1w bGFuLWJ0biIgZGF0YS1ha3Rpb249ImZhY2hhdWZzaWNodC1kZXRhaWxzIiBkYXRhLWlkeD0iJyAr IGkgKyAnIiB0aXRsZT0iS2xpY2tlbiB6dW0gQmVhcmJlaXRlbiBkZXIgUGxhbnVuZ3MtUmVjaHRl IiBzdHlsZT0id2lkdGg6MTAwJTt0ZXh0LWFsaWduOmxlZnQiPicgKwogICAgICAgICAgICAgICAg ICAgIGVzY2FwZUhUTUwocGxhbkxhYmVsKSArCiAgICAgICAgICAgICAgICAnPC9idXR0b24+JyAr CiAgICAgICAgICAgICc8L3RkPicgKwogICAgICAgICAgICAnPHRkIHN0eWxlPSJ3aGl0ZS1zcGFj ZTpub3dyYXAiPicgKwogICAgICAgICAgICAgICAgJzxidXR0b24gY2xhc3M9ImJ0biBidG4tc2Vr IGJ0bi1rbGVpbiIgZGF0YS1ha3Rpb249ImZhY2hhdWZzaWNodC10ZXN0ZW4iIGRhdGEtaWR4PSIn ICsgaSArICciIHRpdGxlPSJPYmVyZmzDpGNoZSBhbHMgZGllc2UgRmFjaGF1ZnNpY2h0IHRlc3Rl biAobnVyIGxva2FsLCBTZXJ2ZXItUmVjaHRlIGJsZWliZW4gU1UpIiBzdHlsZT0ibWFyZ2luLXJp Z2h0OjRweCI+VGVzdGVuPC9idXR0b24+JyArCiAgICAgICAgICAgICAgICAnPGJ1dHRvbiBjbGFz cz0iYnRuIGJ0bi1nZWZhaHIgYnRuLWtsZWluIGJ0bi1sb2VzY2hlbiIgZGF0YS1ha3Rpb249ImZh Y2hhdWZzaWNodC1sb2VzY2hlbiIgZGF0YS1pZHg9IicgKyBpICsgJyIgdGl0bGU9IkzDtnNjaGVu Ij5Mw7ZzY2hlbjwvYnV0dG9uPicgKwogICAgICAgICAgICAnPC90ZD4nICsKICAgICAgICAgICAg JzwvdHI+JzsKICAgIH0pOwogICAgdGJvZHkuaW5uZXJIVE1MID0gaHRtbDsKICAgIGZhY2hhdWZz aWNodERpcnR5U2V0emVuKGZhbHNlKTsKfQoKLy8gQWJ3YWVydHNrb21wYXRpYmxlIEFkYXB0ZXIg 4oCUIGVpbmlnZSBleGlzdGllcmVuZGUgQXVmcnVmZXIgbnV0emVuIGRpZQovLyBhbHRlbiBGYWNo YXVmc2ljaHQtTmFtZW4uIFVtbGVpdGVuIGF1ZiBkZW4gemVudHJhbGVuIFRyYWNrZXIKLy8gKFJl Z2lzdHJ5IGluIGFkbWluLmpzIGRpcnR5VHJhY2tlckVpbnJpY2h0ZW4pLgpleHBvcnQgZnVuY3Rp b24gZmFjaGF1ZnNpY2h0RGlydHlTZXR6ZW4oaXN0RGlydHkpIHsgZGlydHlTZXR6ZW4oJ2ZhY2hh dWZzaWNodCcsIGlzdERpcnR5KTsgfQpleHBvcnQgZnVuY3Rpb24gZmFjaGF1ZnNpY2h0SXN0RGly dHkoKSB7IHJldHVybiBkaXJ0eUlzdCgnZmFjaGF1ZnNpY2h0Jyk7IH0KCi8vIEtvbmZpZ3VyaWVy YmFyZSBBZG1pbi1TdWItVGFicyBmdWVyIEZhY2hhdWZzaWNodC1HcmFudWxhci1TaWNodGJhcmtl aXQuCi8vIFNpY2hlcmhlaXRzLVRhYnMgKHN1cGVydXNlciwgZmFjaGF1ZnNpY2h0LCBzaWNodGJh cmtlaXQsIGZlYXR1cmVzLAovLyB0ZXN0ZGF0ZW4pIHNpbmQgaGFydGNvZGllcnQgU1Utb25seSB1 bmQgc3RlaGVuIE5JQ0hUIGluIGRpZXNlciBMaXN0ZS4KZXhwb3J0IHZhciBGQUNIQVVGU0lDSFRf QURNSU5fU1VCVEFCUyA9IFsKICAgIHsga2V5OiAncGVyc29uYWwnLCAgICAgIGxhYmVsOiAnUGVy c29uYWx2ZXJ3YWx0dW5nJyB9LAogICAgeyBrZXk6ICdncnVwcGVuJywgICAgICAgbGFiZWw6ICdE aWVuc3RncnVwcGVuJyB9LAogICAgeyBrZXk6ICdmZWllcnRhZ2UnLCAgICAgbGFiZWw6ICdGZWll cnRhZ2UnIH0sCiAgICB7IGtleTogJ2ZlcmllbicsICAgICAgICBsYWJlbDogJ0ZlcmllbicgfSwK ICAgIHsga2V5OiAnc29uZGVydGVybWluZScsIGxhYmVsOiAnU29uZGVydGVybWluZScgfSwKICAg IHsga2V5OiAnc2NoaWNodGNvZGVzJywgIGxhYmVsOiAnU2NoaWNodGNvZGVzJyB9LAogICAgeyBr ZXk6ICdzdGFuZG9ydGUnLCAgICAgbGFiZWw6ICdTdGFuZG9ydGUnIH0sCiAgICB7IGtleTogJ2Vp bnN0ZWxsdW5nZW4nLCBsYWJlbDogJ0VpbnN0ZWxsdW5nZW4nIH0sCiAgICB7IGtleTogJ2JhY2t1 cHMnLCAgICAgICBsYWJlbDogJ0JhY2t1cHMnIH0sCiAgICB7IGtleTogJ2ltcG9ydCcsICAgICAg ICBsYWJlbDogJ0V4Y2VsLUltcG9ydCcgfSwKICAgIHsga2V5OiAnYmV6ZWljaG51bmdlbicsIGxh YmVsOiAnQmV6ZWljaG51bmdlbicgfSwKICAgIHsga2V5OiAnaW5mb2hpbGZlJywgICAgIGxhYmVs OiAnSW5mb3JtYXRpb24gJiBIaWxmZScgfSwKICAgIHsga2V5OiAnZW1haWx2b3JsYWdlbicsIGxh YmVsOiAnRS1NYWlsLVZvcmxhZ2VuJyB9Cl07CmV4cG9ydCB2YXIgRkFDSEFVRlNJQ0hUX1NUQVRf QkVSRUlDSEUgPSBbCiAgICB7IGtleTogJ2twaXMnLCAgICAgICAgICAgICAgbGFiZWw6ICdLUEkt S2FjaGVsbiAob2JlbiknIH0sCiAgICB7IGtleTogJ3N0YXRGYWlybmVzcycsICAgICAgbGFiZWw6 ICdGYWlybmVzcy1BbnplaWdlJyB9LAogICAgeyBrZXk6ICdzdGF0TXVzdGVyJywgICAgICAgIGxh YmVsOiAnQXVmZsOkbGxpZ2tlaXRlbiAvIE11c3RlcicgfSwKICAgIHsga2V5OiAnc3RhdEFid2Vz ZW5oZWl0JywgICBsYWJlbDogJ0Fid2VzZW5oZWl0cy1LYWNoZWxuJyB9LAogICAgeyBrZXk6ICdz dGF0RGV0YWlsVGFiZWxsZScsIGxhYmVsOiAnRGV0YWlsLVRhYmVsbGUnIH0KXTsKCi8vIExhYmVs LUhlbHBlciBmdWVyIGRlbiBTdWItU2ljaHQtQnV0dG9uLiB0eXA6ICdhZG1pbid8J3N0YXQnLgov LyBzaWNodGJhcmtlaXRNYXA6IGRhcyBmYS5hZG1pblNpY2h0YmFya2VpdCAvIGZhLnN0YXRpc3Rp a1NpY2h0YmFya2VpdC1PYmpla3QuCi8vIERlZmF1bHQtVmVyaGFsdGVuIChNYXAgbGVlci91bmRl ZmluZWQpOiAiQWxsZSBlcmxhdWJ0IiB3ZW5uIFRhYiBmcmVpZ2VnZWJlbiwKLy8gIuKAlCIgd2Vu biBUYWIgbmljaHQgZnJlaWdlZ2ViZW4uCmV4cG9ydCBmdW5jdGlvbiBmYWNoYXVmc2ljaHRTdWJT aWNodExhYmVsKHR5cCwgc2ljaHRiYXJrZWl0TWFwLCB0YWJGcmVpZ2VnZWJlbikgewogICAgdmFy IGxpc3RlID0gdHlwID09PSAnYWRtaW4nID8gRkFDSEFVRlNJQ0hUX0FETUlOX1NVQlRBQlMgOiBG QUNIQVVGU0lDSFRfU1RBVF9CRVJFSUNIRTsKICAgIHZhciBiZXJlaWNoID0gdHlwID09PSAnYWRt aW4nID8gJ0FkbWluLVRhYnMnIDogJ1N0YXRpc3Rpay1CZXJlaWNoZSc7CiAgICBpZiAoIXRhYkZy ZWlnZWdlYmVuKSByZXR1cm4gJ+KAlCAoJyArICh0eXAgPT09ICdhZG1pbicgPyAnQWRtaW4nIDog J1N0YXRpc3RpaycpICsgJyBuaWNodCBmcmVpZ2VnZWJlbiknOwogICAgdmFyIG0gPSBzaWNodGJh cmtlaXRNYXAgfHwge307CiAgICB2YXIga2V5cyA9IE9iamVjdC5rZXlzKG0pOwogICAgaWYgKGtl eXMubGVuZ3RoID09PSAwKSByZXR1cm4gJ0FsbGUgJyArIGJlcmVpY2ggKyAnIChTdGFuZGFyZCkn OwogICAgdmFyIHZlcnN0ZWNrdCA9IGtleXMuZmlsdGVyKGZ1bmN0aW9uKGspIHsgcmV0dXJuIG1b a10gPT09IGZhbHNlOyB9KS5sZW5ndGg7CiAgICB2YXIgc2ljaHRiYXIgPSBsaXN0ZS5sZW5ndGgg LSB2ZXJzdGVja3Q7CiAgICBpZiAodmVyc3RlY2t0ID09PSAwKSByZXR1cm4gJ0FsbGUgJyArIGJl cmVpY2g7CiAgICBpZiAoc2ljaHRiYXIgPT09IDApIHJldHVybiAnS2VpbmUgJyArIGJlcmVpY2g7 CiAgICByZXR1cm4gc2ljaHRiYXIgKyAnIHZvbiAnICsgbGlzdGUubGVuZ3RoICsgJyAnICsgYmVy ZWljaDsKfQoKLy8gR2VuZXJpc2NoZXIgTW9kYWwtS29udGV4dC4gS2Fwc2VsdCwgQVVGIFdFTENI RSBaLmFkbWluLUxpc3RlLCB1ZWJlcgovLyB3ZWxjaGVuIEVuZHBvaW50IHVuZCBtaXQgd2VsY2hl bSBUYWJlbGxlbi1SZWFkZXIvUmVuZGVyZXIgZWluCi8vIFN1Yi1TaWNodC0vUGxhbi1Nb2RhbCBh cmJlaXRldC4gRnJ1ZWhlciB3dXJkZSBkYWZ1ZXIga3VyenplaXRpZwovLyBaLmFkbWluLmZhY2hh dWZzaWNodCB1bWdlYm9nZW4gKyBuYWNoIDUwbXMgcGVyIHNldFRpbWVvdXQgenVydWVjay0KLy8g Z2VzcGllZ2VsdCDigJQgZGFzIGZldWVydGUgYWJlciwgQkVWT1IgZGVyIFVzZXIgaW0gTW9kYWwg IlNwZWljaGVybiIKLy8gZHJ1ZWNrdGUsIHNvZGFzcyBkZXIgTW9kYWwtU2F2ZSBkaWUgRUNIVEUg RmFjaGF1ZnNpY2h0LUxpc3RlIG1pdAovLyBSb2xsZW4tRGF0ZW4gdWViZXJzY2hyaWViIChDUklU SUNBTCBEYXRlbmtvcnJ1cHR1cikuIERlciBLb250ZXh0Ci8vIG1hY2h0IGRlbiBTd2FwIHVlYmVy Zmx1ZXNzaWc6IGplZGVzIE1vZGFsIHNjaHJlaWJ0IGRpcmVrdCBhdWYgZGllCi8vIHJpY2h0aWdl IExpc3RlLgpmdW5jdGlvbiBmYWNoYXVmc2ljaHRNb2RhbEN0eCgpIHsKICAgIHJldHVybiB7CiAg ICAgICAgZ2V0TGlzdGU6ICAgICAgICBmdW5jdGlvbigpIHsgcmV0dXJuIFouYWRtaW4uZmFjaGF1 ZnNpY2h0IHx8IFtdOyB9LAogICAgICAgIHNldExpc3RlOiAgICAgICAgZnVuY3Rpb24oZCkgeyBa LmFkbWluLmZhY2hhdWZzaWNodCA9IGQ7IH0sCiAgICAgICAgYXVzVGFiZWxsZUxlc2VuOiBmdW5j dGlvbigpIHsgcmV0dXJuIGZhY2hhdWZzaWNodEF1c1RhYmVsbGVMZXNlbigpOyB9LAogICAgICAg IGVuZHBvaW50OiAgICAgICAgJy9hcGkvYWRtaW4vZmFjaGF1ZnNpY2h0JywKICAgICAgICByZW5k ZXJuOiAgICAgICAgIGZhY2hhdWZzaWNodFJlbmRlcm4sCiAgICAgICAgLy8gRmFjaGF1ZnNpY2h0 LVBsYW4tTW9kYWwgbnV0enQgZWluZW4gSW5mby1Ub2FzdCBhbHMgU3BlaWNoZXItCiAgICAgICAg Ly8gSGlud2VpcyB1bmQgbGFlc3N0IGRhcyBEaXJ0eS1GbGFnIGluIFJ1aGUgKGtlaW4gUmVzZXQg aW4KICAgICAgICAvLyBmYWNoYXVmc2ljaHRSZW5kZXJuKS4KICAgICAgICBtYXJrRGlydHk6ICAg ICAgIGZ1bmN0aW9uKCkge30KICAgIH07Cn0KZnVuY3Rpb24gcm9sbGVNb2RhbEN0eCh0eXApIHsK ICAgIHJldHVybiB7CiAgICAgICAgZ2V0TGlzdGU6ICAgICAgICBmdW5jdGlvbigpIHsgcmV0dXJu IFouYWRtaW5bdHlwXSB8fCBbXTsgfSwKICAgICAgICBzZXRMaXN0ZTogICAgICAgIGZ1bmN0aW9u KGQpIHsgWi5hZG1pblt0eXBdID0gZDsgfSwKICAgICAgICBhdXNUYWJlbGxlTGVzZW46IGZ1bmN0 aW9uKCkgeyByZXR1cm4gcm9sbGVuQXVzVGFiZWxsZUxlc2VuKHR5cCwgZmFsc2UpOyB9LAogICAg ICAgIGVuZHBvaW50OiAgICAgICAgKFJPTExFTl9UWVBFTlt0eXBdIHx8IHt9KS5lbmRwb2ludCwK ICAgICAgICByZW5kZXJuOiAgICAgICAgIGZ1bmN0aW9uKCkgeyByb2xsZW5UYWJlbGxlUmVuZGVy bih0eXApOyB9LAogICAgICAgIC8vIHJvbGxlblRhYmVsbGVSZW5kZXJuIHNldHp0IERpcnR5PWZh bHNlIGFtIEVuZGUg4oCUIG5hY2ggZWluZXIKICAgICAgICAvLyBuaWNodC1wZXJzaXN0aWVydGVu IFBsYW4tQWVuZGVydW5nIG11c3MgZXMgd2llZGVyIHRydWUgc2Vpbi4KICAgICAgICBtYXJrRGly dHk6ICAgICAgIGZ1bmN0aW9uKCkgeyByb2xsZW5EaXJ0eVNldHplbih0eXAsIHRydWUpOyB9CiAg ICB9Owp9CgovLyBNb2RhbCBmdWVyIGdyYW51bGFyZSBTdWItU2ljaHRiYXJrZWl0LiBzaWNodFR5 cDogJ2FkbWluJ3wnc3RhdCcuCi8vIGN0eCBvcHRpb25hbCDigJQgRGVmYXVsdCBGYWNoYXVmc2lj aHQ7IFJvbGxlbiByZWljaGVuIHJvbGxlTW9kYWxDdHgodHlwKS4KZXhwb3J0IGZ1bmN0aW9uIGZh Y2hhdWZzaWNodFN1YlNpY2h0TW9kYWwoaWR4LCBzaWNodFR5cCwgY3R4KSB7CiAgICBpZiAoIVou cmVjaHRlLmlzdFN1cGVyVXNlcikgcmV0dXJuOwogICAgY3R4ID0gY3R4IHx8IGZhY2hhdWZzaWNo dE1vZGFsQ3R4KCk7CiAgICB2YXIgdHlwID0gc2ljaHRUeXA7CiAgICAvLyBLb21wbGV0dGUgVGFi ZWxsZSBpbiBkZW4gU3RhdGUgc3BpZWdlbG4gKGFsbGUgWmVpbGVuLCBuaWNodCBudXIgZGllCiAg ICAvLyBlZGl0aWVydGUpIOKAlCBzb25zdCBnZWhlbiBwYXJhbGxlbGUgVGFiZWxsZW4tRWRpdHMg YmVpbSBNb2RhbC1TcHJ1bmcKICAgIC8vIHZlcmxvcmVuLgogICAgY3R4LnNldExpc3RlKGN0eC5h dXNUYWJlbGxlTGVzZW4oKSk7CiAgICB2YXIgbGlzdGUgPSBjdHguZ2V0TGlzdGUoKTsKICAgIGlm ICghbGlzdGVbaWR4XSkgcmV0dXJuOwogICAgdmFyIGZhID0gbGlzdGVbaWR4XTsKICAgIHZhciBm ZWxkID0gdHlwID09PSAnYWRtaW4nID8gJ2FkbWluU2ljaHRiYXJrZWl0JyA6ICdzdGF0aXN0aWtT aWNodGJhcmtlaXQnOwogICAgdmFyIHN1Ykxpc3RlID0gdHlwID09PSAnYWRtaW4nID8gRkFDSEFV RlNJQ0hUX0FETUlOX1NVQlRBQlMgOiBGQUNIQVVGU0lDSFRfU1RBVF9CRVJFSUNIRTsKICAgIHZh ciB0aXRlbCA9IHR5cCA9PT0gJ2FkbWluJyA/ICdBZG1pbi1TaWNodCcgOiAnU3RhdGlzdGlrLVNp Y2h0JzsKICAgIHZhciBiZXNjaHIgPSB0eXAgPT09ICdhZG1pbicKICAgICAgICA/ICdXZWxjaGUg U3ViLVRhYnMgZGVzIEFkbWluLUJlcmVpY2hzIGRhcmYgZGllc2UgRmFjaGF1ZnNpY2h0IHNlaGVu PyBTaWNoZXJoZWl0c2tyaXRpc2NoZSBUYWJzIChTdXBlclVzZXIsIEZhY2hhdWZzaWNodCwgU2lj aHRiYXJrZWl0LCBGdW5rdGlvbmVuLCBUZXN0ZGF0ZW4pIHNpbmQgZ3J1bmRzw6R0emxpY2ggU1Ut b25seSB1bmQgbmljaHQgZnJlaWdlYmJhci4nCiAgICAgICAgOiAnV2VsY2hlIEJlcmVpY2hlIGRl cyBTdGF0aXN0aWstVGFicyBkYXJmIGRpZXNlIEZhY2hhdWZzaWNodCBzZWhlbj8nOwogICAgdmFy IGFrdHVlbGxlTWFwID0gZmFbZmVsZF0gfHwge307CgogICAgdmFyIGxpc3RlX2h0bWwgPSBzdWJM aXN0ZS5tYXAoZnVuY3Rpb24oaXRlbSkgewogICAgICAgIHZhciBzaWNodGJhciA9IGFrdHVlbGxl TWFwW2l0ZW0ua2V5XSAhPT0gZmFsc2U7ICAvLyBEZWZhdWx0OiBzaWNodGJhcgogICAgICAgIHJl dHVybiAnPGxhYmVsIGNsYXNzPSJmYS1zdWJzaWNodC16ZWlsZSI+JyArCiAgICAgICAgICAgICc8 aW5wdXQgdHlwZT0iY2hlY2tib3giIGNsYXNzPSJmYS1zdWJzaWNodC1jaGsiIGRhdGEta2V5PSIn ICsgZXNjYXBlQXR0cihpdGVtLmtleSkgKyAnIicgKyAoc2ljaHRiYXIgPyAnIGNoZWNrZWQnIDog JycpICsgJz4nICsKICAgICAgICAgICAgJzxzcGFuPicgKyBlc2NhcGVIVE1MKGl0ZW0ubGFiZWwp ICsgJzwvc3Bhbj4nICsKICAgICAgICAnPC9sYWJlbD4nOwogICAgfSkuam9pbignJyk7CgogICAg dmFyIGtvZXJwZXIgPQogICAgICAgICc8cCBjbGFzcz0iZXZtLWJlc2NocmVpYnVuZyI+JyArIGVz Y2FwZUhUTUwoYmVzY2hyKSArICc8L3A+JyArCiAgICAgICAgJzxkaXYgY2xhc3M9ImZhLXN1YnNp Y2h0LWFrdGlvbmVuIj4nICsKICAgICAgICAgICAgJzxidXR0b24gY2xhc3M9ImJ0biBidG4ta2xl aW4iIHR5cGU9ImJ1dHRvbiIgaWQ9ImZhLXN1YnNpY2h0LWFsbGUiPkFsbGUgYWt0aXZpZXJlbjwv YnV0dG9uPicgKwogICAgICAgICAgICAnPGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1rbGVpbiIgdHlw ZT0iYnV0dG9uIiBpZD0iZmEtc3Vic2ljaHQta2VpbmUiPkFsbGUgZGVha3RpdmllcmVuPC9idXR0 b24+JyArCiAgICAgICAgICAgICc8YnV0dG9uIGNsYXNzPSJidG4gYnRuLWtsZWluIiB0eXBlPSJi dXR0b24iIGlkPSJmYS1zdWJzaWNodC1kZWZhdWx0Ij5BdWYgU3RhbmRhcmQgenVyw7xja3NldHpl bjwvYnV0dG9uPicgKwogICAgICAgICc8L2Rpdj4nICsKICAgICAgICAnPGRpdiBjbGFzcz0iZmEt c3Vic2ljaHQtbGlzdGUiPicgKyBsaXN0ZV9odG1sICsgJzwvZGl2Pic7CgogICAgdmFyIGZ1c3Mg PSAnPGJ1dHRvbiBjbGFzcz0iYnRuIiBpZD0iZmEtc3ViLWFiYnIiIHR5cGU9ImJ1dHRvbiI+QWJi cmVjaGVuPC9idXR0b24+JyArCiAgICAgICAgICAgICAgICc8YnV0dG9uIGNsYXNzPSJidG4gYnRu LXByaW1hZXIiIGlkPSJkbGctc3BlaWNoZXJuIiB0eXBlPSJidXR0b24iPsOcYmVybmVobWVuPC9i dXR0b24+JzsKCiAgICBtb2RhbFplaWdlbih0aXRlbCArICc6ICcgKyAoZmEubmFtZSB8fCAnKG9o bmUgTmFtZSknKSwga29lcnBlciwgZnVzcywgZnVuY3Rpb24oKSB7CiAgICAgICAgdmFyIG5ldSA9 IHt9OwogICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5mYS1zdWJzaWNodC1jaGsn KS5mb3JFYWNoKGZ1bmN0aW9uKGMpIHsKICAgICAgICAgICAgdmFyIGsgPSBjLmdldEF0dHJpYnV0 ZSgnZGF0YS1rZXknKTsKICAgICAgICAgICAgaWYgKCFjLmNoZWNrZWQpIG5ldVtrXSA9IGZhbHNl OyAgLy8gTnVyIGV4cGxpeml0ZSBWZXJzdGVja2VyIHNwZWljaGVybgogICAgICAgIH0pOwogICAg ICAgIC8vIFZvcmhlciBudXIgQ2xpZW50LVN0YXRlIOKAlCBoYXQgenUgIkdhbGVja2kgc2llaHQg dHJvdHpkZW0gYWxsZXMiCiAgICAgICAgLy8gZ2VmdWVocnQsIHdlaWwgVXNlciBkYXMgc2VwYXJh dGUgIkZhY2hhdWZzaWNodCBzcGVpY2hlcm4iIHVudGVuCiAgICAgICAgLy8gdmVyZ2lzc3QuIEpl dHp0IGRpcmVrdCBhbnMgQmFja2VuZCAoa29tcGxldHRlIGZhY2hhdWZzaWNodC1MaXN0ZQogICAg ICAgIC8vIG1pdCBkZW0gZWluZW4gYWt0dWFsaXNpZXJ0ZW4gRWludHJhZykuCiAgICAgICAgZmFb ZmVsZF0gPSBuZXU7CiAgICAgICAgdmFyIGRhdGVuID0gY3R4LmF1c1RhYmVsbGVMZXNlbigpOwog ICAgICAgIGlmICghZGF0ZW5baWR4XSkgeyB0b2FzdCgnRWludHJhZyBuaWNodCBtZWhyIHZvcmhh bmRlbicsICdmZWhsZXInKTsgcmV0dXJuOyB9CiAgICAgICAgZGF0ZW5baWR4XVtmZWxkXSA9IG5l dTsKICAgICAgICBhcGlQdXQoY3R4LmVuZHBvaW50LCBkYXRlbikudGhlbihmdW5jdGlvbihyKSB7 CiAgICAgICAgICAgIGN0eC5zZXRMaXN0ZShkYXRlbik7CiAgICAgICAgICAgIG1vZGFsU2NobGll c3Nlbih0cnVlKTsKICAgICAgICAgICAgY3R4LnJlbmRlcm4oKTsKICAgICAgICAgICAgdG9hc3Qo dGl0ZWwgKyAnIGdlc3BlaWNoZXJ0JywgJ2VyZm9sZycpOwogICAgICAgICAgICBpZiAociAmJiBy Ll9icmF1Y2h0X21haWx0bykgdmVyYW50d29ydHVuZ3NNYWlsdG9GZXVlcm4oci5fYnJhdWNodF9t YWlsdG8pOwogICAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgdG9hc3Qo J0ZlaGxlcjogJyArIGUubWVzc2FnZSwgJ2ZlaGxlcicpOwogICAgICAgIH0pOwogICAgfSk7CiAg ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZmEtc3ViLWFiYnInKS5hZGRFdmVudExpc3RlbmVy KCdjbGljaycsIGZ1bmN0aW9uKCkgeyBtb2RhbFNjaGxpZXNzZW4oKTsgfSk7CiAgICBkb2N1bWVu dC5nZXRFbGVtZW50QnlJZCgnZmEtc3Vic2ljaHQtYWxsZScpLmFkZEV2ZW50TGlzdGVuZXIoJ2Ns aWNrJywgZnVuY3Rpb24oKSB7CiAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmZh LXN1YnNpY2h0LWNoaycpLmZvckVhY2goZnVuY3Rpb24oYykgeyBjLmNoZWNrZWQgPSB0cnVlOyB9 KTsKICAgICAgICBaLm1vZGFsRGlydHkgPSB0cnVlOwogICAgfSk7CiAgICBkb2N1bWVudC5nZXRF bGVtZW50QnlJZCgnZmEtc3Vic2ljaHQta2VpbmUnKS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycs IGZ1bmN0aW9uKCkgewogICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5mYS1zdWJz aWNodC1jaGsnKS5mb3JFYWNoKGZ1bmN0aW9uKGMpIHsgYy5jaGVja2VkID0gZmFsc2U7IH0pOwog ICAgICAgIFoubW9kYWxEaXJ0eSA9IHRydWU7CiAgICB9KTsKICAgIGRvY3VtZW50LmdldEVsZW1l bnRCeUlkKCdmYS1zdWJzaWNodC1kZWZhdWx0JykuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBm dW5jdGlvbigpIHsKICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuZmEtc3Vic2lj aHQtY2hrJykuZm9yRWFjaChmdW5jdGlvbihjKSB7IGMuY2hlY2tlZCA9IHRydWU7IH0pOwogICAg ICAgIFoubW9kYWxEaXJ0eSA9IHRydWU7CiAgICB9KTsKfQoKLy8gRXJ6ZXVndCBkYXMgZHluYW1p c2NoZSBMYWJlbCBmdWVyIGRlbiBQbGFudW5ncy1CdXR0b24gKEMuMTEpOgovLyAiTnVyIGVpZ2Vu ZSBaZWlsZSIgd2VubiBuaWNodHMgZ2VzZXR6dDsgIkFsbGUgRGllbnN0Z3J1cHBlbiIsICJBbGxl Ci8vIFN0YW5kb3J0ZSIsICJBbGxlIFBlcnNvbmVuIiB3ZW5uIGpld2VpbHMga29tcGxldHRlIEF1 c3dhaGw7IHNvbnN0Ci8vIEFuemFobCArIEJlcmVpY2guIE1laHJlcmUgQmVyZWljaGUgd2VyZGVu IG1pdCAiIMK3ICIgdmVyYnVuZGVuLgpleHBvcnQgZnVuY3Rpb24gZmFjaGF1ZnNpY2h0UGxhbkxh YmVsKGVkKSB7CiAgICBlZCA9IGVkIHx8IHt9OwogICAgdmFyIG5QID0gKGVkLnBlcnNvbmVuSWRz IHx8IFtdKS5sZW5ndGg7CiAgICB2YXIgbkcgPSAoZWQuZGllbnN0Z3J1cHBlbiB8fCBbXSkubGVu Z3RoOwogICAgdmFyIG5TID0gKGVkLnN0YW5kb3J0ZSB8fCBbXSkubGVuZ3RoOwogICAgaWYgKG5Q ID09PSAwICYmIG5HID09PSAwICYmIG5TID09PSAwKSByZXR1cm4gJ051ciBlaWdlbmUgWmVpbGUn OwogICAgdmFyIGdlc2FtdEcgPSAoWi5hZG1pbi5ncnVwcGVuIHx8IFtdKS5sZW5ndGg7CiAgICB2 YXIgZ2VzYW10UyA9IChaLmFkbWluLnN0YW5kb3J0ZSB8fCBbXSkuZmlsdGVyKGZ1bmN0aW9uKHgp IHsgcmV0dXJuIHgua3VlcnplbCB8fCB4Lm5hbWU7IH0pLmxlbmd0aDsKICAgIC8vIFBlcnNvbmVu LVRvdGFsID0gYWt0aXZlIG1pbnVzIDEgKGVpZ2VuZSBQZXJzb24gaXN0IGltbWVyIGltcGxpeml0 IGVybGF1YnQpCiAgICB2YXIgZ2VzYW10UCA9IChaLnBsYW51bmcucGVyc29uZW4gfHwgW10pLmZp bHRlcihmdW5jdGlvbihwKSB7IHJldHVybiBwLmFrdGl2OyB9KS5sZW5ndGggLSAxOwogICAgdmFy IHRlaWxlID0gW107CiAgICBpZiAobkcgPiAwKSB0ZWlsZS5wdXNoKG5HID09PSBnZXNhbXRHICYm IGdlc2FtdEcgPiAwID8gJ0FsbGUgRGllbnN0Z3J1cHBlbicgOiBuRyArIChuRyA9PT0gMSA/ICcg RGllbnN0Z3J1cHBlJyA6ICcgRGllbnN0Z3J1cHBlbicpKTsKICAgIGlmIChuUyA+IDApIHRlaWxl LnB1c2goblMgPT09IGdlc2FtdFMgJiYgZ2VzYW10UyA+IDAgPyAnQWxsZSBTdGFuZG9ydGUnIDog blMgKyAoblMgPT09IDEgPyAnIFN0YW5kb3J0JyA6ICcgU3RhbmRvcnRlJykpOwogICAgaWYgKG5Q ID4gMCkgdGVpbGUucHVzaChuUCA9PT0gZ2VzYW10UCAmJiBnZXNhbXRQID4gMCA/ICdBbGxlIFBl cnNvbmVuJyA6IG5QICsgKG5QID09PSAxID8gJyBQZXJzb24nIDogJyBQZXJzb25lbicpKTsKICAg IC8vIFdlbm4gYWxsZSBkcmVpICJBbGxlIC4uLiIgLT4ga29tcGFrdGVyICJEYXJmIGFsbGVzIHBs YW5lbiIKICAgIGlmICh0ZWlsZS5sZW5ndGggPT09IDMgJiYKICAgICAgICB0ZWlsZVswXS5pbmRl eE9mKCdBbGxlICcpID09PSAwICYmCiAgICAgICAgdGVpbGVbMV0uaW5kZXhPZignQWxsZSAnKSA9 PT0gMCAmJgogICAgICAgIHRlaWxlWzJdLmluZGV4T2YoJ0FsbGUgJykgPT09IDApIHsKICAgICAg ICByZXR1cm4gJ0RhcmYgYWxsZXMgcGxhbmVuJzsKICAgIH0KICAgIHJldHVybiB0ZWlsZS5qb2lu KCcgwrcgJyk7Cn0KCi8vIGZpbHRlckxlZXI6IHRydWUgPSBFaW50cmFlZ2Ugb2huZSBOYW1lIFVO RCBvaG5lIE5XLUtlbm51bmcgcmF1c3dlcmZlbi4KLy8gRGVmYXVsdCBmYWxzZSwgZGFtaXQgU3Rh dGUtVWViZXJuYWhtZW4gKExvZXNjaGVuLCBNb2RhbC1TcHJ1bmcpIGtlaW5lCi8vIGJlcmVpdHMg Z2VzcGVpY2hlcnRlbiBFaW50cmFlZ2UgbWl0IGZlaGxlbmRlciBud0tlbm51bmcgd2VnZmVnZW4u Ci8vIE51ciBkZXIgIkZhY2hhdWZzaWNodCBzcGVpY2hlcm4iLUJ1dHRvbiBydWZ0IG1pdCBmaWx0 ZXJMZWVyPXRydWUgYXVmLgpleHBvcnQgZnVuY3Rpb24gZmFjaGF1ZnNpY2h0QXVzVGFiZWxsZUxl c2VuKGZpbHRlckxlZXIpIHsKICAgIHZhciBhbHRlTGlzdGUgPSBaLmFkbWluLmZhY2hhdWZzaWNo dCB8fCBbXTsKICAgIHZhciBmZWxkZXIgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuZmFj aGF1ZnNpY2h0LWlucHV0Jyk7CiAgICB2YXIgbWFwID0ge307CiAgICBmZWxkZXIuZm9yRWFjaChm dW5jdGlvbihmKSB7CiAgICAgICAgdmFyIGlkeCA9IGYuZ2V0QXR0cmlidXRlKCdkYXRhLWlkeCcp OwogICAgICAgIHZhciBmZWxkID0gZi5nZXRBdHRyaWJ1dGUoJ2RhdGEtZmVsZCcpOwogICAgICAg IGlmICghbWFwW2lkeF0pIG1hcFtpZHhdID0ge307CiAgICAgICAgbWFwW2lkeF1bZmVsZF0gPSBm LnZhbHVlLnRyaW0oKTsKICAgIH0pOwogICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmZh Y2hhdWZzaWNodC1jaGsnKS5mb3JFYWNoKGZ1bmN0aW9uKGMpIHsKICAgICAgICB2YXIgaWR4ID0g Yy5nZXRBdHRyaWJ1dGUoJ2RhdGEtaWR4Jyk7CiAgICAgICAgdmFyIGZlbGQgPSBjLmdldEF0dHJp YnV0ZSgnZGF0YS1mZWxkJyk7CiAgICAgICAgaWYgKCFtYXBbaWR4XSkgbWFwW2lkeF0gPSB7fTsK ICAgICAgICBpZiAoIW1hcFtpZHhdLnNlaGVuKSBtYXBbaWR4XS5zZWhlbiA9IHt9OwogICAgICAg IG1hcFtpZHhdLnNlaGVuW2ZlbGRdID0gYy5jaGVja2VkOwogICAgfSk7CiAgICBkb2N1bWVudC5x dWVyeVNlbGVjdG9yQWxsKCcuZmFjaGF1ZnNpY2h0LWdlc2FtdC1jaGsnKS5mb3JFYWNoKGZ1bmN0 aW9uKGMpIHsKICAgICAgICB2YXIgaWR4ID0gYy5nZXRBdHRyaWJ1dGUoJ2RhdGEtaWR4Jyk7CiAg ICAgICAgaWYgKCFtYXBbaWR4XSkgbWFwW2lkeF0gPSB7fTsKICAgICAgICBtYXBbaWR4XS5nZXNh bXR2ZXJhbnR3b3J0bGljaCA9IGMuY2hlY2tlZDsKICAgIH0pOwogICAgdmFyIGVyZ2VibmlzID0g W107CiAgICBPYmplY3Qua2V5cyhtYXApLnNvcnQoZnVuY3Rpb24oYSwgYikgeyByZXR1cm4gcGFy c2VJbnQoYSkgLSBwYXJzZUludChiKTsgfSkuZm9yRWFjaChmdW5jdGlvbihrKSB7CiAgICAgICAg dmFyIGFsdCA9IGFsdGVMaXN0ZVtwYXJzZUludChrKV0gfHwge307CiAgICAgICAgdmFyIGUgPSBt YXBba107CiAgICAgICAgLy8gTnVyIHdlbm4gZXhwbGl6aXQgZmlsdGVyTGVlcj10cnVlIGdlc2V0 enQgaXN0OiBFaW50cmFlZ2UgZ2FuegogICAgICAgIC8vIG9obmUgTmFtZSBVTkQgb2huZSBOVy1L ZW5udW5nIHZlcndlcmZlbiAoPSBsZWVyZSBuZXUtYW5nZWxlZ3RlCiAgICAgICAgLy8gUmVpaGVu KS4gQW5zb25zdGVuIElNTUVSIGR1cmNocmVpY2hlbiwgZGFtaXQgTG9lc2NoLUFrdGlvbmVuCiAg ICAgICAgLy8ga2VpbmUgYmVzdGVoZW5kZW4gRWludHJhZWdlIG1pdHJlaXNzZW4uCiAgICAgICAg aWYgKGZpbHRlckxlZXIgJiYgIWUubmFtZSAmJiAhZS5ud0tlbm51bmcpIHJldHVybjsKICAgICAg ICAvLyBHcmFudWxhcmUgU3ViLVNpY2h0YmFya2VpdCAoU3BlYyBGLjIpOiB3aXJkIGltIERldGFp bC1Nb2RhbCBnZXBmbGVndCwKICAgICAgICAvLyBoaWVyIG51ciBkdXJjaGdlcmVpY2h0LiBGYWxs cyBuaWNodCB2b3JoYW5kZW4gLT4gbGVlcmUgTWFwICg9IGFsbGVzIGVybGF1YnQpLgogICAgICAg IGVyZ2VibmlzLnB1c2goewogICAgICAgICAgICBuYW1lOiAgICAgIGUubmFtZSwKICAgICAgICAg ICAgbndLZW5udW5nOiBlLm53S2VubnVuZywKICAgICAgICAgICAgc2VoZW46IHsKICAgICAgICAg ICAgICAgIGFkbWluaXN0cmF0aW9uOiAhIShlLnNlaGVuICYmIGUuc2VoZW4uYWRtaW5pc3RyYXRp b24pLAogICAgICAgICAgICAgICAgc3RhdGlzdGlrOiAgICAgICEhKGUuc2VoZW4gJiYgZS5zZWhl bi5zdGF0aXN0aWspLAogICAgICAgICAgICAgICAgbG9nYnVjaDogICAgICAgICEhKGUuc2VoZW4g JiYgZS5zZWhlbi5sb2didWNoKSwKICAgICAgICAgICAgICAgIGJhY2t1cHM6ICAgICAgICAhIShl LnNlaGVuICYmIGUuc2VoZW4uYmFja3VwcykKICAgICAgICAgICAgfSwKICAgICAgICAgICAgZ2Vz YW10dmVyYW50d29ydGxpY2g6ICEhZS5nZXNhbXR2ZXJhbnR3b3J0bGljaCwKICAgICAgICAgICAg YWRtaW5TaWNodGJhcmtlaXQ6ICAgICBhbHQuYWRtaW5TaWNodGJhcmtlaXQgICAgIHx8IHt9LAog ICAgICAgICAgICBzdGF0aXN0aWtTaWNodGJhcmtlaXQ6IGFsdC5zdGF0aXN0aWtTaWNodGJhcmtl aXQgfHwge30sCiAgICAgICAgICAgIGVkaXRpZXJlbjogYWx0LmVkaXRpZXJlbiB8fCB7IHBlcnNv bmVuSWRzOiBbXSwgZGllbnN0Z3J1cHBlbjogW10sIHN0YW5kb3J0ZTogW10gfQogICAgICAgIH0p OwogICAgfSk7CiAgICByZXR1cm4gZXJnZWJuaXM7Cn0KCi8vID09PT09IEdlbmVyaXNjaGUgUm9s bGVuLVZlcndhbHR1bmc6IERpcmVrdGlvbnNsZWl0dW5nICsgRnVlaHJ1bmdzc3RlbGxlID09PT09 Ci8vCi8vIFNjaGVtYS1pZGVudGlzY2ggenVyIEZhY2hhdWZzaWNodCwgYWJlciB6d2VpIHdlc2Vu dGxpY2hlIFVYLVVudGVyLQovLyBzY2hpZWRlOgovLyAgIC0gUGVyc29uZW4tU2VsZWN0b3IgKERy b3Bkb3duIGRlciBha3RpdmVuIFBlcnNvbmVuKSBzdGF0dCBmcmVpZXIKLy8gICAgIG5hbWUvbndL ZW5udW5nLUVpbmdhYmUg4oCUIG5hbWUgKyBud0tlbm51bmcgd2VyZGVuIGF1dG9tYXRpc2NoIGF1 cwovLyAgICAgZGVyIGdld2FlaGx0ZW4gUGVyc29uYWx2ZXJ3YWx0dW5ncy1QZXJzb24gdWViZXJu b21tZW4uCi8vICAgLSBLZWluZSAiR2VzYW10dmVyYW50d29ydGxpY2giLVNwYWx0ZSwga2VpbiBU ZXN0ZW4tQnV0dG9uIChkaWUKLy8gICAgIGJlaWRlbiBuZXVlbiBSb2xsZW4gc2luZCBrZWluZSBW ZXJ0cmV0dW5ncy1Sb2xsZW4gZnVlciBER0wtCi8vICAgICBWZXJhbnR3b3J0dW5nOyBkYXMgYmxl aWJ0IGRlciBGYWNoYXVmc2ljaHQgdm9yYmVoYWx0ZW4pLgovLwovLyBTdWItU2ljaHQtQnV0dG9u cyArIFBsYW51bmdzLVJlY2h0ZSB0ZWlsZW4gc2ljaCBNb2RhbGUgdW5kIExvZ2lrIG1pdAovLyBk ZXIgRmFjaGF1ZnNpY2h0IChTcGVjIEYuMikuIEJlaW0gTGVzZW4gYXVzIGRlbiBNb2RhbGVuIHNj aHJlaWJ0IGRlcgovLyBnZW5lcmlzY2hlIFBmYWQgYXVmIFouYWRtaW5bdHlwXSAodHlwID0gJ2Rp cmVrdGlvbnNsZWl0dW5nJyBvZGVyCi8vICdmdWVocnVuZ3NzdGVsbGUnKS4KCmV4cG9ydCB2YXIg Uk9MTEVOX1RZUEVOID0gewogICAgZGlyZWt0aW9uc2xlaXR1bmc6IHsgbGFiZWw6ICdEaXJla3Rp b25zbGVpdHVuZycsIGVuZHBvaW50OiAnL2FwaS9hZG1pbi9kaXJla3Rpb25zbGVpdHVuZycgfSwK ICAgIGZ1ZWhydW5nc3N0ZWxsZTogICB7IGxhYmVsOiAnRsO8aHJ1bmdzc3RlbGxlJywgICAgZW5k cG9pbnQ6ICcvYXBpL2FkbWluL2Z1ZWhydW5nc3N0ZWxsZScgICB9Cn07CgpmdW5jdGlvbiByb2xs ZVBlcnNvbk9wdGlvbnNIdG1sKGFrdHVlbGxlS2VubnVuZykgewogICAgdmFyIHBlcnNvbmVuID0g KFoucGxhbnVuZy5wZXJzb25lbiB8fCBbXSkKICAgICAgICAuZmlsdGVyKGZ1bmN0aW9uKHApIHsg cmV0dXJuIHAuYWt0aXYgJiYgIXAuZ2Vsb2VzY2h0QW07IH0pCiAgICAgICAgLnNsaWNlKCkKICAg ICAgICAuc29ydChmdW5jdGlvbihhLCBiKSB7CiAgICAgICAgICAgIHJldHVybiAoKGEubmFtZSB8 fCAnJykgKyAnICcgKyAoYS52b3JuYW1lIHx8ICcnKSkubG9jYWxlQ29tcGFyZSgoKGIubmFtZSB8 fCAnJykgKyAnICcgKyAoYi52b3JuYW1lIHx8ICcnKSksICdkZScpOwogICAgICAgIH0pOwogICAg dmFyIGh0bWwgPSAnPG9wdGlvbiB2YWx1ZT0iIj7igJQgUGVyc29uIHfDpGhsZW4g4oCUPC9vcHRp b24+JzsKICAgIHZhciBtaXRLZW5udW5nID0gW107CiAgICB2YXIgb2huZUtlbm51bmcgPSBbXTsK ICAgIHBlcnNvbmVuLmZvckVhY2goZnVuY3Rpb24ocCkgewogICAgICAgIGlmIChwLm53S2VubnVu ZyAmJiBwLm53S2VubnVuZy50cmltKCkpIG1pdEtlbm51bmcucHVzaChwKTsKICAgICAgICBlbHNl IG9obmVLZW5udW5nLnB1c2gocCk7CiAgICB9KTsKICAgIG1pdEtlbm51bmcuZm9yRWFjaChmdW5j dGlvbihwKSB7CiAgICAgICAgdmFyIGxhYmVsID0gKHAuZGllbnN0Z3JhZCA/IHAuZGllbnN0Z3Jh ZCArICcgJyA6ICcnKSArCiAgICAgICAgICAgICAgICAgICAgKHAudm9ybmFtZSA/IHAudm9ybmFt ZSArICcgJyA6ICcnKSArIChwLm5hbWUgfHwgJycpICsKICAgICAgICAgICAgICAgICAgICAocC5n cnVwcGUgPyAnICgnICsgcC5ncnVwcGUgKyAnKScgOiAnJyk7CiAgICAgICAgdmFyIGtlbm51bmcg PSBwLm53S2VubnVuZzsKICAgICAgICB2YXIgc2VsID0gKGtlbm51bmcudG9Mb3dlckNhc2UoKSA9 PT0gKGFrdHVlbGxlS2VubnVuZyB8fCAnJykudG9Mb3dlckNhc2UoKSkgPyAnIHNlbGVjdGVkJyA6 ICcnOwogICAgICAgIGh0bWwgKz0gJzxvcHRpb24gdmFsdWU9IicgKyBlc2NhcGVBdHRyKGtlbm51 bmcpICsgJyIgZGF0YS1uYW1lPSInICsgZXNjYXBlQXR0cigoKHAudm9ybmFtZSA/IHAudm9ybmFt ZSArICcgJyA6ICcnKSArIChwLm5hbWUgfHwgJycpKS50cmltKCkpICsgJyInICsgc2VsICsgJz4n ICsgZXNjYXBlSFRNTChsYWJlbCkgKyAnPC9vcHRpb24+JzsKICAgIH0pOwogICAgLy8gUGVyc29u ZW4gb2huZSBOVy1LZW5udW5nIGRpc2FibGVkLCBtaXQgR3J1cHBlbi1MYWJlbCB1bmQgSGlud2Vp cy4gRWluZQogICAgLy8gUm9sbGUgb2huZSBOVy1LZW5udW5nIGthbm4gYmVpbSBMb2dpbiBuaWNo dCB6dWdlb3JkbmV0IHdlcmRlbiDigJQgZGFoZXIKICAgIC8vIHNwZXJyZW4gd2lyIGRpZSBBdXN3 YWhsIHVuZCB6ZWlnZW4gZGVuIEdydW5kIGltIExpc3Rlbi1UZXh0IGFuLgogICAgaWYgKG9obmVL ZW5udW5nLmxlbmd0aCkgewogICAgICAgIGh0bWwgKz0gJzxvcHRncm91cCBsYWJlbD0i4oCUIGtl aW5lIE5XLUtlbm51bmcgaW4gUGVyc29uYWx2ZXJ3YWx0dW5nIGdlcGZsZWd0IOKAlCI+JzsKICAg ICAgICBvaG5lS2VubnVuZy5mb3JFYWNoKGZ1bmN0aW9uKHApIHsKICAgICAgICAgICAgdmFyIGxh YmVsID0gKHAuZGllbnN0Z3JhZCA/IHAuZGllbnN0Z3JhZCArICcgJyA6ICcnKSArCiAgICAgICAg ICAgICAgICAgICAgICAgIChwLnZvcm5hbWUgPyBwLnZvcm5hbWUgKyAnICcgOiAnJykgKyAocC5u YW1lIHx8ICcnKSArCiAgICAgICAgICAgICAgICAgICAgICAgIChwLmdydXBwZSA/ICcgKCcgKyBw LmdydXBwZSArICcpJyA6ICcnKSArICcg4oCUIE5XLUtlbm51bmcgZmVobHQnOwogICAgICAgICAg ICBodG1sICs9ICc8b3B0aW9uIHZhbHVlPSIiIGRpc2FibGVkPicgKyBlc2NhcGVIVE1MKGxhYmVs KSArICc8L29wdGlvbj4nOwogICAgICAgIH0pOwogICAgICAgIGh0bWwgKz0gJzwvb3B0Z3JvdXA+ JzsKICAgIH0KICAgIHJldHVybiBodG1sOwp9CgpleHBvcnQgZnVuY3Rpb24gcm9sbGVuVGFiZWxs ZVJlbmRlcm4odHlwKSB7CiAgICB2YXIgdGJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0 eXAgKyAnLXRib2R5Jyk7CiAgICB2YXIgYnRuTmV1ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo J2J0bi0nICsgdHlwICsgJy1uZXUnKTsKICAgIHZhciBidG5TcGVpY2hlcm4gPSBkb2N1bWVudC5n ZXRFbGVtZW50QnlJZCgnYnRuLScgKyB0eXAgKyAnLXNwZWljaGVybicpOwogICAgdmFyIGtlaW5S ZWNodCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHR5cCArICcta2Vpbi1yZWNodCcpOwogICAg aWYgKCF0Ym9keSkgcmV0dXJuOwoKICAgIGlmICghWi5yZWNodGUuaXN0U3VwZXJVc2VyKSB7CiAg ICAgICAgaWYgKGJ0bk5ldSkgYnRuTmV1LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CiAgICAgICAg aWYgKGJ0blNwZWljaGVybikgYnRuU3BlaWNoZXJuLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CiAg ICAgICAgaWYgKGtlaW5SZWNodCkga2VpblJlY2h0LmNsYXNzTGlzdC5yZW1vdmUoJ3ZlcnN0ZWNr dCcpOwogICAgICAgIHRib2R5LmlubmVySFRNTCA9ICcnOwogICAgICAgIHJldHVybjsKICAgIH0K ICAgIGlmIChidG5OZXUpIGJ0bk5ldS5zdHlsZS5kaXNwbGF5ID0gJyc7CiAgICBpZiAoYnRuU3Bl aWNoZXJuKSBidG5TcGVpY2hlcm4uc3R5bGUuZGlzcGxheSA9ICcnOwogICAgaWYgKGtlaW5SZWNo dCkga2VpblJlY2h0LmNsYXNzTGlzdC5hZGQoJ3ZlcnN0ZWNrdCcpOwoKICAgIHZhciBsaXN0ZSA9 IFouYWRtaW5bdHlwXSB8fCBbXTsKICAgIGZ1bmN0aW9uIGNoayhpZHgsIGZlbGQsIGNoZWNrZWQp IHsKICAgICAgICByZXR1cm4gJzxpbnB1dCB0eXBlPSJjaGVja2JveCIgY2xhc3M9InJvbGxlLWNo ayIgZGF0YS10eXA9IicgKyB0eXAgKyAnIiBkYXRhLWlkeD0iJyArIGlkeCArICciIGRhdGEtZmVs ZD0iJyArIGZlbGQgKyAnIicgKyAoY2hlY2tlZCA/ICcgY2hlY2tlZCcgOiAnJykgKyAnPic7CiAg ICB9CiAgICB2YXIgaHRtbCA9ICcnOwogICAgbGlzdGUuZm9yRWFjaChmdW5jdGlvbihlLCBpKSB7 CiAgICAgICAgdmFyIHMgPSBlLnNlaGVuIHx8IHt9OwogICAgICAgIHZhciBlZCA9IGUuZWRpdGll cmVuIHx8IHt9OwogICAgICAgIHZhciBwbGFuTGFiZWwgPSBmYWNoYXVmc2ljaHRQbGFuTGFiZWwo ZWQpOwogICAgICAgIHZhciBhZG1pbkxhYmVsID0gZmFjaGF1ZnNpY2h0U3ViU2ljaHRMYWJlbCgn YWRtaW4nLCBlLmFkbWluU2ljaHRiYXJrZWl0LCBzLmFkbWluaXN0cmF0aW9uKTsKICAgICAgICB2 YXIgc3RhdExhYmVsICA9IGZhY2hhdWZzaWNodFN1YlNpY2h0TGFiZWwoJ3N0YXQnLCAgZS5zdGF0 aXN0aWtTaWNodGJhcmtlaXQsIHMuc3RhdGlzdGlrKTsKCiAgICAgICAgaHRtbCArPSAnPHRyPicg KwogICAgICAgICAgICAnPHRkPjxzZWxlY3QgY2xhc3M9InJvbGxlLWlucHV0IHJvbGxlLXBlcnNv bi1zZWxlY3QiIGRhdGEtdHlwPSInICsgdHlwICsgJyIgZGF0YS1pZHg9IicgKyBpICsgJyIgZGF0 YS1mZWxkPSJud0tlbm51bmciIHN0eWxlPSJ3aWR0aDoxMDAlIj4nICsKICAgICAgICAgICAgICAg IHJvbGxlUGVyc29uT3B0aW9uc0h0bWwoZS5ud0tlbm51bmcgfHwgJycpICsKICAgICAgICAgICAg Jzwvc2VsZWN0PjwvdGQ+JyArCiAgICAgICAgICAgICc8dGQgc3R5bGU9InRleHQtYWxpZ246Y2Vu dGVyIj4nICsgY2hrKGksICdhZG1pbmlzdHJhdGlvbicsICEhcy5hZG1pbmlzdHJhdGlvbikgKyAn PC90ZD4nICsKICAgICAgICAgICAgJzx0ZCBzdHlsZT0idGV4dC1hbGlnbjpjZW50ZXIiPicgKyBj aGsoaSwgJ3N0YXRpc3RpaycsICAgICAgISFzLnN0YXRpc3RpaykgKyAnPC90ZD4nICsKICAgICAg ICAgICAgJzx0ZCBzdHlsZT0idGV4dC1hbGlnbjpjZW50ZXIiPicgKyBjaGsoaSwgJ2xvZ2J1Y2gn LCAgICAgICAgISFzLmxvZ2J1Y2gpICsgJzwvdGQ+JyArCiAgICAgICAgICAgICc8dGQgc3R5bGU9 InRleHQtYWxpZ246Y2VudGVyIj4nICsgY2hrKGksICdiYWNrdXBzJywgICAgICAgICEhcy5iYWNr dXBzKSArICc8L3RkPicgKwogICAgICAgICAgICAnPHRkPicgKwogICAgICAgICAgICAgICAgJzxi dXR0b24gY2xhc3M9ImJ0biBidG4tc2VrIGJ0bi1rbGVpbiByb2xsZS1zdWJzaWNodC1idG4iIGRh dGEtYWt0aW9uPSJyb2xsZS1zdWJzaWNodCIgZGF0YS10eXA9IicgKyB0eXAgKyAnIiBkYXRhLWlk eD0iJyArIGkgKyAnIicgKyAocy5hZG1pbmlzdHJhdGlvbiA/ICcnIDogJyBkaXNhYmxlZCcpICsg JyBzdHlsZT0id2lkdGg6MTAwJTt0ZXh0LWFsaWduOmxlZnQiPicgKyBlc2NhcGVIVE1MKGFkbWlu TGFiZWwpICsgJzwvYnV0dG9uPicgKwogICAgICAgICAgICAgICAgJzxidXR0b24gY2xhc3M9ImJ0 biBidG4tc2VrIGJ0bi1rbGVpbiByb2xsZS1zdWJzaWNodC1idG4iIGRhdGEtYWt0aW9uPSJyb2xs ZS1zdGF0c2ljaHQiIGRhdGEtdHlwPSInICsgdHlwICsgJyIgZGF0YS1pZHg9IicgKyBpICsgJyIn ICsgKHMuc3RhdGlzdGlrID8gJycgOiAnIGRpc2FibGVkJykgKyAnIHN0eWxlPSJ3aWR0aDoxMDAl O3RleHQtYWxpZ246bGVmdDttYXJnaW4tdG9wOjNweCI+JyArIGVzY2FwZUhUTUwoc3RhdExhYmVs KSArICc8L2J1dHRvbj4nICsKICAgICAgICAgICAgJzwvdGQ+JyArCiAgICAgICAgICAgICc8dGQ+ JyArCiAgICAgICAgICAgICAgICAnPGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1zZWsgYnRuLWtsZWlu IHJvbGxlLXBsYW4tYnRuIiBkYXRhLWFrdGlvbj0icm9sbGUtZGV0YWlscyIgZGF0YS10eXA9Iicg KyB0eXAgKyAnIiBkYXRhLWlkeD0iJyArIGkgKyAnIiBzdHlsZT0id2lkdGg6MTAwJTt0ZXh0LWFs aWduOmxlZnQiPicgKwogICAgICAgICAgICAgICAgICAgIGVzY2FwZUhUTUwocGxhbkxhYmVsKSAr CiAgICAgICAgICAgICAgICAnPC9idXR0b24+JyArCiAgICAgICAgICAgICc8L3RkPicgKwogICAg ICAgICAgICAnPHRkPicgKwogICAgICAgICAgICAgICAgJzxidXR0b24gY2xhc3M9ImJ0biBidG4t Z2VmYWhyIGJ0bi1rbGVpbiBidG4tbG9lc2NoZW4iIGRhdGEtYWt0aW9uPSJyb2xsZS1sb2VzY2hl biIgZGF0YS10eXA9IicgKyB0eXAgKyAnIiBkYXRhLWlkeD0iJyArIGkgKyAnIiB0aXRsZT0iTMO2 c2NoZW4iPkzDtnNjaGVuPC9idXR0b24+JyArCiAgICAgICAgICAgICc8L3RkPicgKwogICAgICAg ICAgICAnPC90cj4nOwogICAgfSk7CiAgICB0Ym9keS5pbm5lckhUTUwgPSBodG1sOwogICAgcm9s bGVuRGlydHlTZXR6ZW4odHlwLCBmYWxzZSk7Cn0KCmV4cG9ydCBmdW5jdGlvbiByb2xsZW5EaXJ0 eVNldHplbih0eXAsIGlzdERpcnR5KSB7IGRpcnR5U2V0emVuKHR5cCwgaXN0RGlydHkpOyB9Cgov LyBCZWltIEF1c2xlc2VuOiBud0tlbm51bmcga29tbXQgYXVzIGRlbSBTZWxlY3QtV2VydCwgbmFt ZSBhdXMgZGVtCi8vIGRhdGEtbmFtZS1BdHRyaWJ1dCBkZXMgc2VsZWt0aWVydGVuIE9wdGlvbnMu CmV4cG9ydCBmdW5jdGlvbiByb2xsZW5BdXNUYWJlbGxlTGVzZW4odHlwLCBmaWx0ZXJMZWVyKSB7 CiAgICB2YXIgYWx0ZUxpc3RlID0gWi5hZG1pblt0eXBdIHx8IFtdOwogICAgdmFyIG1hcCA9IHt9 OwogICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLnJvbGxlLWlucHV0W2RhdGEtdHlwPSIn ICsgdHlwICsgJyJdJykuZm9yRWFjaChmdW5jdGlvbihmKSB7CiAgICAgICAgdmFyIGlkeCA9IGYu Z2V0QXR0cmlidXRlKCdkYXRhLWlkeCcpOwogICAgICAgIHZhciBmZWxkID0gZi5nZXRBdHRyaWJ1 dGUoJ2RhdGEtZmVsZCcpOwogICAgICAgIGlmICghbWFwW2lkeF0pIG1hcFtpZHhdID0ge307CiAg ICAgICAgdmFyIHdlcnQgPSBmLnZhbHVlLnRyaW0oKTsKICAgICAgICBtYXBbaWR4XVtmZWxkXSA9 IHdlcnQ7CiAgICAgICAgaWYgKGZlbGQgPT09ICdud0tlbm51bmcnICYmIGYudGFnTmFtZSA9PT0g J1NFTEVDVCcgJiYgZi5zZWxlY3RlZEluZGV4ID49IDApIHsKICAgICAgICAgICAgdmFyIG9wdCA9 IGYub3B0aW9uc1tmLnNlbGVjdGVkSW5kZXhdOwogICAgICAgICAgICBtYXBbaWR4XS5uYW1lID0g b3B0ID8gKG9wdC5nZXRBdHRyaWJ1dGUoJ2RhdGEtbmFtZScpIHx8ICcnKSA6ICcnOwogICAgICAg IH0KICAgIH0pOwogICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLnJvbGxlLWNoa1tkYXRh LXR5cD0iJyArIHR5cCArICciXScpLmZvckVhY2goZnVuY3Rpb24oYykgewogICAgICAgIHZhciBp ZHggPSBjLmdldEF0dHJpYnV0ZSgnZGF0YS1pZHgnKTsKICAgICAgICB2YXIgZmVsZCA9IGMuZ2V0 QXR0cmlidXRlKCdkYXRhLWZlbGQnKTsKICAgICAgICBpZiAoIW1hcFtpZHhdKSBtYXBbaWR4XSA9 IHt9OwogICAgICAgIGlmICghbWFwW2lkeF0uc2VoZW4pIG1hcFtpZHhdLnNlaGVuID0ge307CiAg ICAgICAgbWFwW2lkeF0uc2VoZW5bZmVsZF0gPSBjLmNoZWNrZWQ7CiAgICB9KTsKICAgIHZhciBl cmdlYm5pcyA9IFtdOwogICAgT2JqZWN0LmtleXMobWFwKS5zb3J0KGZ1bmN0aW9uKGEsIGIpIHsg cmV0dXJuIHBhcnNlSW50KGEpIC0gcGFyc2VJbnQoYik7IH0pLmZvckVhY2goZnVuY3Rpb24oaykg ewogICAgICAgIHZhciBhbHQgPSBhbHRlTGlzdGVbcGFyc2VJbnQoayldIHx8IHt9OwogICAgICAg IHZhciBlID0gbWFwW2tdOwogICAgICAgIGlmIChmaWx0ZXJMZWVyICYmICFlLm53S2VubnVuZykg cmV0dXJuOwogICAgICAgIGVyZ2VibmlzLnB1c2goewogICAgICAgICAgICBuYW1lOiAgICAgIGUu bmFtZSB8fCAnJywKICAgICAgICAgICAgbndLZW5udW5nOiBlLm53S2VubnVuZyB8fCAnJywKICAg ICAgICAgICAgc2VoZW46IHsKICAgICAgICAgICAgICAgIGFkbWluaXN0cmF0aW9uOiAhIShlLnNl aGVuICYmIGUuc2VoZW4uYWRtaW5pc3RyYXRpb24pLAogICAgICAgICAgICAgICAgc3RhdGlzdGlr OiAgICAgICEhKGUuc2VoZW4gJiYgZS5zZWhlbi5zdGF0aXN0aWspLAogICAgICAgICAgICAgICAg bG9nYnVjaDogICAgICAgICEhKGUuc2VoZW4gJiYgZS5zZWhlbi5sb2didWNoKSwKICAgICAgICAg ICAgICAgIGJhY2t1cHM6ICAgICAgICAhIShlLnNlaGVuICYmIGUuc2VoZW4uYmFja3VwcykKICAg ICAgICAgICAgfSwKICAgICAgICAgICAgYWRtaW5TaWNodGJhcmtlaXQ6ICAgICBhbHQuYWRtaW5T aWNodGJhcmtlaXQgICAgIHx8IHt9LAogICAgICAgICAgICBzdGF0aXN0aWtTaWNodGJhcmtlaXQ6 IGFsdC5zdGF0aXN0aWtTaWNodGJhcmtlaXQgfHwge30sCiAgICAgICAgICAgIGVkaXRpZXJlbjog YWx0LmVkaXRpZXJlbiB8fCB7IHBlcnNvbmVuSWRzOiBbXSwgZGllbnN0Z3J1cHBlbjogW10sIHN0 YW5kb3J0ZTogW10gfQogICAgICAgIH0pOwogICAgfSk7CiAgICByZXR1cm4gZXJnZWJuaXM7Cn0K CmV4cG9ydCBmdW5jdGlvbiByb2xsZW5OZXVFaW50cmFnKHR5cCkgewogICAgaWYgKCFaLnJlY2h0 ZS5pc3RTdXBlclVzZXIpIHJldHVybjsKICAgIHZhciBha3R1ZWxsID0gcm9sbGVuQXVzVGFiZWxs ZUxlc2VuKHR5cCwgZmFsc2UpOwogICAgYWt0dWVsbC5wdXNoKHsKICAgICAgICBuYW1lOiAnJywg bndLZW5udW5nOiAnJywKICAgICAgICBzZWhlbjogeyBhZG1pbmlzdHJhdGlvbjogZmFsc2UsIHN0 YXRpc3RpazogZmFsc2UsIGxvZ2J1Y2g6IGZhbHNlLCBiYWNrdXBzOiBmYWxzZSB9LAogICAgICAg IGFkbWluU2ljaHRiYXJrZWl0OiB7fSwgc3RhdGlzdGlrU2ljaHRiYXJrZWl0OiB7fSwKICAgICAg ICBlZGl0aWVyZW46IHsgcGVyc29uZW5JZHM6IFtdLCBkaWVuc3RncnVwcGVuOiBbXSwgc3RhbmRv cnRlOiBbXSB9CiAgICB9KTsKICAgIFouYWRtaW5bdHlwXSA9IGFrdHVlbGw7CiAgICByb2xsZW5U YWJlbGxlUmVuZGVybih0eXApOwogICAgcm9sbGVuRGlydHlTZXR6ZW4odHlwLCB0cnVlKTsKfQoK ZXhwb3J0IGZ1bmN0aW9uIHJvbGxlbkVpbnRyYWdMb2VzY2hlbih0eXAsIGlkeCkgewogICAgaWYg KCFaLnJlY2h0ZS5pc3RTdXBlclVzZXIpIHJldHVybjsKICAgIHZhciBha3R1ZWxsID0gcm9sbGVu QXVzVGFiZWxsZUxlc2VuKHR5cCwgZmFsc2UpOwogICAgYWt0dWVsbC5zcGxpY2UoaWR4LCAxKTsK ICAgIFouYWRtaW5bdHlwXSA9IGFrdHVlbGw7CiAgICByb2xsZW5UYWJlbGxlUmVuZGVybih0eXAp OwogICAgcm9sbGVuRGlydHlTZXR6ZW4odHlwLCB0cnVlKTsKfQoKZXhwb3J0IGZ1bmN0aW9uIHJv bGxlblNwZWljaGVybih0eXApIHsKICAgIGlmICghWi5yZWNodGUuaXN0U3VwZXJVc2VyKSByZXR1 cm4gUHJvbWlzZS5yZXNvbHZlKCk7CiAgICB2YXIgbWV0YSA9IFJPTExFTl9UWVBFTlt0eXBdOwog ICAgaWYgKCFtZXRhKSByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7CiAgICAvLyBLb21wbGV0dGUg TGlzdGUgbGVzZW4gKGF1Y2ggRWludHJhZWdlIG9obmUgS2VubnVuZyDigJQgZGllc2UgdmVybGll cmVuIHdpcgogICAgLy8gc29uc3Qgc3RpbGxzY2h3ZWlnZW5kLCB3ZW5uIHouQi4gZGVyIFVzZXIg dmVyZ2Vzc2VuIGhhdCBlaW5lIFBlcnNvbgogICAgLy8gYXVzenV3YWVobGVuKS4KICAgIHZhciBh bGxlID0gcm9sbGVuQXVzVGFiZWxsZUxlc2VuKHR5cCwgZmFsc2UpOwogICAgdmFyIGxlZXIgPSBh bGxlLmZpbHRlcihmdW5jdGlvbihlKSB7IHJldHVybiAhZS5ud0tlbm51bmc7IH0pOwogICAgaWYg KGxlZXIubGVuZ3RoID4gMCkgewogICAgICAgIHRvYXN0KG1ldGEubGFiZWwgKyAnOiAnICsgbGVl ci5sZW5ndGggKyAnIEVpbnRyYWcvRWludHLDpGdlIG9obmUgUGVyc29uZW4tQXVzd2FobCDigJQg Yml0dGUgdm9yIGRlbSBTcGVpY2hlcm4gZWluZSBQZXJzb24gd8OkaGxlbiBvZGVyIGRlbiBsZWVy ZW4gRWludHJhZyBsw7ZzY2hlbicsICd3YXJudW5nJyk7CiAgICAgICAgcmV0dXJuIFByb21pc2Uu cmVzb2x2ZSgpOwogICAgfQogICAgdmFyIGRhdGVuID0gYWxsZTsKICAgIFouYWRtaW5bdHlwXSA9 IGRhdGVuOwogICAgcmV0dXJuIGFwaVB1dChtZXRhLmVuZHBvaW50LCBkYXRlbikudGhlbihmdW5j dGlvbigpIHsKICAgICAgICB0b2FzdChtZXRhLmxhYmVsICsgJyBnZXNwZWljaGVydCAoJyArIGRh dGVuLmxlbmd0aCArICcgRWludHJhZycgKyAoZGF0ZW4ubGVuZ3RoID09PSAxID8gJycgOiAnZScp ICsgJyknLCAnZXJmb2xnJyk7CiAgICAgICAgcm9sbGVuRGlydHlTZXR6ZW4odHlwLCBmYWxzZSk7 CiAgICAgICAgcm9sbGVuVGFiZWxsZVJlbmRlcm4odHlwKTsKICAgIH0pLmNhdGNoKGZ1bmN0aW9u KGUpIHsKICAgICAgICB0b2FzdCgnRmVobGVyOiAnICsgKGUgJiYgZS5tZXNzYWdlIHx8IGUpLCAn ZmVobGVyJyk7CiAgICAgICAgdGhyb3cgZTsKICAgIH0pOwp9CgovLyBTdWItU2ljaHQtTW9kYWwg ZnVlciBkaWUgbmV1ZW4gUm9sbGVuIChEaXJla3Rpb25zbGVpdHVuZy9GdWVocnVuZ3MtCi8vIHN0 ZWxsZSkuIE51dHp0IGpldHp0IGRhcyBnZW5lcmlzY2hlIGZhY2hhdWZzaWNodFN1YlNpY2h0TW9k YWwgbWl0IGVpbmVtCi8vIFJvbGxlbi1Lb250ZXh0IOKAlCBLRUlOIHRlbXBvcmFlcmVzIFVtYmll Z2VuIHZvbiBaLmFkbWluLmZhY2hhdWZzaWNodCArCi8vIHNldFRpbWVvdXQtUnVlY2tzcGllZ2Vs dW5nIG1laHIuIERlciBmcnVlaGVyZSBTd2FwLVRyaWNrIGZldWVydGUgZGFzCi8vIFp1cnVlY2tz cGllZ2VsbiBuYWNoIDUwbXMsIGFsc28gYmV2b3IgZGVyIFVzZXIgaW0gTW9kYWwgIlNwZWljaGVy biIKLy8gZHJ1Y2t0ZSwgc29kYXNzIGRlciBNb2RhbC1TYXZlIGRpZSBlY2h0ZSBGYWNoYXVmc2lj aHQtTGlzdGUgbWl0Ci8vIFJvbGxlbi1EYXRlbiB1ZWJlcnNjaHJpZWIgKENSSVRJQ0FMIERhdGVu a29ycnVwdHVyKSBiencuIGVpbmVuCi8vIFR5cGVFcnJvciBhdXNsb2VzdGUuIEVybGVkaWd0Lgpl eHBvcnQgZnVuY3Rpb24gcm9sbGVuU3ViU2ljaHRNb2RhbCh0eXAsIGlkeCwgc2ljaHRUeXApIHsK ICAgIGlmICghWi5yZWNodGUuaXN0U3VwZXJVc2VyKSByZXR1cm47CiAgICBpZiAoIVJPTExFTl9U WVBFTlt0eXBdKSByZXR1cm47CiAgICBmYWNoYXVmc2ljaHRTdWJTaWNodE1vZGFsKGlkeCwgc2lj aHRUeXAsIHJvbGxlTW9kYWxDdHgodHlwKSk7Cn0KCi8vIFBsYW4tUmVjaHRlLU1vZGFsOiBhbmFs b2cgdWViZXIgZGVuIGdlbmVyaXNjaGVuIERldGFpbC1Nb2RhbC1QZmFkLgpleHBvcnQgZnVuY3Rp b24gcm9sbGVuUGxhblJlY2h0ZU1vZGFsKHR5cCwgaWR4KSB7CiAgICBpZiAoIVoucmVjaHRlLmlz dFN1cGVyVXNlcikgcmV0dXJuOwogICAgaWYgKCFST0xMRU5fVFlQRU5bdHlwXSkgcmV0dXJuOwog ICAgZmFjaGF1ZnNpY2h0RGV0YWlsTW9kYWwoaWR4LCByb2xsZU1vZGFsQ3R4KHR5cCkpOwp9Cgov LyBNb2RhbCBmdWVyICJOZXVlciBGYWNoYXVmc2ljaHQtRWludHJhZyIg4oCUIFVzZXItV3Vuc2No OgovLyBWYXJpYW50ZSBBOiBEcm9wZG93biBkZXIgV2FjaGxlaXR1bmdlbiAoR3J1cHBlIFdMKSBh bHMgUXVpY2stUGljawovLyBWYXJpYW50ZSBCOiBNYW51ZWxsZSBBbmxhZ2UgKFBlcnNvbiBlcnNj aGVpbnQgTklDSFQgaW4gZGVyIFBsYW51bmcsCi8vICAgICAgICAgICAgIGlzdCBudXIgRmFjaGF1 ZnNpY2h0LUVpbnRyYWcgbWl0IE5hbWUgKyBud0tlbm51bmcpCmV4cG9ydCBmdW5jdGlvbiBmYWNo YXVmc2ljaHROZXVNb2RhbCgpIHsKICAgIGlmICghWi5yZWNodGUuaXN0U3VwZXJVc2VyKSByZXR1 cm47CiAgICB2YXIgd2FjaGxlaXR1bmdlbiA9IChaLnBsYW51bmcucGVyc29uZW4gfHwgW10pLmZp bHRlcihmdW5jdGlvbihwKSB7CiAgICAgICAgcmV0dXJuIHAuYWt0aXYgJiYgcC5ncnVwcGUgPT09 ICdXTCc7CiAgICB9KS5zb3J0KGZ1bmN0aW9uKGEsIGIpIHsKICAgICAgICB2YXIgYW4gPSAoKGEu dm9ybmFtZSB8fCAnJykgKyAnICcgKyAoYS5uYW1lIHx8ICcnKSkudHJpbSgpOwogICAgICAgIHZh ciBibiA9ICgoYi52b3JuYW1lIHx8ICcnKSArICcgJyArIChiLm5hbWUgfHwgJycpKS50cmltKCk7 CiAgICAgICAgcmV0dXJuIGFuLmxvY2FsZUNvbXBhcmUoYm4sICdkZScpOwogICAgfSk7CiAgICB2 YXIgc2Nob25EcmluID0ge307CiAgICAoWi5hZG1pbi5mYWNoYXVmc2ljaHQgfHwgW10pLmZvckVh Y2goZnVuY3Rpb24oZmEpIHsKICAgICAgICBpZiAoZmEubndLZW5udW5nKSBzY2hvbkRyaW5bZmEu bndLZW5udW5nLnRvTG93ZXJDYXNlKCldID0gdHJ1ZTsKICAgIH0pOwoKICAgIHZhciBvcHRpb25l biA9IHdhY2hsZWl0dW5nZW4ubWFwKGZ1bmN0aW9uKHApIHsKICAgICAgICB2YXIgYW56ZWlnZSA9 ICgocC52b3JuYW1lID8gcC52b3JuYW1lICsgJyAnIDogJycpICsgcC5uYW1lKS50cmltKCk7CiAg ICAgICAgdmFyIG9lID0gcC5vZSA/ICcgKCcgKyBwLm9lICsgJyknIDogJyc7CiAgICAgICAgdmFy IGV4aXN0aWVydCA9IHAubndLZW5udW5nICYmIHNjaG9uRHJpbltwLm53S2VubnVuZy50b0xvd2Vy Q2FzZSgpXTsKICAgICAgICByZXR1cm4gJzxvcHRpb24gdmFsdWU9IicgKyBwLmlkICsgJyInICsg KGV4aXN0aWVydCA/ICcgZGlzYWJsZWQnIDogJycpICsgJz4nICsKICAgICAgICAgICAgICAgZXNj YXBlSFRNTChhbnplaWdlICsgb2UgKyAoZXhpc3RpZXJ0ID8gJyDigJQgYmVyZWl0cyBGYWNoYXVm c2ljaHQnIDogJycpKSArICc8L29wdGlvbj4nOwogICAgfSkuam9pbignJyk7CgogICAgdmFyIGtv ZXJwZXIgPQogICAgICAgICc8cCBjbGFzcz0iZXZtLWJlc2NocmVpYnVuZyI+V8OkaGxlIGVpbmUg YmVzdGVoZW5kZSBQZXJzb24gYXVzIGRlciA8c3Ryb25nPldhY2hsZWl0dW5nIChHcnVwcGUgV0wp PC9zdHJvbmc+IG9kZXIgbGVnZSBtYW51ZWxsIGVpbmUgbmV1ZSBGYWNoYXVmc2ljaHQgYW4uIE1h bnVlbGwgYW5nZWxlZ3RlIFBlcnNvbmVuIGVyc2NoZWluZW4gPHN0cm9uZz5uaWNodDwvc3Ryb25n PiBpbiBkZXIgUGxhbnVuZyDigJQgc2llIGV4aXN0aWVyZW4gbnVyIGFscyBGYWNoYXVmc2ljaHQt RWludHJhZy48L3A+JyArCiAgICAgICAgJzxkaXYgY2xhc3M9ImZhLW5ldS1tb2R1cy16ZWlsZSI+ JyArCiAgICAgICAgICAgICc8bGFiZWwgY2xhc3M9ImZhLW5ldS1tb2R1cy1vcHQiPjxpbnB1dCB0 eXBlPSJyYWRpbyIgbmFtZT0iZmEtbmV1LW1vZHVzIiB2YWx1ZT0iZHJvcGRvd24iJyArICh3YWNo bGVpdHVuZ2VuLmxlbmd0aCA/ICcgY2hlY2tlZCcgOiAnJykgKyAod2FjaGxlaXR1bmdlbi5sZW5n dGggPyAnJyA6ICcgZGlzYWJsZWQnKSArICc+IEF1cyBXYWNobGVpdHVuZyB3w6RobGVuPC9sYWJl bD4nICsKICAgICAgICAgICAgJzxsYWJlbCBjbGFzcz0iZmEtbmV1LW1vZHVzLW9wdCI+PGlucHV0 IHR5cGU9InJhZGlvIiBuYW1lPSJmYS1uZXUtbW9kdXMiIHZhbHVlPSJtYW51ZWxsIicgKyAod2Fj aGxlaXR1bmdlbi5sZW5ndGggPyAnJyA6ICcgY2hlY2tlZCcpICsgJz4gTWFudWVsbCBhbmxlZ2Vu IChuaWNodCBpbiBQbGFudW5nKTwvbGFiZWw+JyArCiAgICAgICAgJzwvZGl2PicgKwogICAgICAg ICc8ZGl2IGlkPSJmYS1uZXUtZHJvcGRvd24tYmVyZWljaCIgY2xhc3M9ImZhLW5ldS1iZXJlaWNo IicgKyAod2FjaGxlaXR1bmdlbi5sZW5ndGggPyAnJyA6ICcgc3R5bGU9ImRpc3BsYXk6bm9uZSIn KSArICc+JyArCiAgICAgICAgICAgICc8bGFiZWwgY2xhc3M9ImRsZy1sYWJlbCIgZm9yPSJmYS1u ZXUtcGVyc29uIj5XYWNobGVpdHVuZzwvbGFiZWw+JyArCiAgICAgICAgICAgICc8c2VsZWN0IGlk PSJmYS1uZXUtcGVyc29uIiBjbGFzcz0iZm9ybS1pbnB1dCIgc3R5bGU9IndpZHRoOjEwMCUiPicg KwogICAgICAgICAgICAgICAgKG9wdGlvbmVuIHx8ICc8b3B0aW9uIHZhbHVlPSIiPktlaW5lIGFr dGl2ZW4gV2FjaGxlaXR1bmdlbiB2b3JoYW5kZW48L29wdGlvbj4nKSArCiAgICAgICAgICAgICc8 L3NlbGVjdD4nICsKICAgICAgICAnPC9kaXY+JyArCiAgICAgICAgJzxkaXYgaWQ9ImZhLW5ldS1t YW51ZWxsLWJlcmVpY2giIGNsYXNzPSJmYS1uZXUtYmVyZWljaCInICsgKHdhY2hsZWl0dW5nZW4u bGVuZ3RoID8gJyBzdHlsZT0iZGlzcGxheTpub25lIicgOiAnJykgKyAnPicgKwogICAgICAgICAg ICAnPGRpdiBjbGFzcz0iZmEtbmV1LWdyaWQiPicgKwogICAgICAgICAgICAgICAgJzxkaXY+PGxh YmVsIGNsYXNzPSJkbGctbGFiZWwiIGZvcj0iZmEtbmV1LXZvcm5hbWUiPlZvcm5hbWU8L2xhYmVs PjxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0iZmEtbmV1LXZvcm5hbWUiIGNsYXNzPSJmb3JtLWlucHV0 Ij48L2Rpdj4nICsKICAgICAgICAgICAgICAgICc8ZGl2PjxsYWJlbCBjbGFzcz0iZGxnLWxhYmVs IiBmb3I9ImZhLW5ldS1uYW1lIj5OYWNobmFtZSAqPC9sYWJlbD48aW5wdXQgdHlwZT0idGV4dCIg aWQ9ImZhLW5ldS1uYW1lIiBjbGFzcz0iZm9ybS1pbnB1dCI+PC9kaXY+JyArCiAgICAgICAgICAg ICAgICAnPGRpdiBzdHlsZT0iZ3JpZC1jb2x1bW46MS8tMSI+PGxhYmVsIGNsYXNzPSJkbGctbGFi ZWwiIGZvcj0iZmEtbmV1LW53ayI+TlctS2VubnVuZyAqPC9sYWJlbD48aW5wdXQgdHlwZT0idGV4 dCIgaWQ9ImZhLW5ldS1ud2siIGNsYXNzPSJmb3JtLWlucHV0IiBwbGFjZWhvbGRlcj0iRE9NQUlO XFx1c2VyIG9kZXIgTlcwNTM2MDkiPjwvZGl2PicgKwogICAgICAgICAgICAnPC9kaXY+JyArCiAg ICAgICAgICAgICc8c21hbGwgY2xhc3M9ImV2bS1oaW53ZWlzIj5EaWVzZSBQZXJzb24gdGF1Y2h0 IDxzdHJvbmc+bmljaHQ8L3N0cm9uZz4gaW4gZGVyIFBsYW51bmdzLVRhYmVsbGUgYXVmIOKAlCBz aWUgaXN0IG51ciBhbHMgRmFjaGF1ZnNpY2h0ICh1bmQgZ2dmLiBTdXBlclVzZXIpIGtvbmZpZ3Vy aWVyYmFyLiBOVy1LZW5udW5nIGlzdCBQZmxpY2h0LCBzb25zdCBrYW5uIHNpY2ggZGllIFBlcnNv biBuaWNodCBhdXN3ZWlzZW4uPC9zbWFsbD4nICsKICAgICAgICAnPC9kaXY+JzsKCiAgICB2YXIg ZnVzcyA9ICc8YnV0dG9uIGNsYXNzPSJidG4iIGlkPSJmYS1uZXUtYWJiciIgdHlwZT0iYnV0dG9u Ij5BYmJyZWNoZW48L2J1dHRvbj4nICsKICAgICAgICAgICAgICAgJzxidXR0b24gY2xhc3M9ImJ0 biBidG4tcHJpbWFlciIgaWQ9ImRsZy1zcGVpY2hlcm4iIHR5cGU9ImJ1dHRvbiI+w5xiZXJuZWht ZW48L2J1dHRvbj4nOwoKICAgIG1vZGFsWmVpZ2VuKCdOZXVlciBGYWNoYXVmc2ljaHQtRWludHJh ZycsIGtvZXJwZXIsIGZ1c3MsIGZ1bmN0aW9uKCkgewogICAgICAgIHZhciBtb2R1cyA9IGRvY3Vt ZW50LnF1ZXJ5U2VsZWN0b3IoJ2lucHV0W25hbWU9ImZhLW5ldS1tb2R1cyJdOmNoZWNrZWQnKTsK ICAgICAgICBpZiAoIW1vZHVzKSByZXR1cm47CiAgICAgICAgdmFyIG5ldSA9IG51bGw7CiAgICAg ICAgaWYgKG1vZHVzLnZhbHVlID09PSAnZHJvcGRvd24nKSB7CiAgICAgICAgICAgIHZhciBwaWQg PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZmEtbmV1LXBlcnNvbicpLnZhbHVlOwogICAgICAg ICAgICBpZiAoIXBpZCkgeyB0b2FzdCgnQml0dGUgZWluZSBXYWNobGVpdHVuZyB3w6RobGVuJywg J3dhcm51bmcnKTsgcmV0dXJuOyB9CiAgICAgICAgICAgIHZhciBwID0gKFoucGxhbnVuZy5wZXJz b25lbiB8fCBbXSkuZmluZChmdW5jdGlvbih4KSB7IHJldHVybiBTdHJpbmcoeC5pZCkgPT09IFN0 cmluZyhwaWQpOyB9KTsKICAgICAgICAgICAgaWYgKCFwKSB7IHRvYXN0KCdQZXJzb24gbmljaHQg Z2VmdW5kZW4nLCAnZmVobGVyJyk7IHJldHVybjsgfQogICAgICAgICAgICBpZiAocC5ud0tlbm51 bmcgJiYgc2Nob25EcmluW3AubndLZW5udW5nLnRvTG93ZXJDYXNlKCldKSB7CiAgICAgICAgICAg ICAgICB0b2FzdCgnRGllc2UgUGVyc29uIGlzdCBiZXJlaXRzIEZhY2hhdWZzaWNodCcsICd3YXJu dW5nJyk7IHJldHVybjsKICAgICAgICAgICAgfQogICAgICAgICAgICBuZXUgPSB7CiAgICAgICAg ICAgICAgICBuYW1lOiAgICAgICgocC52b3JuYW1lID8gcC52b3JuYW1lICsgJyAnIDogJycpICsg cC5uYW1lKS50cmltKCksCiAgICAgICAgICAgICAgICBud0tlbm51bmc6IHAubndLZW5udW5nIHx8 ICcnCiAgICAgICAgICAgIH07CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgdmFyIG5hbWUg PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZmEtbmV1LW5hbWUnKS52YWx1ZS50cmltKCk7CiAg ICAgICAgICAgIHZhciB2biAgID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ZhLW5ldS12b3Ju YW1lJykudmFsdWUudHJpbSgpOwogICAgICAgICAgICB2YXIgbndrICA9IGRvY3VtZW50LmdldEVs ZW1lbnRCeUlkKCdmYS1uZXUtbndrJykudmFsdWUudHJpbSgpOwogICAgICAgICAgICBpZiAoIW5h bWUpIHsgdG9hc3QoJ05hY2huYW1lIGlzdCBQZmxpY2h0JywgJ3dhcm51bmcnKTsgcmV0dXJuOyB9 CiAgICAgICAgICAgIGlmICghbndrKSAgeyB0b2FzdCgnTlctS2VubnVuZyBpc3QgUGZsaWNodCAo c29uc3Qga2FubiBzaWNoIGRpZSBQZXJzb24gbmljaHQgYXVzd2Vpc2VuKScsICd3YXJudW5nJyk7 IHJldHVybjsgfQogICAgICAgICAgICBpZiAoc2Nob25EcmluW253ay50b0xvd2VyQ2FzZSgpXSkg eyB0b2FzdCgnRGllc2UgTlctS2VubnVuZyBpc3QgYmVyZWl0cyBGYWNoYXVmc2ljaHQnLCAnd2Fy bnVuZycpOyByZXR1cm47IH0KICAgICAgICAgICAgbmV1ID0gewogICAgICAgICAgICAgICAgbmFt ZTogICAgICB2biA/ICh2biArICcgJyArIG5hbWUpIDogbmFtZSwKICAgICAgICAgICAgICAgIG53 S2VubnVuZzogbndrCiAgICAgICAgICAgIH07CiAgICAgICAgfQogICAgICAgIC8vIEFrdHVlbGxl IFRhYmVsbGVuLVN0YXRlIHVlYmVybmVobWVuIChvaG5lIEZpbHRlciksIGRhbm4gYW5oYWVuZ2Vu CiAgICAgICAgWi5hZG1pbi5mYWNoYXVmc2ljaHQgPSBmYWNoYXVmc2ljaHRBdXNUYWJlbGxlTGVz ZW4oKTsKICAgICAgICBaLmFkbWluLmZhY2hhdWZzaWNodC5wdXNoKHsKICAgICAgICAgICAgbmFt ZTogbmV1Lm5hbWUsCiAgICAgICAgICAgIG53S2VubnVuZzogbmV1Lm53S2VubnVuZywKICAgICAg ICAgICAgc2VoZW46IHsgYWRtaW5pc3RyYXRpb246IGZhbHNlLCBzdGF0aXN0aWs6IGZhbHNlLCBs b2didWNoOiBmYWxzZSwgYmFja3VwczogZmFsc2UgfSwKICAgICAgICAgICAgZ2VzYW10dmVyYW50 d29ydGxpY2g6IGZhbHNlLAogICAgICAgICAgICBhZG1pblNpY2h0YmFya2VpdDoge30sCiAgICAg ICAgICAgIHN0YXRpc3Rpa1NpY2h0YmFya2VpdDoge30sCiAgICAgICAgICAgIGVkaXRpZXJlbjog eyBwZXJzb25lbklkczogW10sIGRpZW5zdGdydXBwZW46IFtdLCBzdGFuZG9ydGU6IFtdIH0KICAg ICAgICB9KTsKICAgICAgICBtb2RhbFNjaGxpZXNzZW4odHJ1ZSk7CiAgICAgICAgZmFjaGF1ZnNp Y2h0UmVuZGVybigpOwogICAgICAgIHRvYXN0KCdGYWNoYXVmc2ljaHQtRWludHJhZyAiJyArIG5l dS5uYW1lICsgJyIgYW5nZWxlZ3Qg4oCUICJTcGVpY2hlcm4iIGRyw7xja2VuIHVtIGRhdWVyaGFm dCB6dSBzaWNoZXJuJywgJ2luZm8nKTsKICAgIH0pOwoKICAgIGRvY3VtZW50LmdldEVsZW1lbnRC eUlkKCdmYS1uZXUtYWJicicpLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oKSB7 IG1vZGFsU2NobGllc3NlbigpOyB9KTsKICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2lu cHV0W25hbWU9ImZhLW5ldS1tb2R1cyJdJykuZm9yRWFjaChmdW5jdGlvbihyKSB7CiAgICAgICAg ci5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgdmFy IHNlbCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2lucHV0W25hbWU9ImZhLW5ldS1tb2R1cyJd OmNoZWNrZWQnKTsKICAgICAgICAgICAgaWYgKCFzZWwpIHJldHVybjsKICAgICAgICAgICAgZG9j dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ZhLW5ldS1kcm9wZG93bi1iZXJlaWNoJykuc3R5bGUuZGlz cGxheSA9IHNlbC52YWx1ZSA9PT0gJ2Ryb3Bkb3duJyA/ICcnIDogJ25vbmUnOwogICAgICAgICAg ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZmEtbmV1LW1hbnVlbGwtYmVyZWljaCcpLnN0eWxl LmRpc3BsYXkgID0gc2VsLnZhbHVlID09PSAnbWFudWVsbCcgID8gJycgOiAnbm9uZSc7CiAgICAg ICAgfSk7CiAgICB9KTsKfQoKLy8gY3R4IG9wdGlvbmFsIOKAlCBEZWZhdWx0IEZhY2hhdWZzaWNo dDsgUm9sbGVuIHJlaWNoZW4gcm9sbGVNb2RhbEN0eCh0eXApLgpleHBvcnQgZnVuY3Rpb24gZmFj aGF1ZnNpY2h0RGV0YWlsTW9kYWwoaWR4LCBjdHgpIHsKICAgIC8vIE1vZGFsIG1pdCBkcmVpIExp c3RlbjogUGVyc29uZW4gKGNoZWNrYm94IGplIFBlcnNvbiksCiAgICAvLyBEaWVuc3RncnVwcGVu IChjaGVja2JveCBqZSBHcnVwcGUpLCBTdGFuZG9ydGUgKGNoZWNrYm94IGplIE9FKS4KICAgIC8v IEVkaXQtUmVjaHRlIHdlcmRlbiBkaXJla3QgaW4gY3R4LUxpc3RlW2lkeF0uZWRpdGllcmVuIGdl c3BlaWNoZXJ0LgogICAgaWYgKCFaLnJlY2h0ZS5pc3RTdXBlclVzZXIpIHJldHVybjsKICAgIGN0 eCA9IGN0eCB8fCBmYWNoYXVmc2ljaHRNb2RhbEN0eCgpOwogICAgLy8gS29tcGxldHRlIFRhYmVs bGUgaW4gZGVuIFN0YXRlIHNwaWVnZWxuIChhbGxlIFplaWxlbikg4oCUIHNvbnN0IGdlaGVuCiAg ICAvLyBwYXJhbGxlbGUgVGFiZWxsZW4tRWRpdHMgYmVpbSBNb2RhbC1TcHJ1bmcgdmVybG9yZW4u CiAgICBjdHguc2V0TGlzdGUoY3R4LmF1c1RhYmVsbGVMZXNlbigpKTsKICAgIHZhciBsaXN0ZSA9 IGN0eC5nZXRMaXN0ZSgpOwogICAgaWYgKCFsaXN0ZVtpZHhdKSByZXR1cm47CiAgICB2YXIgZmEg PSBsaXN0ZVtpZHhdOwogICAgdmFyIGVkID0gZmEuZWRpdGllcmVuIHx8IHsgcGVyc29uZW5JZHM6 IFtdLCBkaWVuc3RncnVwcGVuOiBbXSwgc3RhbmRvcnRlOiBbXSB9OwoKICAgIHZhciBwZXJzb25l biA9IChaLnBsYW51bmcucGVyc29uZW4gfHwgW10pLnNsaWNlKCkKICAgICAgICAuZmlsdGVyKGZ1 bmN0aW9uKHApIHsgcmV0dXJuIHAuYWt0aXY7IH0pCiAgICAgICAgLnNvcnQoZnVuY3Rpb24oYSwg YikgeyByZXR1cm4gKGEucG9zaXRpb24gfHwgOTk5KSAtIChiLnBvc2l0aW9uIHx8IDk5OSk7IH0p OwoKICAgIHZhciBzdGFuZG9ydGUgPSAoWi5hZG1pbi5zdGFuZG9ydGUgfHwgW10pLm1hcChmdW5j dGlvbihzKSB7IHJldHVybiBzLmt1ZXJ6ZWwgfHwgcy5uYW1lOyB9KS5maWx0ZXIoQm9vbGVhbik7 CgogICAgZnVuY3Rpb24gY2hrYm94KGlkLCBsYWJlbCwgY2hlY2tlZCkgewogICAgICAgIHJldHVy biAnPGxhYmVsIHN0eWxlPSJkaXNwbGF5OmlubGluZS1mbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtn YXA6NnB4O21hcmdpbjoycHggMTJweCAycHggMDtjdXJzb3I6cG9pbnRlciI+JyArCiAgICAgICAg ICAgICc8aW5wdXQgdHlwZT0iY2hlY2tib3giIGNsYXNzPSJlZGl0LWNoayIgZGF0YS13ZXJ0PSIn ICsgZXNjYXBlQXR0cihpZCkgKyAnIicgKyAoY2hlY2tlZCA/ICcgY2hlY2tlZCcgOiAnJykgKyAn PicgKwogICAgICAgICAgICAnPHNwYW4+JyArIGVzY2FwZUhUTUwobGFiZWwpICsgJzwvc3Bhbj48 L2xhYmVsPic7CiAgICB9CgogICAgdmFyIHBlcnNDYnMgPSBwZXJzb25lbi5tYXAoZnVuY3Rpb24o cCkgewogICAgICAgIHZhciBuYW1lTGFiZWwgPSAoKHAudm9ybmFtZSA/IHAudm9ybmFtZSArICcg JyA6ICcnKSArIHAubmFtZSkgKyAnIMK3ICcgKyBwLmdydXBwZTsKICAgICAgICByZXR1cm4gY2hr Ym94KFN0cmluZyhwLmlkKSwgbmFtZUxhYmVsLCAoZWQucGVyc29uZW5JZHMgfHwgW10pLmluZGV4 T2YoTnVtYmVyKHAuaWQpKSA+PSAwKTsKICAgIH0pLmpvaW4oJycpOwogICAgdmFyIGdydXBwZW5D YnMgPSAoWi5hZG1pbi5ncnVwcGVuIHx8IFtdKS5tYXAoZnVuY3Rpb24oZ3IpIHsKICAgICAgICBy ZXR1cm4gY2hrYm94KGdyLm5hbWUsIChnci5iZXplaWNobnVuZyB8fCBnci5uYW1lKSArICcgKCcg KyBnci5uYW1lICsgJyknLCAoZWQuZGllbnN0Z3J1cHBlbiB8fCBbXSkuaW5kZXhPZihnci5uYW1l KSA+PSAwKTsKICAgIH0pLmpvaW4oJycpOwogICAgdmFyIHN0YW5kb3J0ZUNicyA9IHN0YW5kb3J0 ZS5tYXAoZnVuY3Rpb24ocykgewogICAgICAgIHJldHVybiBjaGtib3gocywgcywgKGVkLnN0YW5k b3J0ZSB8fCBbXSkuaW5kZXhPZihzKSA+PSAwKTsKICAgIH0pLmpvaW4oJycpOwoKICAgIHZhciBr b2VycGVyID0KICAgICAgICAnPHAgc3R5bGU9Im1hcmdpbi10b3A6MCI+WnVzw6R0emxpY2ggenVy IDxiPmVpZ2VuZW4gWmVpbGU8L2I+IChpc3QgaW1tZXIgZXJsYXVidCkgZGFyZiBkaWVzZSBGYWNo YXVmc2ljaHQgZGllIFBsYW51bmdzemVsbGVuIGZvbGdlbmRlciBFaW50csOkZ2Ugw6RuZGVybjo8 L3A+JyArCiAgICAgICAgJzxoMyBzdHlsZT0ibWFyZ2luOjEycHggMCA0cHgiPkVpbnplbG5lIFBl cnNvbmVuPC9oMz4nICsKICAgICAgICAnPGRpdiBpZD0iZGV0YWlsLXBlcnNvbmVuIiBzdHlsZT0i bWF4LWhlaWdodDoyODBweDtvdmVyZmxvdzphdXRvO2JvcmRlcjoxcHggc29saWQgdmFyKC0tYm9y ZGVyLWxpZ2h0KTtwYWRkaW5nOjhweDtib3JkZXItcmFkaXVzOjRweCI+JyArCiAgICAgICAgICAg IChwZXJzQ2JzIHx8ICc8c3BhbiBzdHlsZT0iY29sb3I6dmFyKC0tdGV4dC1tdXRlZCkiPktlaW5l IGFrdGl2ZW4gUGVyc29uZW48L3NwYW4+JykgKwogICAgICAgICc8L2Rpdj4nICsKICAgICAgICAn PGgzIHN0eWxlPSJtYXJnaW46MTJweCAwIDRweCI+R2FuemUgRGllbnN0Z3J1cHBlbjwvaDM+JyAr CiAgICAgICAgJzxkaXYgaWQ9ImRldGFpbC1kaWVuc3RncnVwcGVuIiBzdHlsZT0icGFkZGluZzo0 cHgiPicgKyAoZ3J1cHBlbkNicyB8fCAnPHNwYW4gc3R5bGU9ImNvbG9yOnZhcigtLXRleHQtbXV0 ZWQpIj5LZWluZSBEaWVuc3RncnVwcGVuIGtvbmZpZ3VyaWVydDwvc3Bhbj4nKSArICc8L2Rpdj4n ICsKICAgICAgICAnPGgzIHN0eWxlPSJtYXJnaW46MTJweCAwIDRweCI+R2FuemUgU3RhbmRvcnRl IChPRSk8L2gzPicgKwogICAgICAgICc8ZGl2IGlkPSJkZXRhaWwtc3RhbmRvcnRlIiBzdHlsZT0i cGFkZGluZzo0cHgiPicgKyAoc3RhbmRvcnRlQ2JzIHx8ICc8c3BhbiBzdHlsZT0iY29sb3I6dmFy KC0tdGV4dC1tdXRlZCkiPktlaW5lIFN0YW5kb3J0ZSBrb25maWd1cmllcnQ8L3NwYW4+JykgKyAn PC9kaXY+JzsKCiAgICBtb2RhbFplaWdlbignUGxhbnVuZzogJyArIChmYS5uYW1lIHx8ICcob2hu ZSBOYW1lKScpLCBrb2VycGVyLAogICAgICAgICc8YnV0dG9uIGNsYXNzPSJidG4iIGlkPSJkbGct YWJicmVjaGVuIj5BYmJyZWNoZW48L2J1dHRvbj4nICsKICAgICAgICAnPGJ1dHRvbiBjbGFzcz0i YnRuIGJ0bi1wcmltYWVyIiBpZD0iZGxnLXNwZWljaGVybiI+w5xiZXJuZWhtZW48L2J1dHRvbj4n LAogICAgICAgIGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgbmV1UCA9IFtdLCBuZXVHID0g W10sIG5ldVMgPSBbXTsKICAgICAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnI2Rl dGFpbC1wZXJzb25lbiAuZWRpdC1jaGsnKS5mb3JFYWNoKGZ1bmN0aW9uKGMpIHsKICAgICAgICAg ICAgICAgIGlmIChjLmNoZWNrZWQpIG5ldVAucHVzaChwYXJzZUludChjLmdldEF0dHJpYnV0ZSgn ZGF0YS13ZXJ0JykpKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIGRvY3VtZW50LnF1ZXJ5 U2VsZWN0b3JBbGwoJyNkZXRhaWwtZGllbnN0Z3J1cHBlbiAuZWRpdC1jaGsnKS5mb3JFYWNoKGZ1 bmN0aW9uKGMpIHsKICAgICAgICAgICAgICAgIGlmIChjLmNoZWNrZWQpIG5ldUcucHVzaChjLmdl dEF0dHJpYnV0ZSgnZGF0YS13ZXJ0JykpOwogICAgICAgICAgICB9KTsKICAgICAgICAgICAgZG9j dW1lbnQucXVlcnlTZWxlY3RvckFsbCgnI2RldGFpbC1zdGFuZG9ydGUgLmVkaXQtY2hrJykuZm9y RWFjaChmdW5jdGlvbihjKSB7CiAgICAgICAgICAgICAgICBpZiAoYy5jaGVja2VkKSBuZXVTLnB1 c2goYy5nZXRBdHRyaWJ1dGUoJ2RhdGEtd2VydCcpKTsKICAgICAgICAgICAgfSk7CiAgICAgICAg ICAgIGZhLmVkaXRpZXJlbiA9IHsgcGVyc29uZW5JZHM6IG5ldVAsIGRpZW5zdGdydXBwZW46IG5l dUcsIHN0YW5kb3J0ZTogbmV1UyB9OwogICAgICAgICAgICBtb2RhbFNjaGxpZXNzZW4oKTsKICAg ICAgICAgICAgY3R4LnJlbmRlcm4oKTsKICAgICAgICAgICAgY3R4Lm1hcmtEaXJ0eSgpOwogICAg ICAgICAgICB0b2FzdCgnUGxhbnVuZ3MtUmVjaHRlIMO8YmVybm9tbWVuIOKAlCAiU3BlaWNoZXJu IiBkcsO8Y2tlbiwgdW0gZGF1ZXJoYWZ0IHp1IHNpY2hlcm4nLCAnaW5mbycpOwogICAgICAgIH0K ICAgICk7CiAgICB2YXIgYWJiciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkbGctYWJicmVj aGVuJyk7CiAgICBpZiAoYWJicikgYWJici5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIG1vZGFs U2NobGllc3Nlbik7Cn0K ### FILE: js/admin_standardrechte.js | 9237 Ly8gPT09IGFkbWluX3N0YW5kYXJkcmVjaHRlLmpzID09PQovLyBBZG1pbi1UYWIgIlN0YW5kYXJk cmVjaHRlIChVc2VyKSIg4oCUIFNVLW9ubHkuIFp3ZWkgVGVpbGU6Ci8vCi8vICAxKSBHcnVuZHNh ZXR6bGljaGUgUGxhbnVuZ3NyZWNodGUgZnVlciBBTExFIHJlZ3VsYWVyZW4gVXNlcjogZ2VnZW5z ZWl0aWdlCi8vICAgICBQbGFudW5nIGplIERpZW5zdGdydXBwZSB1bmQvb2RlciBqZSBTdGFuZG9y dC4gU3RlaHQgZGllIGVpZ2VuZSBHcnVwcGUvCi8vICAgICBkZXIgZWlnZW5lIFN0YW5kb3J0IGhp ZXIsIGRhcmYgbWFuIGFsbGUgTWl0Z2xpZWRlciBkaWVzZXIgR3J1cHBlL2RpZXNlcwovLyAgICAg U3RhbmRvcnRzIG1pdHBsYW5lbi4gV2lyZCBzZXJ2ZXJzZWl0aWcgKGJlcmVjaG5lX3JlY2h0ZS9H ZXQtUmVjaHRlKQovLyAgICAgYWRkaXRpdiBpbiBgZWRpdGllcmVuYCBlaW5nZXdvYmVuIC0+IGdy ZWlmdCBpbiBkZXIgYmVzdGVoZW5kZW4gWmVsbC1FZGl0LQovLyAgICAgUHJ1ZWZ1bmcgb2huZSBT b25kZXJsb2dpay4gUGVyc2lzdGVuejogUFVUIC9hcGkvYWRtaW4vc3RhbmRhcmRyZWNodGUuCi8v Ci8vICAyKSBMaXN0ZSAiVXNlciBtaXQgenVzYWV0emxpY2hlbiBSZWNodGVuIjogYWxsZSBQZXJz b25lbiwgZGllIGluIGRlcgovLyAgICAgUGVyc29uYWx2ZXJ3YWx0dW5nIGluZGl2aWR1ZWxsZSBl ZGl0UmVjaHRlIGJla29tbWVuIGhhYmVuICh6LkIuIGhvY2gtCi8vICAgICByYW5naWdlIE1BKSwg aW5rbC4gVmlzdWFsaXNpZXJ1bmcgaWhyZXIgWnVzYXR6cmVjaHRlICsgQmVhcmJlaXRlbi1MaW5r LgoKaW1wb3J0IHsgWiB9IGZyb20gJy4vY29yZV9zdGF0ZS5qcyc7CmltcG9ydCB7IGVzY2FwZUhU TUwsIGVzY2FwZUF0dHIgfSBmcm9tICcuL2NvcmVfdXRpbC5qcyc7CmltcG9ydCB7IHRvYXN0IH0g ZnJvbSAnLi91aV9kaWFsb2cuanMnOwppbXBvcnQgeyBhcGkgfSBmcm9tICcuL2NvcmVfYXBpLmpz JzsKaW1wb3J0IHsgcGVyc29uQmVhcmJlaXRlbkRpYWxvZyB9IGZyb20gJy4vYWRtaW5fcGVyc29u YWwuanMnOwoKZnVuY3Rpb24gX2RhcmYoKSB7IHJldHVybiAhIShaLnJlY2h0ZSAmJiBaLnJlY2h0 ZS5pc3RTdXBlclVzZXIpOyB9CmZ1bmN0aW9uIF9hcnIodikgeyByZXR1cm4gQXJyYXkuaXNBcnJh eSh2KSA/IHYgOiAodiA9PSBudWxsID8gW10gOiBbdl0pOyB9CgpmdW5jdGlvbiBfc3RhbmRhcmRS ZWNodGUoKSB7CiAgICB2YXIgc3IgPSAoWi5hZG1pbiAmJiBaLmFkbWluLnN0YW5kYXJkUmVjaHRl KSB8fCB7fTsKICAgIHJldHVybiB7CiAgICAgICAgZ2VnZW5zZWl0aWdHcnVwcGVuOiAgIF9hcnIo c3IuZ2VnZW5zZWl0aWdHcnVwcGVuKS5tYXAoU3RyaW5nKSwKICAgICAgICBnZWdlbnNlaXRpZ1N0 YW5kb3J0ZTogX2Fycihzci5nZWdlbnNlaXRpZ1N0YW5kb3J0ZSkubWFwKFN0cmluZykKICAgIH07 Cn0KCmZ1bmN0aW9uIF9ncnVwcGVuTGFiZWwobmFtZSkgewogICAgdmFyIGcgPSAoWi5hZG1pbi5n cnVwcGVuIHx8IFtdKS5maWx0ZXIoZnVuY3Rpb24oeCl7IHJldHVybiB4Lm5hbWUgPT09IG5hbWU7 IH0pWzBdOwogICAgcmV0dXJuIGcgPyAoZy5iZXplaWNobnVuZyB8fCBnLm5hbWUpIDogbmFtZTsK fQpmdW5jdGlvbiBfc3RhbmRvcnRMYWJlbChrdWVyemVsKSB7CiAgICB2YXIgcyA9IChaLmFkbWlu LnN0YW5kb3J0ZSB8fCBbXSkuZmlsdGVyKGZ1bmN0aW9uKHgpeyByZXR1cm4geC5rdWVyemVsID09 PSBrdWVyemVsOyB9KVswXTsKICAgIGlmIChzICYmIHMubmFtZSkgcmV0dXJuIHMubmFtZSArICcg KCcgKyBrdWVyemVsICsgJyknOwogICAgcmV0dXJuIGt1ZXJ6ZWw7Cn0KZnVuY3Rpb24gX3BlcnNv bk5hbWUoaWQpIHsKICAgIHZhciBwID0gKChaLnBsYW51bmcgJiYgWi5wbGFudW5nLnBlcnNvbmVu KSB8fCBbXSkuZmlsdGVyKGZ1bmN0aW9uKHgpeyByZXR1cm4gU3RyaW5nKHguaWQpID09PSBTdHJp bmcoaWQpOyB9KVswXTsKICAgIGlmICghcCkgcmV0dXJuICcjJyArIGlkOwogICAgdmFyIG4gPSAo cC5uYW1lIHx8ICcnKS50cmltKCksIHYgPSAocC52b3JuYW1lIHx8ICcnKS50cmltKCk7CiAgICBy ZXR1cm4gdiA/IChuICsgJywgJyArIHYpIDogbjsKfQoKLy8gPT09PT0gUmVuZGVyID09PT09Cgpl eHBvcnQgZnVuY3Rpb24gc3RhbmRhcmRyZWNodGVSZW5kZXJuKCkgewogICAgdmFyIGNvbnQgPSBk b2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3RhbmRhcmRyZWNodGUtaW5oYWx0Jyk7CiAgICBpZiAo IWNvbnQpIHJldHVybjsKICAgIGlmICghX2RhcmYoKSkgewogICAgICAgIGNvbnQuaW5uZXJIVE1M ID0gJzxkaXYgY2xhc3M9ImFkbWluLWVtcHR5Ij48ZGl2IGNsYXNzPSJhZG1pbi1lbXB0eS10ZXh0 Ij5OdXIgU3VwZXJVc2VyIGTDvHJmZW4gU3RhbmRhcmRyZWNodGUgdmVyd2FsdGVuLjwvZGl2Pjwv ZGl2Pic7CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgdmFyIHNyID0gX3N0YW5kYXJkUmVjaHRl KCk7CiAgICBjb250LmlubmVySFRNTCA9IF9lcmtsYWVydW5nSHRtbCgpICsgX2tvbmZpZ0h0bWwo c3IpICsgX3p1c2F0ekxpc3RlSHRtbCgpOwogICAgX3ZlcmRyYWh0ZW4oY29udCk7Cn0KCmZ1bmN0 aW9uIF9lcmtsYWVydW5nSHRtbCgpIHsKICAgIHJldHVybiAnJyArCiAgICAnPGRldGFpbHMgY2xh c3M9ImFkbWluLWluZm8iIGRhdGEtaW5mby1rZXk9InN0YW5kYXJkcmVjaHRlIiBvcGVuPicgKwog ICAgICAgICc8c3VtbWFyeT48c3BhbiBjbGFzcz0iYWRtaW4taW5mby1jaGV2Ij7ilrg8L3NwYW4+ V2FzIHNpbmQgU3RhbmRhcmRyZWNodGU/PHNwYW4gY2xhc3M9ImFkbWluLWluZm8tYmFkZ2UiPkF1 ZmtsYXBwZW4gLyBadWtsYXBwZW48L3NwYW4+PC9zdW1tYXJ5PicgKwogICAgICAgICc8ZGl2IGNs YXNzPSJhZG1pbi1pbmZvLWJvZHkiPicgKwogICAgICAgICAgICAnPHA+PHN0cm9uZz5TdGFuZGFy ZHJlY2h0ZTwvc3Ryb25nPiBnZWx0ZW4gZsO8ciA8Yj5hbGxlPC9iPiBNaXRhcmJlaXRlbmRlbiwg ZGllIGluIGtlaW5lciBSb2xsZW4tTGlzdGUgKFN1cGVyVXNlciAvIEZhY2hhdWZzaWNodCAvIERp cmVrdGlvbnNsZWl0dW5nIC8gRsO8aHJ1bmdzc3RlbGxlKSBzdGVoZW4g4oCUIGFsc28gZGVuIOKA nm5vcm1hbGVuIiBVc2VyLjwvcD4nICsKICAgICAgICAgICAgJzxwPjxzdHJvbmc+SW1tZXIgZXJs YXVidCAoQmFzaXMsIG5pY2h0IGFic2NoYWx0YmFyKTo8L3N0cm9uZz48L3A+JyArCiAgICAgICAg ICAgICc8dWw+JyArCiAgICAgICAgICAgICAgICAnPGxpPjxiPkVpZ2VuZSBaZWlsZTwvYj4g4oCU IGplZGUgUGVyc29uIGRhcmYgaWhyZSBlaWdlbmVuIFRhZ2UgZWludHJhZ2VuLjwvbGk+JyArCiAg ICAgICAgICAgICAgICAnPGxpPjxiPk1pa3JvdGVhbTwvYj4g4oCUIE1pdGdsaWVkZXIgZGVzc2Vs YmVuIE1pa3JvdGVhbXMgcGxhbmVuIHNpY2ggZ2VnZW5zZWl0aWcgKFBmbGVnZSB1bnRlciA8ZW0+ TWlrcm90ZWFtczwvZW0+KS48L2xpPicgKwogICAgICAgICAgICAnPC91bD4nICsKICAgICAgICAg ICAgJzxwPjxzdHJvbmc+WnVzw6R0emxpY2gga29uZmlndXJpZXJiYXIgKHVudGVuKTo8L3N0cm9u Zz4g4oCeZ2VnZW5zZWl0aWdlIFBsYW51bmciIGplIERpZW5zdGdydXBwZSBvZGVyIFN0YW5kb3J0 LiBCZWlzcGllbDogSXN0IGRpZSBTY2hpY2h0Z3J1cHBlIDxjb2RlPkE8L2NvZGU+IGFrdGl2aWVy dCwgZGFyZiA8Yj5qZWRlczwvYj4gTWl0Z2xpZWQgZGVyIEdydXBwZSBBIDxiPmplZGVzIGFuZGVy ZTwvYj4gTWl0Z2xpZWQgZGVyIEdydXBwZSBBIG1pdHBsYW5lbi4gQW5hbG9nIGRlciBTdGFuZG9y dCAoei5CLiBhbGxlIGRlciBBUFcgS2FtZW4pLjwvcD4nICsKICAgICAgICAgICAgJzxwPjxzdHJv bmc+SW5kaXZpZHVlbGxlIFp1c2F0enJlY2h0ZTwvc3Ryb25nPiBlaW56ZWxuZXIgUGVyc29uZW4g d2VyZGVuIHdlaXRlcmhpbiBpbiBkZXIgPGVtPlBlcnNvbmFsdmVyd2FsdHVuZzwvZW0+IHBybyBQ ZXJzb24gZ2VzZXR6dCDigJQgc2llIHNpbmQgdW50ZW4gaW4gZGVyIMOcYmVyc2ljaHQgYXVmZ2Vm w7xocnQuPC9wPicgKwogICAgICAgICc8L2Rpdj4nICsKICAgICc8L2RldGFpbHM+JzsKfQoKZnVu Y3Rpb24gX2NoaXBzKGdycCwgb3B0aW9uZW4sIHNlbGVjdGVkKSB7CiAgICB2YXIgY2hpcHMgPSBv cHRpb25lbi5tYXAoZnVuY3Rpb24obykgewogICAgICAgIHZhciBhbiA9IHNlbGVjdGVkLmluZGV4 T2YoU3RyaW5nKG8ud2VydCkpID49IDA7CiAgICAgICAgcmV0dXJuICc8bGFiZWwgY2xhc3M9ImJs ZC1jaGlwJyArIChhbiA/ICcgYW4nIDogJycpICsgJyI+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBk YXRhLXNyY2hpcD0iJyArIGVzY2FwZUF0dHIoZ3JwKSArICciIHZhbHVlPSInICsgZXNjYXBlQXR0 cihTdHJpbmcoby53ZXJ0KSkgKyAnIicgKyAoYW4gPyAnIGNoZWNrZWQnIDogJycpICsgJz48c3Bh bj4nICsgZXNjYXBlSFRNTChvLmxhYmVsKSArICc8L3NwYW4+PC9sYWJlbD4nOwogICAgfSkuam9p bignJyk7CiAgICByZXR1cm4gJzxkaXYgY2xhc3M9ImJsZC1jaGlwcyI+JyArIChjaGlwcyB8fCAn PHNwYW4gY2xhc3M9ImJsZC1saXN0ZS1sZWVyIj7igJQ8L3NwYW4+JykgKyAnPC9kaXY+JzsKfQoK ZnVuY3Rpb24gX2tvbmZpZ0h0bWwoc3IpIHsKICAgIHZhciBnck9wdCA9IChaLmFkbWluLmdydXBw ZW4gfHwgW10pLm1hcChmdW5jdGlvbihnKXsgcmV0dXJuIHsgd2VydDogZy5uYW1lLCBsYWJlbDog Zy5iZXplaWNobnVuZyB8fCBnLm5hbWUgfTsgfSk7CiAgICB2YXIgc3RPcHQgPSAoWi5hZG1pbi5z dGFuZG9ydGUgfHwgW10pLm1hcChmdW5jdGlvbihzKXsgcmV0dXJuIHsgd2VydDogcy5rdWVyemVs LCBsYWJlbDogcy5uYW1lID8gKHMubmFtZSArICcgKCcgKyBzLmt1ZXJ6ZWwgKyAnKScpIDogcy5r dWVyemVsIH07IH0pOwogICAgcmV0dXJuICcnICsKICAgICc8c2VjdGlvbiBjbGFzcz0iYWRtaW4t c2VrdGlvbiBzci1rb25maWciPicgKwogICAgICAgICc8aDM+R2VnZW5zZWl0aWdlIFBsYW51bmc8 L2gzPicgKwogICAgICAgICc8ZGl2IGNsYXNzPSJibGQtZmVsZCI+PHNwYW4gY2xhc3M9ImJsZC1m ZWxkLXRpdGVsIj5EaWVuc3RncnVwcGVuLCBkZXJlbiBNaXRnbGllZGVyIHNpY2ggZ2VnZW5zZWl0 aWcgcGxhbmVuPC9zcGFuPicgKwogICAgICAgICAgICBfY2hpcHMoJ2dydXBwZW4nLCBnck9wdCwg c3IuZ2VnZW5zZWl0aWdHcnVwcGVuKSArICc8L2Rpdj4nICsKICAgICAgICAnPGRpdiBjbGFzcz0i YmxkLWZlbGQiPjxzcGFuIGNsYXNzPSJibGQtZmVsZC10aXRlbCI+U3RhbmRvcnRlLCBkZXJlbiBN aXRnbGllZGVyIHNpY2ggZ2VnZW5zZWl0aWcgcGxhbmVuPC9zcGFuPicgKwogICAgICAgICAgICBf Y2hpcHMoJ3N0YW5kb3J0ZScsIHN0T3B0LCBzci5nZWdlbnNlaXRpZ1N0YW5kb3J0ZSkgKyAnPC9k aXY+JyArCiAgICAgICAgJzxkaXYgY2xhc3M9InJlY2h0ZS1jYXJkLWZ1c3MiPjxidXR0b24gY2xh c3M9ImJ0biBidG4tcHJpbWFlciIgdHlwZT0iYnV0dG9uIiBpZD0ic3Itc3BlaWNoZXJuIj5TdGFu ZGFyZHJlY2h0ZSBzcGVpY2hlcm48L2J1dHRvbj4nICsKICAgICAgICAgICAgJzxzcGFuIGNsYXNz PSJzci1oaW53ZWlzIj5HaWx0IHNvZm9ydCBmw7xyIGFsbGUgcmVndWzDpHJlbiBVc2VyIChncmVp ZnQgYmVpbSBuw6RjaHN0ZW4gTGFkZW4gaWhyZXIgUGxhbnVuZykuPC9zcGFuPjwvZGl2PicgKwog ICAgJzwvc2VjdGlvbj4nOwp9CgpmdW5jdGlvbiBfenVzYXR6TGlzdGVIdG1sKCkgewogICAgdmFy IGxldXRlID0gKChaLnBsYW51bmcgJiYgWi5wbGFudW5nLnBlcnNvbmVuKSB8fCBbXSkuZmlsdGVy KGZ1bmN0aW9uKHApIHsKICAgICAgICB2YXIgZXIgPSBwLmVkaXRSZWNodGU7CiAgICAgICAgaWYg KCFlcikgcmV0dXJuIGZhbHNlOwogICAgICAgIHJldHVybiAoX2Fycihlci5wZXJzb25lbklkcyku bGVuZ3RoICsgX2Fycihlci5kaWVuc3RncnVwcGVuKS5sZW5ndGggKyBfYXJyKGVyLnN0YW5kb3J0 ZSkubGVuZ3RoKSA+IDA7CiAgICB9KTsKICAgIHZhciBpbmhhbHQ7CiAgICBpZiAoIWxldXRlLmxl bmd0aCkgewogICAgICAgIGluaGFsdCA9ICc8ZGl2IGNsYXNzPSJibGQtbGlzdGUtbGVlciI+QWt0 dWVsbCBoYXQga2VpbmUgUGVyc29uIGluZGl2aWR1ZWxsZSBadXNhdHpyZWNodGUuIERpZXNlIHdl cmRlbiBpbiBkZXIgUGVyc29uYWx2ZXJ3YWx0dW5nIHBybyBQZXJzb24gZ2VzZXR6dCAobnVyIFN1 cGVyVXNlcikuPC9kaXY+JzsKICAgIH0gZWxzZSB7CiAgICAgICAgaW5oYWx0ID0gJzxkaXYgY2xh c3M9InNyLXp1c2F0ei1pdGVtcyI+JyArIGxldXRlLm1hcChmdW5jdGlvbihwKSB7CiAgICAgICAg ICAgIHZhciBlciA9IHAuZWRpdFJlY2h0ZSB8fCB7fTsKICAgICAgICAgICAgdmFyIHRlaWxlID0g W107CiAgICAgICAgICAgIHZhciBwaXMgPSBfYXJyKGVyLnBlcnNvbmVuSWRzKTsKICAgICAgICAg ICAgaWYgKHBpcy5sZW5ndGgpIHRlaWxlLnB1c2goJzxzcGFuIGNsYXNzPSJzci10YWcgc3ItdGFn LXBlcnNvbiI+UGVyc29uZW46ICcgKyBwaXMubWFwKGZ1bmN0aW9uKGlkKXsgcmV0dXJuIGVzY2Fw ZUhUTUwoX3BlcnNvbk5hbWUoaWQpKTsgfSkuam9pbignLCAnKSArICc8L3NwYW4+Jyk7CiAgICAg ICAgICAgIF9hcnIoZXIuZGllbnN0Z3J1cHBlbikuZm9yRWFjaChmdW5jdGlvbihnKXsgdGVpbGUu cHVzaCgnPHNwYW4gY2xhc3M9InNyLXRhZyBzci10YWctZ3JwIj5HcnVwcGUgJyArIGVzY2FwZUhU TUwoX2dydXBwZW5MYWJlbChnKSkgKyAnPC9zcGFuPicpOyB9KTsKICAgICAgICAgICAgX2Fycihl ci5zdGFuZG9ydGUpLmZvckVhY2goZnVuY3Rpb24ocyl7IHRlaWxlLnB1c2goJzxzcGFuIGNsYXNz PSJzci10YWcgc3ItdGFnLW9ydCI+U3RhbmRvcnQgJyArIGVzY2FwZUhUTUwoX3N0YW5kb3J0TGFi ZWwocykpICsgJzwvc3Bhbj4nKTsgfSk7CiAgICAgICAgICAgIHZhciBwTmFtZSA9IChwLm5hbWUg fHwgJycpICsgKHAudm9ybmFtZSA/ICgnLCAnICsgcC52b3JuYW1lKSA6ICcnKTsKICAgICAgICAg ICAgdmFyIG1ldGEgPSBbcC5mdW5rdGlvbiwgcC5ncnVwcGUsIHAub2VdLmZpbHRlcihCb29sZWFu KS5qb2luKCcgwrcgJyk7CiAgICAgICAgICAgIHJldHVybiAnPGRpdiBjbGFzcz0ic3ItenVzYXR6 LWl0ZW0iPicgKwogICAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9InNyLXp1c2F0ei1rb3BmIj48 c3BhbiBjbGFzcz0ic3ItenVzYXR6LW5hbWUiPicgKyBlc2NhcGVIVE1MKHBOYW1lKSArICc8L3Nw YW4+JyArCiAgICAgICAgICAgICAgICAgICAgKG1ldGEgPyAnPHNwYW4gY2xhc3M9InNyLXp1c2F0 ei1tZXRhIj4nICsgZXNjYXBlSFRNTChtZXRhKSArICc8L3NwYW4+JyA6ICcnKSArCiAgICAgICAg ICAgICAgICAgICAgJzxidXR0b24gY2xhc3M9ImJ0biBidG4tbWluaSIgdHlwZT0iYnV0dG9uIiBk YXRhLXNyLWVkaXQ9IicgKyBlc2NhcGVBdHRyKFN0cmluZyhwLmlkKSkgKyAnIj5CZWFyYmVpdGVu PC9idXR0b24+PC9kaXY+JyArCiAgICAgICAgICAgICAgICAnPGRpdiBjbGFzcz0ic3ItenVzYXR6 LXJlY2h0ZSI+JyArIHRlaWxlLmpvaW4oJycpICsgJzwvZGl2PicgKwogICAgICAgICAgICAnPC9k aXY+JzsKICAgICAgICB9KS5qb2luKCcnKSArICc8L2Rpdj4nOwogICAgfQogICAgcmV0dXJuICc8 c2VjdGlvbiBjbGFzcz0iYWRtaW4tc2VrdGlvbiBzci16dXNhdHoiPicgKwogICAgICAgICc8aDM+ VXNlciBtaXQgenVzw6R0emxpY2hlbiBSZWNodGVuPC9oMz4nICsKICAgICAgICAnPHAgY2xhc3M9 InNyLXp1c2F0ei1zdWIiPkRpZXNlIFBlcnNvbmVuIGTDvHJmZW4gw7xiZXIgZGllIEJhc2lzLS9T dGFuZGFyZHJlY2h0ZSBoaW5hdXMgd2VpdGVyZSBQZXJzb25lbiwgR3J1cHBlbiBvZGVyIFN0YW5k b3J0ZSBwbGFuZW4gKGluZGl2aWR1ZWxsIGluIGRlciBQZXJzb25hbHZlcndhbHR1bmcgdmVyZ2Vi ZW4pLjwvcD4nICsKICAgICAgICBpbmhhbHQgKyAnPC9zZWN0aW9uPic7Cn0KCi8vID09PT09IFNw ZWljaGVybiAvIFZlcmRyYWh0dW5nID09PT09CgpmdW5jdGlvbiBfbGVzZUNoaXBzKGdycCkgewog ICAgdmFyIG91dCA9IFtdOwogICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnW2RhdGEtc3Jj aGlwPSInICsgZ3JwICsgJyJdOmNoZWNrZWQnKS5mb3JFYWNoKGZ1bmN0aW9uKGMpeyBvdXQucHVz aChjLnZhbHVlKTsgfSk7CiAgICByZXR1cm4gb3V0Owp9CmZ1bmN0aW9uIF9zcGVpY2hlcm4oKSB7 CiAgICB2YXIgZGF0ZW4gPSB7IGdlZ2Vuc2VpdGlnR3J1cHBlbjogX2xlc2VDaGlwcygnZ3J1cHBl bicpLCBnZWdlbnNlaXRpZ1N0YW5kb3J0ZTogX2xlc2VDaGlwcygnc3RhbmRvcnRlJykgfTsKICAg IGFwaSgnL2FwaS9hZG1pbi9zdGFuZGFyZHJlY2h0ZScsIHsgbWV0aG9kOiAnUFVUJywgaGVhZGVy czogeyAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nIH0sIGJvZHk6IEpTT04uc3Ry aW5naWZ5KGRhdGVuKSB9KQogICAgICAgIC50aGVuKGZ1bmN0aW9uKCkgewogICAgICAgICAgICBa LmFkbWluLnN0YW5kYXJkUmVjaHRlID0gZGF0ZW47CiAgICAgICAgICAgIHRvYXN0KCdTdGFuZGFy ZHJlY2h0ZSBnZXNwZWljaGVydCcsICdlcmZvbGcnKTsKICAgICAgICAgICAgc3RhbmRhcmRyZWNo dGVSZW5kZXJuKCk7CiAgICAgICAgfSkuY2F0Y2goZnVuY3Rpb24oZSl7IHRvYXN0KCdTcGVpY2hl cm4gZmVobGdlc2NobGFnZW46ICcgKyBlLm1lc3NhZ2UsICdmZWhsZXInKTsgfSk7Cn0KCmZ1bmN0 aW9uIF92ZXJkcmFodGVuKGNvbnQpIHsKICAgIGNvbnQuYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdl JywgZnVuY3Rpb24oZSkgewogICAgICAgIHZhciB0ID0gZS50YXJnZXQ7CiAgICAgICAgaWYgKHQu bWF0Y2hlcyAmJiB0Lm1hdGNoZXMoJ1tkYXRhLXNyY2hpcF0nKSkgewogICAgICAgICAgICB2YXIg bGFiID0gdC5jbG9zZXN0KCcuYmxkLWNoaXAnKTsgaWYgKGxhYikgbGFiLmNsYXNzTGlzdC50b2dn bGUoJ2FuJywgdC5jaGVja2VkKTsKICAgICAgICB9CiAgICB9KTsKICAgIHZhciBzYiA9IGRvY3Vt ZW50LmdldEVsZW1lbnRCeUlkKCdzci1zcGVpY2hlcm4nKTsKICAgIGlmIChzYikgc2IuYWRkRXZl bnRMaXN0ZW5lcignY2xpY2snLCBfc3BlaWNoZXJuKTsKICAgIGNvbnQucXVlcnlTZWxlY3RvckFs bCgnW2RhdGEtc3ItZWRpdF0nKS5mb3JFYWNoKGZ1bmN0aW9uKGIpIHsKICAgICAgICBiLmFkZEV2 ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oKXsgcGVyc29uQmVhcmJlaXRlbkRpYWxvZyhw YXJzZUludChiLmdldEF0dHJpYnV0ZSgnZGF0YS1zci1lZGl0JyksIDEwKSk7IH0pOwogICAgfSk7 Cn0K ### FILE: js/admin_statistik.js | 8259 Ly8gPT09IGFkbWluX3N0YXRpc3Rpay5qcyA9PT0KLy8gU3VwZXJVc2VyLUxheW91dC1SYXN0ZXIg ZnVlciBkZW4gU3RhdGlzdGlrLVRhYi4gT3JkbmV0IEFMTEUgU3RhdGlzdGlrLQovLyBLYWNoZWxu IChmZXN0ZSBQYW5lbHMgKyBzZWxic3RnZWJhdXRlIEJhdWthc3Rlbi1LYWNoZWxuKSBpbiBlaW5l bSB2aXN1ZWxsZW4KLy8gNi1TcGFsdGVuLVJhc3RlciBhbjogQnJlaXRlICgxOjEgdm9sbCAvIDE6 MiBoYWxiIC8gMTozIGRyaXR0ZWwpLCBSZWloZW5mb2xnZQovLyAoRHJhZykgdW5kIFNpY2h0YmFy a2VpdCAoQXVnZSkuIFBlcnNpc3RlbnogdmlhIFBVVCAvYXBpL2FkbWluL3N0YXRpc3RpawovLyAo UGFydGlhbC1NZXJnZSBudXIgc3RhdGlzdGlrTGF5b3V0KS4gUGVuZGFudC1EYXRlbmZsdXNzIHp1 IHN0YXRpc3Rpay5qcwovLyAoZG9ydCBsaWVzdCBsYXlvdXRBbndlbmRlbigpIFouYWRtaW4uc3Rh dGlzdGlrTGF5b3V0KS4KLy8KLy8gTXVzdGVyIGZ1ZXIgRHJhZyZEcm9wIHVlYmVybm9tbWVuIGF1 cyBhZG1pbl9jb2Rlcy5qcyAoc2NoaWNodGNvZGVEcmFnVmVyZHJhaHRlbikuCgppbXBvcnQgeyBa IH0gZnJvbSAnLi9jb3JlX3N0YXRlLmpzJzsKaW1wb3J0IHsgZXNjYXBlSFRNTCwgZXNjYXBlQXR0 ciB9IGZyb20gJy4vY29yZV91dGlsLmpzJzsKaW1wb3J0IHsgdG9hc3QgfSBmcm9tICcuL3VpX2Rp YWxvZy5qcyc7CmltcG9ydCB7IGFwaSB9IGZyb20gJy4vY29yZV9hcGkuanMnOwppbXBvcnQgeyBz dGF0aXN0aWtUaWxlc0FsbGUsIEJSRUlURV9TUEFOIH0gZnJvbSAnLi9zdGF0aXN0aWsuanMnOwoK dmFyIEJSRUlURV9SQU5HICA9IHsgZHJpdHRlbDogMCwgaGFsYjogMSwgdm9sbDogMiB9Owp2YXIg QlJFSVRFX1JFSUhFID0gWyd2b2xsJywgJ2hhbGInLCAnZHJpdHRlbCddOwp2YXIgQlJFSVRFX0xB QkVMID0geyB2b2xsOiAnMToxIMK3IHZvbGwnLCBoYWxiOiAnMToyIMK3IGhhbGInLCBkcml0dGVs OiAnMTozIMK3IGRyaXR0ZWwnIH07CgovLyBBa3R1ZWxsZXMgQXJiZWl0cy1MYXlvdXQgKGdlbWlz Y2h0IGF1cyBaLmFkbWluLnN0YXRpc3Rpa0xheW91dCArIFRpbGUtU3RhbW1kYXRlbikuCnZhciBf cmFzdGVyID0gW107CgpmdW5jdGlvbiBfZGFyZkVkaXRpZXJlbigpIHsKICAgIHJldHVybiAhISha LnJlY2h0ZSAmJiBaLnJlY2h0ZS5pc3RTdXBlclVzZXIpOwp9CgpmdW5jdGlvbiBfY2xhbXAoYnJl aXRlLCBtaW5CcmVpdGUpIHsKICAgIGlmICghQlJFSVRFX1NQQU5bYnJlaXRlXSkgYnJlaXRlID0g J3ZvbGwnOwogICAgaWYgKCFCUkVJVEVfU1BBTlttaW5CcmVpdGVdKSBtaW5CcmVpdGUgPSAnZHJp dHRlbCc7CiAgICByZXR1cm4gKEJSRUlURV9SQU5HW2JyZWl0ZV0gPCBCUkVJVEVfUkFOR1ttaW5C cmVpdGVdKSA/IG1pbkJyZWl0ZSA6IGJyZWl0ZTsKfQoKLy8gTWVyZ2UgZ2VzcGVpY2hlcnRlcyBM YXlvdXQgKFJlaWhlbmZvbGdlL0JyZWl0ZS9TaWNodGJhcmtlaXQpIG1pdCBkZXIKLy8gdm9sbHN0 YWVuZGlnZW4gVGlsZS1MaXN0ZSDigJQgbmV1ZSBUaWxlcyBoaW50ZW4gYW5oYWVuZ2VuLCB2ZXJ3 YWlzdGUgZHJvcHBlbi4KZnVuY3Rpb24gX2JhdWVSYXN0ZXIoKSB7CiAgICB2YXIgdGlsZXMgPSBz dGF0aXN0aWtUaWxlc0FsbGUoKTsKICAgIHZhciBieUlkID0ge307CiAgICB0aWxlcy5mb3JFYWNo KGZ1bmN0aW9uKHQpeyBieUlkW3QuaWRdID0gdDsgfSk7CiAgICB2YXIgZ2VzcGVpY2hlcnQgPSAo Wi5hZG1pbiAmJiBBcnJheS5pc0FycmF5KFouYWRtaW4uc3RhdGlzdGlrTGF5b3V0KSkgPyBaLmFk bWluLnN0YXRpc3Rpa0xheW91dCA6IFtdOwogICAgdmFyIG91dCA9IFtdLCBnZXNlaGVuID0ge307 CiAgICBnZXNwZWljaGVydC5mb3JFYWNoKGZ1bmN0aW9uKGUpewogICAgICAgIGlmICghZSB8fCAh ZS5pZCkgcmV0dXJuOwogICAgICAgIHZhciB0ID0gYnlJZFtlLmlkXTsKICAgICAgICBpZiAoIXQp IHJldHVybjsKICAgICAgICBvdXQucHVzaCh7CiAgICAgICAgICAgIGlkOiB0LmlkLCB0aXRlbDog dC50aXRlbCwgbWluQnJlaXRlOiB0Lm1pbkJyZWl0ZSwgaXN0S2FjaGVsOiB0LmlzdEthY2hlbCwK ICAgICAgICAgICAgYnJlaXRlOiBfY2xhbXAoZS5icmVpdGUgfHwgdC5kZWZhdWx0QnJlaXRlLCB0 Lm1pbkJyZWl0ZSksCiAgICAgICAgICAgIHNpY2h0YmFyOiBlLnNpY2h0YmFyICE9PSBmYWxzZQog ICAgICAgIH0pOwogICAgICAgIGdlc2VoZW5bdC5pZF0gPSB0cnVlOwogICAgfSk7CiAgICB0aWxl cy5mb3JFYWNoKGZ1bmN0aW9uKHQpewogICAgICAgIGlmIChnZXNlaGVuW3QuaWRdKSByZXR1cm47 CiAgICAgICAgb3V0LnB1c2goewogICAgICAgICAgICBpZDogdC5pZCwgdGl0ZWw6IHQudGl0ZWws IG1pbkJyZWl0ZTogdC5taW5CcmVpdGUsIGlzdEthY2hlbDogdC5pc3RLYWNoZWwsCiAgICAgICAg ICAgIGJyZWl0ZTogdC5kZWZhdWx0QnJlaXRlLCBzaWNodGJhcjogdHJ1ZQogICAgICAgIH0pOwog ICAgfSk7CiAgICByZXR1cm4gb3V0Owp9CgpmdW5jdGlvbiBfcGVyc2lzdGllcmVuKCkgewogICAg dmFyIG51ciA9IF9yYXN0ZXIubWFwKGZ1bmN0aW9uKGUpeyByZXR1cm4geyBpZDogZS5pZCwgYnJl aXRlOiBlLmJyZWl0ZSwgc2ljaHRiYXI6IGUuc2ljaHRiYXIgfTsgfSk7CiAgICByZXR1cm4gYXBp KCcvYXBpL2FkbWluL3N0YXRpc3RpaycsIHsKICAgICAgICBtZXRob2Q6ICdQVVQnLAogICAgICAg IGhlYWRlcnM6IHsgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyB9LAogICAgICAg IGJvZHk6IEpTT04uc3RyaW5naWZ5KHsgc3RhdGlzdGlrTGF5b3V0OiBudXIgfSkKICAgIH0pLnRo ZW4oZnVuY3Rpb24oKXsKICAgICAgICBaLmFkbWluLnN0YXRpc3Rpa0xheW91dCA9IG51cjsKICAg ICAgICB0b2FzdCgnU3RhdGlzdGlrLUxheW91dCBnZXNwZWljaGVydCcsICdlcmZvbGcnKTsKICAg IH0pLmNhdGNoKGZ1bmN0aW9uKGUpewogICAgICAgIHRvYXN0KCdTcGVpY2hlcm4gZmVobGdlc2No bGFnZW46ICcgKyBlLm1lc3NhZ2UsICdmZWhsZXInKTsKICAgIH0pOwp9CgpmdW5jdGlvbiBfbmFl Y2hzdGVCcmVpdGUoY3VyLCBtaW5CcmVpdGUpIHsKICAgIHZhciBlcmxhdWJ0ID0gQlJFSVRFX1JF SUhFLmZpbHRlcihmdW5jdGlvbihiKXsgcmV0dXJuIEJSRUlURV9SQU5HW2JdID49IEJSRUlURV9S QU5HW21pbkJyZWl0ZV07IH0pOwogICAgdmFyIGkgPSBlcmxhdWJ0LmluZGV4T2YoY3VyKTsKICAg IGlmIChpIDwgMCkgaSA9IDA7CiAgICByZXR1cm4gZXJsYXVidFsoaSArIDEpICUgZXJsYXVidC5s ZW5ndGhdOwp9CgpmdW5jdGlvbiBfdGlsZUh0bWwoZSkgewogICAgdmFyIHNwYW4gPSBCUkVJVEVf U1BBTltlLmJyZWl0ZV0gfHwgNjsKICAgIHZhciBtaW5IaW53ZWlzID0gKGUubWluQnJlaXRlID09 PSAndm9sbCcpID8gJyA8c3BhbiBjbGFzcz0ic2wtbWluIj4obnVyIHZvbGwpPC9zcGFuPicgOiAn JzsKICAgIHJldHVybiAnPGRpdiBjbGFzcz0ic2wtdGlsZScgKyAoZS5zaWNodGJhciA/ICcnIDog JyBzbC11bnNpY2h0YmFyJykgKyAnIiAnICsKICAgICAgICAgICAgJ2RhdGEtdGlsZS1pZD0iJyAr IGVzY2FwZUF0dHIoZS5pZCkgKyAnIiBkcmFnZ2FibGU9InRydWUiICcgKwogICAgICAgICAgICAn c3R5bGU9ImdyaWQtY29sdW1uOnNwYW4gJyArIHNwYW4gKyAnIiAnICsKICAgICAgICAgICAgJ3Rp dGxlPSJLbGljayB3ZWNoc2VsdCBkaWUgQnJlaXRlLCBaaWVoZW4gw6RuZGVydCBkaWUgUmVpaGVu Zm9sZ2UiPicgKwogICAgICAgICc8ZGl2IGNsYXNzPSJzbC10aWxlLWtvcGYiPicgKwogICAgICAg ICAgICAoZS5pc3RLYWNoZWwgPyAnPHNwYW4gY2xhc3M9InNsLWJhZGdlIj5CYXVrYXN0ZW48L3Nw YW4+JyA6ICc8c3BhbiBjbGFzcz0ic2wtYmFkZ2Ugc2wtYmFkZ2UtZmVzdCI+UGFuZWw8L3NwYW4+ JykgKwogICAgICAgICAgICAnPGJ1dHRvbiBjbGFzcz0ic2wtYXVnZSIgdHlwZT0iYnV0dG9uIiBk YXRhLXNsLWF1Z2U9IicgKyBlc2NhcGVBdHRyKGUuaWQpICsgJyIgJyArCiAgICAgICAgICAgICAg ICAndGl0bGU9IicgKyAoZS5zaWNodGJhciA/ICdTaWNodGJhciDigJQgS2xpY2sgYmxlbmRldCBh dXMnIDogJ0F1c2dlYmxlbmRldCDigJQgS2xpY2sgYmxlbmRldCBlaW4nKSArICciICcgKwogICAg ICAgICAgICAgICAgJ2FyaWEtbGFiZWw9IlNpY2h0YmFya2VpdCB1bXNjaGFsdGVuIj4nICsgKGUu c2ljaHRiYXIgPyAnU2ljaHRiYXInIDogJ0F1cycpICsgJzwvYnV0dG9uPicgKwogICAgICAgICc8 L2Rpdj4nICsKICAgICAgICAnPGRpdiBjbGFzcz0ic2wtdGlsZS10aXRlbCI+JyArIGVzY2FwZUhU TUwoZS50aXRlbCkgKyAnPC9kaXY+JyArCiAgICAgICAgJzxkaXYgY2xhc3M9InNsLXRpbGUtYnJl aXRlIj4nICsgZXNjYXBlSFRNTChCUkVJVEVfTEFCRUxbZS5icmVpdGVdIHx8IGUuYnJlaXRlKSAr IG1pbkhpbndlaXMgKyAnPC9kaXY+JyArCiAgICAnPC9kaXY+JzsKfQoKZXhwb3J0IGZ1bmN0aW9u IHN0YXRpc3Rpa0xheW91dFJlbmRlcm4oKSB7CiAgICB2YXIgY29udCA9IGRvY3VtZW50LmdldEVs ZW1lbnRCeUlkKCdzdGF0aXN0aWstbGF5b3V0LWluaGFsdCcpOwogICAgaWYgKCFjb250KSByZXR1 cm47CiAgICBpZiAoIV9kYXJmRWRpdGllcmVuKCkpIHsKICAgICAgICBjb250LmlubmVySFRNTCA9 ICc8ZGl2IGNsYXNzPSJhZG1pbi1lbXB0eSI+PGRpdiBjbGFzcz0iYWRtaW4tZW1wdHktdGV4dCI+ TnVyIFN1cGVyVXNlciBkw7xyZmVuIGRhcyBTdGF0aXN0aWstTGF5b3V0IGFub3JkbmVuLjwvZGl2 PjwvZGl2Pic7CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgX3Jhc3RlciA9IF9iYXVlUmFzdGVy KCk7CiAgICBpZiAoIV9yYXN0ZXIubGVuZ3RoKSB7CiAgICAgICAgY29udC5pbm5lckhUTUwgPSAn PGRpdiBjbGFzcz0iYWRtaW4tZW1wdHkiPjxkaXYgY2xhc3M9ImFkbWluLWVtcHR5LXRleHQiPktl aW5lIFN0YXRpc3Rpay1LYWNoZWxuIHZvcmhhbmRlbi48L2Rpdj48L2Rpdj4nOwogICAgICAgIHJl dHVybjsKICAgIH0KICAgIGNvbnQuaW5uZXJIVE1MID0KICAgICAgICAnPGRpdiBjbGFzcz0ic2wt bGVnZW5kZSI+Ni1TcGFsdGVuLVJhc3RlciDigJQgc28gZXJzY2hlaW50IGRlciBTdGF0aXN0aWst VGFiIGbDvHIgYWxsZS4gJyArCiAgICAgICAgJ0tsaWNrIGF1ZiBlaW5lIEthY2hlbCB3ZWNoc2Vs dCBkaWUgQnJlaXRlICh2b2xsIOKGkiBoYWxiIOKGkiBkcml0dGVsKSwgWmllaGVuIG9yZG5ldCBu ZXUsIGRhcyBBdWdlIGJsZW5kZXQgYXVzLjwvZGl2PicgKwogICAgICAgICc8ZGl2IGlkPSJzbC1y YXN0ZXIiIGNsYXNzPSJzbC1yYXN0ZXIgc3RhdHMtZ3JpZCI+JyArIF9yYXN0ZXIubWFwKF90aWxl SHRtbCkuam9pbignJykgKyAnPC9kaXY+JzsKICAgIF92ZXJkcmFodGVuKGNvbnQpOwp9CgpmdW5j dGlvbiBfdmVyZHJhaHRlbihjb250KSB7CiAgICB2YXIgcmFzdGVyID0gZG9jdW1lbnQuZ2V0RWxl bWVudEJ5SWQoJ3NsLXJhc3RlcicpOwogICAgaWYgKCFyYXN0ZXIpIHJldHVybjsKCiAgICAvLyBL bGljazogQnJlaXRlIGN5Y2xlbiAoQXVnZS1LbGljayBzZXBhcmF0IGJlaGFuZGVsbikuCiAgICBy YXN0ZXIuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbihlKXsKICAgICAgICB2YXIg YXVnZSA9IGUudGFyZ2V0LmNsb3Nlc3QoJ1tkYXRhLXNsLWF1Z2VdJyk7CiAgICAgICAgaWYgKGF1 Z2UpIHsKICAgICAgICAgICAgdmFyIGFpZCA9IGF1Z2UuZ2V0QXR0cmlidXRlKCdkYXRhLXNsLWF1 Z2UnKTsKICAgICAgICAgICAgdmFyIGFlID0gX3Jhc3Rlci5maWx0ZXIoZnVuY3Rpb24oeCl7IHJl dHVybiB4LmlkID09PSBhaWQ7IH0pWzBdOwogICAgICAgICAgICBpZiAoYWUpIHsgYWUuc2ljaHRi YXIgPSAhYWUuc2ljaHRiYXI7IF9wZXJzaXN0aWVyZW4oKS50aGVuKGZ1bmN0aW9uKCl7IHN0YXRp c3Rpa0xheW91dFJlbmRlcm4oKTsgfSk7IH0KICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0K ICAgICAgICB2YXIgdGlsZSA9IGUudGFyZ2V0LmNsb3Nlc3QoJy5zbC10aWxlJyk7CiAgICAgICAg aWYgKCF0aWxlKSByZXR1cm47CiAgICAgICAgdmFyIGlkID0gdGlsZS5nZXRBdHRyaWJ1dGUoJ2Rh dGEtdGlsZS1pZCcpOwogICAgICAgIHZhciB0ZSA9IF9yYXN0ZXIuZmlsdGVyKGZ1bmN0aW9uKHgp eyByZXR1cm4geC5pZCA9PT0gaWQ7IH0pWzBdOwogICAgICAgIGlmICghdGUpIHJldHVybjsKICAg ICAgICB2YXIgbmV1ID0gX25hZWNoc3RlQnJlaXRlKHRlLmJyZWl0ZSwgdGUubWluQnJlaXRlKTsK ICAgICAgICBpZiAobmV1ID09PSB0ZS5icmVpdGUpIHsKICAgICAgICAgICAgdG9hc3QoJ0RpZXNl cyBQYW5lbCBpc3QgYXVmIHZvbGxlIEJyZWl0ZSBmZXN0Z2VsZWd0JywgJ2luZm8nKTsKICAgICAg ICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICB0ZS5icmVpdGUgPSBuZXU7CiAgICAgICAg X3BlcnNpc3RpZXJlbigpLnRoZW4oZnVuY3Rpb24oKXsgc3RhdGlzdGlrTGF5b3V0UmVuZGVybigp OyB9KTsKICAgIH0pOwoKICAgIC8vIERyYWcmRHJvcC1SZWloZW5mb2xnZSAoTXVzdGVyIGF1cyBh ZG1pbl9jb2Rlcy5qcykuCiAgICB2YXIgZHJhZ0lkID0gbnVsbDsKICAgIHJhc3Rlci5hZGRFdmVu dExpc3RlbmVyKCdkcmFnc3RhcnQnLCBmdW5jdGlvbihlKXsKICAgICAgICB2YXIgdGlsZSA9IGUu dGFyZ2V0LmNsb3Nlc3QoJy5zbC10aWxlJyk7CiAgICAgICAgaWYgKCF0aWxlKSByZXR1cm47CiAg ICAgICAgZHJhZ0lkID0gdGlsZS5nZXRBdHRyaWJ1dGUoJ2RhdGEtdGlsZS1pZCcpOwogICAgICAg IHRpbGUuY2xhc3NMaXN0LmFkZCgnc2wtZHJhZ2dpbmcnKTsKICAgICAgICBlLmRhdGFUcmFuc2Zl ci5lZmZlY3RBbGxvd2VkID0gJ21vdmUnOwogICAgICAgIHRyeSB7IGUuZGF0YVRyYW5zZmVyLnNl dERhdGEoJ3RleHQvcGxhaW4nLCBkcmFnSWQpOyB9IGNhdGNoIChfKSB7fQogICAgfSk7CiAgICBy YXN0ZXIuYWRkRXZlbnRMaXN0ZW5lcignZHJhZ2VuZCcsIGZ1bmN0aW9uKCl7CiAgICAgICAgcmFz dGVyLnF1ZXJ5U2VsZWN0b3JBbGwoJy5zbC10aWxlJykuZm9yRWFjaChmdW5jdGlvbih0KXsgdC5j bGFzc0xpc3QucmVtb3ZlKCdzbC1kcmFnZ2luZycsICdzbC1kcm9wLXppZWwnKTsgfSk7CiAgICB9 KTsKICAgIHJhc3Rlci5hZGRFdmVudExpc3RlbmVyKCdkcmFnb3ZlcicsIGZ1bmN0aW9uKGUpewog ICAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgICAgICB2YXIgdGlsZSA9IGUudGFyZ2V0LmNs b3Nlc3QoJy5zbC10aWxlJyk7CiAgICAgICAgcmFzdGVyLnF1ZXJ5U2VsZWN0b3JBbGwoJy5zbC1k cm9wLXppZWwnKS5mb3JFYWNoKGZ1bmN0aW9uKHQpeyB0LmNsYXNzTGlzdC5yZW1vdmUoJ3NsLWRy b3AtemllbCcpOyB9KTsKICAgICAgICBpZiAodGlsZSAmJiB0aWxlLmdldEF0dHJpYnV0ZSgnZGF0 YS10aWxlLWlkJykgIT09IGRyYWdJZCkgdGlsZS5jbGFzc0xpc3QuYWRkKCdzbC1kcm9wLXppZWwn KTsKICAgIH0pOwogICAgcmFzdGVyLmFkZEV2ZW50TGlzdGVuZXIoJ2Ryb3AnLCBmdW5jdGlvbihl KXsKICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgdmFyIHppZWwgPSBlLnRhcmdl dC5jbG9zZXN0KCcuc2wtdGlsZScpOwogICAgICAgIGlmICghemllbCB8fCAhZHJhZ0lkIHx8IHpp ZWwuZ2V0QXR0cmlidXRlKCdkYXRhLXRpbGUtaWQnKSA9PT0gZHJhZ0lkKSB7IGRyYWdJZCA9IG51 bGw7IHJldHVybjsgfQogICAgICAgIHZhciB6aWVsSWQgPSB6aWVsLmdldEF0dHJpYnV0ZSgnZGF0 YS10aWxlLWlkJyk7CiAgICAgICAgdmFyIHZvbklkeCA9IF9yYXN0ZXIuZmluZEluZGV4KGZ1bmN0 aW9uKHgpeyByZXR1cm4geC5pZCA9PT0gZHJhZ0lkOyB9KTsKICAgICAgICB2YXIgYmlzSWR4ID0g X3Jhc3Rlci5maW5kSW5kZXgoZnVuY3Rpb24oeCl7IHJldHVybiB4LmlkID09PSB6aWVsSWQ7IH0p OwogICAgICAgIGlmICh2b25JZHggPCAwIHx8IGJpc0lkeCA8IDApIHsgZHJhZ0lkID0gbnVsbDsg cmV0dXJuOyB9CiAgICAgICAgdmFyIG1vdmVkID0gX3Jhc3Rlci5zcGxpY2Uodm9uSWR4LCAxKVsw XTsKICAgICAgICAvLyBOYWNoIEVudGZlcm5lbiBnZ2YuIFppZWxpbmRleCBrb3JyaWdpZXJlbi4K ICAgICAgICBiaXNJZHggPSBfcmFzdGVyLmZpbmRJbmRleChmdW5jdGlvbih4KXsgcmV0dXJuIHgu aWQgPT09IHppZWxJZDsgfSk7CiAgICAgICAgX3Jhc3Rlci5zcGxpY2UoYmlzSWR4LCAwLCBtb3Zl ZCk7CiAgICAgICAgZHJhZ0lkID0gbnVsbDsKICAgICAgICBfcGVyc2lzdGllcmVuKCkudGhlbihm dW5jdGlvbigpeyBzdGF0aXN0aWtMYXlvdXRSZW5kZXJuKCk7IH0pOwogICAgfSk7Cn0K ### FILE: js/admin_statistik_builder.js | 30494 Ly8gPT09IGFkbWluX3N0YXRpc3Rpa19idWlsZGVyLmpzID09PQovLyBTdGF0aXN0aWstQnVpbGRl ciBpbSBBZG1pbiAoVGFiICJTdGF0aXN0aWstQnVpbGRlciIsIHVudGVyIFN0YXRpc3Rpay1MYXlv dXQpLgovLyBEQVUtdGF1Z2xpY2hlciBLbGljay1adXNhbW1lbmJhdSBlaW5lciBtZWhyZGltZW5z aW9uYWxlbiBBdXN3ZXJ0dW5nOgovLwovLyAgIERhdGVuIC0+IEZpbHRlciAtPiBEaW1lbnNpb24o ZW4pIC0+IEtlbm56YWhsIC0+IERpYWdyYW1tdHlwIC0+IEVyZ2VibmlzCi8vCi8vIERpZSBQaXBl bGluZSB3aXJkIGxpdmUgYWxzIEZsdXNzZGlhZ3JhbW0gZ2V6ZWlndDsgIlRlc3RlbiIgYmF1dCBk aWUgU3RhdGlzdGlrCi8vIChFbmdpbmUgKyBuYXRpdmUgU1ZHLUNoYXJ0cykgdW5kIHplaWd0IHNp ZSB1bnRlcmhhbGIuICJBbHMgS2FjaGVsIHNwZWljaGVybiIKLy8gbGVndCBkaWUgRGVmaW5pdGlv biBnbG9iYWwgYWIgKFBVVCAvYXBpL2FkbWluL3N0YXRpc3RpaykgLT4gZXJzY2hlaW50IGltCi8v IFN0YXRpc3Rpay1UYWIuIEVuZ2luZS9DaGFydHMga29tbWVuIGF1cyBzdGF0aXN0aWtfZW5naW5l LmpzICsgc3RhdGlzdGlrX2NoYXJ0cy5qcy4KCmltcG9ydCB7IFogfSBmcm9tICcuL2NvcmVfc3Rh dGUuanMnOwppbXBvcnQgeyBlc2NhcGVIVE1MLCBlc2NhcGVBdHRyLCBkYXR1bVN0ciB9IGZyb20g Jy4vY29yZV91dGlsLmpzJzsKaW1wb3J0IHsgdG9hc3QsIGJlc3RhZXRpZ2VuIH0gZnJvbSAnLi91 aV9kaWFsb2cuanMnOwppbXBvcnQgeyBhcGkgfSBmcm9tICcuL2NvcmVfYXBpLmpzJzsKaW1wb3J0 IHsgRElNRU5TSU9ORU4sIEtFTk5aQUhMRU4sIFBFUlNPTl9NQVNTRSwgYXVzd2VydGVuIH0gZnJv bSAnLi9zdGF0aXN0aWtfZW5naW5lLmpzJzsKaW1wb3J0IHsgZGlhZ3JhbW1UeXBlbiwgZGlhZ3Jh bW1SZW5kZXJuIH0gZnJvbSAnLi9zdGF0aXN0aWtfY2hhcnRzLmpzJzsKCnZhciBUQUdfS0FURUdP UklFTiA9IFsnRGllbnN0JywgJ1NvbmRlcmRpZW5zdCcsICdBdXMtL0ZvcnRiaWxkdW5nJywgJ1Vy bGF1YicsICdLcmFuay9LdXInLCAnRnJlaScsICdTb25zdGlnZXMnXTsKdmFyIFdPQ0hFTlRBR0Vf T1BUID0gW3sgdzogMSwgbDogJ01vJyB9LCB7IHc6IDIsIGw6ICdEaScgfSwgeyB3OiAzLCBsOiAn TWknIH0sIHsgdzogNCwgbDogJ0RvJyB9LCB7IHc6IDUsIGw6ICdGcicgfSwgeyB3OiA2LCBsOiAn U2EnIH0sIHsgdzogMCwgbDogJ1NvJyB9XTsKCnZhciBfZWRpdElkID0gbnVsbDsgICAvLyBpZCBk ZXIgZ2VyYWRlIGJlYXJiZWl0ZXRlbiBLYWNoZWwgKG51bGwgPSBuZXVlKQoKLy8gPT09PT0gWmVp dHJhdW0tSGVsZmVyIChEYXR1bSAvIEthbGVuZGVyd29jaGUgLyBRdWFydGFsIC8gR2VzYW10KSA9 PT09PQoKLy8gTW9udGFnIGRlciBJU08tS2FsZW5kZXJ3b2NoZSAod29jaGUgMSA9IGRpZSBXb2No ZSBtaXQgZGVtIDQuIEphbnVhcikuCmZ1bmN0aW9uIF9pc29Xb2NoZW5Nb250YWcoamFociwgd29j aGUpIHsKICAgIHZhciBqYW40ID0gbmV3IERhdGUoamFociwgMCwgNCk7CiAgICB2YXIgdGFnID0g KGphbjQuZ2V0RGF5KCkgKyA2KSAlIDc7ICAgICAgICAgICAgICAgICAvLyBNbz0wIOKApiBTbz02 CiAgICB2YXIgdzFNb250YWcgPSBuZXcgRGF0ZShqYW40LmdldEZ1bGxZZWFyKCksIGphbjQuZ2V0 TW9udGgoKSwgamFuNC5nZXREYXRlKCkgLSB0YWcpOwogICAgcmV0dXJuIG5ldyBEYXRlKHcxTW9u dGFnLmdldEZ1bGxZZWFyKCksIHcxTW9udGFnLmdldE1vbnRoKCksIHcxTW9udGFnLmdldERhdGUo KSArICh3b2NoZSAtIDEpICogNyk7Cn0KLy8gJ1lZWVktV3d3JyAoV2VydCBlaW5lcyA8aW5wdXQg dHlwZT0id2VlayI+KSAtPiB7IHZvbiwgYmlzIH0gYWxzIERhdHVtc3N0cmluZ3MKLy8gKE1vIOKA piBTbykuIExlZXJlci91bmd1ZWx0aWdlciBJbnB1dCAtPiBudWxsLgpmdW5jdGlvbiBfa3dHcmVu emVuKHdrU3RyKSB7CiAgICB2YXIgbSA9IC9eKFxkezR9KS1XKFxkezEsMn0pJC8uZXhlYyh3a1N0 ciB8fCAnJyk7CiAgICBpZiAoIW0pIHJldHVybiBudWxsOwogICAgdmFyIG1vID0gX2lzb1dvY2hl bk1vbnRhZyhwYXJzZUludChtWzFdLCAxMCksIHBhcnNlSW50KG1bMl0sIDEwKSk7CiAgICB2YXIg c28gPSBuZXcgRGF0ZShtby5nZXRGdWxsWWVhcigpLCBtby5nZXRNb250aCgpLCBtby5nZXREYXRl KCkgKyA2KTsKICAgIHJldHVybiB7IHZvbjogZGF0dW1TdHIobW8pLCBiaXM6IGRhdHVtU3RyKHNv KSB9Owp9Ci8vICdZWVlZLVFuJyAtPiB7IHZvbiwgYmlzIH0gKGVyc3Rlci9sZXR6dGVyIFRhZyBk ZXMgUXVhcnRhbHMpLiBudWxsIGJlaSBGZWhsZXIuCmZ1bmN0aW9uIF9xdWFydGFsR3Jlbnplbihx U3RyKSB7CiAgICB2YXIgbSA9IC9eKFxkezR9KS1RKFsxLTRdKSQvLmV4ZWMocVN0ciB8fCAnJyk7 CiAgICBpZiAoIW0pIHJldHVybiBudWxsOwogICAgdmFyIGphaHIgPSBwYXJzZUludChtWzFdLCAx MCksIHEgPSBwYXJzZUludChtWzJdLCAxMCk7CiAgICB2YXIgc3RhcnRNb25hdCA9IChxIC0gMSkg KiAzOyAgICAgICAgICAgICAgICAgICAgICAgLy8gMCwzLDYsOQogICAgdmFyIHZvbiA9IG5ldyBE YXRlKGphaHIsIHN0YXJ0TW9uYXQsIDEpOwogICAgdmFyIGJpcyA9IG5ldyBEYXRlKGphaHIsIHN0 YXJ0TW9uYXQgKyAzLCAwKTsgICAgICAgIC8vIFRhZyAwID0gbGV0enRlciBUYWcgZGVzIFZvcm1v bmF0cwogICAgcmV0dXJuIHsgdm9uOiBkYXR1bVN0cih2b24pLCBiaXM6IGRhdHVtU3RyKGJpcykg fTsKfQovLyBEaXN0aW5rdGUgSmFocmUgYXVzIGRlbiBQbGFuZGF0ZW4gKGZ1ZXIgZGllIFF1YXJ0 YWxzLURyb3Bkb3ducyk7IEZhbGxiYWNrIGF1ZgovLyBkYXMgUGxhbnVuZ3NqYWhyIGF1cyBhZG1p bi5qc29uIGJ6dy4gZGFzIGFrdHVlbGxlIEphaHIuCmZ1bmN0aW9uIF9kYXRlbkphaHJlKCkgewog ICAgdmFyIHNldCA9IHt9OwogICAgdmFyIGVpbnRyID0gKFoucGxhbnVuZyAmJiBaLnBsYW51bmcu ZWludHJhZWdlKSB8fCB7fTsKICAgIE9iamVjdC5rZXlzKGVpbnRyKS5mb3JFYWNoKGZ1bmN0aW9u KGQpeyBpZiAoZCAmJiBkLmxlbmd0aCA+PSA0KSBzZXRbZC5zdWJzdHJpbmcoMCwgNCldID0gdHJ1 ZTsgfSk7CiAgICB2YXIgamFocmUgPSBPYmplY3Qua2V5cyhzZXQpLnNvcnQoKTsKICAgIGlmICgh amFocmUubGVuZ3RoKSBqYWhyZSA9IFtTdHJpbmcoKFouYWRtaW4gJiYgWi5hZG1pbi5qYWhyKSB8 fCBuZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKCkpXTsKICAgIHJldHVybiBqYWhyZTsKfQoKZnVuY3Rp b24gX2RhcmYoKSB7IHJldHVybiAhIShaLnJlY2h0ZSAmJiAoWi5yZWNodGUuaXN0U3VwZXJVc2Vy IHx8IFoucmVjaHRlLmlzdEdlc2FtdHZlcmFudHdvcnRsaWNoIHx8IChaLnJlY2h0ZS5pc3RGYWNo YXVmc2ljaHQgJiYgWi5yZWNodGUuc2VoZW4gJiYgWi5yZWNodGUuc2VoZW4uYWRtaW5pc3RyYXRp b24pKSk7IH0KCmZ1bmN0aW9uIF9zdGFuZGFyZFNwZWMoKSB7CiAgICByZXR1cm4gewogICAgICAg IHY6IDIsIGlkOiBudWxsLCB0aXRlbDogJycsCiAgICAgICAgZGlhZ3JhbW06ICdiYWxrZW4nLAog ICAgICAgIHplaXRNb2R1czogJ2RhdHVtJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv LyBkYXR1bSB8IGt3IHwgcXVhcnRhbCB8IGdlc2FtdAogICAgICAgIHplaXRWb246ICcnLCB6ZWl0 QmlzOiAnJywgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aXJrc2FtZXIgQmVyZWljaCAoRW5n aW5lKTsgYmVpIGt3L3F1YXJ0YWwgYWJnZWxlaXRldAogICAgICAgIHplaXRLd1ZvbjogJycsIHpl aXRLd0JpczogJycsICAgICAgICAgICAgICAgICAgICAvLyBSb2gtRWluZ2FiZW4gS2FsZW5kZXJ3 b2NoZSAoJ1lZWVktV3d3JykKICAgICAgICB6ZWl0UVZvbjogJycsIHplaXRRQmlzOiAnJywgICAg ICAgICAgICAgICAgICAgICAgLy8gUm9oLUVpbmdhYmVuIFF1YXJ0YWwgKCdZWVlZLVFuJykKICAg ICAgICBmaWx0ZXI6IHsgcGVyc29uZW46IFtdLCBncnVwcGVuOiBbXSwgZnVua3Rpb25lbjogW10s IHN0YW5kb3J0ZTogW10sIGRpZW5zdGdyYWRlOiBbXSwgY29kZXM6IFtdLCBrYXRlZ29yaWVuOiBb XSwgd29jaGVudGFnZTogW10sIG51ckRpZW5zdDogZmFsc2UsIG51cldFOiBmYWxzZSwgbnVyRmVp ZXJ0YWc6IGZhbHNlLCBudXJGZWllcnRhZ0J1bmQ6IGZhbHNlLCBudXJGZWllcnRhZ05SVzogZmFs c2UgfSwKICAgICAgICBkaW1YOiAnZ3J1cHBlJywgZGltU2VyaWU6ICcnLCBrZW5uemFobDogJ2Fu emFobCcsCiAgICAgICAgc2NhdHRlclg6ICduYWNodCcsIHNjYXR0ZXJZOiAndXJsYXViJywKICAg ICAgICBzb3J0OiAnd2VydC1kZXNjJywgdG9wTjogMAogICAgfTsKfQoKLy8gPT09PT0gUmVuZGVy ID09PT09CgpleHBvcnQgZnVuY3Rpb24gc3RhdGlzdGlrQnVpbGRlclJlbmRlcm4oKSB7CiAgICB2 YXIgY29udCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzdGF0aXN0aWstYnVpbGRlci1pbmhh bHQnKTsKICAgIGlmICghY29udCkgcmV0dXJuOwogICAgaWYgKCFfZGFyZigpKSB7CiAgICAgICAg Y29udC5pbm5lckhUTUwgPSAnPGRpdiBjbGFzcz0iYWRtaW4tZW1wdHkiPjxkaXYgY2xhc3M9ImFk bWluLWVtcHR5LXRleHQiPk51ciBTdXBlclVzZXIsIEdlc2FtdHZlcmFudHdvcnRsaWNoZSB1bmQg QWRtaW5zIGTDvHJmZW4gU3RhdGlzdGlrZW4gYmF1ZW4uPC9kaXY+PC9kaXY+JzsKICAgICAgICBy ZXR1cm47CiAgICB9CiAgICB2YXIgc3BlYyA9IF9lZGl0SWQgPyAoX2thY2hlbEZpbmRlbihfZWRp dElkKSB8fCBfc3RhbmRhcmRTcGVjKCkpIDogX3N0YW5kYXJkU3BlYygpOwogICAgY29udC5pbm5l ckhUTUwgPQogICAgICAgICc8ZGl2IGNsYXNzPSJibGQtZ3JpZCI+JyArCiAgICAgICAgICAgICc8 ZGl2IGNsYXNzPSJibGQtc3BhbHRlLWZvcm0iPicgKyBfZm9ybUh0bWwoc3BlYykgKyAnPC9kaXY+ JyArCiAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJibGQtc3BhbHRlLWF1cyI+JyArCiAgICAgICAg ICAgICAgICAnPGRpdiBjbGFzcz0iYmxkLWZsdXNzIiBpZD0iYmxkLWZsdXNzIj48L2Rpdj4nICsK ICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJibGQtYWt0aW9uZW4iPicgKwogICAgICAgICAg ICAgICAgICAgICc8YnV0dG9uIGNsYXNzPSJidG4gYnRuLXByaW1hZXIiIHR5cGU9ImJ1dHRvbiIg aWQ9ImJsZC10ZXN0ZW4iPuKWtiBUZXN0ZW48L2J1dHRvbj4nICsKICAgICAgICAgICAgICAgICAg ICAnPGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1zZWsiIHR5cGU9ImJ1dHRvbiIgaWQ9ImJsZC1zcGVp Y2hlcm4iPicgKyAoX2VkaXRJZCA/ICfDhG5kZXJ1bmdlbiBzcGVpY2hlcm4nIDogJ0FscyBLYWNo ZWwgc3BlaWNoZXJuJykgKyAnPC9idXR0b24+JyArCiAgICAgICAgICAgICAgICAgICAgKF9lZGl0 SWQgPyAnPGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1zZWsiIHR5cGU9ImJ1dHRvbiIgaWQ9ImJsZC1u ZXUiPk5ldTwvYnV0dG9uPicgOiAnJykgKwogICAgICAgICAgICAgICAgJzwvZGl2PicgKwogICAg ICAgICAgICAgICAgJzxkaXYgY2xhc3M9ImJsZC1lcmdlYm5pcyIgaWQ9ImJsZC1lcmdlYm5pcyI+ PGRpdiBjbGFzcz0iYmxkLWVyZ2VibmlzLWhpbnQiPktvbmZpZ3VyYXRpb24gbGlua3Mgd8OkaGxl biB1bmQgYXVmIDxiPlRlc3RlbjwvYj4ga2xpY2tlbi48L2Rpdj48L2Rpdj4nICsKICAgICAgICAg ICAgJzwvZGl2PicgKwogICAgICAgICc8L2Rpdj4nICsKICAgICAgICAnPGRpdiBjbGFzcz0iYmxk LWxpc3RlIiBpZD0iYmxkLWxpc3RlIj4nICsgX2xpc3RlSHRtbCgpICsgJzwvZGl2Pic7CiAgICBf dmVyZHJhaHRlbihjb250KTsKICAgIF9mbHVzc0FrdHVhbGlzaWVyZW4oKTsKICAgIF90ZXN0ZW4o KTsgLy8gZGlyZWt0ZSBWb3JzY2hhdQp9CgovLyAtLS0tLSBGb3JtdWxhciAtLS0tLQoKZnVuY3Rp b24gX2NoaXBHcnVwcGUoZ3JwLCB0aXRlbCwgb3B0aW9uZW4sIHNlbGVjdGVkKSB7CiAgICB2YXIg Y2hpcHMgPSBvcHRpb25lbi5tYXAoZnVuY3Rpb24obykgewogICAgICAgIHZhciBhbiA9IHNlbGVj dGVkLmluZGV4T2Yoby53ZXJ0KSA+PSAwOwogICAgICAgIHJldHVybiAnPGxhYmVsIGNsYXNzPSJi bGQtY2hpcCcgKyAoYW4gPyAnIGFuJyA6ICcnKSArICciPjxpbnB1dCB0eXBlPSJjaGVja2JveCIg ZGF0YS1jaGlwPSInICsgZXNjYXBlQXR0cihncnApICsgJyIgdmFsdWU9IicgKyBlc2NhcGVBdHRy KFN0cmluZyhvLndlcnQpKSArICciJyArIChhbiA/ICcgY2hlY2tlZCcgOiAnJykgKyAnPjxzcGFu PicgKyBlc2NhcGVIVE1MKG8ubGFiZWwpICsgJzwvc3Bhbj48L2xhYmVsPic7CiAgICB9KS5qb2lu KCcnKTsKICAgIHJldHVybiAnPGRpdiBjbGFzcz0iYmxkLWZlbGQiPjxzcGFuIGNsYXNzPSJibGQt ZmVsZC10aXRlbCI+JyArIGVzY2FwZUhUTUwodGl0ZWwpICsgJzwvc3Bhbj48ZGl2IGNsYXNzPSJi bGQtY2hpcHMiIGRhdGEtY2hpcGdycD0iJyArIGVzY2FwZUF0dHIoZ3JwKSArICciPicgKyBjaGlw cyArICc8L2Rpdj48L2Rpdj4nOwp9CgovLyBQZXJzb25lbnNjaGFyZmUgQXVzd2FobCwgbmFjaCBE aWVuc3RncnVwcGUgKEEvQi9DLCBXRCwgVkQsIOKApikgZ3J1cHBpZXJ0LAovLyBtaXQgImFsbGUv a2VpbmUiLVNjaG5lbGxzY2hhbHRlciBqZSBHcnVwcGUuIFdlcnRlIHNpbmQgUGVyc29uLUlEcyAo U3RyaW5nKS4KZnVuY3Rpb24gX3BlcnNvbmVuU2VrdGlvbkh0bWwoc2VsZWN0ZWQpIHsKICAgIHNl bGVjdGVkID0gKHNlbGVjdGVkIHx8IFtdKS5tYXAoU3RyaW5nKTsKICAgIHZhciBieUdycCA9IHt9 OwogICAgKFoucGVyc29uZW4gfHwgW10pLmZvckVhY2goZnVuY3Rpb24ocCkgewogICAgICAgIHZh ciBnID0gcC5ncnVwcGUgfHwgJ+KAlCc7CiAgICAgICAgKGJ5R3JwW2ddIHx8IChieUdycFtnXSA9 IFtdKSkucHVzaChwKTsKICAgIH0pOwogICAgdmFyIG9yZGVyID0gKFouYWRtaW4uZ3J1cHBlbiB8 fCBbXSkubWFwKGZ1bmN0aW9uKGcpeyByZXR1cm4gZy5uYW1lOyB9KTsKICAgIHZhciBncnBOYW1l biA9IG9yZGVyLmZpbHRlcihmdW5jdGlvbihuKXsgcmV0dXJuIGJ5R3JwW25dOyB9KQogICAgICAg IC5jb25jYXQoT2JqZWN0LmtleXMoYnlHcnApLmZpbHRlcihmdW5jdGlvbihuKXsgcmV0dXJuIG9y ZGVyLmluZGV4T2YobikgPCAwOyB9KSk7CiAgICB2YXIgYmxvY2tzID0gZ3JwTmFtZW4ubWFwKGZ1 bmN0aW9uKGduKSB7CiAgICAgICAgdmFyIGdPYmogPSAoWi5hZG1pbi5ncnVwcGVuIHx8IFtdKS5m aWx0ZXIoZnVuY3Rpb24oeCl7IHJldHVybiB4Lm5hbWUgPT09IGduOyB9KVswXTsKICAgICAgICB2 YXIgZ0xhYmVsID0gZ09iaiA/IChnT2JqLmJlemVpY2hudW5nIHx8IGdPYmoubmFtZSkgOiAoZ24g PT09ICfigJQnID8gJ29obmUgR3J1cHBlJyA6IGduKTsKICAgICAgICB2YXIgbGV1dGUgPSBieUdy cFtnbl0uc2xpY2UoKS5zb3J0KGZ1bmN0aW9uKGEsIGIpeyByZXR1cm4gKGEubmFtZSB8fCAnJyku bG9jYWxlQ29tcGFyZShiLm5hbWUgfHwgJycsICdkZScpOyB9KTsKICAgICAgICB2YXIgY2hpcHMg PSBsZXV0ZS5tYXAoZnVuY3Rpb24ocCkgewogICAgICAgICAgICB2YXIgaWQgPSBTdHJpbmcocC5p ZCk7CiAgICAgICAgICAgIHZhciBhbiA9IHNlbGVjdGVkLmluZGV4T2YoaWQpID49IDA7CiAgICAg ICAgICAgIHZhciBubSA9IChwLm5hbWUgfHwgJycpICsgKHAudm9ybmFtZSA/ICgnLCAnICsgcC52 b3JuYW1lKSA6ICcnKTsKICAgICAgICAgICAgcmV0dXJuICc8bGFiZWwgY2xhc3M9ImJsZC1jaGlw JyArIChhbiA/ICcgYW4nIDogJycpICsgJyIgZGF0YS1wZ3JwPSInICsgZXNjYXBlQXR0cihnbikg KyAnIj4nICsKICAgICAgICAgICAgICAgICc8aW5wdXQgdHlwZT0iY2hlY2tib3giIGRhdGEtY2hp cD0icGVyc29uZW4iIHZhbHVlPSInICsgZXNjYXBlQXR0cihpZCkgKyAnIicgKyAoYW4gPyAnIGNo ZWNrZWQnIDogJycpICsgJz48c3Bhbj4nICsgZXNjYXBlSFRNTChubSkgKyAnPC9zcGFuPjwvbGFi ZWw+JzsKICAgICAgICB9KS5qb2luKCcnKTsKICAgICAgICByZXR1cm4gJzxkaXYgY2xhc3M9ImJs ZC1wZXJzLWdycCI+JyArCiAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJibGQtcGVycy1ncnAta29w ZiI+PHNwYW4+JyArIGVzY2FwZUhUTUwoZ0xhYmVsKSArICcgPHNwYW4gY2xhc3M9ImJsZC1wZXJz LXphaGwiPignICsgbGV1dGUubGVuZ3RoICsgJyk8L3NwYW4+PC9zcGFuPicgKwogICAgICAgICAg ICAnPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4gYnRuLW1pbmkiIGRhdGEtZ3JwLXRv Z2dsZT0iJyArIGVzY2FwZUF0dHIoZ24pICsgJyI+YWxsZSAvIGtlaW5lPC9idXR0b24+PC9kaXY+ JyArCiAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJibGQtY2hpcHMiPicgKyBjaGlwcyArICc8L2Rp dj48L2Rpdj4nOwogICAgfSkuam9pbignJyk7CiAgICB2YXIgYW56YWhsID0gKFoucGVyc29uZW4g fHwgW10pLmxlbmd0aDsKICAgIHJldHVybiAnPGRldGFpbHMgY2xhc3M9ImJsZC1zZWt0aW9uIj48 c3VtbWFyeT5FaW56ZWxuZSBQZXJzb25lbiBhdXN3w6RobGVuICgnICsgYW56YWhsICsgJyk8L3N1 bW1hcnk+JyArCiAgICAgICAgJzxwIGNsYXNzPSJibGQtcGVycy1oaW53ZWlzIj5CZXN0aW1tdGUg TWl0YXJiZWl0ZXIgZ2V6aWVsdCBlaW5iZXppZWhlbiDigJQgei5CLiBtZWhyZXJlIGF1cyBERyBB L0IvQyBvZGVyIFdhY2gtL1ZlcmtlaHJzZGllbnN0LCB1bmQgbWl0IERpbWVuc2lvbiDigJ5QZXJz b24iIGRpcmVrdCB2ZXJnbGVpY2hlbi4gTmljaHRzIGdld8OkaGx0ID0gYWxsZS48L3A+JyArCiAg ICAgICAgKGJsb2NrcyB8fCAnPGRpdiBjbGFzcz0iYmxkLWxpc3RlLWxlZXIiPktlaW5lIFBlcnNv bmVuIGdlbGFkZW4uPC9kaXY+JykgKyAnPC9kZXRhaWxzPic7Cn0KCmZ1bmN0aW9uIF9vcHQobGlz dGUsIHNlbCkgewogICAgcmV0dXJuIGxpc3RlLm1hcChmdW5jdGlvbihvKSB7CiAgICAgICAgcmV0 dXJuICc8b3B0aW9uIHZhbHVlPSInICsgZXNjYXBlQXR0cihvLndlcnQpICsgJyInICsgKG8ud2Vy dCA9PT0gc2VsID8gJyBzZWxlY3RlZCcgOiAnJykgKyAnPicgKyBlc2NhcGVIVE1MKG8ubGFiZWwp ICsgJzwvb3B0aW9uPic7CiAgICB9KS5qb2luKCcnKTsKfQoKLy8gWmVpdHJhdW0tQmxvY2s6IE1v ZHVzLUF1c3dhaGwgKERhdHVtIC8gS2FsZW5kZXJ3b2NoZSAvIFF1YXJ0YWwgLyBHZXNhbXQpICsK Ly8gZGllIHp1bSBNb2R1cyBwYXNzZW5kZW4gRWluZ2FiZW4uIFNpY2h0YmFya2VpdCBzdGV1ZXJ0 IF96ZWl0U2ljaHRiYXJrZWl0KCkuCmZ1bmN0aW9uIF96ZWl0cmF1bUh0bWwoc3BlYykgewogICAg dmFyIG1vZHVzID0gc3BlYy56ZWl0TW9kdXMgfHwgJ2RhdHVtJzsKICAgIHZhciBxdWFydE9wdCA9 ICc8b3B0aW9uIHZhbHVlPSIiPuKAlCB3w6RobGVuIOKAlDwvb3B0aW9uPicgKyBfZGF0ZW5KYWhy ZSgpLm1hcChmdW5jdGlvbihqKSB7CiAgICAgICAgcmV0dXJuIFsxLCAyLCAzLCA0XS5tYXAoZnVu Y3Rpb24ocSkgewogICAgICAgICAgICB2YXIgdyA9IGogKyAnLVEnICsgcTsKICAgICAgICAgICAg cmV0dXJuICc8b3B0aW9uIHZhbHVlPSInICsgZXNjYXBlQXR0cih3KSArICciPlEnICsgcSArICcg JyArIGVzY2FwZUhUTUwoaikgKyAnPC9vcHRpb24+JzsKICAgICAgICB9KS5qb2luKCcnKTsKICAg IH0pLmpvaW4oJycpOwogICAgZnVuY3Rpb24gcVNlbChpZCwgdmFsKSB7CiAgICAgICAgcmV0dXJu ICc8c2VsZWN0IGlkPSInICsgaWQgKyAnIiBjbGFzcz0iZm9ybS1pbnB1dCI+JyArIHF1YXJ0T3B0 LnJlcGxhY2UoJ3ZhbHVlPSInICsgZXNjYXBlQXR0cih2YWwpICsgJyInLCAndmFsdWU9IicgKyBl c2NhcGVBdHRyKHZhbCkgKyAnIiBzZWxlY3RlZCcpICsgJzwvc2VsZWN0Pic7CiAgICB9CiAgICBy ZXR1cm4gJycgKwogICAgJzxkaXYgY2xhc3M9ImJsZC1mZWxkIj48c3BhbiBjbGFzcz0iYmxkLWZl bGQtdGl0ZWwiPlplaXRyYXVtPC9zcGFuPicgKwogICAgICAgICc8c2VsZWN0IGlkPSJibGQtemVp dG1vZHVzIiBjbGFzcz0iZm9ybS1pbnB1dCI+JyArCiAgICAgICAgICAgICc8b3B0aW9uIHZhbHVl PSJkYXR1bSInICsgKG1vZHVzID09PSAnZGF0dW0nID8gJyBzZWxlY3RlZCcgOiAnJykgKyAnPlZv buKAk0JpcyAoVGFnIGdlbmF1KTwvb3B0aW9uPicgKwogICAgICAgICAgICAnPG9wdGlvbiB2YWx1 ZT0ia3ciJyArIChtb2R1cyA9PT0gJ2t3JyA/ICcgc2VsZWN0ZWQnIDogJycpICsgJz5LYWxlbmRl cndvY2hlbiAodm9u4oCTYmlzKTwvb3B0aW9uPicgKwogICAgICAgICAgICAnPG9wdGlvbiB2YWx1 ZT0icXVhcnRhbCInICsgKG1vZHVzID09PSAncXVhcnRhbCcgPyAnIHNlbGVjdGVkJyA6ICcnKSAr ICc+UXVhcnRhbGUgKHZvbuKAk2Jpcyk8L29wdGlvbj4nICsKICAgICAgICAgICAgJzxvcHRpb24g dmFsdWU9Imdlc2FtdCInICsgKG1vZHVzID09PSAnZ2VzYW10JyA/ICcgc2VsZWN0ZWQnIDogJycp ICsgJz5HZXNhbXQgKGFsbGUgRGF0ZW4pPC9vcHRpb24+JyArCiAgICAgICAgJzwvc2VsZWN0Pjwv ZGl2PicgKwogICAgJzxkaXYgY2xhc3M9ImJsZC1mZWxkIGJsZC1mZWxkLTIiIGRhdGEtemVpdD0i ZGF0dW0iJyArIChtb2R1cyA9PT0gJ2RhdHVtJyA/ICcnIDogJyBzdHlsZT0iZGlzcGxheTpub25l IicpICsgJz4nICsKICAgICAgICAnPGxhYmVsIGNsYXNzPSJibGQtbWluaSI+Vm9uPGlucHV0IGlk PSJibGQtdm9uIiBjbGFzcz0iZm9ybS1pbnB1dCIgdHlwZT0iZGF0ZSIgdmFsdWU9IicgKyBlc2Nh cGVBdHRyKHNwZWMuemVpdFZvbiB8fCAnJykgKyAnIj48L2xhYmVsPicgKwogICAgICAgICc8bGFi ZWwgY2xhc3M9ImJsZC1taW5pIj5CaXM8aW5wdXQgaWQ9ImJsZC1iaXMiIGNsYXNzPSJmb3JtLWlu cHV0IiB0eXBlPSJkYXRlIiB2YWx1ZT0iJyArIGVzY2FwZUF0dHIoc3BlYy56ZWl0QmlzIHx8ICcn KSArICciPjwvbGFiZWw+PC9kaXY+JyArCiAgICAnPGRpdiBjbGFzcz0iYmxkLWZlbGQgYmxkLWZl bGQtMiIgZGF0YS16ZWl0PSJrdyInICsgKG1vZHVzID09PSAna3cnID8gJycgOiAnIHN0eWxlPSJk aXNwbGF5Om5vbmUiJykgKyAnPicgKwogICAgICAgICc8bGFiZWwgY2xhc3M9ImJsZC1taW5pIj5W b24gS1c8aW5wdXQgaWQ9ImJsZC1rdy12b24iIGNsYXNzPSJmb3JtLWlucHV0IiB0eXBlPSJ3ZWVr IiB2YWx1ZT0iJyArIGVzY2FwZUF0dHIoc3BlYy56ZWl0S3dWb24gfHwgJycpICsgJyI+PC9sYWJl bD4nICsKICAgICAgICAnPGxhYmVsIGNsYXNzPSJibGQtbWluaSI+QmlzIEtXPGlucHV0IGlkPSJi bGQta3ctYmlzIiBjbGFzcz0iZm9ybS1pbnB1dCIgdHlwZT0id2VlayIgdmFsdWU9IicgKyBlc2Nh cGVBdHRyKHNwZWMuemVpdEt3QmlzIHx8ICcnKSArICciPjwvbGFiZWw+PC9kaXY+JyArCiAgICAn PGRpdiBjbGFzcz0iYmxkLWZlbGQgYmxkLWZlbGQtMiIgZGF0YS16ZWl0PSJxdWFydGFsIicgKyAo bW9kdXMgPT09ICdxdWFydGFsJyA/ICcnIDogJyBzdHlsZT0iZGlzcGxheTpub25lIicpICsgJz4n ICsKICAgICAgICAnPGxhYmVsIGNsYXNzPSJibGQtbWluaSI+Vm9uIFF1YXJ0YWwnICsgcVNlbCgn YmxkLXEtdm9uJywgc3BlYy56ZWl0UVZvbiB8fCAnJykgKyAnPC9sYWJlbD4nICsKICAgICAgICAn PGxhYmVsIGNsYXNzPSJibGQtbWluaSI+QmlzIFF1YXJ0YWwnICsgcVNlbCgnYmxkLXEtYmlzJywg c3BlYy56ZWl0UUJpcyB8fCAnJykgKyAnPC9sYWJlbD48L2Rpdj4nICsKICAgICc8ZGl2IGNsYXNz PSJibGQtZmVsZCIgZGF0YS16ZWl0PSJnZXNhbXQiJyArIChtb2R1cyA9PT0gJ2dlc2FtdCcgPyAn JyA6ICcgc3R5bGU9ImRpc3BsYXk6bm9uZSInKSArICc+JyArCiAgICAgICAgJzxwIGNsYXNzPSJi bGQtcGVycy1oaW53ZWlzIj5FcyB3ZXJkZW4gYWxsZSB2b3JoYW5kZW5lbiBQbGFuZGF0ZW4gb2hu ZSBaZWl0YmVncmVuenVuZyBhdXNnZXdlcnRldC48L3A+PC9kaXY+JzsKfQoKZnVuY3Rpb24gX2Zv cm1IdG1sKHNwZWMpIHsKICAgIHZhciBmaSA9IHNwZWMuZmlsdGVyIHx8IHt9OwogICAgdmFyIGdy T3B0ID0gKFouYWRtaW4uZ3J1cHBlbiB8fCBbXSkubWFwKGZ1bmN0aW9uKGcpeyByZXR1cm4geyB3 ZXJ0OiBnLm5hbWUsIGxhYmVsOiBnLmJlemVpY2hudW5nIHx8IGcubmFtZSB9OyB9KTsKICAgIHZh ciBmbk9wdCA9IChaLmFkbWluLmZ1bmt0aW9uZW4gfHwgW10pLm1hcChmdW5jdGlvbihmKXsgcmV0 dXJuIHsgd2VydDogKGYuY29kZSB8fCBmKSwgbGFiZWw6IChmLmNvZGUgfHwgZikgfTsgfSk7CiAg ICB2YXIgc3RPcHQgPSAoWi5hZG1pbi5zdGFuZG9ydGUgfHwgW10pLm1hcChmdW5jdGlvbihzKXsg cmV0dXJuIHsgd2VydDogcy5rdWVyemVsLCBsYWJlbDogcy5rdWVyemVsIH07IH0pOwogICAgdmFy IGRnT3B0ID0gKFouYWRtaW4uZGllbnN0Z3JhZGUgfHwgW10pLm1hcChmdW5jdGlvbihkKXsgcmV0 dXJuIHsgd2VydDogKGQuY29kZSB8fCBkKSwgbGFiZWw6IChkLmNvZGUgfHwgZCkgfTsgfSk7CiAg ICB2YXIgY29PcHQgPSAoWi5hZG1pbi5zY2hpY2h0Y29kZXMgfHwgW10pLmZpbHRlcihmdW5jdGlv bihjKXsgcmV0dXJuIGMuYWt0aXYgIT09IGZhbHNlOyB9KS5tYXAoZnVuY3Rpb24oYyl7IHJldHVy biB7IHdlcnQ6IGMuY29kZSwgbGFiZWw6IGMuY29kZSB9OyB9KTsKICAgIHZhciBrYXRPcHQgPSBU QUdfS0FURUdPUklFTi5tYXAoZnVuY3Rpb24oayl7IHJldHVybiB7IHdlcnQ6IGssIGxhYmVsOiBr IH07IH0pOwogICAgdmFyIHdkT3B0ID0gV09DSEVOVEFHRV9PUFQubWFwKGZ1bmN0aW9uKHcpeyBy ZXR1cm4geyB3ZXJ0OiB3LncsIGxhYmVsOiB3LmwgfTsgfSk7CgogICAgdmFyIGRpbUxpc3RlID0g RElNRU5TSU9ORU4ubWFwKGZ1bmN0aW9uKGQpeyByZXR1cm4geyB3ZXJ0OiBkLmtleSwgbGFiZWw6 IGQubGFiZWwgfTsgfSk7CiAgICB2YXIgZGltU2VyaWVMaXN0ZSA9IFt7IHdlcnQ6ICcnLCBsYWJl bDogJ+KAlCBrZWluZSDigJQnIH1dLmNvbmNhdChkaW1MaXN0ZSk7CiAgICB2YXIga3pMaXN0ZSA9 IEtFTk5aQUhMRU4ubWFwKGZ1bmN0aW9uKGspeyByZXR1cm4geyB3ZXJ0OiBrLmtleSwgbGFiZWw6 IGsubGFiZWwgfTsgfSk7CiAgICB2YXIgcG1MaXN0ZSA9IFBFUlNPTl9NQVNTRS5tYXAoZnVuY3Rp b24ocCl7IHJldHVybiB7IHdlcnQ6IHAua2V5LCBsYWJlbDogcC5sYWJlbCB9OyB9KTsKICAgIHZh ciBkdExpc3RlID0gZGlhZ3JhbW1UeXBlbigpLm1hcChmdW5jdGlvbih0KXsgcmV0dXJuIHsgd2Vy dDogdC5rZXksIGxhYmVsOiB0LmxhYmVsIH07IH0pOwoKICAgIHJldHVybiAnJyArCiAgICAnPGRp diBjbGFzcz0iYmxkLWZlbGQiPjxzcGFuIGNsYXNzPSJibGQtZmVsZC10aXRlbCI+VGl0ZWwgZGVy IEthY2hlbDwvc3Bhbj4nICsKICAgICAgICAnPGlucHV0IGlkPSJibGQtdGl0ZWwiIGNsYXNzPSJm b3JtLWlucHV0IiB0eXBlPSJ0ZXh0IiBtYXhsZW5ndGg9IjYwIiBwbGFjZWhvbGRlcj0iei5CLiBO YWNodGRpZW5zdGUgamUgRGllbnN0Z3J1cHBlIiB2YWx1ZT0iJyArIGVzY2FwZUF0dHIoc3BlYy50 aXRlbCB8fCAnJykgKyAnIj48L2Rpdj4nICsKICAgICc8ZGl2IGNsYXNzPSJibGQtZmVsZCI+PHNw YW4gY2xhc3M9ImJsZC1mZWxkLXRpdGVsIj5EaWFncmFtbXR5cDwvc3Bhbj4nICsKICAgICAgICAn PHNlbGVjdCBpZD0iYmxkLWRpYWdyYW1tIiBjbGFzcz0iZm9ybS1pbnB1dCI+JyArIF9vcHQoZHRM aXN0ZSwgc3BlYy5kaWFncmFtbSkgKyAnPC9zZWxlY3Q+PC9kaXY+JyArCgogICAgJzxkZXRhaWxz IGNsYXNzPSJibGQtc2VrdGlvbiIgb3Blbj48c3VtbWFyeT5EYXRlbiAmYW1wOyBGaWx0ZXI8L3N1 bW1hcnk+JyArCiAgICAgICAgX3plaXRyYXVtSHRtbChzcGVjKSArCiAgICAgICAgX2NoaXBHcnVw cGUoJ2dydXBwZW4nLCAnRGllbnN0Z3J1cHBlbicsIGdyT3B0LCBmaS5ncnVwcGVuIHx8IFtdKSAr CiAgICAgICAgX2NoaXBHcnVwcGUoJ2Z1bmt0aW9uZW4nLCAnRnVua3Rpb25lbicsIGZuT3B0LCBm aS5mdW5rdGlvbmVuIHx8IFtdKSArCiAgICAgICAgX2NoaXBHcnVwcGUoJ3N0YW5kb3J0ZScsICdT dGFuZG9ydGUnLCBzdE9wdCwgZmkuc3RhbmRvcnRlIHx8IFtdKSArCiAgICAgICAgX2NoaXBHcnVw cGUoJ2RpZW5zdGdyYWRlJywgJ0RpZW5zdGdyYWRlJywgZGdPcHQsIGZpLmRpZW5zdGdyYWRlIHx8 IFtdKSArCiAgICAgICAgX2NoaXBHcnVwcGUoJ2thdGVnb3JpZW4nLCAnVGFnLUthdGVnb3JpZW4n LCBrYXRPcHQsIGZpLmthdGVnb3JpZW4gfHwgW10pICsKICAgICAgICBfY2hpcEdydXBwZSgnY29k ZXMnLCAnU2NoaWNodGNvZGVzJywgY29PcHQsIGZpLmNvZGVzIHx8IFtdKSArCiAgICAgICAgX2No aXBHcnVwcGUoJ3dvY2hlbnRhZ2UnLCAnV29jaGVudGFnZScsIHdkT3B0LCAoZmkud29jaGVudGFn ZSB8fCBbXSkubWFwKFN0cmluZykpICsKICAgICAgICAnPGRpdiBjbGFzcz0iYmxkLXRvZ2dsZXMi PicgKwogICAgICAgICAgICAnPGxhYmVsIGNsYXNzPSJibGQtdG9nZ2xlIj48aW5wdXQgdHlwZT0i Y2hlY2tib3giIGlkPSJibGQtbnVyRGllbnN0IicgKyAoZmkubnVyRGllbnN0ID8gJyBjaGVja2Vk JyA6ICcnKSArICc+IG51ciBEaWVuc3RlPC9sYWJlbD4nICsKICAgICAgICAgICAgJzxsYWJlbCBj bGFzcz0iYmxkLXRvZ2dsZSI+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBpZD0iYmxkLW51cldFIicg KyAoZmkubnVyV0UgPyAnIGNoZWNrZWQnIDogJycpICsgJz4gbnVyIFdvY2hlbmVuZGU8L2xhYmVs PicgKwogICAgICAgICAgICAnPGxhYmVsIGNsYXNzPSJibGQtdG9nZ2xlIj48aW5wdXQgdHlwZT0i Y2hlY2tib3giIGlkPSJibGQtbnVyRmVpZXJ0YWciJyArIChmaS5udXJGZWllcnRhZyA/ICcgY2hl Y2tlZCcgOiAnJykgKyAnPiBudXIgRmVpZXJ0YWdlPC9sYWJlbD4nICsKICAgICAgICAgICAgJzxs YWJlbCBjbGFzcz0iYmxkLXRvZ2dsZSI+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBpZD0iYmxkLW51 ckZlaWVydGFnQnVuZCInICsgKGZpLm51ckZlaWVydGFnQnVuZCA/ICcgY2hlY2tlZCcgOiAnJykg KyAnPiBudXIgYnVuZGVzd2VpdGUgRmVpZXJ0YWdlPC9sYWJlbD4nICsKICAgICAgICAgICAgJzxs YWJlbCBjbGFzcz0iYmxkLXRvZ2dsZSI+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBpZD0iYmxkLW51 ckZlaWVydGFnTlJXIicgKyAoZmkubnVyRmVpZXJ0YWdOUlcgPyAnIGNoZWNrZWQnIDogJycpICsg Jz4gbnVyIE5SVy1GZWllcnRhZ2U8L2xhYmVsPicgKwogICAgICAgICc8L2Rpdj4nICsKICAgICAg ICAnPHAgY2xhc3M9ImJsZC1wZXJzLWhpbndlaXMiPkZlaWVydGFnZSB3ZXJkZW4gYnVuZGVzd2Vp dCBiencuIE5SVy1zcGV6aWZpc2NoIChGcm9ubGVpY2huYW0sIEFsbGVyaGVpbGlnZW4pIGVya2Fu bnQuIFp1bSBBdWZzY2hsw7xzc2VsbiBkaWUgRGltZW5zaW9uIOKAnkZlaWVydGFnIChOYW1lKSIg b2RlciDigJ5GZWllcnRhZyAoQnVuZC9OUlcpIiB3w6RobGVuLjwvcD4nICsKICAgICc8L2RldGFp bHM+JyArCgogICAgX3BlcnNvbmVuU2VrdGlvbkh0bWwoZmkucGVyc29uZW4gfHwgW10pICsKCiAg ICAnPGRldGFpbHMgY2xhc3M9ImJsZC1zZWt0aW9uIiBvcGVuPjxzdW1tYXJ5PkF1c3dlcnR1bmc8 L3N1bW1hcnk+JyArCiAgICAgICAgJzxkaXYgY2xhc3M9ImJsZC1mZWxkIiBkYXRhLW51cj0ia2F0 ZWdvcmlhbCI+PHNwYW4gY2xhc3M9ImJsZC1mZWxkLXRpdGVsIj5EaW1lbnNpb24gKFgtQWNoc2Up PC9zcGFuPicgKwogICAgICAgICAgICAnPHNlbGVjdCBpZD0iYmxkLWRpbVgiIGNsYXNzPSJmb3Jt LWlucHV0Ij4nICsgX29wdChkaW1MaXN0ZSwgc3BlYy5kaW1YKSArICc8L3NlbGVjdD48L2Rpdj4n ICsKICAgICAgICAnPGRpdiBjbGFzcz0iYmxkLWZlbGQiIGRhdGEtbnVyPSJrYXRlZ29yaWFsIj48 c3BhbiBjbGFzcz0iYmxkLWZlbGQtdGl0ZWwiPjIuIERpbWVuc2lvbiAoU2VyaWUvU3RhcGVsL01h dHJpeCk8L3NwYW4+JyArCiAgICAgICAgICAgICc8c2VsZWN0IGlkPSJibGQtZGltU2VyaWUiIGNs YXNzPSJmb3JtLWlucHV0Ij4nICsgX29wdChkaW1TZXJpZUxpc3RlLCBzcGVjLmRpbVNlcmllIHx8 ICcnKSArICc8L3NlbGVjdD48L2Rpdj4nICsKICAgICAgICAnPGRpdiBjbGFzcz0iYmxkLWZlbGQi IGRhdGEtbnVyPSJrYXRlZ29yaWFsIj48c3BhbiBjbGFzcz0iYmxkLWZlbGQtdGl0ZWwiPktlbm56 YWhsPC9zcGFuPicgKwogICAgICAgICAgICAnPHNlbGVjdCBpZD0iYmxkLWtlbm56YWhsIiBjbGFz cz0iZm9ybS1pbnB1dCI+JyArIF9vcHQoa3pMaXN0ZSwgc3BlYy5rZW5uemFobCkgKyAnPC9zZWxl Y3Q+PC9kaXY+JyArCiAgICAgICAgJzxkaXYgY2xhc3M9ImJsZC1mZWxkIGJsZC1mZWxkLTIiIGRh dGEtbnVyPSJzY2F0dGVyIiBzdHlsZT0iZGlzcGxheTpub25lIj4nICsKICAgICAgICAgICAgJzxs YWJlbCBjbGFzcz0iYmxkLW1pbmkiPlgtTWHDnyAocHJvIFBlcnNvbik8c2VsZWN0IGlkPSJibGQt c2NhdHRlclgiIGNsYXNzPSJmb3JtLWlucHV0Ij4nICsgX29wdChwbUxpc3RlLCBzcGVjLnNjYXR0 ZXJYKSArICc8L3NlbGVjdD48L2xhYmVsPicgKwogICAgICAgICAgICAnPGxhYmVsIGNsYXNzPSJi bGQtbWluaSI+WS1NYcOfIChwcm8gUGVyc29uKTxzZWxlY3QgaWQ9ImJsZC1zY2F0dGVyWSIgY2xh c3M9ImZvcm0taW5wdXQiPicgKyBfb3B0KHBtTGlzdGUsIHNwZWMuc2NhdHRlclkpICsgJzwvc2Vs ZWN0PjwvbGFiZWw+PC9kaXY+JyArCiAgICAgICAgJzxkaXYgY2xhc3M9ImJsZC1mZWxkIGJsZC1m ZWxkLTIiIGRhdGEtbnVyPSJrYXRlZ29yaWFsIj48bGFiZWwgY2xhc3M9ImJsZC1taW5pIj5Tb3J0 aWVydW5nPHNlbGVjdCBpZD0iYmxkLXNvcnQiIGNsYXNzPSJmb3JtLWlucHV0Ij4nICsKICAgICAg ICAgICAgJzxvcHRpb24gdmFsdWU9IndlcnQtZGVzYyInICsgKHNwZWMuc29ydCA9PT0gJ3dlcnQt ZGVzYycgPyAnIHNlbGVjdGVkJyA6ICcnKSArICc+SMO2Y2hzdGVyIHp1ZXJzdDwvb3B0aW9uPicg KwogICAgICAgICAgICAnPG9wdGlvbiB2YWx1ZT0id2VydC1hc2MiJyArIChzcGVjLnNvcnQgPT09 ICd3ZXJ0LWFzYycgPyAnIHNlbGVjdGVkJyA6ICcnKSArICc+TmllZHJpZ3N0ZXIgenVlcnN0PC9v cHRpb24+JyArCiAgICAgICAgICAgICc8b3B0aW9uIHZhbHVlPSJsYWJlbCInICsgKHNwZWMuc29y dCA9PT0gJ2xhYmVsJyA/ICcgc2VsZWN0ZWQnIDogJycpICsgJz5OYWNoIEJlemVpY2hudW5nPC9v cHRpb24+JyArCiAgICAgICAgJzwvc2VsZWN0PjwvbGFiZWw+JyArCiAgICAgICAgJzxsYWJlbCBj bGFzcz0iYmxkLW1pbmkiPkJlZ3JlbnplbjxzZWxlY3QgaWQ9ImJsZC10b3BuIiBjbGFzcz0iZm9y bS1pbnB1dCI+JyArCiAgICAgICAgICAgIFswLCA1LCAxMCwgMTUsIDIwLCAzMF0ubWFwKGZ1bmN0 aW9uKG4peyByZXR1cm4gJzxvcHRpb24gdmFsdWU9IicgKyBuICsgJyInICsgKHNwZWMudG9wTiA9 PT0gbiA/ICcgc2VsZWN0ZWQnIDogJycpICsgJz4nICsgKG4gPT09IDAgPyAnQWxsZScgOiAnVG9w ICcgKyBuKSArICc8L29wdGlvbj4nOyB9KS5qb2luKCcnKSArCiAgICAgICAgJzwvc2VsZWN0Pjwv bGFiZWw+PC9kaXY+JyArCiAgICAnPC9kZXRhaWxzPic7Cn0KCi8vIC0tLS0tIFNwZWMgYXVzIEZv cm11bGFyIGxlc2VuIC0tLS0tCgpmdW5jdGlvbiBfdmFsKGlkKSB7IHZhciBlID0gZG9jdW1lbnQu Z2V0RWxlbWVudEJ5SWQoaWQpOyByZXR1cm4gZSA/IGUudmFsdWUgOiAnJzsgfQpmdW5jdGlvbiBf Y2hrKGlkKSB7IHZhciBlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpOyByZXR1cm4gISEo ZSAmJiBlLmNoZWNrZWQpOyB9CmZ1bmN0aW9uIF9jaGlwcyhncnApIHsKICAgIHZhciBvdXQgPSBb XTsKICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1tkYXRhLWNoaXA9IicgKyBncnAgKyAn Il06Y2hlY2tlZCcpLmZvckVhY2goZnVuY3Rpb24oYyl7IG91dC5wdXNoKGMudmFsdWUpOyB9KTsK ICAgIHJldHVybiBvdXQ7Cn0KCi8vIEF1cyBkZW0gWmVpdHJhdW0tTW9kdXMgZGVuIHdpcmtzYW1l biBEYXR1bXNiZXJlaWNoICh6ZWl0Vm9uL3plaXRCaXMpIGFibGVpdGVuLgovLyBrdy9xdWFydGFs IHdlcmRlbiBhdWYgVGFnZXNncmVuemVuIHVtZ2VyZWNobmV0LCAnZ2VzYW10JyBsb2VzY2h0IGRl biBCZXJlaWNoLgpmdW5jdGlvbiBfemVpdEJlcmVpY2gobW9kdXMsIHJvaCkgewogICAgaWYgKG1v ZHVzID09PSAnZ2VzYW10JykgcmV0dXJuIHsgdm9uOiAnJywgYmlzOiAnJyB9OwogICAgaWYgKG1v ZHVzID09PSAna3cnKSB7CiAgICAgICAgdmFyIGt2ID0gX2t3R3Jlbnplbihyb2gua3dWb24pLCBr YiA9IF9rd0dyZW56ZW4ocm9oLmt3QmlzKTsKICAgICAgICByZXR1cm4geyB2b246IGt2ID8ga3Yu dm9uIDogJycsIGJpczoga2IgPyBrYi5iaXMgOiAnJyB9OwogICAgfQogICAgaWYgKG1vZHVzID09 PSAncXVhcnRhbCcpIHsKICAgICAgICB2YXIgcXYgPSBfcXVhcnRhbEdyZW56ZW4ocm9oLnFWb24p LCBxYiA9IF9xdWFydGFsR3Jlbnplbihyb2gucUJpcyk7CiAgICAgICAgcmV0dXJuIHsgdm9uOiBx diA/IHF2LnZvbiA6ICcnLCBiaXM6IHFiID8gcWIuYmlzIDogJycgfTsKICAgIH0KICAgIHJldHVy biB7IHZvbjogcm9oLnZvbiwgYmlzOiByb2guYmlzIH07ICAgICAgICAgICAgICAgLy8gJ2RhdHVt Jwp9CgpmdW5jdGlvbiBfc3BlY0F1c0Zvcm0oKSB7CiAgICB2YXIgbW9kdXMgPSBfdmFsKCdibGQt emVpdG1vZHVzJykgfHwgJ2RhdHVtJzsKICAgIHZhciBrd1ZvbiA9IF92YWwoJ2JsZC1rdy12b24n KSwga3dCaXMgPSBfdmFsKCdibGQta3ctYmlzJyk7CiAgICB2YXIgcVZvbiA9IF92YWwoJ2JsZC1x LXZvbicpLCAgcUJpcyA9IF92YWwoJ2JsZC1xLWJpcycpOwogICAgdmFyIGJlcmVpY2ggPSBfemVp dEJlcmVpY2gobW9kdXMsIHsKICAgICAgICB2b246IF92YWwoJ2JsZC12b24nKSwgYmlzOiBfdmFs KCdibGQtYmlzJyksCiAgICAgICAga3dWb246IGt3Vm9uLCBrd0Jpczoga3dCaXMsIHFWb246IHFW b24sIHFCaXM6IHFCaXMKICAgIH0pOwogICAgcmV0dXJuIHsKICAgICAgICB2OiAyLAogICAgICAg IGlkOiBfZWRpdElkLAogICAgICAgIHRpdGVsOiAoX3ZhbCgnYmxkLXRpdGVsJykgfHwgJycpLnRy aW0oKSwKICAgICAgICBkaWFncmFtbTogX3ZhbCgnYmxkLWRpYWdyYW1tJykgfHwgJ2JhbGtlbics CiAgICAgICAgemVpdE1vZHVzOiBtb2R1cywKICAgICAgICB6ZWl0Vm9uOiBiZXJlaWNoLnZvbiwK ICAgICAgICB6ZWl0QmlzOiBiZXJlaWNoLmJpcywKICAgICAgICB6ZWl0S3dWb246IGt3Vm9uLCB6 ZWl0S3dCaXM6IGt3QmlzLAogICAgICAgIHplaXRRVm9uOiBxVm9uLCB6ZWl0UUJpczogcUJpcywK ICAgICAgICBmaWx0ZXI6IHsKICAgICAgICAgICAgcGVyc29uZW46IF9jaGlwcygncGVyc29uZW4n KSwKICAgICAgICAgICAgZ3J1cHBlbjogX2NoaXBzKCdncnVwcGVuJyksCiAgICAgICAgICAgIGZ1 bmt0aW9uZW46IF9jaGlwcygnZnVua3Rpb25lbicpLAogICAgICAgICAgICBzdGFuZG9ydGU6IF9j aGlwcygnc3RhbmRvcnRlJyksCiAgICAgICAgICAgIGRpZW5zdGdyYWRlOiBfY2hpcHMoJ2RpZW5z dGdyYWRlJyksCiAgICAgICAgICAgIGthdGVnb3JpZW46IF9jaGlwcygna2F0ZWdvcmllbicpLAog ICAgICAgICAgICBjb2RlczogX2NoaXBzKCdjb2RlcycpLAogICAgICAgICAgICB3b2NoZW50YWdl OiBfY2hpcHMoJ3dvY2hlbnRhZ2UnKS5tYXAoZnVuY3Rpb24oeCl7IHJldHVybiBwYXJzZUludCh4 LCAxMCk7IH0pLAogICAgICAgICAgICBudXJEaWVuc3Q6IF9jaGsoJ2JsZC1udXJEaWVuc3QnKSwK ICAgICAgICAgICAgbnVyV0U6IF9jaGsoJ2JsZC1udXJXRScpLAogICAgICAgICAgICBudXJGZWll cnRhZzogX2NoaygnYmxkLW51ckZlaWVydGFnJyksCiAgICAgICAgICAgIG51ckZlaWVydGFnQnVu ZDogX2NoaygnYmxkLW51ckZlaWVydGFnQnVuZCcpLAogICAgICAgICAgICBudXJGZWllcnRhZ05S VzogX2NoaygnYmxkLW51ckZlaWVydGFnTlJXJykKICAgICAgICB9LAogICAgICAgIGRpbVg6IF92 YWwoJ2JsZC1kaW1YJykgfHwgJ2dydXBwZScsCiAgICAgICAgZGltU2VyaWU6IF92YWwoJ2JsZC1k aW1TZXJpZScpIHx8ICcnLAogICAgICAgIGtlbm56YWhsOiBfdmFsKCdibGQta2VubnphaGwnKSB8 fCAnYW56YWhsJywKICAgICAgICBzY2F0dGVyWDogX3ZhbCgnYmxkLXNjYXR0ZXJYJykgfHwgJ25h Y2h0JywKICAgICAgICBzY2F0dGVyWTogX3ZhbCgnYmxkLXNjYXR0ZXJZJykgfHwgJ3VybGF1Yics CiAgICAgICAgc29ydDogX3ZhbCgnYmxkLXNvcnQnKSB8fCAnd2VydC1kZXNjJywKICAgICAgICB0 b3BOOiBwYXJzZUludChfdmFsKCdibGQtdG9wbicpIHx8ICcwJywgMTApIHx8IDAKICAgIH07Cn0K Ci8vIC0tLS0tIEZsdXNzZGlhZ3JhbW0gKGxpdmUpIC0tLS0tCgpmdW5jdGlvbiBfZmx1c3NBa3R1 YWxpc2llcmVuKCkgewogICAgdmFyIHppZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYmxk LWZsdXNzJyk7CiAgICBpZiAoIXppZWwpIHJldHVybjsKICAgIHZhciBzcGVjID0gX3NwZWNBdXNG b3JtKCk7CiAgICB2YXIgc2NhdHRlciA9IHNwZWMuZGlhZ3JhbW0gPT09ICdzY2F0dGVyJzsKICAg IHZhciBkdExhYmVsID0gKGRpYWdyYW1tVHlwZW4oKS5maWx0ZXIoZnVuY3Rpb24odCl7IHJldHVy biB0LmtleSA9PT0gc3BlYy5kaWFncmFtbTsgfSlbMF0gfHwge30pLmxhYmVsIHx8IHNwZWMuZGlh Z3JhbW07CiAgICB2YXIgZGltWExhYmVsID0gKERJTUVOU0lPTkVOLmZpbHRlcihmdW5jdGlvbihk KXsgcmV0dXJuIGQua2V5ID09PSBzcGVjLmRpbVg7IH0pWzBdIHx8IHt9KS5sYWJlbCB8fCBzcGVj LmRpbVg7CiAgICB2YXIgZGltU0xhYmVsID0gc3BlYy5kaW1TZXJpZSA/IChESU1FTlNJT05FTi5m aWx0ZXIoZnVuY3Rpb24oZCl7IHJldHVybiBkLmtleSA9PT0gc3BlYy5kaW1TZXJpZTsgfSlbMF0g fHwge30pLmxhYmVsIDogJyc7CiAgICB2YXIga3pMYWJlbCA9IChLRU5OWkFITEVOLmZpbHRlcihm dW5jdGlvbihrKXsgcmV0dXJuIGsua2V5ID09PSBzcGVjLmtlbm56YWhsOyB9KVswXSB8fCB7fSku bGFiZWwgfHwgc3BlYy5rZW5uemFobDsKICAgIHZhciBwbVggPSAoUEVSU09OX01BU1NFLmZpbHRl cihmdW5jdGlvbihwKXsgcmV0dXJuIHAua2V5ID09PSBzcGVjLnNjYXR0ZXJYOyB9KVswXSB8fCB7 fSkubGFiZWwgfHwgc3BlYy5zY2F0dGVyWDsKICAgIHZhciBwbVkgPSAoUEVSU09OX01BU1NFLmZp bHRlcihmdW5jdGlvbihwKXsgcmV0dXJuIHAua2V5ID09PSBzcGVjLnNjYXR0ZXJZOyB9KVswXSB8 fCB7fSkubGFiZWwgfHwgc3BlYy5zY2F0dGVyWTsKCiAgICB2YXIgc3RhdGlvbmVuID0gW3sgdDog J1BsYW5kYXRlbicsIHM6ICdhbGxlIEVpbnRyw6RnZScgfSwgeyB0OiAnRmlsdGVyJywgczogX2Zp bHRlckt1cnooc3BlYykgfV07CiAgICBpZiAoc2NhdHRlcikgewogICAgICAgIHN0YXRpb25lbi5w dXNoKHsgdDogJ0tvcnJlbGF0aW9uJywgczogcG1YICsgJyDDlyAnICsgcG1ZICsgJyBqZSBQZXJz b24nIH0pOwogICAgfSBlbHNlIHsKICAgICAgICBzdGF0aW9uZW4ucHVzaCh7IHQ6ICdEaW1lbnNp b24nLCBzOiBkaW1YTGFiZWwgKyAoZGltU0xhYmVsID8gJyDDlyAnICsgZGltU0xhYmVsIDogJycp IH0pOwogICAgICAgIHN0YXRpb25lbi5wdXNoKHsgdDogJ0tlbm56YWhsJywgczoga3pMYWJlbCB9 KTsKICAgIH0KICAgIHN0YXRpb25lbi5wdXNoKHsgdDogJ0RpYWdyYW1tJywgczogZHRMYWJlbCB9 KTsKCiAgICB6aWVsLmlubmVySFRNTCA9ICc8ZGl2IGNsYXNzPSJmbHVzcy10aXRlbCI+TG9naWsg ZGllc2VyIFN0YXRpc3RpazwvZGl2PjxkaXYgY2xhc3M9ImZsdXNzLWtldHRlIj4nICsKICAgICAg ICBzdGF0aW9uZW4ubWFwKGZ1bmN0aW9uKHN0LCBpKSB7CiAgICAgICAgICAgIHJldHVybiAoaSA/ ICc8c3BhbiBjbGFzcz0iZmx1c3MtcGZlaWwiPuKGkjwvc3Bhbj4nIDogJycpICsKICAgICAgICAg ICAgICAgICc8ZGl2IGNsYXNzPSJmbHVzcy1zdGF0aW9uIj48ZGl2IGNsYXNzPSJmbHVzcy10Ij4n ICsgZXNjYXBlSFRNTChzdC50KSArICc8L2Rpdj48ZGl2IGNsYXNzPSJmbHVzcy1zIj4nICsgZXNj YXBlSFRNTChzdC5zKSArICc8L2Rpdj48L2Rpdj4nOwogICAgICAgIH0pLmpvaW4oJycpICsgJzwv ZGl2Pic7Cn0KCmZ1bmN0aW9uIF9maWx0ZXJLdXJ6KHNwZWMpIHsKICAgIHZhciBmaSA9IHNwZWMu ZmlsdGVyIHx8IHt9LCB0ZWlsZSA9IFtdOwogICAgaWYgKGZpLnBlcnNvbmVuICYmIGZpLnBlcnNv bmVuLmxlbmd0aCkgdGVpbGUucHVzaChmaS5wZXJzb25lbi5sZW5ndGggKyAnIFBlcnNvbmVuJyk7 CiAgICBbJ2dydXBwZW4nLCAnZnVua3Rpb25lbicsICdzdGFuZG9ydGUnLCAnZGllbnN0Z3JhZGUn LCAna2F0ZWdvcmllbicsICdjb2RlcyddLmZvckVhY2goZnVuY3Rpb24oaykgewogICAgICAgIGlm IChmaVtrXSAmJiBmaVtrXS5sZW5ndGgpIHRlaWxlLnB1c2goZmlba10ubGVuZ3RoICsgJ8OXICcg KyBrKTsKICAgIH0pOwogICAgaWYgKGZpLndvY2hlbnRhZ2UgJiYgZmkud29jaGVudGFnZS5sZW5n dGgpIHRlaWxlLnB1c2goZmkud29jaGVudGFnZS5sZW5ndGggKyAnw5cgV29jaGVudGFnJyk7CiAg ICBpZiAoZmkubnVyRGllbnN0KSB0ZWlsZS5wdXNoKCdudXIgRGllbnN0ZScpOwogICAgaWYgKGZp Lm51cldFKSB0ZWlsZS5wdXNoKCdudXIgV0UnKTsKICAgIGlmIChmaS5udXJGZWllcnRhZykgdGVp bGUucHVzaCgnbnVyIEZlaWVydGFnZScpOwogICAgaWYgKGZpLm51ckZlaWVydGFnQnVuZCkgdGVp bGUucHVzaCgnbnVyIGJ1bmRlc3dlaXRlIEZUJyk7CiAgICBpZiAoZmkubnVyRmVpZXJ0YWdOUlcp IHRlaWxlLnB1c2goJ251ciBOUlctRlQnKTsKICAgIHZhciB6bCA9IF96ZWl0cmF1bUt1cnooc3Bl Yyk7CiAgICBpZiAoemwpIHRlaWxlLnB1c2goemwpOwogICAgcmV0dXJuIHRlaWxlLmxlbmd0aCA/ IHRlaWxlLmpvaW4oJywgJykgOiAna2VpbiBGaWx0ZXInOwp9CgovLyBLdXJ6YmVzY2hyaWZ0dW5n IGRlcyBha3RpdmVuIFplaXRyYXVtcyBmdWVyIGRhcyBGbHVzc2RpYWdyYW1tLgpmdW5jdGlvbiBf emVpdHJhdW1LdXJ6KHNwZWMpIHsKICAgIHZhciBtID0gc3BlYy56ZWl0TW9kdXMgfHwgJ2RhdHVt JzsKICAgIGlmIChtID09PSAnZ2VzYW10JykgcmV0dXJuICdHZXNhbXQnOwogICAgaWYgKG0gPT09 ICdrdycpIHJldHVybiAoc3BlYy56ZWl0S3dWb24gfHwgc3BlYy56ZWl0S3dCaXMpID8gJ0tXLUJl cmVpY2gnIDogJyc7CiAgICBpZiAobSA9PT0gJ3F1YXJ0YWwnKSByZXR1cm4gKHNwZWMuemVpdFFW b24gfHwgc3BlYy56ZWl0UUJpcykgPyAnUXVhcnRhbHMtQmVyZWljaCcgOiAnJzsKICAgIHJldHVy biAoc3BlYy56ZWl0Vm9uIHx8IHNwZWMuemVpdEJpcykgPyAnWmVpdHJhdW0nIDogJyc7Cn0KCi8v IC0tLS0tIFRlc3RlbiAtLS0tLQoKZnVuY3Rpb24gX3Rlc3RlbigpIHsKICAgIHZhciB6aWVsID0g ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2JsZC1lcmdlYm5pcycpOwogICAgaWYgKCF6aWVsKSBy ZXR1cm47CiAgICB2YXIgc3BlYyA9IF9zcGVjQXVzRm9ybSgpOwogICAgdHJ5IHsKICAgICAgICB2 YXIgZXJnID0gYXVzd2VydGVuKHNwZWMpOwogICAgICAgIHZhciBhbm9uID0gZmFsc2U7IC8vIEJ1 aWxkZXIgemVpZ3QgS2xhcmRhdGVuIChBZG1pbi1Lb250ZXh0KQogICAgICAgIHppZWwuaW5uZXJI VE1MID0gJzxkaXYgY2xhc3M9ImJsZC1lcmdlYm5pcy10aXRlbCI+JyArIGVzY2FwZUhUTUwoc3Bl Yy50aXRlbCB8fCAnVm9yc2NoYXUnKSArICc8L2Rpdj4nICsKICAgICAgICAgICAgJzxkaXYgY2xh c3M9ImJsZC1lcmdlYm5pcy1jaGFydCI+JyArIGRpYWdyYW1tUmVuZGVybihzcGVjLmRpYWdyYW1t LCBlcmcsIHNwZWMpICsgJzwvZGl2Pic7CiAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgemllbC5p bm5lckhUTUwgPSAnPGRpdiBjbGFzcz0icmVuZGVyLWZlaGxlci1ib3giPjxkaXYgY2xhc3M9InJl bmRlci1mZWhsZXItdGV4dCI+PGRpdiBjbGFzcz0icmVuZGVyLWZlaGxlci10aXRlbCI+RmVobGVy IGJlaW0gQmF1ZW48L2Rpdj48ZGl2IGNsYXNzPSJyZW5kZXItZmVobGVyLWRldGFpbCI+JyArIGVz Y2FwZUhUTUwoZS5tZXNzYWdlIHx8IFN0cmluZyhlKSkgKyAnPC9kaXY+PC9kaXY+PC9kaXY+JzsK ICAgICAgICB0cnkgeyBjb25zb2xlLmVycm9yKCdbc3RhdGlzdGlrLWJ1aWxkZXJdJywgZSk7IH0g Y2F0Y2ggKF8pIHt9CiAgICB9Cn0KCi8vIC0tLS0tIFNwZWljaGVybiAvIExpc3RlIC0tLS0tCgpm dW5jdGlvbiBfa2FjaGVsRmluZGVuKGlkKSB7CiAgICB2YXIgYXJyID0gKFouYWRtaW4gJiYgWi5h ZG1pbi5zdGF0aXN0aWtLYWNoZWxuKSB8fCBbXTsKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJy Lmxlbmd0aDsgaSsrKSBpZiAoYXJyW2ldLmlkID09PSBpZCkgcmV0dXJuIGFycltpXTsKICAgIHJl dHVybiBudWxsOwp9CmZ1bmN0aW9uIF9uZXVlSWQoKSB7CiAgICB2YXIgbWF4ID0gMDsKICAgICgo Wi5hZG1pbiAmJiBaLmFkbWluLnN0YXRpc3Rpa0thY2hlbG4pIHx8IFtdKS5mb3JFYWNoKGZ1bmN0 aW9uKGspIHsKICAgICAgICB2YXIgbSA9IC9ea18oXGQrKSQvLmV4ZWMoay5pZCB8fCAnJyk7IGlm IChtKSBtYXggPSBNYXRoLm1heChtYXgsIHBhcnNlSW50KG1bMV0sIDEwKSk7CiAgICB9KTsKICAg IHJldHVybiAna18nICsgKG1heCArIDEpOwp9CmZ1bmN0aW9uIF9wZXJzaXN0KGxpc3RlLCBvbk9r KSB7CiAgICBhcGkoJy9hcGkvYWRtaW4vc3RhdGlzdGlrJywgeyBtZXRob2Q6ICdQVVQnLCBoZWFk ZXJzOiB7ICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicgfSwgYm9keTogSlNPTi5z dHJpbmdpZnkoeyBzdGF0aXN0aWtLYWNoZWxuOiBsaXN0ZSB9KSB9KQogICAgICAgIC50aGVuKGZ1 bmN0aW9uKCl7IFouYWRtaW4uc3RhdGlzdGlrS2FjaGVsbiA9IGxpc3RlOyBvbk9rKCk7IH0pCiAg ICAgICAgLmNhdGNoKGZ1bmN0aW9uKGUpeyB0b2FzdCgnU3BlaWNoZXJuIGZlaGxnZXNjaGxhZ2Vu OiAnICsgZS5tZXNzYWdlLCAnZmVobGVyJyk7IH0pOwp9CmZ1bmN0aW9uIF9zcGVpY2hlcm4oKSB7 CiAgICB2YXIgc3BlYyA9IF9zcGVjQXVzRm9ybSgpOwogICAgaWYgKCFzcGVjLnRpdGVsKSB7IHRv YXN0KCdCaXR0ZSBlaW5lbiBUaXRlbCB2ZXJnZWJlbicsICd3YXJudW5nJyk7IHJldHVybjsgfQog ICAgc3BlYy5pZCA9IF9lZGl0SWQgfHwgX25ldWVJZCgpOwogICAgdmFyIGxpc3RlID0gKChaLmFk bWluICYmIFouYWRtaW4uc3RhdGlzdGlrS2FjaGVsbikgfHwgW10pLnNsaWNlKCk7CiAgICB2YXIg aWR4ID0gLTE7CiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxpc3RlLmxlbmd0aDsgaSsrKSBpZiAo bGlzdGVbaV0uaWQgPT09IHNwZWMuaWQpIHsgaWR4ID0gaTsgYnJlYWs7IH0KICAgIGlmIChpZHgg Pj0gMCkgbGlzdGVbaWR4XSA9IHNwZWM7IGVsc2UgbGlzdGUucHVzaChzcGVjKTsKICAgIF9wZXJz aXN0KGxpc3RlLCBmdW5jdGlvbigpIHsKICAgICAgICBfZWRpdElkID0gc3BlYy5pZDsKICAgICAg ICB0b2FzdChpZHggPj0gMCA/ICdLYWNoZWwgZ2VzcGVpY2hlcnQnIDogJ0thY2hlbCBhbmdlbGVn dCDigJQgZXJzY2hlaW50IGltIFN0YXRpc3Rpay1UYWInLCAnZXJmb2xnJyk7CiAgICAgICAgc3Rh dGlzdGlrQnVpbGRlclJlbmRlcm4oKTsKICAgIH0pOwp9CmZ1bmN0aW9uIF9sb2VzY2hlbihpZCkg ewogICAgYmVzdGFldGlnZW4oJ0RpZXNlIFN0YXRpc3Rpay1LYWNoZWwgZsO8ciBhbGxlIGzDtnNj aGVuPycsIGZ1bmN0aW9uKCkgewogICAgICAgIHZhciBsaXN0ZSA9ICgoWi5hZG1pbiAmJiBaLmFk bWluLnN0YXRpc3Rpa0thY2hlbG4pIHx8IFtdKS5maWx0ZXIoZnVuY3Rpb24oayl7IHJldHVybiBr LmlkICE9PSBpZDsgfSk7CiAgICAgICAgdmFyIGxheW91dCA9ICgoWi5hZG1pbiAmJiBaLmFkbWlu LnN0YXRpc3Rpa0xheW91dCkgfHwgW10pLmZpbHRlcihmdW5jdGlvbihlKXsgcmV0dXJuIGUuaWQg IT09IGlkOyB9KTsKICAgICAgICBhcGkoJy9hcGkvYWRtaW4vc3RhdGlzdGlrJywgeyBtZXRob2Q6 ICdQVVQnLCBoZWFkZXJzOiB7ICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicgfSwg Ym9keTogSlNPTi5zdHJpbmdpZnkoeyBzdGF0aXN0aWtLYWNoZWxuOiBsaXN0ZSwgc3RhdGlzdGlr TGF5b3V0OiBsYXlvdXQgfSkgfSkKICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24oKSB7CiAgICAg ICAgICAgICAgICBaLmFkbWluLnN0YXRpc3Rpa0thY2hlbG4gPSBsaXN0ZTsgWi5hZG1pbi5zdGF0 aXN0aWtMYXlvdXQgPSBsYXlvdXQ7CiAgICAgICAgICAgICAgICBpZiAoX2VkaXRJZCA9PT0gaWQp IF9lZGl0SWQgPSBudWxsOwogICAgICAgICAgICAgICAgdG9hc3QoJ0thY2hlbCBnZWzDtnNjaHQn LCAnZXJmb2xnJyk7CiAgICAgICAgICAgICAgICBzdGF0aXN0aWtCdWlsZGVyUmVuZGVybigpOwog ICAgICAgICAgICB9KS5jYXRjaChmdW5jdGlvbihlKXsgdG9hc3QoJ0zDtnNjaGVuIGZlaGxnZXNj aGxhZ2VuOiAnICsgZS5tZXNzYWdlLCAnZmVobGVyJyk7IH0pOwogICAgfSwgeyBqYVRleHQ6ICdM w7ZzY2hlbicsIGphRGFuZ2VyOiB0cnVlIH0pOwp9CmZ1bmN0aW9uIF9saXN0ZUh0bWwoKSB7CiAg ICB2YXIgYXJyID0gKFouYWRtaW4gJiYgWi5hZG1pbi5zdGF0aXN0aWtLYWNoZWxuKSB8fCBbXTsK ICAgIGlmICghYXJyLmxlbmd0aCkgcmV0dXJuICc8ZGl2IGNsYXNzPSJibGQtbGlzdGUtdGl0ZWwi PlZvcmhhbmRlbmUgS2FjaGVsbjwvZGl2PjxkaXYgY2xhc3M9ImJsZC1saXN0ZS1sZWVyIj5Ob2No IGtlaW5lIEthY2hlbG4gZ2ViYXV0LjwvZGl2Pic7CiAgICB2YXIgZHQgPSBkaWFncmFtbVR5cGVu KCk7CiAgICB2YXIgaXRlbXMgPSBhcnIubWFwKGZ1bmN0aW9uKGspIHsKICAgICAgICB2YXIgdHlw ID0gKGR0LmZpbHRlcihmdW5jdGlvbih0KXsgcmV0dXJuIHQua2V5ID09PSBrLmRpYWdyYW1tOyB9 KVswXSB8fCB7fSkubGFiZWwgfHwgKGsuZGlhZ3JhbW0gPyBrLmRpYWdyYW1tIDogJ1Jhbmtpbmcg KGFsdCknKTsKICAgICAgICByZXR1cm4gJzxkaXYgY2xhc3M9ImJsZC1saXN0ZS1pdGVtJyArIChr LmlkID09PSBfZWRpdElkID8gJyBha3RpdicgOiAnJykgKyAnIj4nICsKICAgICAgICAgICAgJzxz cGFuIGNsYXNzPSJibGQtbGlzdGUtbmFtZSI+JyArIGVzY2FwZUhUTUwoay50aXRlbCB8fCAnKG9o bmUgVGl0ZWwpJykgKyAnPC9zcGFuPicgKwogICAgICAgICAgICAnPHNwYW4gY2xhc3M9ImJsZC1s aXN0ZS10eXAiPicgKyBlc2NhcGVIVE1MKHR5cCkgKyAnPC9zcGFuPicgKwogICAgICAgICAgICAn PGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1taW5pIiB0eXBlPSJidXR0b24iIGRhdGEtYmxkLWVkaXQ9 IicgKyBlc2NhcGVBdHRyKGsuaWQpICsgJyI+QmVhcmJlaXRlbjwvYnV0dG9uPicgKwogICAgICAg ICAgICAnPGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1taW5pIGJ0bi1nZWZhaHIiIHR5cGU9ImJ1dHRv biIgZGF0YS1ibGQtZGVsPSInICsgZXNjYXBlQXR0cihrLmlkKSArICciPkzDtnNjaGVuPC9idXR0 b24+JyArCiAgICAgICAgJzwvZGl2Pic7CiAgICB9KS5qb2luKCcnKTsKICAgIHJldHVybiAnPGRp diBjbGFzcz0iYmxkLWxpc3RlLXRpdGVsIj5Wb3JoYW5kZW5lIEthY2hlbG48L2Rpdj48ZGl2IGNs YXNzPSJibGQtbGlzdGUtaXRlbXMiPicgKyBpdGVtcyArICc8L2Rpdj4nOwp9CgovLyAtLS0tLSBW ZXJkcmFodHVuZyAtLS0tLQoKZnVuY3Rpb24gX2RpYWdyYW1tU2ljaHRiYXJrZWl0KCkgewogICAg dmFyIHNwZWMgPSBfc3BlY0F1c0Zvcm0oKTsKICAgIHZhciBzY2F0dGVyID0gc3BlYy5kaWFncmFt bSA9PT0gJ3NjYXR0ZXInOwogICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnI3N0YXRpc3Rp ay1idWlsZGVyLWluaGFsdCBbZGF0YS1udXI9ImthdGVnb3JpYWwiXScpLmZvckVhY2goZnVuY3Rp b24oZWwpeyBlbC5zdHlsZS5kaXNwbGF5ID0gc2NhdHRlciA/ICdub25lJyA6ICcnOyB9KTsKICAg IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJyNzdGF0aXN0aWstYnVpbGRlci1pbmhhbHQgW2Rh dGEtbnVyPSJzY2F0dGVyIl0nKS5mb3JFYWNoKGZ1bmN0aW9uKGVsKXsgZWwuc3R5bGUuZGlzcGxh eSA9IHNjYXR0ZXIgPyAnJyA6ICdub25lJzsgfSk7Cn0KCi8vIFplaXRyYXVtLUVpbmdhYmVncnVw cGVuIGplIG5hY2ggTW9kdXMgZWluLS9hdXNibGVuZGVuLgpmdW5jdGlvbiBfemVpdFNpY2h0YmFy a2VpdCgpIHsKICAgIHZhciBtb2R1cyA9IF92YWwoJ2JsZC16ZWl0bW9kdXMnKSB8fCAnZGF0dW0n OwogICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnI3N0YXRpc3Rpay1idWlsZGVyLWluaGFs dCBbZGF0YS16ZWl0XScpLmZvckVhY2goZnVuY3Rpb24oZWwpewogICAgICAgIGVsLnN0eWxlLmRp c3BsYXkgPSAoZWwuZ2V0QXR0cmlidXRlKCdkYXRhLXplaXQnKSA9PT0gbW9kdXMpID8gJycgOiAn bm9uZSc7CiAgICB9KTsKfQoKZnVuY3Rpb24gX3ZlcmRyYWh0ZW4oY29udCkgewogICAgLy8gQ2hp cC1Ub2dnbGVzIChhbi9hdXMtT3B0aWspICsgTGl2ZS1VcGRhdGUuCiAgICBjb250LmFkZEV2ZW50 TGlzdGVuZXIoJ2NoYW5nZScsIGZ1bmN0aW9uKGUpIHsKICAgICAgICB2YXIgdCA9IGUudGFyZ2V0 OwogICAgICAgIGlmICh0Lm1hdGNoZXMgJiYgdC5tYXRjaGVzKCdbZGF0YS1jaGlwXScpKSB7CiAg ICAgICAgICAgIHZhciBsYWIgPSB0LmNsb3Nlc3QoJy5ibGQtY2hpcCcpOyBpZiAobGFiKSBsYWIu Y2xhc3NMaXN0LnRvZ2dsZSgnYW4nLCB0LmNoZWNrZWQpOwogICAgICAgIH0KICAgICAgICBpZiAo dC5pZCA9PT0gJ2JsZC1kaWFncmFtbScpIF9kaWFncmFtbVNpY2h0YmFya2VpdCgpOwogICAgICAg IGlmICh0LmlkID09PSAnYmxkLXplaXRtb2R1cycpIF96ZWl0U2ljaHRiYXJrZWl0KCk7CiAgICAg ICAgX2ZsdXNzQWt0dWFsaXNpZXJlbigpOwogICAgfSk7CiAgICBjb250LmFkZEV2ZW50TGlzdGVu ZXIoJ2lucHV0JywgZnVuY3Rpb24oZSkgewogICAgICAgIHZhciBpZHMgPSBbJ2JsZC10aXRlbCcs ICdibGQtdm9uJywgJ2JsZC1iaXMnLCAnYmxkLWt3LXZvbicsICdibGQta3ctYmlzJ107CiAgICAg ICAgaWYgKGUudGFyZ2V0ICYmIGlkcy5pbmRleE9mKGUudGFyZ2V0LmlkKSA+PSAwKSBfZmx1c3NB a3R1YWxpc2llcmVuKCk7CiAgICB9KTsKICAgIC8vICJhbGxlIC8ga2VpbmUiIGplIERpZW5zdGdy dXBwZSAoUGVyc29uZW4tU2VrdGlvbikuCiAgICBjb250LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNr JywgZnVuY3Rpb24oZSkgewogICAgICAgIHZhciBndCA9IGUudGFyZ2V0LmNsb3Nlc3QoJ1tkYXRh LWdycC10b2dnbGVdJyk7CiAgICAgICAgaWYgKCFndCkgcmV0dXJuOwogICAgICAgIHZhciBnbiA9 IGd0LmdldEF0dHJpYnV0ZSgnZGF0YS1ncnAtdG9nZ2xlJyk7CiAgICAgICAgdmFyIGNoaXBzID0g W107CiAgICAgICAgY29udC5xdWVyeVNlbGVjdG9yQWxsKCcuYmxkLWNoaXBbZGF0YS1wZ3JwXScp LmZvckVhY2goZnVuY3Rpb24obGFiKSB7CiAgICAgICAgICAgIGlmIChsYWIuZ2V0QXR0cmlidXRl KCdkYXRhLXBncnAnKSA9PT0gZ24pIGNoaXBzLnB1c2gobGFiKTsKICAgICAgICB9KTsKICAgICAg ICB2YXIgYWxsZUFuID0gY2hpcHMubGVuZ3RoID4gMCAmJiBjaGlwcy5ldmVyeShmdW5jdGlvbihs YWIpeyB2YXIgaSA9IGxhYi5xdWVyeVNlbGVjdG9yKCdpbnB1dCcpOyByZXR1cm4gaSAmJiBpLmNo ZWNrZWQ7IH0pOwogICAgICAgIGNoaXBzLmZvckVhY2goZnVuY3Rpb24obGFiKSB7CiAgICAgICAg ICAgIHZhciBpbnAgPSBsYWIucXVlcnlTZWxlY3RvcignaW5wdXQnKTsKICAgICAgICAgICAgaWYg KCFpbnApIHJldHVybjsKICAgICAgICAgICAgaW5wLmNoZWNrZWQgPSAhYWxsZUFuOwogICAgICAg ICAgICBsYWIuY2xhc3NMaXN0LnRvZ2dsZSgnYW4nLCBpbnAuY2hlY2tlZCk7CiAgICAgICAgfSk7 CiAgICAgICAgX2ZsdXNzQWt0dWFsaXNpZXJlbigpOwogICAgfSk7CiAgICB2YXIgYnQgPSBkb2N1 bWVudC5nZXRFbGVtZW50QnlJZCgnYmxkLXRlc3RlbicpOwogICAgaWYgKGJ0KSBidC5hZGRFdmVu dExpc3RlbmVyKCdjbGljaycsIF90ZXN0ZW4pOwogICAgdmFyIGJzID0gZG9jdW1lbnQuZ2V0RWxl bWVudEJ5SWQoJ2JsZC1zcGVpY2hlcm4nKTsKICAgIGlmIChicykgYnMuYWRkRXZlbnRMaXN0ZW5l cignY2xpY2snLCBfc3BlaWNoZXJuKTsKICAgIHZhciBibiA9IGRvY3VtZW50LmdldEVsZW1lbnRC eUlkKCdibGQtbmV1Jyk7CiAgICBpZiAoYm4pIGJuLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywg ZnVuY3Rpb24oKXsgX2VkaXRJZCA9IG51bGw7IHN0YXRpc3Rpa0J1aWxkZXJSZW5kZXJuKCk7IH0p OwogICAgY29udC5xdWVyeVNlbGVjdG9yQWxsKCdbZGF0YS1ibGQtZWRpdF0nKS5mb3JFYWNoKGZ1 bmN0aW9uKGIpeyBiLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oKXsgX2VkaXRJ ZCA9IGIuZ2V0QXR0cmlidXRlKCdkYXRhLWJsZC1lZGl0Jyk7IHN0YXRpc3Rpa0J1aWxkZXJSZW5k ZXJuKCk7IH0pOyB9KTsKICAgIGNvbnQucXVlcnlTZWxlY3RvckFsbCgnW2RhdGEtYmxkLWRlbF0n KS5mb3JFYWNoKGZ1bmN0aW9uKGIpeyBiLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rp b24oKXsgX2xvZXNjaGVuKGIuZ2V0QXR0cmlidXRlKCdkYXRhLWJsZC1kZWwnKSk7IH0pOyB9KTsK ICAgIF9kaWFncmFtbVNpY2h0YmFya2VpdCgpOwogICAgX3plaXRTaWNodGJhcmtlaXQoKTsKfQo= ### FILE: js/besetzung.js | 59595 Ly8gPT09IGJlc2V0enVuZy9iZXNldHp1bmcuanMgPT09Ci8vIFN0YW5kOiAyMDI2LTA1LTE0Ci8v IFZJMy1zcGV6aWZpc2NoZXIgVGFiICJCZXNldHp1bmdza29udHJvbGxlIiBmdWVyIEdlc2FtdHZl cmFudHdvcnRsaWNoZToKLy8gNC1Xb2NoZW4tVm9yc2NoYXUgYXVmIGRpZSBGdWVocnVuZ3MtQmVz ZXR6dW5nIHBybyBTY2hpY2h0LiBGdWVyIERlZml6aXQtCi8vIFRhZ2UgZ2lidCBlcyBlaW5lbiBS dW5kbWFpbC1Nb2RhbCBhbiBhbGxlIGZyZWkgZWluZ2VwbGFudGVuIFBlcnNvbmVuLgovLwovLyBI b29rczogYmV6IChCZXplaWNobnVuZ2VuIGF1cyBhZG1pbi5qc29uLCBQaGFzZSA4KSwgZW1haWxW b3JsYWdlbkhvbGVuLwovLyBlbWFpbFZvcmxhZ2VCZWZ1ZWxsZW4gKFBoYXNlIDcpLCBtYWlsVHJp Z2dlckZldWVybiAoUGhhc2UgNykuCgppbXBvcnQgeyBaIH0gZnJvbSAnLi9jb3JlX3N0YXRlLmpz JzsKaW1wb3J0IHsKICAgIGVzY2FwZUhUTUwsIGVzY2FwZUF0dHIsCiAgICBkYXR1bVN0ciwgZGF0 dW1Gb3JtYXRERSwgd29jaGVudGFnS3VyeiwKICAgIGFic2VuZGVyTmFtZUVybWl0dGVsbgp9IGZy b20gJy4vY29yZV91dGlsLmpzJzsKaW1wb3J0IHsgdG9hc3QsIG1vZGFsWmVpZ2VuLCBtb2RhbFNj aGxpZXNzZW4gfSBmcm9tICcuL3VpX2RpYWxvZy5qcyc7CmltcG9ydCB7CiAgICBCS19IT1JJWk9O VF9UQUdFLAogICAga29tbWVudGFyVGV4dCwgenVEYXR1bVNjcm9sbGVuCn0gZnJvbSAnLi9ncmlk X2ludGVyYWN0aW9uLmpzJzsKaW1wb3J0IHsgZnVlaHJ1bmdzWmFlaGxlbiwgZGdsc0luU2NoaWNo dCwgZ2VzYW10dmVyYW50d29ydGxpY2hFbWFpbCwgaXN0RGdsUXVhbGlmaXppZXJ0LCBpc3RHZXNh bXR2ZXJhbnR3b3J0bGljaCB9IGZyb20gJy4vZ3JpZF9lZGl0b3IuanMnOwppbXBvcnQgeyBhbnNp Y2h0V2VjaHNlbG4gfSBmcm9tICcuL2dyaWRfcmVuZGVyLmpzJzsKCi8vID09PT09IEhvb2tzID09 PT09CgpleHBvcnQgdmFyIGJlc2V0enVuZ0hvb2tzID0gewogICAgYmV6OiBudWxsLAogICAgZW1h aWxWb3JsYWdlbkhvbGVuOiBudWxsLAogICAgZW1haWxWb3JsYWdlQmVmdWVsbGVuOiBudWxsLAog ICAgbWFpbFRyaWdnZXJGZXVlcm46IG51bGwKfTsKCmZ1bmN0aW9uIGJlek9kZXIoa2V5LCBmYWxs YmFjaykgewogICAgaWYgKGJlc2V0enVuZ0hvb2tzLmJleikgewogICAgICAgIHZhciB2ID0gYmVz ZXR6dW5nSG9va3MuYmV6KGtleSk7CiAgICAgICAgaWYgKHYpIHJldHVybiB2OwogICAgfQogICAg cmV0dXJuIGZhbGxiYWNrOwp9CgovLyA9PT09PSBBbmFseXNlID09PT09CgovLyA0LVdvY2hlbi1B bmFseXNlIGZ1ZXIgZGVuIEJlc2V0enVuZ3Nrb250cm9sbC1UYWIuIERyZWktU3RhdHVzLUFtcGVs OgovLyAgIHJvdCAgID0gaXJnZW5kZWluZSBTY2hpY2h0IGhhdCDiiaQgMSBGdWVocnVuZ3NrcmFm dCAoYWt1dGUgVW50ZXJiZXNldHp1bmcpCi8vICAgZ2VsYiAgPSBpcmdlbmRlaW5lIFNjaGljaHQg aGF0IGdlbmF1IDIgRnVlaHJ1bmdza3JhZWZ0ZSAoa25hcHBlIE1pbmRlc3QtCi8vICAgICAgICAg ICAgQmVzZXR6dW5nIOKAlCBrZWluIFB1ZmZlciBmdWVyIGt1cnpmcmlzdGlnZSBBdXNmYWVsbGUp Ci8vICAgZ3J1ZW4gPSBhbGxlIFNjaGljaHRlbiBoYWJlbiDiiaUgMyBGdWVocnVuZ3NrcmFlZnRl IChrb21mb3J0YWJlbCBiZXNldHp0KQovLyBSdWVja2dhYmUgcHJvIFRhZzogeyBkYXR1bSwgZGF0 ZU9iaiwgd29jaGVudGFnLCBzdGF0dXMsIHNjaGljaHRlbjoKLy8gICB7Rjp7aXN0LHN0YXR1c30s IFM6Li4uLCBOOi4uLn0gfQpleHBvcnQgZnVuY3Rpb24gYmVzZXR6dW5nc0FuYWx5c2UoKSB7CiAg ICB2YXIgaGV1dGUgPSBuZXcgRGF0ZSgpOyBoZXV0ZS5zZXRIb3VycygwLDAsMCwwKTsKICAgIHZh ciB0YWdlID0gW107CiAgICB2YXIgcm90ID0gMCwgZ2VsYiA9IDAsIGdydWVuID0gMDsKICAgIGZ1 bmN0aW9uIHNjaGljaHRTdGF0dXMoaXN0KSB7CiAgICAgICAgaWYgKGlzdCA8PSAxKSByZXR1cm4g J3JvdCc7CiAgICAgICAgaWYgKGlzdCA9PT0gMikgcmV0dXJuICdnZWxiJzsKICAgICAgICByZXR1 cm4gJ2dydWVuJzsKICAgIH0KICAgIGZ1bmN0aW9uIHRhZ1N0YXR1cyhmLCBzLCBuKSB7CiAgICAg ICAgaWYgKGYgPD0gMSB8fCBzIDw9IDEgfHwgbiA8PSAxKSByZXR1cm4gJ3JvdCc7CiAgICAgICAg aWYgKGYgPT09IDIgfHwgcyA9PT0gMiB8fCBuID09PSAyKSByZXR1cm4gJ2dlbGInOwogICAgICAg IHJldHVybiAnZ3J1ZW4nOwogICAgfQogICAgKFoudGFnZSB8fCBbXSkuZm9yRWFjaChmdW5jdGlv bihkKSB7CiAgICAgICAgaWYgKGQgPCBoZXV0ZSkgcmV0dXJuOwogICAgICAgIHZhciBkaWZmID0g TWF0aC5mbG9vcigoZCAtIGhldXRlKSAvIDg2NDAwMDAwKTsKICAgICAgICBpZiAoZGlmZiA+PSBC S19IT1JJWk9OVF9UQUdFKSByZXR1cm47CiAgICAgICAgdmFyIGRTdHIgPSBkYXR1bVN0cihkKTsK ICAgICAgICB2YXIgZiA9IGZ1ZWhydW5nc1phZWhsZW4oZFN0ciwgJ0YnKTsKICAgICAgICB2YXIg cyA9IGZ1ZWhydW5nc1phZWhsZW4oZFN0ciwgJ1MnKTsKICAgICAgICB2YXIgbiA9IGZ1ZWhydW5n c1phZWhsZW4oZFN0ciwgJ04nKTsKICAgICAgICB2YXIgc3QgPSB0YWdTdGF0dXMoZiwgcywgbik7 CiAgICAgICAgaWYgKHN0ID09PSAncm90Jykgcm90Kys7CiAgICAgICAgZWxzZSBpZiAoc3QgPT09 ICdnZWxiJykgZ2VsYisrOwogICAgICAgIGVsc2UgZ3J1ZW4rKzsKICAgICAgICB0YWdlLnB1c2go ewogICAgICAgICAgICBkYXR1bTogZFN0ciwKICAgICAgICAgICAgZGF0ZU9iajogZCwKICAgICAg ICAgICAgd29jaGVudGFnOiB3b2NoZW50YWdLdXJ6KGQpLAogICAgICAgICAgICBzdGF0dXM6IHN0 LAogICAgICAgICAgICBzY2hpY2h0ZW46IHsKICAgICAgICAgICAgICAgIEY6IHsgaXN0OiBmLCBz dGF0dXM6IHNjaGljaHRTdGF0dXMoZikgfSwKICAgICAgICAgICAgICAgIFM6IHsgaXN0OiBzLCBz dGF0dXM6IHNjaGljaHRTdGF0dXMocykgfSwKICAgICAgICAgICAgICAgIE46IHsgaXN0OiBuLCBz dGF0dXM6IHNjaGljaHRTdGF0dXMobikgfQogICAgICAgICAgICB9CiAgICAgICAgfSk7CiAgICB9 KTsKICAgIHJldHVybiB7CiAgICAgICAgdGFnZTogdGFnZSwKICAgICAgICBnZXNhbXRUYWdlOiB0 YWdlLmxlbmd0aCwKICAgICAgICByb3RUYWdlOiByb3QsIGdlbGJUYWdlOiBnZWxiLCBncnVlblRh Z2U6IGdydWVuLAogICAgICAgIC8vIEtvbXBhdC1GZWxkZXIgZnVlciBhZWx0ZXJlbiBDb2RlIChk ZWZpeml0VGFnZSA9IHJvdCtnZWxiKQogICAgICAgIGRlZml6aXRUYWdlOiByb3QgKyBnZWxiLCBv a1RhZ2U6IGdydWVuCiAgICB9Owp9CgovLyBEZWZpeml0LUJyaWVmaW5nLUJ1dHRvbiAoUHJ1ZWZ1 bmdzLUFuc2ljaHQpOiBvZWZmbmV0IGVpbiBJbnRlcnZpZXctCi8vIE1vZGFsLCBpbiBkZW0gZGVy IE51dHplciBaZWl0cmF1bSAoMS8yLzQgV29jaGVuKSwgU3RyZW5nZSAobnVyIGtyaXRpc2NoCi8v IG9kZXIgYXVjaCBrZWluLVB1ZmZlcikgdW5kIGRpZSBlaW56dWxhZGVuZGVuIGZyZWktZWluZ2Vw bGFudGVuIFBlcnNvbmVuCi8vIHdhZWhsdC4gQW5zY2hsaWVzc2VuZCBiYXV0IGVpbiBQbGFpbi1U ZXh0LU1haWx0byBkaWUgTWFpbCB2b3Ig4oCUIE91dGxvb2sKLy8gYXVmIGRlbiBCZWhvZXJkZW4t UENzIHVlYmVybmltbXQgSFRNTC1Cb2RpZXMgYXVzIG1haWx0bzogbmljaHQgenV2ZXItCi8vIGxh ZXNzaWcuIEVtcGZhZW5nZXI6IGF1c2dld2FlaGx0ZSB3ZnIvZGZyLVBlcnNvbmVuIGluICJBbiIs IEdlc2FtdC0KLy8gdmVyYW50d29ydGxpY2hlL3IgaW1tZXIgaW4gIkNjIiB6dXIgRHVyY2hmdWVo cnVuZ3Nrb250cm9sbGUuCnZhciBERUZJWklUX0ZSRUlfQ09ERVMgPSB7ICd3ZnInOiAxLCAnZGZy JzogMSB9OwoKZXhwb3J0IGZ1bmN0aW9uIGRlZml6aXRCcmllZmluZ09lZmZuZW4oKSB7CiAgICB2 YXIga29lcnBlciA9ICcnCiAgICAgICAgKyAnPGRpdiBjbGFzcz0iZGVmaXppdC1icmllZmluZy1t b2RhbCI+JwogICAgICAgICsgJzxoNCBjbGFzcz0iZGJtLWZyYWdlIj4xLiBXZWxjaGVyIFplaXRy YXVtPzwvaDQ+JwogICAgICAgICsgJzxkaXYgY2xhc3M9ImRibS1vcHRpb25lbiIgaWQ9ImRibS13 b2NoZW4tZ3J1cHBlIj4nCiAgICAgICAgKyAgICc8bGFiZWw+PGlucHV0IHR5cGU9InJhZGlvIiBu YW1lPSJkYm0td29jaGVuIiB2YWx1ZT0iMSI+IDEgV29jaGU8L2xhYmVsPicKICAgICAgICArICAg JzxsYWJlbD48aW5wdXQgdHlwZT0icmFkaW8iIG5hbWU9ImRibS13b2NoZW4iIHZhbHVlPSIyIiBj aGVja2VkPiAyIFdvY2hlbjwvbGFiZWw+JwogICAgICAgICsgICAnPGxhYmVsPjxpbnB1dCB0eXBl PSJyYWRpbyIgbmFtZT0iZGJtLXdvY2hlbiIgdmFsdWU9IjQiPiA0IFdvY2hlbjwvbGFiZWw+Jwog ICAgICAgICsgJzwvZGl2PicKCiAgICAgICAgKyAnPGg0IGNsYXNzPSJkYm0tZnJhZ2UiPjIuIFdh cyBzb2xsIGltIEJyaWVmaW5nIGVyd8OkaG50IHdlcmRlbj88L2g0PicKICAgICAgICArICc8ZGl2 IGNsYXNzPSJkYm0tb3B0aW9uZW4iIGlkPSJkYm0tc3RyZW5nZS1ncnVwcGUiPicKICAgICAgICAr ICAgJzxsYWJlbD48aW5wdXQgdHlwZT0icmFkaW8iIG5hbWU9ImRibS1zdHJlbmdlIiB2YWx1ZT0i cm90IiBjaGVja2VkPiBOdXIga3JpdGlzY2hlIFRhZ2UgKOKJpCAxIEbDvGhydW5nc2tyYWZ0IGlu IG1pbmRlc3RlbnMgZWluZXIgU2NoaWNodCk8L2xhYmVsPicKICAgICAgICArICAgJzxsYWJlbD48 aW5wdXQgdHlwZT0icmFkaW8iIG5hbWU9ImRibS1zdHJlbmdlIiB2YWx1ZT0icm90X2dlbGIiPiBB dWNoIFRhZ2UgbWl0IGdlbmF1IDIgRsO8aHJ1bmdza3LDpGZ0ZW4gKGtlaW4gUHVmZmVyKTwvbGFi ZWw+JwogICAgICAgICsgJzwvZGl2PicKCiAgICAgICAgKyAnPGg0IGNsYXNzPSJkYm0tZnJhZ2Ui PjMuIFdlciBzb2xsIGFuZ2VzY2hyaWViZW4gd2VyZGVuPzwvaDQ+JwogICAgICAgICsgJzxwIGNs YXNzPSJkYm0taGludCI+UGVyc29uZW4sIGRpZSBhbiBkZW4gYmV0cm9mZmVuZW4gVGFnZW4gd2Fj aC0gb2RlciBkaWVuc3RmcmVpICh3ZnIvZGZyKSBoYWJlbi4gSMOka2NoZW4gZW50ZmVybmVuLCB1 bSBqZW1hbmRlbiBhdXN6dWxhc3Nlbi48L3A+JwogICAgICAgICsgJzxkaXYgaWQ9ImRibS1lbXBm YWVuZ2VyLWxpc3RlIiBjbGFzcz0iZGJtLWVtcGZhZW5nZXItbGlzdGUiPjwvZGl2PicKICAgICAg ICArICc8cCBjbGFzcz0iZGJtLWNjLWhpbnQiPkNjOiA8c3Ryb25nIGlkPSJkYm0tY2MtdGV4dCI+ 4oCmPC9zdHJvbmc+IDxzcGFuIGNsYXNzPSJ0ZXh0LW11dGVkIj4oaW1tZXIgbWl0LCB6dXIgRHVy Y2hmw7xocnVuZ3Nrb250cm9sbGUpPC9zcGFuPjwvcD4nCiAgICAgICAgKyAnPC9kaXY+JzsKCiAg ICB2YXIgZnVzcyA9ICc8YnV0dG9uIGNsYXNzPSJidG4iIGlkPSJkYm0tYWJicmVjaGVuIiB0eXBl PSJidXR0b24iPkFiYnJlY2hlbjwvYnV0dG9uPicKICAgICAgICAgICAgICsgJzxidXR0b24gY2xh c3M9ImJ0biBidG4tcHJpbWFlciIgaWQ9ImRibS12b3JiZXJlaXRlbiIgdHlwZT0iYnV0dG9uIj5N YWlsIHZvcmJlcmVpdGVuPC9idXR0b24+JzsKCiAgICBtb2RhbFplaWdlbignRGVmaXppdC1Ccmll ZmluZyB6dXNhbW1lbnN0ZWxsZW4nLCBrb2VycGVyLCBmdXNzLCBudWxsLCBudWxsLCB7IHJlaW5l ckRpYWxvZzogdHJ1ZSB9KTsKCiAgICB2YXIgZ3YgPSBfZGVmaXppdEd2SW5mbygpOwogICAgdmFy IGNjVGV4dCA9IGd2Lm5hbWUgfHwgJyhrZWluIEdlc2FtdHZlcmFudHdvcnRsaWNoZXIgZ2VwZmxl Z3QpJzsKICAgIGlmIChndi5uYW1lICYmICFndi5lbWFpbCkgY2NUZXh0ICs9ICcg4oCUIGtlaW5l IEUtTWFpbCBoaW50ZXJsZWd0ISc7CiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZGJtLWNj LXRleHQnKS50ZXh0Q29udGVudCA9IGNjVGV4dDsKCiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJ ZCgnZGJtLWFiYnJlY2hlbicpLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgbW9kYWxTY2hsaWVz c2VuKTsKICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkYm0tdm9yYmVyZWl0ZW4nKS5hZGRF dmVudExpc3RlbmVyKCdjbGljaycsIF9kZWZpeml0QnJpZWZpbmdNYWlsVm9yYmVyZWl0ZW4pOwoK ICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJyNkYm0td29jaGVuLWdydXBwZSBpbnB1dCwg I2RibS1zdHJlbmdlLWdydXBwZSBpbnB1dCcpLmZvckVhY2goZnVuY3Rpb24oaW5wKSB7CiAgICAg ICAgaW5wLmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIF9kZWZpeml0RW1wZmFlbmdlckFrdHVh bGlzaWVyZW4pOwogICAgfSk7CgogICAgX2RlZml6aXRFbXBmYWVuZ2VyQWt0dWFsaXNpZXJlbigp Owp9CgovLyBMaWVmZXJ0IHtuYW1lLCBlbWFpbH0gZnVlciBkZW4vZGllIEdlc2FtdHZlcmFudHdv cnRsaWNoZS9uIGF1cwovLyBhZG1pbi5mYWNoYXVmc2ljaHQuIEVtYWlsIGtvbW10IGF1cyBlZGl0 b3IuZ2VzYW10dmVyYW50d29ydGxpY2hFbWFpbCgpOwovLyBOYW1lIGJhdWVuIHdpciBoaWVyIGF1 Ziwgd2VpbCBkb3J0IG51ciBWb3JuYW1lLUhlbHBlciBleGlzdGllcnQuCmZ1bmN0aW9uIF9kZWZp eml0R3ZJbmZvKCkgewogICAgdmFyIGZhID0gKChaLmFkbWluICYmIFouYWRtaW4uZmFjaGF1ZnNp Y2h0KSB8fCBbXSkuZmluZChmdW5jdGlvbihmKSB7IHJldHVybiBmLmdlc2FtdHZlcmFudHdvcnRs aWNoOyB9KTsKICAgIGlmICghZmEpIHJldHVybiB7IG5hbWU6ICcnLCBlbWFpbDogJycgfTsKICAg IHZhciBuYW1lID0gJyc7CiAgICBpZiAoZmEubndLZW5udW5nKSB7CiAgICAgICAgdmFyIHAgPSAo KFoucGxhbnVuZyAmJiBaLnBsYW51bmcucGVyc29uZW4pIHx8IFtdKS5maW5kKGZ1bmN0aW9uKHgp IHsKICAgICAgICAgICAgcmV0dXJuICh4Lm53S2VubnVuZyB8fCAnJykudG9Mb3dlckNhc2UoKSA9 PT0gZmEubndLZW5udW5nLnRvTG93ZXJDYXNlKCk7CiAgICAgICAgfSk7CiAgICAgICAgaWYgKHAp IG5hbWUgPSAoKHAudm9ybmFtZSA/IHAudm9ybmFtZSArICcgJyA6ICcnKSArIChwLm5hbWUgfHwg JycpKS50cmltKCk7CiAgICB9CiAgICBpZiAoIW5hbWUpIG5hbWUgPSBmYS5uYW1lIHx8IGZhLm53 S2VubnVuZyB8fCAnJzsKICAgIHJldHVybiB7IG5hbWU6IG5hbWUsIGVtYWlsOiBnZXNhbXR2ZXJh bnR3b3J0bGljaEVtYWlsKCkgfHwgJycgfTsKfQoKLy8gTGllZmVydCBkaWUgRGVmaXppdC1UYWdl IGZ1ZXIgYmVsaWViaWdlbiBXb2NoZW4tSG9yaXpvbnQgKyBTdHJlbmdlLgovLyBzdHJlbmdlOiAn cm90JyAobnVyIFNjaGljaHRlbiBtaXQg4omkMSBGaykgb2RlciAncm90X2dlbGInIChhdWNoID0y IEZrKS4KLy8gRm9ybWF0OiB7IHRhZ2U6IFt7ZGF0dW0sIHdvY2hlbnRhZywgZmVobGVuZDpbe3Nj aGljaHQsaXN0fV19XSwgZ2VzYW10VGFnZSwgZGVmaXppdFRhZ2UgfS4KZnVuY3Rpb24gX2RlZml6 aXRBbmFseXNlRnVlcih3b2NoZW4sIHN0cmVuZ2UpIHsKICAgIHZhciBob3Jpem9udFRhZ2UgPSB3 b2NoZW4gKiA3OwogICAgdmFyIGhldXRlID0gbmV3IERhdGUoKTsgaGV1dGUuc2V0SG91cnMoMCww LDAsMCk7CiAgICB2YXIgdGFnZSA9IFtdOwogICAgKFoudGFnZSB8fCBbXSkuZm9yRWFjaChmdW5j dGlvbihkKSB7CiAgICAgICAgaWYgKGQgPCBoZXV0ZSkgcmV0dXJuOwogICAgICAgIHZhciBkaWZm ID0gTWF0aC5mbG9vcigoZCAtIGhldXRlKSAvIDg2NDAwMDAwKTsKICAgICAgICBpZiAoZGlmZiA+ PSBob3Jpem9udFRhZ2UpIHJldHVybjsKICAgICAgICB2YXIgZFN0ciA9IGRhdHVtU3RyKGQpOwog ICAgICAgIHZhciBmID0gZnVlaHJ1bmdzWmFlaGxlbihkU3RyLCAnRicpOwogICAgICAgIHZhciBz ID0gZnVlaHJ1bmdzWmFlaGxlbihkU3RyLCAnUycpOwogICAgICAgIHZhciBuID0gZnVlaHJ1bmdz WmFlaGxlbihkU3RyLCAnTicpOwogICAgICAgIHZhciBmZWhsZW5kID0gW107CiAgICAgICAgZnVu Y3Rpb24gcHJ1ZWZlKGxhYmVsLCBpc3QpIHsKICAgICAgICAgICAgaWYgKGlzdCA8PSAxKSAgICAg ICAgICAgICAgICAgIGZlaGxlbmQucHVzaCh7IHNjaGljaHQ6IGxhYmVsLCBpc3Q6IGlzdCB9KTsK ICAgICAgICAgICAgZWxzZSBpZiAoaXN0ID09PSAyICYmIHN0cmVuZ2UgPT09ICdyb3RfZ2VsYicp IGZlaGxlbmQucHVzaCh7IHNjaGljaHQ6IGxhYmVsLCBpc3Q6IGlzdCB9KTsKICAgICAgICB9CiAg ICAgICAgcHJ1ZWZlKCdGJywgZik7IHBydWVmZSgnUycsIHMpOyBwcnVlZmUoJ04nLCBuKTsKICAg ICAgICBpZiAoIWZlaGxlbmQubGVuZ3RoKSByZXR1cm47CiAgICAgICAgdGFnZS5wdXNoKHsKICAg ICAgICAgICAgZGF0dW06ICAgICBkU3RyLAogICAgICAgICAgICB3b2NoZW50YWc6IHdvY2hlbnRh Z0t1cnooZCksCiAgICAgICAgICAgIGZlaGxlbmQ6ICAgZmVobGVuZAogICAgICAgIH0pOwogICAg fSk7CiAgICByZXR1cm4geyB0YWdlOiB0YWdlLCBnZXNhbXRUYWdlOiBob3Jpem9udFRhZ2UsIGRl Zml6aXRUYWdlOiB0YWdlLmxlbmd0aCB9Owp9CgovLyBTYW1tZWx0IFBlcnNvbmVuIG1pdCBGcmVp LUNvZGUgKHdmci9kZnIpIGFuIGRlbiBiZXRyb2ZmZW5lbiBUYWdlbi4KLy8gQWdncmVnaWVydCBw cm8gUGVyc29uIGlocmUgRnJlaS1UYWdlLiBQZXJzb25lbiBvaG5lIEUtTWFpbCB3ZXJkZW4gbWl0 Ci8vIG1hcmtpZXJ0IChpbSBNb2RhbCBkaXNhYmxlZCArIEhpbndlaXMpLgpmdW5jdGlvbiBfZGVm aXppdEZyZWllUGVyc29uZW4odGFnZSkgewogICAgdmFyIGVpbnRyYWVnZSA9IChaLnBsYW51bmcg JiYgWi5wbGFudW5nLmVpbnRyYWVnZSkgfHwge307CiAgICB2YXIgcGVyc29uZW4gID0gKChaLnBs YW51bmcgJiYgWi5wbGFudW5nLnBlcnNvbmVuKSB8fCBbXSk7CiAgICB2YXIgbWFwID0ge307ICAg Ly8gcGlkIC0+IHsgaWQsIG5hbWUsIHZvcm5hbWUsIGVtYWlsLCB0YWdlU3RyW10gfQogICAgdGFn ZS5mb3JFYWNoKGZ1bmN0aW9uKHQpIHsKICAgICAgICB2YXIgZSA9IGVpbnRyYWVnZVt0LmRhdHVt XSB8fCB7fTsKICAgICAgICBwZXJzb25lbi5mb3JFYWNoKGZ1bmN0aW9uKHApIHsKICAgICAgICAg ICAgaWYgKCFwLmFrdGl2KSByZXR1cm47CiAgICAgICAgICAgIHZhciBjb2RlID0gZVtTdHJpbmco cC5pZCldIHx8ICcnOwogICAgICAgICAgICBpZiAoIURFRklaSVRfRlJFSV9DT0RFU1tjb2RlXSkg cmV0dXJuOwogICAgICAgICAgICBpZiAoIW1hcFtwLmlkXSkgewogICAgICAgICAgICAgICAgbWFw W3AuaWRdID0gewogICAgICAgICAgICAgICAgICAgIGlkOiBwLmlkLCBuYW1lOiBwLm5hbWUgfHwg JycsIHZvcm5hbWU6IHAudm9ybmFtZSB8fCAnJywKICAgICAgICAgICAgICAgICAgICBlbWFpbDog cC5lbWFpbCB8fCAnJywgdGFnZVN0cjogW10KICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAg IH0KICAgICAgICAgICAgbWFwW3AuaWRdLnRhZ2VTdHIucHVzaCh0LndvY2hlbnRhZyArICcgJyAr IGRhdHVtRm9ybWF0REUodC5kYXR1bSkpOwogICAgICAgIH0pOwogICAgfSk7CiAgICB2YXIgbGlz dGUgPSBPYmplY3Qua2V5cyhtYXApLm1hcChmdW5jdGlvbihrKSB7IHJldHVybiBtYXBba107IH0p OwogICAgbGlzdGUuc29ydChmdW5jdGlvbihhLCBiKSB7CiAgICAgICAgcmV0dXJuIChhLm5hbWUg KyBhLnZvcm5hbWUpLmxvY2FsZUNvbXBhcmUoYi5uYW1lICsgYi52b3JuYW1lLCAnZGUnKTsKICAg IH0pOwogICAgcmV0dXJuIGxpc3RlOwp9CgovLyBMaWVzdCBkZW4gYWt0dWVsbGVuIEludGVydmll dy1TdGFuZCAoV29jaGVuICsgU3RyZW5nZSkgdW5kIHJlbmRlcnQgZGllCi8vIEVtcGZhZW5nZXIt TGlzdGUgbmV1IOKAlCB3aXJkIGJlaSBqZWRlbSBPcHRpb25zd2VjaHNlbCBhdWZnZXJ1ZmVuLgpm dW5jdGlvbiBfZGVmaXppdEVtcGZhZW5nZXJBa3R1YWxpc2llcmVuKCkgewogICAgdmFyIGxpc3Rl RWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZGJtLWVtcGZhZW5nZXItbGlzdGUnKTsKICAg IGlmICghbGlzdGVFbCkgcmV0dXJuOwogICAgdmFyIHdvY2hlbklucCA9IGRvY3VtZW50LnF1ZXJ5 U2VsZWN0b3IoJ2lucHV0W25hbWU9ImRibS13b2NoZW4iXTpjaGVja2VkJyk7CiAgICB2YXIgc3Ry ZW5nZUlucCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2lucHV0W25hbWU9ImRibS1zdHJlbmdl Il06Y2hlY2tlZCcpOwogICAgdmFyIHdvY2hlbiA9IHdvY2hlbklucCA/IHBhcnNlSW50KHdvY2hl bklucC52YWx1ZSwgMTApIDogMjsKICAgIHZhciBzdHJlbmdlID0gc3RyZW5nZUlucCA/IHN0cmVu Z2VJbnAudmFsdWUgOiAncm90JzsKCiAgICB2YXIgYW5hbHlzZSA9IF9kZWZpeml0QW5hbHlzZUZ1 ZXIod29jaGVuLCBzdHJlbmdlKTsKICAgIGlmIChhbmFseXNlLmRlZml6aXRUYWdlID09PSAwKSB7 CiAgICAgICAgbGlzdGVFbC5pbm5lckhUTUwgPSAnPHAgY2xhc3M9ImRibS1sZWVyIj5LZWluZSBE ZWZpeml0LVRhZ2UgaW4gZGVuIG7DpGNoc3RlbiAnICsgd29jaGVuICsgJyBXb2NoZW4g4oCUIGtl aW4gQnJpZWZpbmcgbsO2dGlnLjwvcD4nOwogICAgICAgIHJldHVybjsKICAgIH0KICAgIHZhciBw ZXJzb25lbiA9IF9kZWZpeml0RnJlaWVQZXJzb25lbihhbmFseXNlLnRhZ2UpOwogICAgaWYgKCFw ZXJzb25lbi5sZW5ndGgpIHsKICAgICAgICBsaXN0ZUVsLmlubmVySFRNTCA9ICc8cCBjbGFzcz0i ZGJtLWxlZXIiPicgKyBhbmFseXNlLmRlZml6aXRUYWdlICsgJyBEZWZpeml0LVRhZyhlKSBnZWZ1 bmRlbiwgYWJlciBuaWVtYW5kIGlzdCBhbiBkaWVzZW4gVGFnZW4gd2ZyL2RmciDigJQgbmllbWFu ZCB6dW0gQW5zY2hyZWliZW4uPC9wPic7CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgdmFyIGh0 bWwgPSAnPGRpdiBjbGFzcz0iZGJtLWluZm8iPicgKyBhbmFseXNlLmRlZml6aXRUYWdlICsgJyBE ZWZpeml0LVRhZyhlKSwgJyArIHBlcnNvbmVuLmxlbmd0aCArICcgbcO2Z2xpY2hlIEVtcGbDpG5n ZXI6PC9kaXY+JzsKICAgIGh0bWwgKz0gJzx1bCBjbGFzcz0iZGJtLXBlcnNvbmVuIj4nOwogICAg cGVyc29uZW4uZm9yRWFjaChmdW5jdGlvbihwKSB7CiAgICAgICAgdmFyIGhhdE1haWwgPSAhIXAu ZW1haWw7CiAgICAgICAgdmFyIGNoZWNrZWQgPSBoYXRNYWlsID8gJyBjaGVja2VkJyA6ICcnOwog ICAgICAgIHZhciBkaXNhYmxlZCA9ICFoYXRNYWlsID8gJyBkaXNhYmxlZCcgOiAnJzsKICAgICAg ICB2YXIgYW56ZWlnZSA9ICgocC52b3JuYW1lID8gcC52b3JuYW1lICsgJyAnIDogJycpICsgcC5u YW1lKS50cmltKCkgfHwgKCcjJyArIHAuaWQpOwogICAgICAgIHZhciB0YWdlS3VyeiA9IHAudGFn ZVN0ci5qb2luKCcsICcpOwogICAgICAgIGh0bWwgKz0gJzxsaT48bGFiZWwgY2xhc3M9IicgKyAo aGF0TWFpbCA/ICcnIDogJ2RibS1kaXNhYmxlZCcpICsgJyI+JwogICAgICAgICAgICAgICsgJzxp bnB1dCB0eXBlPSJjaGVja2JveCIgY2xhc3M9ImRibS1lbXBmLWNiIiBkYXRhLXBpZD0iJyArIGVz Y2FwZUF0dHIoU3RyaW5nKHAuaWQpKSArICciIGRhdGEtZW1haWw9IicgKyBlc2NhcGVBdHRyKHAu ZW1haWwpICsgJyIgZGF0YS1uYW1lPSInICsgZXNjYXBlQXR0cihhbnplaWdlKSArICciJyArIGNo ZWNrZWQgKyBkaXNhYmxlZCArICc+JwogICAgICAgICAgICAgICsgJyA8c3Ryb25nPicgKyBlc2Nh cGVIVE1MKGFuemVpZ2UpICsgJzwvc3Ryb25nPicKICAgICAgICAgICAgICArICcgPHNwYW4gY2xh c3M9ImRibS10YWdlIj4oJyArIGVzY2FwZUhUTUwodGFnZUt1cnopICsgJyk8L3NwYW4+JwogICAg ICAgICAgICAgICsgKGhhdE1haWwgPyAnJyA6ICcgPHNwYW4gY2xhc3M9ImRibS1uby1tYWlsIj7i gJQga2VpbmUgRS1NYWlsIGhpbnRlcmxlZ3Q8L3NwYW4+JykKICAgICAgICAgICAgICArICc8L2xh YmVsPjwvbGk+JzsKICAgIH0pOwogICAgaHRtbCArPSAnPC91bD4nOwogICAgbGlzdGVFbC5pbm5l ckhUTUwgPSBodG1sOwp9CgovLyBCYXV0IGRlbiBQbGFpbi1UZXh0LU1haWwtQm9keSB1bmQgb2Vm Zm5ldCBkaWUgbWFpbHRvOi1VUkwuIEZvcm1hdDoKLy8gZnJldW5kbGljaC1tb2Rlcm4gKER1LUZv cm0pLCBrZWluZSBIVE1MLVRhZ3Mg4oCUIE91dGxvb2sgYmVpIGRlciBCZWhvZXJkZQovLyB1ZWJl cm5pbW10IG1haWx0by1IVE1MIG5pY2h0IHp1dmVybGFlc3NpZy4KZnVuY3Rpb24gX2RlZml6aXRC cmllZmluZ01haWxWb3JiZXJlaXRlbigpIHsKICAgIHZhciB3b2NoZW5JbnAgPSBkb2N1bWVudC5x dWVyeVNlbGVjdG9yKCdpbnB1dFtuYW1lPSJkYm0td29jaGVuIl06Y2hlY2tlZCcpOwogICAgdmFy IHN0cmVuZ2VJbnAgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdpbnB1dFtuYW1lPSJkYm0tc3Ry ZW5nZSJdOmNoZWNrZWQnKTsKICAgIHZhciB3b2NoZW4gPSB3b2NoZW5JbnAgPyBwYXJzZUludCh3 b2NoZW5JbnAudmFsdWUsIDEwKSA6IDI7CiAgICB2YXIgc3RyZW5nZSA9IHN0cmVuZ2VJbnAgPyBz dHJlbmdlSW5wLnZhbHVlIDogJ3JvdCc7CgogICAgdmFyIGFuYWx5c2UgPSBfZGVmaXppdEFuYWx5 c2VGdWVyKHdvY2hlbiwgc3RyZW5nZSk7CiAgICBpZiAoYW5hbHlzZS5kZWZpeml0VGFnZSA9PT0g MCkgewogICAgICAgIHRvYXN0KCdLZWluZSBEZWZpeml0LVRhZ2UgaW0gZ2V3w6RobHRlbiBaZWl0 cmF1bS4nLCAnaW5mbycpOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAvLyBFbXBmYWVuZ2Vy IGF1cyBkZW4gYW5nZWhha3RlbiBDaGVja2JveGVuIHNhbW1lbG4KICAgIHZhciBhbkVtYWlscyA9 IFtdOwogICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmRibS1lbXBmLWNiOmNoZWNrZWQn KS5mb3JFYWNoKGZ1bmN0aW9uKGNiKSB7CiAgICAgICAgdmFyIG1haWwgPSBjYi5nZXRBdHRyaWJ1 dGUoJ2RhdGEtZW1haWwnKTsKICAgICAgICBpZiAobWFpbCkgYW5FbWFpbHMucHVzaChtYWlsKTsK ICAgIH0pOwoKICAgIHZhciBndiA9IF9kZWZpeml0R3ZJbmZvKCk7CgogICAgaWYgKCFhbkVtYWls cy5sZW5ndGggJiYgIWd2LmVtYWlsKSB7CiAgICAgICAgdG9hc3QoJ1dlZGVyIGF1c2dld8OkaGx0 ZSBFbXBmw6RuZ2VyIG5vY2ggR2VzYW10dmVyYW50d29ydGxpY2hlL3IgaGFiZW4gZWluZSBFLU1h aWwtQWRyZXNzZSBoaW50ZXJsZWd0LicsICd3YXJudW5nJyk7CiAgICAgICAgcmV0dXJuOwogICAg fQoKICAgIC8vIFNjaGljaHQtQmV6ZWljaG5lciBsYWVuZ2VyIGFscyBkYXMgS3VlcnplbAogICAg dmFyIHNjaGljaHROYW1lID0geyBGOiAnRnLDvGgnLCBTOiAnU3DDpHQnLCBOOiAnTmFjaHQnIH07 CgogICAgLy8gQXVzZ2V3YWVobHRlIFBlcnNvbmVuIHNhbW1lbG4gdW5kIG5hY2ggVGFnIG1hcHBl biDigJQgcHJvIERlZml6aXQtVGFnCiAgICAvLyBiYXVlbiB3aXIgZWluZW4gQmxvY2sgbWl0IERh dHVtICsgTHVlY2tlbi1TY2hpY2h0ZW4gb2JlbiB1bmQgZGVuCiAgICAvLyB3ZnIvZGZyLVBlcnNv bmVuLCBkaWUgYW4gZ2VuYXUgZGllc2VtIFRhZyBmcmVpIHNpbmQsIGRhcnVudGVyLgogICAgdmFy IGF1c2dld0lkcyA9IHt9OwogICAgdmFyIGF1c2dld01hcCA9IHt9OyAgIC8vIHBpZCAtPiB7IG5h bWUsIGVtYWlsIH0KICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5kYm0tZW1wZi1jYjpj aGVja2VkJykuZm9yRWFjaChmdW5jdGlvbihjYikgewogICAgICAgIHZhciBwaWQgPSBjYi5nZXRB dHRyaWJ1dGUoJ2RhdGEtcGlkJyk7CiAgICAgICAgYXVzZ2V3SWRzW3BpZF0gPSB0cnVlOwogICAg ICAgIGF1c2dld01hcFtwaWRdID0gewogICAgICAgICAgICBuYW1lOiAgY2IuZ2V0QXR0cmlidXRl KCdkYXRhLW5hbWUnKSwKICAgICAgICAgICAgZW1haWw6IGNiLmdldEF0dHJpYnV0ZSgnZGF0YS1l bWFpbCcpCiAgICAgICAgfTsKICAgIH0pOwogICAgdmFyIGVpbnRyYWVnZSA9IChaLnBsYW51bmcg JiYgWi5wbGFudW5nLmVpbnRyYWVnZSkgfHwge307CiAgICBmdW5jdGlvbiBwZXJzb25lbkFuVGFn KGRhdHVtKSB7CiAgICAgICAgdmFyIGUgPSBlaW50cmFlZ2VbZGF0dW1dIHx8IHt9OwogICAgICAg IHZhciBsaXN0ZSA9IFtdOwogICAgICAgIE9iamVjdC5rZXlzKGF1c2dld0lkcykuZm9yRWFjaChm dW5jdGlvbihwaWQpIHsKICAgICAgICAgICAgdmFyIGNvZGUgPSBlW1N0cmluZyhwaWQpXSB8fCAn JzsKICAgICAgICAgICAgaWYgKERFRklaSVRfRlJFSV9DT0RFU1tjb2RlXSkgbGlzdGUucHVzaChh dXNnZXdNYXBbcGlkXSk7CiAgICAgICAgfSk7CiAgICAgICAgbGlzdGUuc29ydChmdW5jdGlvbihh LCBiKSB7IHJldHVybiAoYS5uYW1lIHx8ICcnKS5sb2NhbGVDb21wYXJlKGIubmFtZSB8fCAnJywg J2RlJyk7IH0pOwogICAgICAgIHJldHVybiBsaXN0ZTsKICAgIH0KCiAgICAvLyBCbG9jayBwcm8g RGVmaXppdC1UYWc6IEhlYWRlciA9IERhdHVtICsgTHVlY2tlbi1TY2hpY2h0ZW4sCiAgICAvLyBk YXJ1bnRlciBlaW5nZXJ1ZWNrdCBkaWUgTmFtZW4gZGVyIGFuZ2VzY2hyaWViZW5lbiBGcmVpLVBl cnNvbmVuLgogICAgdmFyIHRhZ0Jsb2Vja2UgPSBhbmFseXNlLnRhZ2UubWFwKGZ1bmN0aW9uKHQp IHsKICAgICAgICB2YXIgZmVobExpc3QgPSB0LmZlaGxlbmQubWFwKGZ1bmN0aW9uKGYpIHsKICAg ICAgICAgICAgcmV0dXJuIHNjaGljaHROYW1lW2Yuc2NoaWNodF0gKyAnICcgKyBmLmlzdCArICcv Mic7CiAgICAgICAgfSkuam9pbignLCAnKTsKICAgICAgICB2YXIgaGVhZGVyID0gdC53b2NoZW50 YWcgKyAnICcgKyBkYXR1bUZvcm1hdERFKHQuZGF0dW0pICsgJyAg4oCUICBMw7xja2U6ICcgKyBm ZWhsTGlzdDsKICAgICAgICB2YXIgcGVycyA9IHBlcnNvbmVuQW5UYWcodC5kYXR1bSk7CiAgICAg ICAgdmFyIHBlcnNvbmVuWmVpbGVuID0gcGVycy5sZW5ndGgKICAgICAgICAgICAgPyAnXG4gIEvD tm5uZW4gZWluc3ByaW5nZW4gKHdmci9kZnIpOlxuJyArIHBlcnMubWFwKGZ1bmN0aW9uKHApIHsg cmV0dXJuICcgICAgLSAnICsgcC5uYW1lOyB9KS5qb2luKCdcbicpCiAgICAgICAgICAgIDogJyc7 CiAgICAgICAgcmV0dXJuIGhlYWRlciArIHBlcnNvbmVuWmVpbGVuOwogICAgfSkuam9pbignXG5c bicpOwoKICAgIC8vIFN0cmVuZ2UtSGlud2VpcyBmdWVyIGRlbiBCb2R5CiAgICB2YXIgc3RyZW5n ZUluZm8gPSAoc3RyZW5nZSA9PT0gJ3JvdF9nZWxiJykKICAgICAgICA/ICdrcml0aXNjaGUgVGFn ZSAo4omkIDEgRmspIHVuZCBUYWdlIG9obmUgUHVmZmVyICg9IDIgRmspJwogICAgICAgIDogJ2ty aXRpc2NoZSBUYWdlICjiiaQgMSBGw7xocnVuZ3NrcmFmdCBpbiBtaW5kZXN0ZW5zIGVpbmVyIFNj aGljaHQpJzsKCiAgICB2YXIgYWJzZW5kZXIgPSBhYnNlbmRlck5hbWVFcm1pdHRlbG4oKSB8fCAn ZGllIERpZW5zdGdydXBwZW5sZWl0dW5nJzsKCiAgICB2YXIgYmV0cmVmZiA9ICdEZWZpeml0LUJy aWVmaW5nOiAnICsgYW5hbHlzZS5kZWZpeml0VGFnZSArICcgVGFnKGUpIG1pdCBMw7xja2VuIGlu IGRlciBGw7xocnVuZ3MtQmVzZXR6dW5nICgnICsgd29jaGVuICsgKHdvY2hlbiA9PT0gMSA/ICcg V29jaGUnIDogJyBXb2NoZW4nKSArICcpJzsKCiAgICB2YXIgYm9keSA9CiAgICAgICAgJ0hhbGxv IHp1c2FtbWVuLFxuJyArCiAgICAgICAgJ1xuJyArCiAgICAgICAgJ2t1cnplciBTdGFuZCB6dXIg RsO8aHJ1bmdzLUJlc2V0enVuZyBpbiBkZW4gbsOkY2hzdGVuICcgKyB3b2NoZW4gKyAod29jaGVu ID09PSAxID8gJyBXb2NoZScgOiAnIFdvY2hlbicpICsgJzpcbicgKwogICAgICAgICdcbicgKwog ICAgICAgIGFuYWx5c2UuZGVmaXppdFRhZ2UgKyAnIHZvbiAnICsgYW5hbHlzZS5nZXNhbXRUYWdl ICsgJyBUYWdlbiBzaW5kIG5pY2h0IGF1c3JlaWNoZW5kIGJlc2V0enQuXG4nICsKICAgICAgICAn QXVmZ2Vmw7xocnQgc2luZCAnICsgc3RyZW5nZUluZm8gKyAnLlxuJyArCiAgICAgICAgJ1xuJyAr CiAgICAgICAgdGFnQmxvZWNrZSArCiAgICAgICAgJ1xuXG4nICsKICAgICAgICAnRmFsbHMgZHUg ZWluc3ByaW5nZW4ga2FubnN0IOKAlCBhdWNoIGbDvHIgZWluZSBlaW56ZWxuZSBTY2hpY2h0IOKA lCBtZWxkIGRpY2ggZ2VybmUga3VyeiB6dXLDvGNrIHVuZCBrbGlja2UgZWluZmFjaCBhdWYgIkFs bGVuIEFudHdvcnRlbiIgKFN0cmcgKyBVbXNjaGFsdCArIFIpLCBzbyBkYXNzIGFsbGUgS2VubnRu aXMgZGF2b24ga3JpZWdlbiwgZGFzcyBkYXMgRGVmaXppdCBlcmxlZGlndCBpc3QuXG4nICsKICAg ICAgICAnXG4nICsKICAgICAgICAnRGFua2UgZXVjaCFcbicgKwogICAgICAgICdcbicgKwogICAg ICAgICdWaWVsZSBHcsO8w59lXG4nICsKICAgICAgICBhYnNlbmRlcjsKCiAgICB2YXIgdXJsID0g J21haWx0bzonICsgZW5jb2RlVVJJQ29tcG9uZW50KGFuRW1haWxzLmpvaW4oJywnKSk7CiAgICB2 YXIgcXVlcnkgPSBbXTsKICAgIGlmIChndi5lbWFpbCkgcXVlcnkucHVzaCgnY2M9JyArIGVuY29k ZVVSSUNvbXBvbmVudChndi5lbWFpbCkpOwogICAgcXVlcnkucHVzaCgnc3ViamVjdD0nICsgZW5j b2RlVVJJQ29tcG9uZW50KGJldHJlZmYpKTsKICAgIHF1ZXJ5LnB1c2goJ2JvZHk9JyArIGVuY29k ZVVSSUNvbXBvbmVudChib2R5KSk7CiAgICB1cmwgKz0gJz8nICsgcXVlcnkuam9pbignJicpOwoK ICAgIG1vZGFsU2NobGllc3NlbigpOwogICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSB1cmw7Cn0K Ci8vIEZhZXJidCBkZW4gUHJ1ZWZ1bmdzLVRhYiBpbSBIZWFkZXIgKG5hdi1iZXNldHp1bmcpIGpl IG5hY2ggU3RhdHVzLQovLyBIb3Jpem9udCByb3QvZ2VsYi4gV2lyZCBhdXMga29wZlJlbmRlcm4g KyBiZWkgU2NoaWNodC1FZGl0cyBhdWZnZXJ1ZmVuLAovLyBkYW1pdCBkaWUgRmFlcmJ1bmcgaW1t ZXIgYWt0dWVsbCBpc3QgKG5pY2h0IG51ciBuYWNoIFRhYi1CZXN1Y2gpLgovLyAgIHJvdCAgKCdi ay10YWItZGVmaXppdC0ydycpICA6IG1pbmQuIGVpbiBST1QtVGFnICjiiaQxIEZrIGluIGVpbmVy IFNjaGljaHQpCi8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gZGVuIG5hZWNo c3RlbiAxNCBUYWdlbgovLyAgIGdlbGIgKCdiay10YWItZGVmaXppdC00dycpIDogUk9ULVRhZyBp biAxNC0yOCBPREVSIEdFTEItVGFnICg9MiBGaykgaW4gMC0yOAovLyAgIHNvbnN0ICAgICAgICAg ICAgICAgICAgICAgICA6IG5ldXRyYWwgKGFsbGUgVGFnZSBncnVlbiwg4omlMyBGayBwcm8gU2No aWNodCkKZXhwb3J0IGZ1bmN0aW9uIGJlc2V0enVuZ3NUYWJGYXJiZUFrdHVhbGlzaWVyZW4oKSB7 CiAgICB2YXIgYnRuID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ25hdi1iZXNldHp1bmcnKTsK ICAgIGlmICghYnRuKSByZXR1cm47CiAgICBidG4uY2xhc3NMaXN0LnJlbW92ZSgnYmstdGFiLWRl Zml6aXQtMncnLCAnYmstdGFiLWRlZml6aXQtNHcnKTsKICAgIHZhciBsYWJlbCA9IGJlek9kZXIo J25hdi5iZXNldHp1bmcnLCAnQmVzZXR6dW5nJyk7CiAgICBidG4udGl0bGUgPSBsYWJlbCArICcg 4oCUIDQgV29jaGVuLVZvcnNjaGF1JzsKICAgIGlmICghKFoucmVjaHRlICYmIFoucmVjaHRlLmlz dEdlc2FtdHZlcmFudHdvcnRsaWNoKSkgcmV0dXJuOwogICAgdmFyIGhldXRlID0gbmV3IERhdGUo KTsgaGV1dGUuc2V0SG91cnMoMCwwLDAsMCk7CiAgICB2YXIgZGVmaXppdDJ3ID0gMCwgZGVmaXpp dDR3ID0gMDsKICAgIChaLnRhZ2UgfHwgW10pLmZvckVhY2goZnVuY3Rpb24oZCkgewogICAgICAg IGlmIChkIDwgaGV1dGUpIHJldHVybjsKICAgICAgICB2YXIgZGlmZiA9IE1hdGguZmxvb3IoKGQg LSBoZXV0ZSkgLyA4NjQwMDAwMCk7CiAgICAgICAgaWYgKGRpZmYgPj0gMjgpIHJldHVybjsKICAg ICAgICB2YXIgZFN0ciA9IGRhdHVtU3RyKGQpOwogICAgICAgIHZhciBmID0gZnVlaHJ1bmdzWmFl aGxlbihkU3RyLCAnRicpOwogICAgICAgIHZhciBzID0gZnVlaHJ1bmdzWmFlaGxlbihkU3RyLCAn UycpOwogICAgICAgIHZhciBuID0gZnVlaHJ1bmdzWmFlaGxlbihkU3RyLCAnTicpOwogICAgICAg IHZhciByb3QgID0gKGYgPD0gMSB8fCBzIDw9IDEgfHwgbiA8PSAxKTsKICAgICAgICB2YXIgZ2Vs YiA9ICFyb3QgJiYgKGYgPT09IDIgfHwgcyA9PT0gMiB8fCBuID09PSAyKTsKICAgICAgICBpZiAo cm90ICYmIGRpZmYgPCAxNCkgZGVmaXppdDJ3Kys7CiAgICAgICAgZWxzZSBpZiAocm90IHx8IGdl bGIpIGRlZml6aXQ0dysrOwogICAgfSk7CiAgICBpZiAoZGVmaXppdDJ3ID4gMCkgewogICAgICAg IGJ0bi5jbGFzc0xpc3QuYWRkKCdiay10YWItZGVmaXppdC0ydycpOwogICAgICAgIGJ0bi50aXRs ZSA9IGxhYmVsICsgJyDigJQgQWNodHVuZzogJyArIGRlZml6aXQydyArICcgVGFnJyArIChkZWZp eml0MncgPT09IDEgPyAnJyA6ICdlJykgKyAnIG1pdCBVbnRlcmJlc2V0enVuZyBpbiBkZW4gbsOk Y2hzdGVuIDE0IFRhZ2VuJzsKICAgIH0gZWxzZSBpZiAoZGVmaXppdDR3ID4gMCkgewogICAgICAg IGJ0bi5jbGFzc0xpc3QuYWRkKCdiay10YWItZGVmaXppdC00dycpOwogICAgICAgIGJ0bi50aXRs ZSA9IGxhYmVsICsgJyDigJQgSGlud2VpczogJyArIGRlZml6aXQ0dyArICcgVGFnJyArIChkZWZp eml0NHcgPT09IDEgPyAnJyA6ICdlJykgKyAnIG1pdCBVbnRlcmJlc2V0enVuZyBpbiBXb2NoZSAz 4oCTNCc7CiAgICB9Cn0KCi8vIFZvcm5hbWVuIGRlcyBha3R1ZWxsZW4gR2VzYW10dmVyYW50d29y dGxpY2hlbiBlcm1pdHRlbG4uIFN1Y2hyZWloZW5mb2xnZToKLy8gICAxKSBhZG1pbi5mYWNoYXVm c2ljaHQgIChoYXQgZGllIG1laXN0ZW4gRGV0YWlsLUZlbGRlciwgaW5rbC4gZXhwbGl6aXRlcgov LyAgICAgIFZvcm5hbWUvTmFjaG5hbWUtVHJlbm51bmcgaW4gRm9ybSB2b24gIlZvcm5hbWUgTmFj aG5hbWUiKQovLyAgIDIpIGFkbWluLnN1cGVyVXNlciAgICAgKFNVIHNpbmQgZWJlbmZhbGxzIEdl c2FtdHZlcmFudHdvcnRsaWNoZSwgc3RlaGVuCi8vICAgICAgYWJlciBzZWx0ZW4gaW4gZGVyIEZh Y2hhdWZzaWNodC1MaXN0ZSkKLy8gICAzKSBwbGFudW5nLnBlcnNvbmVuICAgIChlaWdlbmVyIFBl cnNvbmFsdmVyd2FsdHVuZ3MtRWludHJhZyDigJQgaGF0Ci8vICAgICAgdHlwaXNjaGVyd2Vpc2Ug c2F1YmVyIGdldHJlbm50ZSBGZWxkZXIgdm9ybmFtZSAvIG5hbWUpCi8vIEF1cyBhZG1pbi1MaXN0 ZW4tRWludHJhZWdlbiB3aXJkIGRlciBlcnN0ZSBUb2tlbiBhdXMgJ25hbWUnIGdlbm9tbWVuLAov LyBhdXMgZGVtIFBlcnNvbmVuLUVpbnRyYWcgZGFzIGVjaHRlICd2b3JuYW1lJy1GZWxkIGJldm9y enVndC4KZXhwb3J0IGZ1bmN0aW9uIGdlc2FtdHZlcmFudHdvcnRsaWNoVm9ybmFtZUVybWl0dGVs bigpIHsKICAgIHZhciBiID0gKFouYmVudXR6ZXIgfHwgJycpLnRvTG93ZXJDYXNlKCk7CiAgICB2 YXIgYkt1cnogPSBiLnNwbGl0KCdcXCcpLnBvcCgpOwogICAgZnVuY3Rpb24gcGFzc3Qoa2VubnVu ZykgewogICAgICAgIGlmICgha2VubnVuZykgcmV0dXJuIGZhbHNlOwogICAgICAgIHZhciBrID0g U3RyaW5nKGtlbm51bmcpLnRvTG93ZXJDYXNlKCk7CiAgICAgICAgcmV0dXJuIChrID09PSBiIHx8 IGsgPT09IGJLdXJ6IHx8IGIuZW5kc1dpdGgoJ1xcJyArIGspKTsKICAgIH0KICAgIHZhciBmYSA9 IChaLmFkbWluLmZhY2hhdWZzaWNodCB8fCBbXSkuZmluZChmdW5jdGlvbihmKSB7IHJldHVybiBw YXNzdChmLm53S2VubnVuZyk7IH0pOwogICAgaWYgKGZhICYmIGZhLm5hbWUpIHJldHVybiBTdHJp bmcoZmEubmFtZSkudHJpbSgpLnNwbGl0KC9ccysvKVswXTsKICAgIHZhciBzdSA9IChaLmFkbWlu LnN1cGVyVXNlciB8fCBbXSkuZmluZChmdW5jdGlvbihzKSB7IHJldHVybiBwYXNzdChzLm53S2Vu bnVuZyk7IH0pOwogICAgaWYgKHN1ICYmIHN1Lm5hbWUpIHJldHVybiBTdHJpbmcoc3UubmFtZSku dHJpbSgpLnNwbGl0KC9ccysvKVswXTsKICAgIHZhciBwICA9IChaLnBsYW51bmcgJiYgWi5wbGFu dW5nLnBlcnNvbmVuIHx8IFtdKS5maW5kKGZ1bmN0aW9uKHBwKSB7IHJldHVybiBwYXNzdChwcC5u d0tlbm51bmcpOyB9KTsKICAgIGlmIChwKSB7CiAgICAgICAgaWYgKHAudm9ybmFtZSkgcmV0dXJu IFN0cmluZyhwLnZvcm5hbWUpLnRyaW0oKS5zcGxpdCgvXHMrLylbMF07CiAgICAgICAgaWYgKHAu bmFtZSkgICAgcmV0dXJuIFN0cmluZyhwLm5hbWUpLnRyaW0oKS5zcGxpdCgvXHMrLylbMF07CiAg ICB9CiAgICByZXR1cm4gJyc7Cn0KCmV4cG9ydCBmdW5jdGlvbiBiZXNldHp1bmdza29udHJvbGxl UmVuZGVybigpIHsKICAgIGlmICghKFoucmVjaHRlICYmIFoucmVjaHRlLmlzdEdlc2FtdHZlcmFu dHdvcnRsaWNoKSkgcmV0dXJuOwogICAgdmFyIGFuYWx5c2UgPSBiZXNldHp1bmdzQW5hbHlzZSgp OwogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2JrLWtwaS1nZXNhbXQnKS5xdWVyeVNlbGVj dG9yKCcuYmsta3BpLXphaGwnKS50ZXh0Q29udGVudCA9IGFuYWx5c2UuZ2VzYW10VGFnZTsKICAg IC8vIEtQSXMgamV0enQgbWl0IDMtU3RhdHVzLUFtcGVsIHN0YXR0IG51ciBkZWZpeml0L29rLiBX aXIgdmVyd2VuZGVuIGRpZQogICAgLy8gYmVzdGVoZW5kZW4gQ29udGFpbmVyIHdlaXRlciAoYmst a3BpLWRlZml6aXQgLT4gcm90LCBiay1rcGktb2sgLT4gZ3J1ZW4pCiAgICAvLyB1bmQgZXJnYWVu emVuIExhYmVsLVRleHQgdmlhIHRpdGxlLgogICAgdmFyIGVsRGVmID0gZG9jdW1lbnQuZ2V0RWxl bWVudEJ5SWQoJ2JrLWtwaS1kZWZpeml0Jyk7CiAgICB2YXIgZWxPayAgPSBkb2N1bWVudC5nZXRF bGVtZW50QnlJZCgnYmsta3BpLW9rJyk7CiAgICBpZiAoZWxEZWYpIHsKICAgICAgICBlbERlZi5x dWVyeVNlbGVjdG9yKCcuYmsta3BpLXphaGwnKS50ZXh0Q29udGVudCAgPSBhbmFseXNlLnJvdFRh Z2U7CiAgICAgICAgZWxEZWYucXVlcnlTZWxlY3RvcignLmJrLWtwaS1sYWJlbCcpLnRleHRDb250 ZW50ID0gJ3JvdCAo4omkMSknOwogICAgfQogICAgaWYgKGVsT2spIHsKICAgICAgICBlbE9rLnF1 ZXJ5U2VsZWN0b3IoJy5iay1rcGktemFobCcpLnRleHRDb250ZW50ICA9IGFuYWx5c2UuZ3J1ZW5U YWdlOwogICAgICAgIGVsT2sucXVlcnlTZWxlY3RvcignLmJrLWtwaS1sYWJlbCcpLnRleHRDb250 ZW50ID0gJ2dyw7xuICjiiaUzKSc7CiAgICB9CgogICAgLy8gUGVyc29lbmxpY2hlIEJlZ3J1ZXNz dW5nICsgRXJrbGFlcnVuZy4gQW5yZWRlICsgQnJpZWZpbmctQnV0dG9uIGltbWVyCiAgICAvLyBz aWNodGJhcjsgZGllIGF1c2Z1ZWhybGljaGUgRXJrbGFlcnVuZyBpbiBlaW5lbSBhdWZrbGFwcGJh cmVuIDxkZXRhaWxzPi4KICAgIHZhciBiZ0VsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Jr LWJlZ3J1ZXNzdW5nJyk7CiAgICBpZiAoYmdFbCkgewogICAgICAgIHZhciB2b3JuYW1lID0gZ2Vz YW10dmVyYW50d29ydGxpY2hWb3JuYW1lRXJtaXR0ZWxuKCk7CiAgICAgICAgdmFyIGFucmVkZSA9 IHZvcm5hbWUgPyAoJ0hhbGxvICcgKyBlc2NhcGVIVE1MKHZvcm5hbWUpICsgJyEnKSA6ICdIYWxs byEnOwogICAgICAgIHZhciBuYXZCZXNMYWJlbCA9IGJlek9kZXIoJ25hdi5iZXNldHp1bmcnLCAn QmVzZXR6dW5nJyk7CiAgICAgICAgYmdFbC5pbm5lckhUTUwgPQogICAgICAgICAgICAnPGRpdiBj bGFzcz0iYmstYmVncnVlc3N1bmciPicgKwogICAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9ImJr LWJlZ3Ita29wZiI+JyArCiAgICAgICAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9ImJrLWJlZ3It YW5yZWRlIj4nICsgYW5yZWRlICsgJzwvZGl2PicgKwogICAgICAgICAgICAgICAgICAgICc8YnV0 dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0biBidG4tc2VrIGJ0bi1rbGVpbiIgaWQ9ImJ0bi1k ZWZpeml0LWJyaWVmaW5nIj5EZWZpeml0LUJyaWVmaW5nIGFscyBNYWlsIHZvcmJlcmVpdGVuPC9i dXR0b24+JyArCiAgICAgICAgICAgICAgICAnPC9kaXY+JyArCiAgICAgICAgICAgICAgICAnPHAg Y2xhc3M9ImJrLWJlZ3ItcXVpY2tpbnRybyI+S2xpY2sgYXVmIGVpbmVuIFRhZyBpbSBLYWxlbmRl ciB1bnRlbiB6ZWlndCBkaXIgZGllIGVpbmdlcGxhbnRlbiBGw7xocnVuZ3NrcsOkZnRlLiBCZWkg PHNwYW4gY2xhc3M9ImJrLWJlZ3ItcGlsbCBiay1iZWdyLXBpbGwtcm90Ij5Sb3Q8L3NwYW4+LVRh Z2VuIHp1c8OkdHpsaWNoIGRpZSBQZXJzb25lbiwgZGllIGR1IHBlcnPDtm5saWNoIGFuc2NocmVp YmVuIGthbm5zdC48L3A+JyArCiAgICAgICAgICAgICAgICAnPGRldGFpbHMgY2xhc3M9ImJrLWJl Z3ItZGV0YWlscyI+JyArCiAgICAgICAgICAgICAgICAgICAgJzxzdW1tYXJ5Pk1laHIgSW5mb3Mg enVyIExvZ2lrICZhbXA7IGRlbiBNYWlsLUZ1bmt0aW9uZW48L3N1bW1hcnk+JyArCiAgICAgICAg ICAgICAgICAgICAgJzxwPkRpZXNlIEFuc2ljaHQgdW5kIGRlciBUYWIgPHN0cm9uZz4nICsgZXNj YXBlSFRNTChuYXZCZXNMYWJlbCkgKyAnPC9zdHJvbmc+IG9iZW4gaW0gSGVhZGVyIHNpbmQgPHN0 cm9uZz5hdXNzY2hsaWXDn2xpY2ggZsO8ciBkaWNoPC9zdHJvbmc+IGFscyBHZXNhbXR2ZXJhbnR3 b3J0bGljaGUvciBlaW5nZXJpY2h0ZXQg4oCUIHNpZSBzb2xsZW4gZGlyIGRpZSBXYWhybmVobXVu ZyBkZWluZXIgVmVyYW50d29ydHVuZ3PCrXp1d2Vpc3VuZyBlcmxlaWNodGVybi48L3A+JyArCiAg ICAgICAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9ImJrLWJlZ3ItbGVnZW5kZSI+JyArCiAgICAg ICAgICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJiay1iZWdyLWVpbnRyYWciPicgKwogICAg ICAgICAgICAgICAgICAgICAgICAgICAgJzxzcGFuIGNsYXNzPSJiay1iZWdyLXBpbGwgYmstYmVn ci1waWxsLXJvdCI+Um90PC9zcGFuPicgKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJzxz cGFuPk1pbmRlc3RlbnMgZWluZSBTY2hpY2h0IG1pdCBudXIgPHN0cm9uZz4xIEbDvGhydW5nc2ty YWZ0PC9zdHJvbmc+IG9kZXIgd2VuaWdlciDigJQga3JpdGlzY2guPC9zcGFuPicgKwogICAgICAg ICAgICAgICAgICAgICAgICAnPC9kaXY+JyArCiAgICAgICAgICAgICAgICAgICAgICAgICc8ZGl2 IGNsYXNzPSJiay1iZWdyLWVpbnRyYWciPicgKwogICAgICAgICAgICAgICAgICAgICAgICAgICAg JzxzcGFuIGNsYXNzPSJiay1iZWdyLXBpbGwgYmstYmVnci1waWxsLWdlbGIiPkdlbGI8L3NwYW4+ JyArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPHNwYW4+TWluZGVzdGVucyBlaW5lIFNj aGljaHQgbWl0IDxzdHJvbmc+Z2VuYXUgMjwvc3Ryb25nPiDigJQga2VpbiBQdWZmZXIgZsO8ciBB dXNmw6RsbGUuPC9zcGFuPicgKwogICAgICAgICAgICAgICAgICAgICAgICAnPC9kaXY+JyArCiAg ICAgICAgICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJiay1iZWdyLWVpbnRyYWciPicgKwog ICAgICAgICAgICAgICAgICAgICAgICAgICAgJzxzcGFuIGNsYXNzPSJiay1iZWdyLXBpbGwgYmst YmVnci1waWxsLWdydWVuIj5HcsO8bjwvc3Bhbj4nICsKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICc8c3Bhbj5BbGxlIFNjaGljaHRlbiBtaXQgPHN0cm9uZz4zIG9kZXIgbWVocjwvc3Ryb25n PiBGw7xocnVuZ3NrcsOkZnRlbiDigJQga29tZm9ydGFiZWwgYmVzZXR6dC48L3NwYW4+JyArCiAg ICAgICAgICAgICAgICAgICAgICAgICc8L2Rpdj4nICsKICAgICAgICAgICAgICAgICAgICAnPC9k aXY+JyArCiAgICAgICAgICAgICAgICAgICAgJzxwIGNsYXNzPSJiay1iZWdyLW1haWwiPjxzdHJv bmc+VGFnIMO2ZmZuZW46PC9zdHJvbmc+IGJlaSBSb3Qgd2VyZGVuIHp1c8OkdHpsaWNoIGRpZSBQ ZXJzb25lbiBtaXQgPGNvZGU+ZGZyPC9jb2RlPi88Y29kZT53ZnI8L2NvZGU+IChwb3RlbnppZWxs IHZlcmbDvGdiYXIpIHVuZCBtaXQgU2NodWx1bmdzLUNvZGVzIHdpZSA8Y29kZT5BdUY8L2NvZGU+ Lzxjb2RlPkxHPC9jb2RlPi88Y29kZT5TZW08L2NvZGU+IChudXIgTm90ZmFsbCkgZ2VsaXN0ZXQg 4oCUIEtsaWNrIGF1ZiBlaW5lIFBlcnNvbiDDtmZmbmV0IGVpbmUgcGVyc8O2bmxpY2hlIE1haWwg aW4gZGVpbmVtIE1haWxwcm9ncmFtbS48L3A+JyArCiAgICAgICAgICAgICAgICAgICAgJzxwIGNs YXNzPSJiay1iZWdyLW1haWwiPjxzdHJvbmc+RGVmaXppdC1CcmllZmluZy1CdXR0b246PC9zdHJv bmc+IE91dGxvb2sgbWl0IGVpbmVyIHp1c2FtbWVuZ2VmYXNzdGVuIMOcYmVyc2ljaHQgYWxsZXIg RsO8aHJ1bmdzLVVudGVyYmVzZXR6dW5nZW4gZGVyIG7DpGNoc3RlbiA0IFdvY2hlbi48L3A+JyAr CiAgICAgICAgICAgICAgICAnPC9kZXRhaWxzPicgKwogICAgICAgICAgICAnPC9kaXY+JzsKICAg ICAgICB2YXIgYnRuREIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYnRuLWRlZml6aXQtYnJp ZWZpbmcnKTsKICAgICAgICBpZiAoYnRuREIpIGJ0bkRCLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNr JywgZGVmaXppdEJyaWVmaW5nT2VmZm5lbik7CiAgICB9CgogICAgLy8gPT09PT0gS2FsZW5kZXIt QW5zaWNodCA9PT09PQogICAgLy8gV2lyIHplaWdlbiA1IFdvY2hlbi1SZWloZW4gYWIgZGVtIE1v bnRhZyBkZXIgYWt0dWVsbGVuIFdvY2hlLgogICAgLy8gVGFnZSBWT1IgaGV1dGUgb2RlciBOQUNI IGhldXRlKzI4IHNpbmQgZ3JhdS9pbmFrdGl2LCBkYXp3aXNjaGVuCiAgICAvLyB3ZXJkZW4gc2ll IG5hY2ggU3RhdHVzIChyb3QvZ2VsYi9ncnVlbikgZWluZ2VmYWVyYnQgdW5kIHNpbmQga2xpY2ti YXIuCiAgICB2YXIgaW5oYWx0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2JrLWluaGFsdCcp OwogICAgdmFyIGhldXRlICA9IG5ldyBEYXRlKCk7IGhldXRlLnNldEhvdXJzKDAsMCwwLDApOwog ICAgdmFyIGhldXRlU3RyID0gZGF0dW1TdHIoaGV1dGUpOwogICAgdmFyIGVuZGVTdHI7CiAgICB7 CiAgICAgICAgdmFyIGVuZGUgPSBuZXcgRGF0ZShoZXV0ZSk7CiAgICAgICAgZW5kZS5zZXREYXRl KGVuZGUuZ2V0RGF0ZSgpICsgQktfSE9SSVpPTlRfVEFHRSk7CiAgICAgICAgZW5kZVN0ciA9IGRh dHVtU3RyKGVuZGUpOwogICAgfQogICAgLy8gTWFwIGRhdHVtIC0+IHRhZ0RhdGVuIChhdXMgYW5h bHlzZS50YWdlLCBmdWVyIHNjaG5lbGxlbiBadWdyaWZmKQogICAgdmFyIHRhZ01hcCA9IHt9Owog ICAgYW5hbHlzZS50YWdlLmZvckVhY2goZnVuY3Rpb24odCkgeyB0YWdNYXBbdC5kYXR1bV0gPSB0 OyB9KTsKICAgIC8vIE1vbnRhZyBkaWVzZXIgV29jaGUgYmVzdGltbWVuCiAgICB2YXIgc3RhcnRN byA9IG5ldyBEYXRlKGhldXRlKTsKICAgIHZhciBkb3cgPSBzdGFydE1vLmdldERheSgpOyAvLyAw PVNvLCAxPU1vLCAuLi4sIDY9U2EKICAgIHZhciBkaWZmTW8gPSAoZG93ID09PSAwKSA/IC02IDog KDEgLSBkb3cpOwogICAgc3RhcnRNby5zZXREYXRlKHN0YXJ0TW8uZ2V0RGF0ZSgpICsgZGlmZk1v KTsKCiAgICB2YXIgbW9OYW1lbiA9IFsnSmFudWFyJywnRmVicnVhcicsJ03DpHJ6JywnQXByaWwn LCdNYWknLCdKdW5pJywnSnVsaScsJ0F1Z3VzdCcsJ1NlcHRlbWJlcicsJ09rdG9iZXInLCdOb3Zl bWJlcicsJ0RlemVtYmVyJ107CiAgICB2YXIgaHRtbCA9ICc8ZGl2IGNsYXNzPSJiay1rYWwiPic7 CiAgICAvLyBXb2NoZW50YWctSGVhZGVyIChNby1TbykKICAgIGh0bWwgKz0gJzxkaXYgY2xhc3M9 ImJrLWthbC13dC1rb3BmIj4nICsKICAgICAgICAgICAgJzxkaXYgY2xhc3M9ImJrLWthbC13dCI+ TW88L2Rpdj4nICsKICAgICAgICAgICAgJzxkaXYgY2xhc3M9ImJrLWthbC13dCI+RGk8L2Rpdj4n ICsKICAgICAgICAgICAgJzxkaXYgY2xhc3M9ImJrLWthbC13dCI+TWk8L2Rpdj4nICsKICAgICAg ICAgICAgJzxkaXYgY2xhc3M9ImJrLWthbC13dCI+RG88L2Rpdj4nICsKICAgICAgICAgICAgJzxk aXYgY2xhc3M9ImJrLWthbC13dCI+RnI8L2Rpdj4nICsKICAgICAgICAgICAgJzxkaXYgY2xhc3M9 ImJrLWthbC13dCBiay1rYWwtd3Qtd2UiPlNhPC9kaXY+JyArCiAgICAgICAgICAgICc8ZGl2IGNs YXNzPSJiay1rYWwtd3QgYmsta2FsLXd0LXdlIj5TbzwvZGl2PicgKwogICAgICAgICAgICAnPC9k aXY+JzsKICAgIC8vIDUgV29jaGVuIMOXIDcgVGFnZSA9IDM1IFplbGxlbiDigJQgZGVja3QgMjgg VGFnZSBIb3Jpem9udCBzaWNoZXIgYWIsCiAgICAvLyBlZ2FsIGFuIHdlbGNoZW0gV29jaGVudGFn IHdpciBzdGFydGVuLgogICAgZm9yICh2YXIgdyA9IDA7IHcgPCA1OyB3KyspIHsKICAgICAgICBo dG1sICs9ICc8ZGl2IGNsYXNzPSJiay1rYWwtd29jaGUiPic7CiAgICAgICAgZm9yICh2YXIgZCA9 IDA7IGQgPCA3OyBkKyspIHsKICAgICAgICAgICAgdmFyIHRhZyA9IG5ldyBEYXRlKHN0YXJ0TW8p OwogICAgICAgICAgICB0YWcuc2V0RGF0ZSh0YWcuZ2V0RGF0ZSgpICsgdyAqIDcgKyBkKTsKICAg ICAgICAgICAgdmFyIHRhZ1MgPSBkYXR1bVN0cih0YWcpOwogICAgICAgICAgICB2YXIgaW1GZW5z dGVyID0gKHRhZ1MgPj0gaGV1dGVTdHIgJiYgdGFnUyA8IGVuZGVTdHIpOwogICAgICAgICAgICB2 YXIgaXN0SGV1dGUgPSAodGFnUyA9PT0gaGV1dGVTdHIpOwogICAgICAgICAgICB2YXIgaXN0V0Ug PSAoZCA+PSA1KTsKICAgICAgICAgICAgdmFyIGRhdGEgPSB0YWdNYXBbdGFnU107CiAgICAgICAg ICAgIHZhciBzdGF0dXNDbHMgPSAnJzsKICAgICAgICAgICAgaWYgKGltRmVuc3RlciAmJiBkYXRh KSBzdGF0dXNDbHMgPSAnIGJrLWthbC0nICsgZGF0YS5zdGF0dXM7CiAgICAgICAgICAgIGVsc2Ug c3RhdHVzQ2xzID0gJyBiay1rYWwtYXVzc2VuJzsKICAgICAgICAgICAgaWYgKGlzdEhldXRlKSBz dGF0dXNDbHMgKz0gJyBiay1rYWwtaGV1dGUnOwogICAgICAgICAgICBpZiAoaXN0V0UpIHN0YXR1 c0NscyArPSAnIGJrLWthbC13ZSc7CiAgICAgICAgICAgIC8vIE1vbmF0c25hbWUgYW0gMS4gYW56 ZWlnZW4sIHNvbnN0IG51ciBaYWhsCiAgICAgICAgICAgIHZhciBsYWJlbCA9ICc8c3BhbiBjbGFz cz0iYmsta2FsLXRhZ25yIj4nICsgdGFnLmdldERhdGUoKSArICc8L3NwYW4+JzsKICAgICAgICAg ICAgaWYgKHRhZy5nZXREYXRlKCkgPT09IDEpIGxhYmVsICs9ICc8c3BhbiBjbGFzcz0iYmsta2Fs LW1vIj4nICsgbW9OYW1lblt0YWcuZ2V0TW9udGgoKV0uc3Vic3RyaW5nKDAsMykgKyAnPC9zcGFu Pic7CiAgICAgICAgICAgIC8vIFNjaGljaHQtTWluaS1JbmRpa2F0b3JlbiBiZWkgaW1GZW5zdGVy CiAgICAgICAgICAgIHZhciBtaW5pID0gJyc7CiAgICAgICAgICAgIGlmIChpbUZlbnN0ZXIgJiYg ZGF0YSkgewogICAgICAgICAgICAgICAgbWluaSA9ICc8c3BhbiBjbGFzcz0iYmsta2FsLW1pbmki PicgKwogICAgICAgICAgICAgICAgICAgICc8c3BhbiBjbGFzcz0iYmsta2FsLW1pbmktemVsbGUg Ymsta2FsLW1pbmktJyArIGRhdGEuc2NoaWNodGVuLkYuc3RhdHVzICsgJyIgdGl0bGU9IkZyw7xo c2NoaWNodDogJyArIGRhdGEuc2NoaWNodGVuLkYuaXN0ICsgJyBGayI+RicgKyBkYXRhLnNjaGlj aHRlbi5GLmlzdCArICc8L3NwYW4+JyArCiAgICAgICAgICAgICAgICAgICAgJzxzcGFuIGNsYXNz PSJiay1rYWwtbWluaS16ZWxsZSBiay1rYWwtbWluaS0nICsgZGF0YS5zY2hpY2h0ZW4uUy5zdGF0 dXMgKyAnIiB0aXRsZT0iU3DDpHRzY2hpY2h0OiAnICsgZGF0YS5zY2hpY2h0ZW4uUy5pc3QgKyAn IEZrIj5TJyArIGRhdGEuc2NoaWNodGVuLlMuaXN0ICsgJzwvc3Bhbj4nICsKICAgICAgICAgICAg ICAgICAgICAnPHNwYW4gY2xhc3M9ImJrLWthbC1taW5pLXplbGxlIGJrLWthbC1taW5pLScgKyBk YXRhLnNjaGljaHRlbi5OLnN0YXR1cyArICciIHRpdGxlPSJOYWNodHNjaGljaHQ6ICcgKyBkYXRh LnNjaGljaHRlbi5OLmlzdCArICcgRmsiPk4nICsgZGF0YS5zY2hpY2h0ZW4uTi5pc3QgKyAnPC9z cGFuPicgKwogICAgICAgICAgICAgICAgICAgICc8L3NwYW4+JzsKICAgICAgICAgICAgfQogICAg ICAgICAgICB2YXIgY2xpY2sgPSBpbUZlbnN0ZXIgPyAnIGRhdGEtYWt0aW9uPSJiay10YWciIGRh dGEtZGF0dW09IicgKyBlc2NhcGVBdHRyKHRhZ1MpICsgJyInIDogJyc7CiAgICAgICAgICAgIGh0 bWwgKz0gJzxkaXYgY2xhc3M9ImJrLWthbC10YWcnICsgc3RhdHVzQ2xzICsgJyInICsgY2xpY2sg KyAnPicgKwogICAgICAgICAgICAgICAgbGFiZWwgKyBtaW5pICsgJzwvZGl2Pic7CiAgICAgICAg fQogICAgICAgIGh0bWwgKz0gJzwvZGl2Pic7CiAgICB9CiAgICBodG1sICs9ICc8L2Rpdj4nOwog ICAgaW5oYWx0LmlubmVySFRNTCA9IGh0bWw7Cn0KCi8vIERlbHRhLVVwZGF0ZSBmdWVyIGVpbmVu IGVpbnplbG5lbiBUYWcg4oCUIHZlcm1laWRldCBkZW4gdm9sbHN0YWVuZGlnZW4KLy8gaW5uZXJI VE1MLVJlYnVpbGQgZGVzIDUtV29jaGVuLUthbGVuZGVycyBuYWNoIGplZGVtIFplbGwtRWRpdC4g V2lyZCBhdXMKLy8gZGVtIEVkaXRvciBhdWZnZXJ1ZmVuLCB3ZW5uIGRlciBQcnVlZnVuZ3MtVGFi IHNpY2h0YmFyIGlzdC4gQXVmZ2FiZToKLy8gICAxLiBTdGF0dXMtS2xhc3NlIChyb3QvZ2VsYi9n cnVlbikgZGVyIGVpbmVuIEthY2hlbCBwYXRjaGVuCi8vICAgMi4gTWluaS1JbmRpa2F0b3JlbiBG L1MvTiBtaXQgZGVuIG5ldWVuIFphZWhsdW5nZW4gYWt0dWFsaXNpZXJlbgovLyAgIDMuIEtQSS1a YWhsZW4gKGdlc2FtdC9yb3QvZ3J1ZW4pIG5ldSB6YWVobGVuCi8vIFdlbm4gZGVyIFRhYiBuaWUg Z2VyZW5kZXJ0IHd1cmRlIChrZWluIGJrLWluaGFsdCkgb2RlciBkYXMgRGF0dW0KLy8gYXVzc2Vy aGFsYiBkZXMgNC1Xb2NoZW4tRmVuc3RlcnMgbGllZ3Q6IG5vLW9wLiBLUEktUmVjb3VudCBudXR6 dAovLyBiZXNldHp1bmdzQW5hbHlzZSgpIOKAlCBkYXMgaXN0IGJpbGxpZyAoTygyOCBUYWdlICog NDUgUGVyc29uZW4pKSwKLy8gdGV1ZXIgaXN0IGRlciBET00tUmVidWlsZCwgZGVuIHdpciBkYW1p dCBzcGFyZW4uCmV4cG9ydCBmdW5jdGlvbiBiZXNldHp1bmdza29udHJvbGxlVGFnVXBkYXRlbihk YXR1bSkgewogICAgaWYgKCEoWi5yZWNodGUgJiYgWi5yZWNodGUuaXN0R2VzYW10dmVyYW50d29y dGxpY2gpKSByZXR1cm47CiAgICB2YXIgaW5oYWx0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo J2JrLWluaGFsdCcpOwogICAgaWYgKCFpbmhhbHQpIHJldHVybjsKICAgIHZhciB0YWdFbCA9IGlu aGFsdC5xdWVyeVNlbGVjdG9yKCcuYmsta2FsLXRhZ1tkYXRhLWRhdHVtPSInICsgZGF0dW0gKyAn Il0nKTsKICAgIGlmICghdGFnRWwpIHJldHVybjsgIC8vIGF1c3NlcmhhbGIgZGVzIDQtV29jaGVu LUZlbnN0ZXJzCgogICAgZnVuY3Rpb24gc2NoaWNodFN0YXR1cyhpc3QpIHsKICAgICAgICBpZiAo aXN0IDw9IDEpIHJldHVybiAncm90JzsKICAgICAgICBpZiAoaXN0ID09PSAyKSByZXR1cm4gJ2dl bGInOwogICAgICAgIHJldHVybiAnZ3J1ZW4nOwogICAgfQogICAgZnVuY3Rpb24gdGFnU3RhdHVz KGYsIHMsIG4pIHsKICAgICAgICBpZiAoZiA8PSAxIHx8IHMgPD0gMSB8fCBuIDw9IDEpIHJldHVy biAncm90JzsKICAgICAgICBpZiAoZiA9PT0gMiB8fCBzID09PSAyIHx8IG4gPT09IDIpIHJldHVy biAnZ2VsYic7CiAgICAgICAgcmV0dXJuICdncnVlbic7CiAgICB9CgogICAgdmFyIGYgPSBmdWVo cnVuZ3NaYWVobGVuKGRhdHVtLCAnRicpOwogICAgdmFyIHMgPSBmdWVocnVuZ3NaYWVobGVuKGRh dHVtLCAnUycpOwogICAgdmFyIG4gPSBmdWVocnVuZ3NaYWVobGVuKGRhdHVtLCAnTicpOwogICAg dmFyIHN0ID0gdGFnU3RhdHVzKGYsIHMsIG4pOwoKICAgIHRhZ0VsLmNsYXNzTGlzdC5yZW1vdmUo J2JrLWthbC1yb3QnLCAnYmsta2FsLWdlbGInLCAnYmsta2FsLWdydWVuJyk7CiAgICB0YWdFbC5j bGFzc0xpc3QuYWRkKCdiay1rYWwtJyArIHN0KTsKCiAgICB2YXIgbWluaSA9IHRhZ0VsLnF1ZXJ5 U2VsZWN0b3IoJy5iay1rYWwtbWluaScpOwogICAgaWYgKG1pbmkpIHsKICAgICAgICBtaW5pLmlu bmVySFRNTCA9CiAgICAgICAgICAgICc8c3BhbiBjbGFzcz0iYmsta2FsLW1pbmktemVsbGUgYmst a2FsLW1pbmktJyArIHNjaGljaHRTdGF0dXMoZikgKyAnIiB0aXRsZT0iRnLDvGhzY2hpY2h0OiAn ICsgZiArICcgRmsiPkYnICsgZiArICc8L3NwYW4+JyArCiAgICAgICAgICAgICc8c3BhbiBjbGFz cz0iYmsta2FsLW1pbmktemVsbGUgYmsta2FsLW1pbmktJyArIHNjaGljaHRTdGF0dXMocykgKyAn IiB0aXRsZT0iU3DDpHRzY2hpY2h0OiAnICsgcyArICcgRmsiPlMnICsgcyArICc8L3NwYW4+JyAr CiAgICAgICAgICAgICc8c3BhbiBjbGFzcz0iYmsta2FsLW1pbmktemVsbGUgYmsta2FsLW1pbmkt JyArIHNjaGljaHRTdGF0dXMobikgKyAnIiB0aXRsZT0iTmFjaHRzY2hpY2h0OiAnICsgbiArICcg RmsiPk4nICsgbiArICc8L3NwYW4+JzsKICAgIH0KCiAgICB2YXIgYW5hbHlzZSA9IGJlc2V0enVu Z3NBbmFseXNlKCk7CiAgICB2YXIgZ2VzRWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYmst a3BpLWdlc2FtdCcpOwogICAgdmFyIGRlZkVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Jr LWtwaS1kZWZpeml0Jyk7CiAgICB2YXIgb2tFbCAgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn Ymsta3BpLW9rJyk7CiAgICBpZiAoZ2VzRWwpIGdlc0VsLnF1ZXJ5U2VsZWN0b3IoJy5iay1rcGkt emFobCcpLnRleHRDb250ZW50ID0gYW5hbHlzZS5nZXNhbXRUYWdlOwogICAgaWYgKGRlZkVsKSBk ZWZFbC5xdWVyeVNlbGVjdG9yKCcuYmsta3BpLXphaGwnKS50ZXh0Q29udGVudCA9IGFuYWx5c2Uu cm90VGFnZTsKICAgIGlmIChva0VsKSAgb2tFbCAucXVlcnlTZWxlY3RvcignLmJrLWtwaS16YWhs JykudGV4dENvbnRlbnQgPSBhbmFseXNlLmdydWVuVGFnZTsKfQoKLy8gS2xpY2stSGFuZGxlciBm dWVyIEthbGVuZGVyLVRhZ2UuIEtsaWNrIGF1ZiBlaW5lbiBha3RpdmVuIFRhZyBvZWZmbmV0Ci8v IGRhcyBEZXRhaWwtTW9kYWwgbWl0IFNjaGljaHQtQXVmc3RlbGx1bmcgKyAoYmVpIHJvdCkgQXVz aGlsZmUtS2FuZGlkYXRlbi4KZXhwb3J0IGZ1bmN0aW9uIGJlc2V0enVuZ3Nrb250cm9sbGVFdmVu dHNBdWZoYWVuZ2VuKCkgewogICAgdmFyIGluaGFsdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk KCdiay1pbmhhbHQnKTsKICAgIGlmICghaW5oYWx0KSByZXR1cm47CiAgICBpbmhhbHQuYWRkRXZl bnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbihlKSB7CiAgICAgICAgdmFyIHRhZyA9IGUudGFy Z2V0LmNsb3Nlc3QoJ1tkYXRhLWFrdGlvbj0iYmstdGFnIl0nKTsKICAgICAgICBpZiAodGFnKSB7 CiAgICAgICAgICAgIHRhZ0RldGFpbE1vZGFsWmVpZ2VuKHRhZy5nZXRBdHRyaWJ1dGUoJ2RhdGEt ZGF0dW0nKSk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9KTsKfQoKLy8gTGll ZmVydCBkaWUgUGVyc29uZW4sIGRpZSBhbSBnZWdlYmVuZW4gRGF0dW0gZWluZW4gRnJlaS1Db2Rl IChkZnIsIHdmcikKLy8gZWluZ2V0cmFnZW4gaGFiZW4uIEthbmRpZGF0ZW4gZnVlciBkaWUgUnVu ZG1haWwuCmV4cG9ydCBmdW5jdGlvbiBmcmVpUGVyc29uZW5GdWVyKGRhdHVtKSB7CiAgICByZXR1 cm4gdmVyZnVlZ2JhcmVQZXJzb25lbkZ1ZXIoZGF0dW0pLmZpbHRlcihmdW5jdGlvbihwKSB7CiAg ICAgICAgcmV0dXJuIHAua2F0ZWdvcmllID09PSAnZnJlaSc7CiAgICB9KTsKfQoKLy8gUG90ZW50 aWVsbCB2ZXJmdWVnYmFyZSBQZXJzb25lbiBhbSBEYXR1bSDigJQgS2FuZGlkYXRlbiBmdWVyIGRp ZQovLyBTY2hpY2h0LUF1c2hpbGZlLiBOdXIgRnJlaS1Db2RlcyAoZGZyL3dmcik6IGRpZSBoYWJl biBhbSBUYWcgb2ZmaXppZWxsCi8vIG5pY2h0cyB2b3IgdW5kIGtvZW5uZW4gdGhlb3JldGlzY2gg ZWluc3ByaW5nZW4uIFRlcm1pbi1Db2RlcyAoQXVGL0xHLwovLyBTZW0vVHpGL0FaQS9FVE0pIHNp bmQgdGFnc3VlYmVyIGJsb2NraWVydCB1bmQga29tbWVuIGZ1ZXIgZWluZQovLyBrbGFzc2lzY2hl IFNjaGljaHQtQXVzaGlsZmUgbmljaHQgaW4gRnJhZ2Ug4oCUIGRpZSB3dXJkZW4gZnJ1ZWhlciBh bHMKLy8gIk5vdGZhbGwiLUJsb2NrIGFuZ2V6ZWlndCwgd2FzIGltIExpdmUtQmV0cmllYiBtZWhy IHZlcndpcnJ0IGhhdCBhbHMKLy8gZ2VudXR6dCwgZGFoZXIgMjAyNi0wNS0xOSByYXVzLgpleHBv cnQgZnVuY3Rpb24gdmVyZnVlZ2JhcmVQZXJzb25lbkZ1ZXIoZGF0dW0pIHsKICAgIHZhciBlID0g KFoucGxhbnVuZy5laW50cmFlZ2UgfHwge30pW2RhdHVtXSB8fCB7fTsKICAgIHZhciBrb21tZW50 YXJlID0gKChaLnBsYW51bmcua29tbWVudGFyZSB8fCB7fSlbZGF0dW1dKSB8fCB7fTsKICAgIHZh ciBGUkVJX0NPREVTID0geyBkZnI6IDEsIHdmcjogMSB9OwogICAgdmFyIGxpc3RlID0gW107CiAg ICAoWi5wbGFudW5nLnBlcnNvbmVuIHx8IFtdKS5mb3JFYWNoKGZ1bmN0aW9uKHApIHsKICAgICAg ICBpZiAoIXAuYWt0aXYpIHJldHVybjsKICAgICAgICB2YXIgdyA9IGVbU3RyaW5nKHAuaWQpXSB8 fCAnJzsKICAgICAgICBpZiAoIUZSRUlfQ09ERVNbd10pIHJldHVybjsKICAgICAgICBsaXN0ZS5w dXNoKHsKICAgICAgICAgICAgaWQ6IHAuaWQsCiAgICAgICAgICAgIG5hbWU6ICgocC52b3JuYW1l IHx8ICcnKSArICcgJyArIChwLm5hbWUgfHwgJycpKS50cmltKCksCiAgICAgICAgICAgIHZvcm5h bWU6IHAudm9ybmFtZSB8fCAnJywKICAgICAgICAgICAgd2VydDogdywKICAgICAgICAgICAgZW1h aWw6IHAuZW1haWwgfHwgJycsCiAgICAgICAgICAgIGtvbW1lbnRhcjoga29tbWVudGFyVGV4dChr b21tZW50YXJlW1N0cmluZyhwLmlkKV0pLAogICAgICAgICAgICBncnVwcGU6IHAuZ3J1cHBlIHx8 ICcnCiAgICAgICAgfSk7CiAgICB9KTsKICAgIGxpc3RlLnNvcnQoZnVuY3Rpb24oYSwgYikgeyBy ZXR1cm4gYS5uYW1lLmxvY2FsZUNvbXBhcmUoYi5uYW1lKTsgfSk7CiAgICByZXR1cm4gbGlzdGU7 Cn0KCi8vIEthbmRpZGF0ZW4tUmVzb2x2ZXIgZnVlciBlaW5lIGtvbmtyZXQgdW50ZXJiZXNldHp0 ZSBTY2hpY2h0LgovLyBWSTMtREdMLXF1YWxpZml6aWVydGUgUGVyc29uZW4gYXVzIGRlciB2b3Jn ZWdlYmVuZW4gRGllbnN0Z3J1cHBlLCBuaWNodAovLyBHZXNhbXR2ZXJhbnR3b3J0bGljaC4gUmV0 dXJucyB6d2VpIEdydXBwZW46Ci8vICAgLmZyZWkgIOKAlCBhbSBUYWcgd2lya2xpY2ggZnJlaSAo bGVlcmVyIEVpbnRyYWcsIGRmci93ZnIvwqcyMS8yMWEpCi8vICAgLnVtZGlzcG9uaWVyYmFyIOKA lCBhbSBUYWcgaW4gV0RGIG9kZXIgRkJQIGVpbmdlcGxhbnQgaW4gZGVyc2VsYmVuCi8vICAgICBT Y2hpY2h0IChGL1MvTik6IGtvZW5uZW4gREdMIHVlYmVybmVobWVuLCBicmF1Y2hlbiBhYmVyIEVy c2F0eiBmdWVyCi8vICAgICBpaHJlIGJpc2hlcmlnZSBXREYvRkJQLVJvbGxlIChVc2VyLUZlZWRi YWNrIDIwMjYtMDUtMjMpLgpleHBvcnQgZnVuY3Rpb24gYmVzZXR6dW5nc0thbmRpZGF0ZW5Fcm1p dHRlbG4oZGF0dW0sIHNjaGljaHRMZXR0ZXIsIGRpZW5zdGdydXBwZSkgewogICAgdmFyIGUgPSAo Wi5wbGFudW5nLmVpbnRyYWVnZSB8fCB7fSlbZGF0dW1dIHx8IHt9OwogICAgdmFyIEZSRUkgPSB7 ICcnOiAxLCBkZnI6IDEsIHdmcjogMSwgJ8KnMjEnOiAxLCAnMjFhJzogMSB9OwogICAgdmFyIGVy Z2VibmlzID0geyBmcmVpOiBbXSwgdW1kaXNwb25pZXJiYXI6IFtdIH07CiAgICAoWi5wbGFudW5n LnBlcnNvbmVuIHx8IFtdKS5mb3JFYWNoKGZ1bmN0aW9uKHApIHsKICAgICAgICBpZiAoIXAuYWt0 aXYpIHJldHVybjsKICAgICAgICBpZiAocC5nZWxvZXNjaHRBbSkgcmV0dXJuOwogICAgICAgIGlm ICghaXN0RGdsUXVhbGlmaXppZXJ0KHApKSByZXR1cm47CiAgICAgICAgaWYgKGRpZW5zdGdydXBw ZSAmJiAocC5ncnVwcGUgfHwgJycpICE9PSBkaWVuc3RncnVwcGUpIHJldHVybjsKICAgICAgICBp ZiAoaXN0R2VzYW10dmVyYW50d29ydGxpY2gocCkpIHJldHVybjsKICAgICAgICB2YXIgdyA9IFN0 cmluZyhlW1N0cmluZyhwLmlkKV0gfHwgJycpOwogICAgICAgIGlmICh3IGluIEZSRUkpIHsKICAg ICAgICAgICAgZXJnZWJuaXMuZnJlaS5wdXNoKHApOwogICAgICAgICAgICByZXR1cm47CiAgICAg ICAgfQogICAgICAgIC8vIFVtZGlzcG9uaWVyYmFyOiBQZXJzb24gaXN0IGluIGRlcnNlbGJlbiBT Y2hpY2h0IEYvUy9OCiAgICAgICAgLy8gZWluZ2VwbGFudCBhbHMgV0RGIG9kZXIgRkJQIC0+IGth bm4gREdMIHVlYmVybmVobWVuLCB3ZW5uCiAgICAgICAgLy8gamVtYW5kIGFuZGVyZXMgaWhyZSBS b2xsZSB1ZWJlcm5pbW10LgogICAgICAgIGlmICh3Lmxlbmd0aCA+PSA1ICYmIHcuY2hhckF0KDAp ID09PSBzY2hpY2h0TGV0dGVyICYmIHcuY2hhckF0KDEpID09PSAnLScpIHsKICAgICAgICAgICAg dmFyIHJvbGxlID0gdy5zdWJzdHJpbmcoMiwgNSk7CiAgICAgICAgICAgIGlmIChyb2xsZSA9PT0g J1dERicgfHwgcm9sbGUgPT09ICdGQlAnKSB7CiAgICAgICAgICAgICAgICBlcmdlYm5pcy51bWRp c3BvbmllcmJhci5wdXNoKHsgcGVyc29uOiBwLCBvcmlnaW5hbENvZGU6IHcsIHJvbGxlOiByb2xs ZSB9KTsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAg IH0pOwogICAgZnVuY3Rpb24gc29ydEJ5TmFtZShhLCBiKSB7CiAgICAgICAgdmFyIHBhID0gYS5w ZXJzb24gfHwgYSwgcGIgPSBiLnBlcnNvbiB8fCBiOwogICAgICAgIHZhciBhbiA9ICgocGEudm9y bmFtZSB8fCAnJykgKyAnICcgKyAocGEubmFtZSB8fCAnJykpLnRyaW0oKTsKICAgICAgICB2YXIg Ym4gPSAoKHBiLnZvcm5hbWUgfHwgJycpICsgJyAnICsgKHBiLm5hbWUgfHwgJycpKS50cmltKCk7 CiAgICAgICAgcmV0dXJuIGFuLmxvY2FsZUNvbXBhcmUoYm4sICdkZScpOwogICAgfQogICAgZXJn ZWJuaXMuZnJlaS5zb3J0KHNvcnRCeU5hbWUpOwogICAgZXJnZWJuaXMudW1kaXNwb25pZXJiYXIu c29ydChzb3J0QnlOYW1lKTsKICAgIHJldHVybiBlcmdlYm5pczsKfQoKLy8gTGVpdGV0IGRpZSBm dWVyIGVpbmUgU2NoaWNodCByZWxldmFudGUgRGllbnN0Z3J1cHBlIGFiOiBuaW1tdCBkaWUgR3J1 cHBlCi8vIGRlciBiZXJlaXRzIGVpbmdlcGxhbnRlbiBER0wtUGVyc29uZW4uIFdlbm4gbWVocmVy ZSB1bnRlcnNjaGllZGxpY2hlCi8vIEdydXBwZW4gYW53ZXNlbmQgc2luZCwgd2lyZCBkaWUgZXJz dGUgZ2Vub21tZW4gKHR5cGlzY2hlcndlaXNlIHNpbmQKLy8gYWxsZSBhbndlc2VuZGVuIERHTCBh dXMgZGVyc2VsYmVuIFJvdGF0aW9ucy1HcnVwcGUpLiBCZWkgMCBQZXJzb25lbgovLyBpbiBkZXIg U2NoaWNodCByZXR1cm5zIG51bGwgLT4gS2FuZGlkYXRlbiBrb21tZW4gYXVzIGFsbGVuIEdydXBw ZW4uCmV4cG9ydCBmdW5jdGlvbiBkaWVuc3RncnVwcGVGdWVyU2NoaWNodChkYXR1bSwgc2NoaWNo dExldHRlcikgewogICAgdmFyIGZrTGlzdGUgPSBkZ2xzSW5TY2hpY2h0KGRhdHVtLCBzY2hpY2h0 TGV0dGVyKTsKICAgIGlmICghZmtMaXN0ZSB8fCBma0xpc3RlLmxlbmd0aCA9PT0gMCkgcmV0dXJu IG51bGw7CiAgICByZXR1cm4gZmtMaXN0ZVswXS5ncnVwcGUgfHwgbnVsbDsKfQoKLy8gVGFnLURl dGFpbC1Nb2RhbCDigJQgZGllIHplbnRyYWxlIEtsaWNrLUFrdGlvbiBpbSBuZXVlbiBLYWxlbmRl ci4KLy8gWmVpZ3QgZnVlciBkZW4gZ2V3YWVobHRlbiBUYWc6Ci8vICAtIFN0YXR1cyBwcm8gU2No aWNodCAoQW56YWhsICsgQW1wZWwtRmFyYmUpCi8vICAtIEFsbGUgZWluZ2VwbGFudGVuIEZ1ZWhy dW5nc2tyYWVmdGUgamUgU2NoaWNodCAoTmFtZSwgRnVua3Rpb24sIENvZGUpCi8vICAtIEJlaSBy b3QtU3RhdHVzIHp1c2FldHpsaWNoIGRpZSBBdXNoaWxmZS1LYW5kaWRhdGVuIGluIHp3ZWkgQmxv ZWNrZW4KLy8gICAgKEZyZWkgLyBUZXJtaW4pIOKAlCBLbGljayBhdWYgZWluZSBQZXJzb24gb2Vm Zm5ldCBlaW5lIHBlcnNvZW5saWNoZQovLyAgICBNYWlsIHBlciBtYWlsdG86LgpleHBvcnQgZnVu Y3Rpb24gdGFnRGV0YWlsTW9kYWxaZWlnZW4oZGF0dW0pIHsKICAgIHZhciBkID0gbmV3IERhdGUo ZGF0dW0gKyAnVDAwOjAwOjAwJyk7CiAgICB2YXIgd3QgPSBbJ1Nvbm50YWcnLCdNb250YWcnLCdE aWVuc3RhZycsJ01pdHR3b2NoJywnRG9ubmVyc3RhZycsJ0ZyZWl0YWcnLCdTYW1zdGFnJ11bZC5n ZXREYXkoKV07CiAgICB2YXIgZiA9IGZ1ZWhydW5nc1phZWhsZW4oZGF0dW0sICdGJyk7CiAgICB2 YXIgcyA9IGZ1ZWhydW5nc1phZWhsZW4oZGF0dW0sICdTJyk7CiAgICB2YXIgbiA9IGZ1ZWhydW5n c1phZWhsZW4oZGF0dW0sICdOJyk7CiAgICBmdW5jdGlvbiBzdGF0dXNPZihpc3QpIHsKICAgICAg ICBpZiAoaXN0IDw9IDEpIHJldHVybiAncm90JzsKICAgICAgICBpZiAoaXN0ID09PSAyKSByZXR1 cm4gJ2dlbGInOwogICAgICAgIHJldHVybiAnZ3J1ZW4nOwogICAgfQogICAgZnVuY3Rpb24gc3Rh dHVzTGFiZWwoc3QpIHsKICAgICAgICByZXR1cm4gc3QgPT09ICdyb3QnID8gJ2tyaXRpc2NoICji iaQgMSknIDogc3QgPT09ICdnZWxiJyA/ICdrbmFwcCAoPSAyKScgOiAnZ3V0ICjiiaUgMyknOwog ICAgfQogICAgdmFyIHRhZ1N0ID0gKGYgPD0gMSB8fCBzIDw9IDEgfHwgbiA8PSAxKSA/ICdyb3Qn IDoKICAgICAgICAgICAgICAgIChmID09PSAyIHx8IHMgPT09IDIgfHwgbiA9PT0gMikgPyAnZ2Vs YicgOiAnZ3J1ZW4nOwoKICAgIGZ1bmN0aW9uIHNjaGljaHRCbG9jayhsZXR0ZXIsIG5hbWUpIHsK ICAgICAgICB2YXIgaXN0ID0gbGV0dGVyID09PSAnRicgPyBmIDogbGV0dGVyID09PSAnUycgPyBz IDogbjsKICAgICAgICB2YXIgc3QgID0gc3RhdHVzT2YoaXN0KTsKICAgICAgICB2YXIgZmtMaXN0 ZSA9IGRnbHNJblNjaGljaHQoZGF0dW0sIGxldHRlcik7CiAgICAgICAgLy8gSG9lY2hzdHN0dWZl IChpc3Q9MCkgYmVrb21tdCBlaW5lIHp1c2FldHpsaWNoZSBLbGFzc2UgZnVlcgogICAgICAgIC8v IHZlcnN0YWVya3RlIHZpc3VlbGxlIFdpcmt1bmcgKFBoYXNlIDYsIDIwMjYtMDUtMjEpLgogICAg ICAgIHZhciBrcml0aXNjaCA9IChpc3QgPT09IDApID8gJyBiay1kZXRhaWwtc2NoaWNodC1rcml0 aXNjaCcgOiAnJzsKICAgICAgICB2YXIgaHRtbCA9ICc8ZGl2IGNsYXNzPSJiay1kZXRhaWwtc2No aWNodCBiay1kZXRhaWwtc2NoaWNodC0nICsgc3QgKyBrcml0aXNjaCArICciIGRhdGEtc2NoaWNo dC1sZXR0ZXI9IicgKyBsZXR0ZXIgKyAnIj4nICsKICAgICAgICAgICAgJzxkaXYgY2xhc3M9ImJr LWRldGFpbC1zY2hpY2h0LWtvcGYiPicgKwogICAgICAgICAgICAgICAgJzxzdHJvbmc+JyArIG5h bWUgKyAnc2NoaWNodDwvc3Ryb25nPicgKwogICAgICAgICAgICAgICAgJzxzcGFuIGNsYXNzPSJi ay1kZXRhaWwtc2NoaWNodC16YWhsIj4nICsgaXN0ICsgJyBGw7xocnVuZ3NrcsOkZnRlPC9zcGFu PicgKwogICAgICAgICAgICAgICAgJzxzcGFuIGNsYXNzPSJiay1iZWdyLXBpbGwgYmstYmVnci1w aWxsLScgKyBzdCArICciPicgKyAoaXN0ID09PSAwID8gJ3VuYmVzZXR6dCAoMCknIDogc3RhdHVz TGFiZWwoc3QpKSArICc8L3NwYW4+JyArCiAgICAgICAgICAgICc8L2Rpdj4nOwogICAgICAgIGlm IChma0xpc3RlLmxlbmd0aCA9PT0gMCkgewogICAgICAgICAgICBodG1sICs9ICc8ZGl2IGNsYXNz PSJiay1kZXRhaWwtbGVlciI+4oCUIG5pZW1hbmQgZWluZ2VwbGFudCDigJQ8L2Rpdj4nOwogICAg ICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGh0bWwgKz0gJzx1bCBjbGFzcz0iYmstZGV0YWlsLWZr LWxpc3RlIj4nOwogICAgICAgICAgICBma0xpc3RlLmZvckVhY2goZnVuY3Rpb24ocCkgewogICAg ICAgICAgICAgICAgdmFyIGUyID0gKFoucGxhbnVuZy5laW50cmFlZ2UgfHwge30pW2RhdHVtXSB8 fCB7fTsKICAgICAgICAgICAgICAgIHZhciBjb2RlID0gZTJbU3RyaW5nKHAuaWQpXSB8fCAnJzsK ICAgICAgICAgICAgICAgIHZhciBubSA9ICgocC52b3JuYW1lIHx8ICcnKSArICcgJyArIChwLm5h bWUgfHwgJycpKS50cmltKCkgfHwgKCdQZXJzb24gJyArIHAuaWQpOwogICAgICAgICAgICAgICAg dmFyIGZrdCA9IHAuZnVua3Rpb24gPyAoJyDCtyAnICsgZXNjYXBlSFRNTChwLmZ1bmt0aW9uKSkg OiAnJzsKICAgICAgICAgICAgICAgIHZhciBncnAgPSBwLmdydXBwZSA/ICgnIMK3ICcgKyBlc2Nh cGVIVE1MKHAuZ3J1cHBlKSkgOiAnJzsKICAgICAgICAgICAgICAgIGh0bWwgKz0gJzxsaT48c3Bh biBjbGFzcz0iYmstZGV0YWlsLWZrLW5hbWUiPicgKyBlc2NhcGVIVE1MKG5tKSArICc8L3NwYW4+ JyArCiAgICAgICAgICAgICAgICAgICAgICAgICc8c3BhbiBjbGFzcz0iYmstZGV0YWlsLWZrLW1l dGEiPicgKyBlc2NhcGVIVE1MKGNvZGUpICsgZmt0ICsgZ3JwICsgJzwvc3Bhbj48L2xpPic7CiAg ICAgICAgICAgIH0pOwogICAgICAgICAgICBodG1sICs9ICc8L3VsPic7CiAgICAgICAgfQogICAg ICAgIC8vIFNjaGljaHQtS2FuZGlkYXRlbi1CbG9jayAoUGhhc2UgNiwgMjAyNi0wNS0yMSk6IGJl aSA8IDIgUGVyc29uZW4gcHJvCiAgICAgICAgLy8gU2NoaWNodCBlcnNjaGVpbnQgaGllciBlaW4g QnV0dG9uLCBkZXIgZGllIGluIEZyYWdlIGtvbW1lbmRlbgogICAgICAgIC8vIEF1c2hpbGZlbiBh dWZrbGFwcHQgKERHTC1xdWFsaWZpemllcnQsIGZyZWkgYW0gVGFnLCBnbGVpY2hlCiAgICAgICAg Ly8gRGllbnN0Z3J1cHBlLCBrZWluZSBHZXNhbXR2ZXJhbnR3b3J0bGljaGVuKS4gSW5saW5lIHN0 YXR0IFN1Yi1Nb2RhbCwKICAgICAgICAvLyBkYW1pdCBkYXMgVGFnLURldGFpbC1Nb2RhbCBuaWNo dCB1ZWJlcmxhZ2VydCB3aXJkLgogICAgICAgIGlmIChpc3QgPCAyKSB7CiAgICAgICAgICAgIGh0 bWwgKz0gJzxkaXYgY2xhc3M9ImJrLXNjaGljaHQta2FuZGlkYXRlbiIgZGF0YS1zY2hpY2h0LWxl dHRlcj0iJyArIGxldHRlciArICciPicgKwogICAgICAgICAgICAgICAgJzxidXR0b24gdHlwZT0i YnV0dG9uIiBjbGFzcz0iYnRuIGJ0bi1zZWsgYnRuLWtsZWluIGJrLWthbmRpZGF0ZW4tdG9nZ2xl IiBkYXRhLXNjaGljaHQtbGV0dGVyPSInICsgbGV0dGVyICsgJyIgYXJpYS1leHBhbmRlZD0iZmFs c2UiPicgKwogICAgICAgICAgICAgICAgICAgICc8c3BhbiBjbGFzcz0iYmsta2FuZC1sYWJlbCI+ S2FuZGlkYXRlbiBhbnNjaHJlaWJlbjwvc3Bhbj4nICsKICAgICAgICAgICAgICAgICAgICAnPHNw YW4gY2xhc3M9ImJrLWthbmQtcGZlaWwiIGFyaWEtaGlkZGVuPSJ0cnVlIj7ilr48L3NwYW4+JyAr CiAgICAgICAgICAgICAgICAnPC9idXR0b24+JyArCiAgICAgICAgICAgICAgICAnPGRpdiBjbGFz cz0iYmsta2FuZGlkYXRlbi1wYW5lbCB2ZXJzdGVja3QiIGRhdGEtc2NoaWNodC1sZXR0ZXI9Iicg KyBsZXR0ZXIgKyAnIj48L2Rpdj4nICsKICAgICAgICAgICAgJzwvZGl2Pic7CiAgICAgICAgfQog ICAgICAgIGh0bWwgKz0gJzwvZGl2Pic7CiAgICAgICAgcmV0dXJuIGh0bWw7CiAgICB9CgogICAg dmFyIGtvZXJwZXIgPSAnPGRpdiBjbGFzcz0iYmstZGV0YWlsLWtvcGYgYmstZGV0YWlsLWtvcGYt JyArIHRhZ1N0ICsgJyI+JyArCiAgICAgICAgJzxkaXYgY2xhc3M9ImJrLWRldGFpbC10aXRlbCI+ JyArIGVzY2FwZUhUTUwoZGF0dW1Gb3JtYXRERShkYXR1bSkpICsgJyDCtyAnICsgZXNjYXBlSFRN TCh3dCkgKyAnPC9kaXY+JyArCiAgICAgICAgJzxzcGFuIGNsYXNzPSJiay1iZWdyLXBpbGwgYmst YmVnci1waWxsLScgKyB0YWdTdCArICciPlN0YXR1czogJyArIHN0YXR1c0xhYmVsKHRhZ1N0KSAr ICc8L3NwYW4+JyArCiAgICAgICAgJzwvZGl2Pic7CiAgICBrb2VycGVyICs9ICc8ZGl2IGNsYXNz PSJiay1kZXRhaWwtc2NoaWNodGVuIj4nOwogICAga29lcnBlciArPSBzY2hpY2h0QmxvY2soJ0Yn LCAnRnLDvGgnKTsKICAgIGtvZXJwZXIgKz0gc2NoaWNodEJsb2NrKCdTJywgJ1Nww6R0Jyk7CiAg ICBrb2VycGVyICs9IHNjaGljaHRCbG9jaygnTicsICdOYWNodCcpOwogICAga29lcnBlciArPSAn PC9kaXY+JzsKCiAgICBpZiAodGFnU3QgPT09ICdyb3QnKSB7CiAgICAgICAgLy8gV2VsY2hlIFNj aGljaHQgaXN0IGFtIHVudGVyc3Rlbj8gRGllc2UgbmVobWVuIHdpciBhbHMgRGVmaXppdC0KICAg ICAgICAvLyBTY2hpY2h0IGZ1ZXIgZGllIFNhbW1lbC1NYWlsLiBXZW5uIG1laHJlcmUgZ2xlaWNo IHNjaGxlY2h0IHNpbmQsCiAgICAgICAgLy8gZ2V3aW5udCBkaWUgZnJ1ZWhlcmUgU2NoaWNodCAo RiB2b3IgUyB2b3IgTikuCiAgICAgICAgdmFyIGRlZml6aXRTY2hpY2h0ID0gKGYgPD0gcyAmJiBm IDw9IG4pID8gJ0YnIDogKHMgPD0gbikgPyAnUycgOiAnTic7CiAgICAgICAgdmFyIGRlZml6aXRT Y2hpY2h0TmFtZSA9IHsgRjogJ0Zyw7xoJywgUzogJ1Nww6R0JywgTjogJ05hY2h0JyB9W2RlZml6 aXRTY2hpY2h0XTsKICAgICAgICB2YXIgdmVyZlBlcnNvbmVuID0gdmVyZnVlZ2JhcmVQZXJzb25l bkZ1ZXIoZGF0dW0pOwoKICAgICAgICBrb2VycGVyICs9ICc8ZGl2IGNsYXNzPSJiay1kZXRhaWwt YXVzaGlsZmUiPicgKwogICAgICAgICAgICAnPGRpdiBjbGFzcz0iYmstZGV0YWlsLWF1c2hpbGZl LWtvcGYiPicgKwogICAgICAgICAgICAgICAgJzxzdHJvbmc+UG90ZW50aWVsbCB2ZXJmw7xnYmFy PC9zdHJvbmc+IGbDvHIgJyArIGRlZml6aXRTY2hpY2h0TmFtZSArICdzY2hpY2h0IOKAlCAnICsK ICAgICAgICAgICAgICAgICdQZXJzb25lbiBtaXQgPGNvZGU+ZGZyPC9jb2RlPiBvZGVyIDxjb2Rl PndmcjwvY29kZT4gYW0gJyArIGVzY2FwZUhUTUwoZGF0dW1Gb3JtYXRERShkYXR1bSkpICsKICAg ICAgICAgICAgJzwvZGl2Pic7CiAgICAgICAgaWYgKHZlcmZQZXJzb25lbi5sZW5ndGggPT09IDAp IHsKICAgICAgICAgICAga29lcnBlciArPSAnPGRpdiBjbGFzcz0iYmstZGV0YWlsLWxlZXIiPk5p ZW1hbmQgaGF0IGFuIGRpZXNlbSBUYWcgPGNvZGU+ZGZyPC9jb2RlPiBvZGVyIDxjb2RlPndmcjwv Y29kZT4gZWluZ2V0cmFnZW4uPC9kaXY+JzsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBr b2VycGVyICs9ICc8ZGl2IGNsYXNzPSJiay1kZXRhaWwtYXVzaGlsZmUtdG9vbGJhciI+JyArCiAg ICAgICAgICAgICAgICAnPGxhYmVsIGNsYXNzPSJiay1kZXRhaWwtYWxsZSI+PGlucHV0IHR5cGU9 ImNoZWNrYm94IiBpZD0iYmstYXVzaGlsZmUtYWxsZSIgY2hlY2tlZD4gQWxsZSBtYXJraWVyZW48 L2xhYmVsPicgKwogICAgICAgICAgICAgICAgJzxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0i YnRuIGJ0bi1wcmltYWVyIGJ0bi1rbGVpbiIgaWQ9ImJrLWF1c2hpbGZlLW1haWwiIGRhdGEtZGVm aXppdD0iJyArIGRlZml6aXRTY2hpY2h0ICsgJyI+JyArCiAgICAgICAgICAgICAgICAgICAgJ01h aWwgYW4gbWFya2llcnRlIFBlcnNvbmVuIHZvcmJlcmVpdGVuJyArCiAgICAgICAgICAgICAgICAn PC9idXR0b24+JyArCiAgICAgICAgICAgICc8L2Rpdj4nOwogICAgICAgICAgICBrb2VycGVyICs9 IGF1c2hpbGZlTGlzdGVIdG1sKHZlcmZQZXJzb25lbiwgZGF0dW0sIGRlZml6aXRTY2hpY2h0KTsK ICAgICAgICB9CiAgICAgICAga29lcnBlciArPSAnPC9kaXY+JzsKICAgIH0KCiAgICB2YXIgZnVz cyA9ICc8YnV0dG9uIGNsYXNzPSJidG4iIGlkPSJkbGctYWJicmVjaGVuIiB0eXBlPSJidXR0b24i PlNjaGxpZcOfZW48L2J1dHRvbj4nICsKICAgICAgICAgICAgICAgJzxidXR0b24gY2xhc3M9ImJ0 biBidG4tcHJpbWFlciIgaWQ9ImRsZy1zcHJpbmciIHR5cGU9ImJ1dHRvbiI+4oaSIEltIFBsYW4g enVtIFRhZyBzcHJpbmdlbjwvYnV0dG9uPic7CiAgICBtb2RhbFplaWdlbignVGFnLURldGFpbDog JyArIGRhdHVtRm9ybWF0REUoZGF0dW0pLCBrb2VycGVyLCBmdXNzLCBudWxsKTsKICAgIC8vIFRh Zy1EZXRhaWwgYnJhdWNodCBtZWhyIFBsYXR6IGFscyBkYXMgU3RhbmRhcmQtNjIwcHgtTW9kYWw6 IGRyZWkKICAgIC8vIFNjaGljaHQtU3BhbHRlbiArIGdnZi4gYXVmZ2VrbGFwcHRlcyBLYW5kaWRh dGVuLVBhbmVsIGplIFNjaGljaHQKICAgIC8vIGVyemV1Z2VuIHNvbnN0IGhvcml6b250YWxlIFNj cm9sbGJhbGtlbiAoSXNzdWUgVVggMjAyNi0wNS0yNCkuCiAgICB2YXIgX21JbmhhbHQgPSBkb2N1 bWVudC5xdWVyeVNlbGVjdG9yKCcjbW9kYWwtb3ZlcmxheSAubW9kYWwtaW5oYWx0Jyk7CiAgICBp ZiAoX21JbmhhbHQpIF9tSW5oYWx0LmNsYXNzTGlzdC5hZGQoJ21vZGFsLWluaGFsdC1ncm9zcycp OwogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2RsZy1hYmJyZWNoZW4nKS5hZGRFdmVudExp c3RlbmVyKCdjbGljaycsIG1vZGFsU2NobGllc3Nlbik7CiAgICBkb2N1bWVudC5nZXRFbGVtZW50 QnlJZCgnZGxnLXNwcmluZycpLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oKSB7 CiAgICAgICAgbW9kYWxTY2hsaWVzc2VuKCk7CiAgICAgICAgYW5zaWNodFdlY2hzZWxuKCdwbGFu dW5nJyk7CiAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgenVEYXR1bVNjcm9sbGVuKGRh dHVtKTsgfSwgNTApOwogICAgfSk7CgogICAgLy8gUGhhc2UgNiAoMjAyNi0wNS0yMSk6IFBybyB1 bnRlcmJlc2V0enRlciBTY2hpY2h0IChpc3Q8MikgZ2lidCBlcyBlaW5lbgogICAgLy8gIkthbmRp ZGF0ZW4gYW5zY2hyZWliZW4iLUJ1dHRvbiBpbSBTY2hpY2h0LUJsb2NrLiBLbGljayBrbGFwcHQg ZWluZQogICAgLy8gTGlzdGUgREdMLXF1YWxpZml6aWVydGVyIFBlcnNvbmVuIGF1ZiAoZ2xlaWNo ZSBEaWVuc3RncnVwcGUsIGZyZWkgYW0KICAgIC8vIFRhZywga2VpbmUgR2VzYW10dmVyYW50d29y dGxpY2hlbikuICJBbnNjaHJlaWJlbiIgc3RhcnRldCBkaWUgTWFpbC0KICAgIC8vIFZvcmJlcmVp dHVuZyBtaXQgZGVuIGF1c2dld2FlaGx0ZW4gUGVyc29uZW4uCiAgICAvLwogICAgLy8gQXVkaXQt UGhhc2UgQi4zICgyMDI2LTA1LTIxKTogS2FuZGlkYXRlbiBwcm8gU2NoaWNodCBlaW5tYWwgaW0g Q2xvc3VyZQogICAgLy8gY2FjaGVuLCBkYW1pdCBBdWYtL1p1a2xhcHBlbiBpbnN0YW50IGlzdCB1 bmQgbmljaHQgamVkZXMgTWFsIGFsbGUKICAgIC8vIFBlcnNvbmVuIGl0ZXJpZXJ0IHdlcmRlbi4K ICAgIHZhciBrYW5kaWRhdGVuQ2FjaGUgPSB7fTsKICAgIGZ1bmN0aW9uIGthbmRpZGF0ZW5GdWVy KGxldHRlcikgewogICAgICAgIGlmICgha2FuZGlkYXRlbkNhY2hlW2xldHRlcl0pIHsKICAgICAg ICAgICAgdmFyIGdydXBwZSA9IGRpZW5zdGdydXBwZUZ1ZXJTY2hpY2h0KGRhdHVtLCBsZXR0ZXIp OwogICAgICAgICAgICBrYW5kaWRhdGVuQ2FjaGVbbGV0dGVyXSA9IHsKICAgICAgICAgICAgICAg IGdydXBwZTogZ3J1cHBlLAogICAgICAgICAgICAgICAgbGlzdGU6ICBiZXNldHp1bmdzS2FuZGlk YXRlbkVybWl0dGVsbihkYXR1bSwgbGV0dGVyLCBncnVwcGUpCiAgICAgICAgICAgIH07CiAgICAg ICAgfQogICAgICAgIHJldHVybiBrYW5kaWRhdGVuQ2FjaGVbbGV0dGVyXTsKICAgIH0KICAgIHZh ciBtb2RhbEtvZXJwZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbW9kYWwta29lcnBlcicp OwogICAgaWYgKG1vZGFsS29lcnBlcikgewogICAgICAgIG1vZGFsS29lcnBlci5hZGRFdmVudExp c3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKGV2KSB7CiAgICAgICAgICAgIHZhciB0b2dnbGUgPSBl di50YXJnZXQuY2xvc2VzdCgnLmJrLWthbmRpZGF0ZW4tdG9nZ2xlJyk7CiAgICAgICAgICAgIGlm ICh0b2dnbGUpIHsKICAgICAgICAgICAgICAgIHZhciBsZXR0ZXIgPSB0b2dnbGUuZ2V0QXR0cmli dXRlKCdkYXRhLXNjaGljaHQtbGV0dGVyJyk7CiAgICAgICAgICAgICAgICB2YXIgcGFuZWwgID0g bW9kYWxLb2VycGVyLnF1ZXJ5U2VsZWN0b3IoJy5iay1rYW5kaWRhdGVuLXBhbmVsW2RhdGEtc2No aWNodC1sZXR0ZXI9IicgKyBsZXR0ZXIgKyAnIl0nKTsKICAgICAgICAgICAgICAgIGlmICghcGFu ZWwpIHJldHVybjsKICAgICAgICAgICAgICAgIHZhciBsYWJlbEVsID0gdG9nZ2xlLnF1ZXJ5U2Vs ZWN0b3IoJy5iay1rYW5kLWxhYmVsJyk7CiAgICAgICAgICAgICAgICB2YXIgcGZlaWxFbCA9IHRv Z2dsZS5xdWVyeVNlbGVjdG9yKCcuYmsta2FuZC1wZmVpbCcpOwogICAgICAgICAgICAgICAgaWYg KHBhbmVsLmNsYXNzTGlzdC5jb250YWlucygndmVyc3RlY2t0JykpIHsKICAgICAgICAgICAgICAg ICAgICB2YXIgY2FjaGVkID0ga2FuZGlkYXRlbkZ1ZXIobGV0dGVyKTsKICAgICAgICAgICAgICAg ICAgICBwYW5lbC5pbm5lckhUTUwgPSBrYW5kaWRhdGVuUGFuZWxIdG1sKGNhY2hlZC5saXN0ZSwg ZGF0dW0sIGxldHRlciwgY2FjaGVkLmdydXBwZSk7CiAgICAgICAgICAgICAgICAgICAgcGFuZWwu Y2xhc3NMaXN0LnJlbW92ZSgndmVyc3RlY2t0Jyk7CiAgICAgICAgICAgICAgICAgICAgdG9nZ2xl LnNldEF0dHJpYnV0ZSgnYXJpYS1leHBhbmRlZCcsICd0cnVlJyk7CiAgICAgICAgICAgICAgICAg ICAgdG9nZ2xlLmNsYXNzTGlzdC5hZGQoJ2JrLWthbmRpZGF0ZW4tdG9nZ2xlLW9mZmVuJyk7CiAg ICAgICAgICAgICAgICAgICAgaWYgKGxhYmVsRWwpIGxhYmVsRWwudGV4dENvbnRlbnQgPSAnS2Fu ZGlkYXRlbiBhdXNibGVuZGVuJzsKICAgICAgICAgICAgICAgICAgICBpZiAocGZlaWxFbCkgcGZl aWxFbC50ZXh0Q29udGVudCA9ICfilrQnOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAg ICAgICAgICAgICAgICBwYW5lbC5jbGFzc0xpc3QuYWRkKCd2ZXJzdGVja3QnKTsKICAgICAgICAg ICAgICAgICAgICBwYW5lbC5pbm5lckhUTUwgPSAnJzsKICAgICAgICAgICAgICAgICAgICB0b2dn bGUuc2V0QXR0cmlidXRlKCdhcmlhLWV4cGFuZGVkJywgJ2ZhbHNlJyk7CiAgICAgICAgICAgICAg ICAgICAgdG9nZ2xlLmNsYXNzTGlzdC5yZW1vdmUoJ2JrLWthbmRpZGF0ZW4tdG9nZ2xlLW9mZmVu Jyk7CiAgICAgICAgICAgICAgICAgICAgaWYgKGxhYmVsRWwpIGxhYmVsRWwudGV4dENvbnRlbnQg PSAnS2FuZGlkYXRlbiBhbnNjaHJlaWJlbic7CiAgICAgICAgICAgICAgICAgICAgaWYgKHBmZWls RWwpIHBmZWlsRWwudGV4dENvbnRlbnQgPSAn4pa+JzsKICAgICAgICAgICAgICAgIH0KICAgICAg ICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQogICAgICAgICAgICB2YXIgc2VuZEJ0biA9 IGV2LnRhcmdldC5jbG9zZXN0KCcuYmsta2FuZGlkYXRlbi1zZW5kZW4nKTsKICAgICAgICAgICAg aWYgKHNlbmRCdG4pIHsKICAgICAgICAgICAgICAgIHZhciBzbCA9IHNlbmRCdG4uZ2V0QXR0cmli dXRlKCdkYXRhLXNjaGljaHQtbGV0dGVyJyk7CiAgICAgICAgICAgICAgICB2YXIgcDIgPSBtb2Rh bEtvZXJwZXIucXVlcnlTZWxlY3RvcignLmJrLWthbmRpZGF0ZW4tcGFuZWxbZGF0YS1zY2hpY2h0 LWxldHRlcj0iJyArIHNsICsgJyJdJyk7CiAgICAgICAgICAgICAgICBpZiAoIXAyKSByZXR1cm47 CiAgICAgICAgICAgICAgICB2YXIgYXVzZ2V3YWVobHQgPSBbXTsKICAgICAgICAgICAgICAgIHAy LnF1ZXJ5U2VsZWN0b3JBbGwoJy5iay1rYW5kaWRhdGVuLWNoaycpLmZvckVhY2goZnVuY3Rpb24o YykgewogICAgICAgICAgICAgICAgICAgIGlmICghYy5jaGVja2VkKSByZXR1cm47CiAgICAgICAg ICAgICAgICAgICAgYXVzZ2V3YWVobHQucHVzaCh7CiAgICAgICAgICAgICAgICAgICAgICAgIGlk OiAgICAgIGMuZ2V0QXR0cmlidXRlKCdkYXRhLXBpZCcpLAogICAgICAgICAgICAgICAgICAgICAg ICBlbWFpbDogICBjLmdldEF0dHJpYnV0ZSgnZGF0YS1lbWFpbCcpLAogICAgICAgICAgICAgICAg ICAgICAgICBuYW1lOiAgICBjLmdldEF0dHJpYnV0ZSgnZGF0YS1uYW1lJyksCiAgICAgICAgICAg ICAgICAgICAgICAgIHZvcm5hbWU6IGMuZ2V0QXR0cmlidXRlKCdkYXRhLXZvcm5hbWUnKSwKICAg ICAgICAgICAgICAgICAgICAgICAgdW1kaXM6ICAgYy5nZXRBdHRyaWJ1dGUoJ2RhdGEtdW1kaXMn KSA9PT0gJzEnCiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICB9KTsKICAg ICAgICAgICAgICAgIGlmICghYXVzZ2V3YWVobHQubGVuZ3RoKSB7IHRvYXN0KCdLZWluZSBQZXJz b24gbWFya2llcnQnLCAnd2FybnVuZycpOyByZXR1cm47IH0KICAgICAgICAgICAgICAgIHNhbW1l bEFuZnJhZ2VNYWlsT2VmZm5lbihhdXNnZXdhZWhsdCwgZGF0dW0sIHNsKTsKICAgICAgICAgICAg ICAgIHJldHVybjsKICAgICAgICAgICAgfQogICAgICAgIH0pOwogICAgfQoKICAgIC8vIFNhbW1l bC1NYWlsIGF1cyBkZW0gQXVzaGlsZmUtQmxvY2s6IE1laHJmYWNoLUF1c3dhaGwgcGVyIENoZWNr Ym94ICsKICAgIC8vIGVpbiAiQWxsZSBtYXJraWVyZW4iLVRvZ2dsZSArIE1haWwtQnV0dG9uLiBF aW56ZWwtS2xpY2sgYXVmIGVpbmUKICAgIC8vIFplaWxlIHNldHp0IG51ciBkaWUgQ2hlY2tib3gg ZGllc2VyIFBlcnNvbiAoYWxsZSBhbmRlcmVuIGF1cykgdW5kCiAgICAvLyBvZWZmbmV0IHNvZm9y dCBkaWUgTWFpbCDigJQgZGFzIGlzdCBkZXIgc2NobmVsbGUgV2VnIGZ1ZXIgIm51ciBkaWVzZQog ICAgLy8gZWluZSBQZXJzb24gYW5zY2hyZWliZW4iLgogICAgdmFyIGF1c2hpbGZlRWwgPSBkb2N1 bWVudC5xdWVyeVNlbGVjdG9yKCcuYmstZGV0YWlsLWF1c2hpbGZlJyk7CiAgICBpZiAoYXVzaGls ZmVFbCkgewogICAgICAgIHZhciBhbGxlQ2hrID0gYXVzaGlsZmVFbC5xdWVyeVNlbGVjdG9yKCcj YmstYXVzaGlsZmUtYWxsZScpOwogICAgICAgIHZhciBtYWlsQnRuID0gYXVzaGlsZmVFbC5xdWVy eVNlbGVjdG9yKCcjYmstYXVzaGlsZmUtbWFpbCcpOwogICAgICAgIGZ1bmN0aW9uIGdldFplaWxl bigpIHsgcmV0dXJuIGF1c2hpbGZlRWwucXVlcnlTZWxlY3RvckFsbCgnLmJrLWRldGFpbC1hdXNo aWxmZS16ZWlsZScpOyB9CiAgICAgICAgZnVuY3Rpb24gZ2V0Q2hlY2tib3hlbigpIHsgcmV0dXJu IGF1c2hpbGZlRWwucXVlcnlTZWxlY3RvckFsbCgnLmJrLWF1c2hpbGZlLWNoazpub3QoOmRpc2Fi bGVkKScpOyB9CiAgICAgICAgaWYgKGFsbGVDaGspIHsKICAgICAgICAgICAgYWxsZUNoay5hZGRF dmVudExpc3RlbmVyKCdjaGFuZ2UnLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIGdldENo ZWNrYm94ZW4oKS5mb3JFYWNoKGZ1bmN0aW9uKGMpIHsgYy5jaGVja2VkID0gYWxsZUNoay5jaGVj a2VkOyB9KTsKICAgICAgICAgICAgfSk7CiAgICAgICAgfQogICAgICAgIC8vIEtsaWNrIGF1ZiBk ZW4gcGVyc29lbmxpY2hlbiBCcmllZi1CdXR0b24gZWluZXIgWmVpbGU6IG51ciBkaWVzZQogICAg ICAgIC8vIFBlcnNvbiBtYXJraWVyZW4sIGFsbGUgYW5kZXJlbiBkZW1hcmtpZXJlbiwgTWFpbCB2 b3JiZXJlaXRlbi4KICAgICAgICBhdXNoaWxmZUVsLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywg ZnVuY3Rpb24oZXYpIHsKICAgICAgICAgICAgdmFyIGJ0biA9IGV2LnRhcmdldC5jbG9zZXN0KCdb ZGF0YS1ha3Rpb249ImJrLW1haWwtemVpbGUiXScpOwogICAgICAgICAgICBpZiAoIWJ0bikgcmV0 dXJuOwogICAgICAgICAgICBldi5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICAgICB2YXIgcGlk ID0gYnRuLmdldEF0dHJpYnV0ZSgnZGF0YS1waWQnKTsKICAgICAgICAgICAgZ2V0Q2hlY2tib3hl bigpLmZvckVhY2goZnVuY3Rpb24oYykgeyBjLmNoZWNrZWQgPSBjLmdldEF0dHJpYnV0ZSgnZGF0 YS1waWQnKSA9PT0gcGlkOyB9KTsKICAgICAgICAgICAgaWYgKGFsbGVDaGspIGFsbGVDaGsuY2hl Y2tlZCA9IGZhbHNlOwogICAgICAgICAgICBzYW1tZWxNYWlsVm9yYmVyZWl0ZW4oKTsKICAgICAg ICB9KTsKICAgICAgICBpZiAobWFpbEJ0bikgbWFpbEJ0bi5hZGRFdmVudExpc3RlbmVyKCdjbGlj aycsIHNhbW1lbE1haWxWb3JiZXJlaXRlbik7CiAgICAgICAgZnVuY3Rpb24gc2FtbWVsTWFpbFZv cmJlcmVpdGVuKCkgewogICAgICAgICAgICB2YXIgYXVzZ2V3YWVobHQgPSBbXTsKICAgICAgICAg ICAgZ2V0Q2hlY2tib3hlbigpLmZvckVhY2goZnVuY3Rpb24oYykgewogICAgICAgICAgICAgICAg aWYgKCFjLmNoZWNrZWQpIHJldHVybjsKICAgICAgICAgICAgICAgIGF1c2dld2FlaGx0LnB1c2go ewogICAgICAgICAgICAgICAgICAgIGlkOiBjLmdldEF0dHJpYnV0ZSgnZGF0YS1waWQnKSwKICAg ICAgICAgICAgICAgICAgICBlbWFpbDogYy5nZXRBdHRyaWJ1dGUoJ2RhdGEtZW1haWwnKSwKICAg ICAgICAgICAgICAgICAgICBuYW1lOiBjLmdldEF0dHJpYnV0ZSgnZGF0YS1uYW1lJyksCiAgICAg ICAgICAgICAgICAgICAgdm9ybmFtZTogYy5nZXRBdHRyaWJ1dGUoJ2RhdGEtdm9ybmFtZScpCiAg ICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIGlmICghYXVzZ2V3 YWVobHQubGVuZ3RoKSB7IHRvYXN0KCdLZWluZSBQZXJzb24gbWFya2llcnQnLCAnd2FybnVuZycp OyByZXR1cm47IH0KICAgICAgICAgICAgdmFyIGRlZml6aXQgPSBtYWlsQnRuID8gbWFpbEJ0bi5n ZXRBdHRyaWJ1dGUoJ2RhdGEtZGVmaXppdCcpIDogJ0YnOwogICAgICAgICAgICBzYW1tZWxBbmZy YWdlTWFpbE9lZmZuZW4oYXVzZ2V3YWVobHQsIGRhdHVtLCBkZWZpeml0KTsKICAgICAgICB9CiAg ICB9Cn0KCi8vIFJlbmRlcnQgZGFzIEthbmRpZGF0ZW4tUGFuZWwgcHJvIHVudGVyYmVzZXR6dGUg U2NoaWNodCBpbSBUYWctRGV0YWlsLgovLyBMaXN0ZSBkZXIgREdMLXF1YWxpZml6aWVydGVuIFBl cnNvbmVuIG1pdCBDaGVja2JveGVuICsgQW5zY2hyZWliZW4tQnV0dG9uLgovLyBXZW5uIGRpZSBM aXN0ZSBsZWVyIGlzdCwgd2lyZCBlaW4gSGlud2Vpcy1UZXh0IGFuZ2V6ZWlndC4KZnVuY3Rpb24g a2FuZGlkYXRlblplaWxlSHRtbChwLCBjb2RlLCB1bWRpc3BvbmllcmJhcikgewogICAgdmFyIGhh dE1haWwgPSAhIXAuZW1haWw7CiAgICB2YXIgZGlzID0gaGF0TWFpbCA/ICcnIDogJyBkaXNhYmxl ZCB0aXRsZT0iS2VpbmUgRS1NYWlsLUFkcmVzc2UgaGludGVybGVndCInOwogICAgdmFyIGNscyA9 ICdiay1rYW5kaWRhdGVuLXplaWxlJyArIChoYXRNYWlsID8gJycgOiAnIGJrLWthbmRpZGF0ZW4t a2Vpbi1tYWlsJykgKwogICAgICAgICAgICAgICh1bWRpc3BvbmllcmJhciA/ICcgYmsta2FuZGlk YXRlbi16ZWlsZS11bWRpcycgOiAnJyk7CiAgICB2YXIgZnVsbE5hbWUgPSAoKHAudm9ybmFtZSB8 fCAnJykgKyAnICcgKyAocC5uYW1lIHx8ICcnKSkudHJpbSgpOwogICAgdmFyIG1ldGFQYXJ0cyA9 IFtdOwogICAgaWYgKHAuZnVua3Rpb24pIG1ldGFQYXJ0cy5wdXNoKGVzY2FwZUhUTUwocC5mdW5r dGlvbikpOwogICAgaWYgKHAuZ3J1cHBlKSAgIG1ldGFQYXJ0cy5wdXNoKCdHcnVwcGUgJyArIGVz Y2FwZUhUTUwocC5ncnVwcGUpKTsKICAgIHZhciBtZXRhSHRtbCA9IG1ldGFQYXJ0cy5qb2luKCcg wrcgJyk7CiAgICAvLyBDb2RlLUJhZGdlIG51ciBmdWVyIFVtZGlzLUJsb2NrIHNpbm52b2xsICh6 ZWlndCBiaXNoZXJpZ2UgV0RGL0ZCUC0KICAgIC8vIEZ1bmt0aW9uIGFuLCBkaWUgZHVyY2ggZGll IFVtc2V0enVuZyBuZXUgenUgYmVzZXR6ZW4gd2FlcmUpLiBCZWkKICAgIC8vIGZyZWllbiBQZXJz b25lbiBpc3QgZGVyIENvZGUgaW1tZXIgbGVlciDigJQgZGllIFNwYWx0ZSBoYXQgZGFubiBudXIK ICAgIC8vIGVpbiAi4oCUIiBnZXplaWd0IHVuZCBkYXMgTGF5b3V0IGdlc3ByZW5ndC4KICAgIHZh ciBjb2RlQmFkZ2UgPSAodW1kaXNwb25pZXJiYXIgJiYgY29kZSAmJiBjb2RlICE9PSAnJykKICAg ICAgICA/ICc8c3BhbiBjbGFzcz0iYmsta2FuZGlkYXRlbi1jb2RlIiB0aXRsZT0iQWt0dWVsbCBl aW5nZXBsYW50ZSBGdW5rdGlvbiDigJQgbXVzcyBiZWkgVW1zZXR6dW5nIG5ldSBiZXNldHp0IHdl cmRlbiI+JyArIGVzY2FwZUhUTUwoY29kZSkgKyAnPC9zcGFuPicKICAgICAgICA6ICcnOwogICAg dmFyIGtlaW5NYWlsSGlud2VpcyA9IGhhdE1haWwKICAgICAgICA/ICcnCiAgICAgICAgOiAnPHNw YW4gY2xhc3M9ImJrLWthbmRpZGF0ZW4td2FybiIgdGl0bGU9IktlaW5lIEUtTWFpbC1BZHJlc3Nl IGhpbnRlcmxlZ3Qg4oCUIFBlcnNvbiBrYW5uIG5pY2h0IGFuZ2VzY2hyaWViZW4gd2VyZGVuIj7i mqA8L3NwYW4+JzsKICAgIHJldHVybiAnPGxpIGNsYXNzPSInICsgY2xzICsgJyI+JyArCiAgICAg ICAgJzxpbnB1dCB0eXBlPSJjaGVja2JveCIgY2xhc3M9ImJrLWthbmRpZGF0ZW4tY2hrIicgKwog ICAgICAgICAgICAnIGRhdGEtcGlkPSInICsgZXNjYXBlQXR0cihTdHJpbmcocC5pZCkpICsgJyIn ICsKICAgICAgICAgICAgJyBkYXRhLWVtYWlsPSInICsgZXNjYXBlQXR0cihwLmVtYWlsIHx8ICcn KSArICciJyArCiAgICAgICAgICAgICcgZGF0YS1uYW1lPSInICsgZXNjYXBlQXR0cihwLm5hbWUg fHwgJycpICsgJyInICsKICAgICAgICAgICAgJyBkYXRhLXZvcm5hbWU9IicgKyBlc2NhcGVBdHRy KHAudm9ybmFtZSB8fCAnJykgKyAnIicgKwogICAgICAgICAgICAnIGRhdGEtdW1kaXM9IicgKyAo dW1kaXNwb25pZXJiYXIgPyAnMScgOiAnMCcpICsgJyInICsKICAgICAgICAgICAgKGhhdE1haWwg PyAnIGNoZWNrZWQnIDogJycpICsgZGlzICsgJz4nICsKICAgICAgICAnPGRpdiBjbGFzcz0iYmst a2FuZGlkYXRlbi10ZXh0Ij4nICsKICAgICAgICAgICAgJzxkaXYgY2xhc3M9ImJrLWthbmRpZGF0 ZW4tbmFtZSI+JyArIGVzY2FwZUhUTUwoZnVsbE5hbWUpICsga2Vpbk1haWxIaW53ZWlzICsgJzwv ZGl2PicgKwogICAgICAgICAgICAobWV0YUh0bWwgPyAnPGRpdiBjbGFzcz0iYmsta2FuZGlkYXRl bi1tZXRhIj4nICsgbWV0YUh0bWwgKyAnPC9kaXY+JyA6ICcnKSArCiAgICAgICAgJzwvZGl2Picg KwogICAgICAgIGNvZGVCYWRnZSArCiAgICAnPC9saT4nOwp9CgpmdW5jdGlvbiBrYW5kaWRhdGVu UGFuZWxIdG1sKGthbmRpZGF0ZW4sIGRhdHVtLCBzY2hpY2h0TGV0dGVyLCBkaWVuc3RncnVwcGUp IHsKICAgIHZhciBncnBJbmZvID0gZGllbnN0Z3J1cHBlID8gKCcgKERpZW5zdGdydXBwZSAnICsg ZXNjYXBlSFRNTChkaWVuc3RncnVwcGUpICsgJyknKSA6ICcgKGFsbGUgRGllbnN0Z3J1cHBlbiDi gJQgU2NoaWNodCBha3R1ZWxsIHVuYmVzZXR6dCknOwogICAgdmFyIGZyZWkgPSAoa2FuZGlkYXRl biAmJiBrYW5kaWRhdGVuLmZyZWkpIHx8IFtdOwogICAgdmFyIHVtZGlzID0gKGthbmRpZGF0ZW4g JiYga2FuZGlkYXRlbi51bWRpc3BvbmllcmJhcikgfHwgW107CiAgICBpZiAoZnJlaS5sZW5ndGgg KyB1bWRpcy5sZW5ndGggPT09IDApIHsKICAgICAgICByZXR1cm4gJzxkaXYgY2xhc3M9ImJrLWth bmRpZGF0ZW4tbGVlciI+S2VpbmUgVkkzLURHTC1xdWFsaWZpemllcnRlbiBLYW5kaWRhdGVuIHZl cmbDvGdiYXInICsgZ3JwSW5mbyArICcuPC9kaXY+JzsKICAgIH0KICAgIHZhciBodG1sID0gJyc7 CiAgICBpZiAoZnJlaS5sZW5ndGgpIHsKICAgICAgICB2YXIgZnJlaVplaWxlbiA9IGZyZWkubWFw KGZ1bmN0aW9uKHApIHsKICAgICAgICAgICAgdmFyIGUgPSAoWi5wbGFudW5nLmVpbnRyYWVnZSB8 fCB7fSlbZGF0dW1dIHx8IHt9OwogICAgICAgICAgICB2YXIgdyA9IFN0cmluZyhlW1N0cmluZyhw LmlkKV0gfHwgJycpOwogICAgICAgICAgICByZXR1cm4ga2FuZGlkYXRlblplaWxlSHRtbChwLCB3 LCBmYWxzZSk7CiAgICAgICAgfSkuam9pbignJyk7CiAgICAgICAgaHRtbCArPSAnPGRpdiBjbGFz cz0iYmsta2FuZGlkYXRlbi1oaW53ZWlzIj5GcmVpIGFtIFRhZyDigJQgVkkzLURHTC1xdWFsaWZp emllcnQnICsgZ3JwSW5mbyArICc6PC9kaXY+JyArCiAgICAgICAgICAgICAgICAnPHVsIGNsYXNz PSJiay1rYW5kaWRhdGVuLWxpc3RlIj4nICsgZnJlaVplaWxlbiArICc8L3VsPic7CiAgICB9CiAg ICBpZiAodW1kaXMubGVuZ3RoKSB7CiAgICAgICAgdmFyIHVtZGlzWmVpbGVuID0gdW1kaXMubWFw KGZ1bmN0aW9uKHUpIHsKICAgICAgICAgICAgcmV0dXJuIGthbmRpZGF0ZW5aZWlsZUh0bWwodS5w ZXJzb24sIHUub3JpZ2luYWxDb2RlLCB0cnVlKTsKICAgICAgICB9KS5qb2luKCcnKTsKICAgICAg ICBodG1sICs9ICc8ZGl2IGNsYXNzPSJiay1rYW5kaWRhdGVuLWhpbndlaXMgYmsta2FuZGlkYXRl bi1oaW53ZWlzLXVtZGlzIj4nICsKICAgICAgICAgICAgICAgICAgICAnQXVzIFdERi9GQlAgdW1k aXNwb25pZXJiYXIg4oCUIFZJMy1ER0wtcXVhbGlmaXppZXJ0LCBha3R1ZWxsIGluIGRlcnNlbGJl biBTY2hpY2h0IGVpbmdlcGxhbnQ6JyArCiAgICAgICAgICAgICAgICAnPC9kaXY+JyArCiAgICAg ICAgICAgICAgICAnPGRpdiBjbGFzcz0iYmsta2FuZGlkYXRlbi13YXJudW5nIj4nICsKICAgICAg ICAgICAgICAgICAgICAnV2VubiBlaW5lIGRpZXNlciBQZXJzb25lbiBkaWUgREdMLUZ1bmt0aW9u IMO8YmVybmltbXQsIG11c3MgaWhyZSBiaXNoZXJpZ2UgRnVua3Rpb24gKFdERi9GQlApICcgKwog ICAgICAgICAgICAgICAgICAgICdkdXJjaCBlaW5lIGFuZGVyZSBQZXJzb24gZXJzZXR6dCB3ZXJk ZW4uIEZvbGdlLVBsYW51bmcgaW0gQXVnZSBiZWhhbHRlbi4nICsKICAgICAgICAgICAgICAgICc8 L2Rpdj4nICsKICAgICAgICAgICAgICAgICc8dWwgY2xhc3M9ImJrLWthbmRpZGF0ZW4tbGlzdGUi PicgKyB1bWRpc1plaWxlbiArICc8L3VsPic7CiAgICB9CiAgICByZXR1cm4gaHRtbCArCiAgICAg ICAgJzxkaXYgY2xhc3M9ImJrLWthbmRpZGF0ZW4tYWt0aW9uZW4iPicgKwogICAgICAgICAgICAn PGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4gYnRuLXByaW1hZXIgYnRuLWtsZWluIGJr LWthbmRpZGF0ZW4tc2VuZGVuIiBkYXRhLXNjaGljaHQtbGV0dGVyPSInICsgc2NoaWNodExldHRl ciArICciPicgKwogICAgICAgICAgICAgICAgJ01haWwgYW4gbWFya2llcnRlIEthbmRpZGF0ZW4n ICsKICAgICAgICAgICAgJzwvYnV0dG9uPicgKwogICAgICAgICc8L2Rpdj4nOwp9CgpmdW5jdGlv biBhdXNoaWxmZUxpc3RlSHRtbChwZXJzb25lbiwgZGF0dW0sIGRlZml6aXRTY2hpY2h0KSB7CiAg ICB2YXIgaHRtbCA9ICc8dWwgY2xhc3M9ImJrLWRldGFpbC1hdXNoaWxmZS1saXN0ZSI+JzsKICAg IHBlcnNvbmVuLmZvckVhY2goZnVuY3Rpb24ocCkgewogICAgICAgIHZhciBoYXRNYWlsID0gISFw LmVtYWlsOwogICAgICAgIHZhciBwaWQgPSBTdHJpbmcocC5pZCk7CiAgICAgICAgdmFyIGRpcyA9 IGhhdE1haWwgPyAnJyA6ICcgZGlzYWJsZWQgdGl0bGU9IktlaW5lIEUtTWFpbC1BZHJlc3NlIGhp bnRlcmxlZ3QiJzsKICAgICAgICB2YXIgY2xzRXh0cmEgPSBoYXRNYWlsID8gJycgOiAnIGJrLWRl dGFpbC1hdXNoaWxmZS1rZWluLW1haWwnOwogICAgICAgIGh0bWwgKz0gJzxsaSBjbGFzcz0iYmst ZGV0YWlsLWF1c2hpbGZlLXplaWxlJyArIGNsc0V4dHJhICsgJyI+JyArCiAgICAgICAgICAgICc8 aW5wdXQgdHlwZT0iY2hlY2tib3giIGNsYXNzPSJiay1hdXNoaWxmZS1jaGsiIGRhdGEtcGlkPSIn ICsgZXNjYXBlQXR0cihwaWQpICsgJyInICsKICAgICAgICAgICAgICAgICcgZGF0YS1lbWFpbD0i JyArIGVzY2FwZUF0dHIocC5lbWFpbCB8fCAnJykgKyAnIicgKwogICAgICAgICAgICAgICAgJyBk YXRhLW5hbWU9IicgKyBlc2NhcGVBdHRyKHAubmFtZSkgKyAnIicgKwogICAgICAgICAgICAgICAg JyBkYXRhLXZvcm5hbWU9IicgKyBlc2NhcGVBdHRyKHAudm9ybmFtZSkgKyAnIicgKwogICAgICAg ICAgICAgICAgKGhhdE1haWwgPyAnIGNoZWNrZWQnIDogJycpICsgZGlzICsgJz4nICsKICAgICAg ICAgICAgJzxzcGFuIGNsYXNzPSJiay1kZXRhaWwtYXVzaGlsZmUtbmFtZSI+JyArIGVzY2FwZUhU TUwocC5uYW1lKSArICc8L3NwYW4+JyArCiAgICAgICAgICAgICc8c3BhbiBjbGFzcz0iYmstZGV0 YWlsLWF1c2hpbGZlLWNvZGUiPicgKyBlc2NhcGVIVE1MKHAud2VydCkgKyAnPC9zcGFuPicgKwog ICAgICAgICAgICAnPHNwYW4gY2xhc3M9ImJrLWRldGFpbC1hdXNoaWxmZS1ncnAiPicgKyBlc2Nh cGVIVE1MKHAuZ3J1cHBlKSArICc8L3NwYW4+JyArCiAgICAgICAgICAgICc8c3BhbiBjbGFzcz0i YmstZGV0YWlsLWF1c2hpbGZlLWtvbW0iPicgKyBlc2NhcGVIVE1MKHAua29tbWVudGFyKSArICc8 L3NwYW4+JyArCiAgICAgICAgICAgIChoYXRNYWlsCiAgICAgICAgICAgICAgICA/ICc8YnV0dG9u IHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0biBidG4tc2VrIGJ0bi1rbGVpbiBiay1kZXRhaWwtYXVz aGlsZmUtbWFpbGJ0biIgZGF0YS1ha3Rpb249ImJrLW1haWwtemVpbGUiIGRhdGEtcGlkPSInICsg ZXNjYXBlQXR0cihwaWQpICsgJyIgdGl0bGU9IlBlcnPDtm5saWNoZSBNYWlsIGFuICcgKyBlc2Nh cGVBdHRyKHAubmFtZSkgKyAnICgnICsgZXNjYXBlQXR0cihwLmVtYWlsKSArICcpIj5QZXJzw7Zu bGljaDwvYnV0dG9uPicKICAgICAgICAgICAgICAgIDogJzxzcGFuIGNsYXNzPSJiay1kZXRhaWwt YXVzaGlsZmUta2Vpbm1haWwiPuKAlCBrZWluZSBFLU1haWwg4oCUPC9zcGFuPicpICsKICAgICAg ICAgICAgJzwvbGk+JzsKICAgIH0pOwogICAgaHRtbCArPSAnPC91bD4nOwogICAgcmV0dXJuIGh0 bWw7Cn0KCi8vIFNhbW1lbC1BbmZyYWdlLU1haWw6IFdlbm4gbnVyIGVpbmUgUGVyc29uIGF1c2dl d2FlaGx0IGlzdCwgd2lyZCBkaWUKLy8gTWFpbCBtaXQgcGVyc29lbmxpY2hlciBBbnJlZGUgKFZv cm5hbWUpIHVuZCBUbzogYW4gZGllc2UgUGVyc29uIGFsbGVpbgovLyB2b3JiZXJlaXRldC4gQmVp IG1laHJlcmVuIEVtcGZhZW5nZXJuOiBUbzogbGVlciwgQkNDOiBhbGxlLCBBbnJlZGUKLy8gIkhh bGxvIHp1c2FtbWVuLCIuIFZvcmxhZ2UgYmVzZXR6dW5nc0FuZnJhZ2Ugd2lyZCBpbiBiZWlkZW4g RmFlbGxlbgovLyBnZW51dHp0LCBtaXQgZGVuc2VsYmVuIFZhcmlhYmxlbiB3aWUgZGllIGFsdGUg cGVyc29lbmxpY2hlIFZhcmlhbnRlLgpmdW5jdGlvbiBzYW1tZWxBbmZyYWdlTWFpbE9lZmZuZW4o cGVyc29uZW4sIGRhdHVtLCBzY2hpY2h0TGV0dGVyKSB7CiAgICBpZiAoIXBlcnNvbmVuIHx8ICFw ZXJzb25lbi5sZW5ndGgpIHJldHVybjsKICAgIHZhciBzY2hpY2h0TmFtZSA9IHsgRjogJ0Zyw7xo JywgUzogJ1Nww6R0JywgTjogJ05hY2h0JyB9W3NjaGljaHRMZXR0ZXJdIHx8IHNjaGljaHRMZXR0 ZXI7CiAgICB2YXIgaXN0ID0gZnVlaHJ1bmdzWmFlaGxlbihkYXR1bSwgc2NoaWNodExldHRlcik7 CiAgICB2YXIgc29sbCA9IDI7CiAgICB2YXIgZGVmaXppdCA9IE1hdGgubWF4KDAsIHNvbGwgLSBp c3QpOwogICAgdmFyIHd0ID0gWydTb25udGFnJywnTW9udGFnJywnRGllbnN0YWcnLCdNaXR0d29j aCcsJ0Rvbm5lcnN0YWcnLCdGcmVpdGFnJywnU2Ftc3RhZyddW25ldyBEYXRlKGRhdHVtICsgJ1Qw MDowMDowMCcpLmdldERheSgpXTsKCiAgICB2YXIgZWluemVsID0gcGVyc29uZW4ubGVuZ3RoID09 PSAxOwogICAgdmFyIGN0eCA9IHsKICAgICAgICBkYXR1bTogICAgICAgICBkYXR1bUZvcm1hdERF KGRhdHVtKSwKICAgICAgICB3b2NoZW50YWc6ICAgICB3dCwKICAgICAgICBzY2hpY2h0OiAgICAg ICBzY2hpY2h0TmFtZSwKICAgICAgICBzY2hpY2h0X2t1cno6ICBzY2hpY2h0TGV0dGVyLAogICAg ICAgIGlzdDogICAgICAgICAgIGlzdCwKICAgICAgICBzb2xsOiAgICAgICAgICBzb2xsLAogICAg ICAgIGRlZml6aXQ6ICAgICAgIGRlZml6aXQsCiAgICAgICAgYWJzZW5kZXJfbmFtZTogYWJzZW5k ZXJOYW1lRXJtaXR0ZWxuKCksCiAgICAgICAgLy8gU2FtbWVsLU1haWw6IGxlZXJlciBWb3JuYW1l IHd1ZXJkZSAiSGFsbG8gLCIgZXJnZWJlbi4gInp1c2FtbWVuIgogICAgICAgIC8vIGZ1ZWxsdCBk aWUgQW5yZWRlIHNpbm52b2xsIGZ1ZXIgTWVocmZhY2gtRW1wZmFlbmdlci4KICAgICAgICBlbXBm YWVuZ2VyX3Zvcm5hbWU6IGVpbnplbCA/IChwZXJzb25lblswXS52b3JuYW1lIHx8IHBlcnNvbmVu WzBdLm5hbWUpIDogJ3p1c2FtbWVuJywKICAgICAgICBlbXBmYWVuZ2VyX25hbWU6ICAgIGVpbnpl bCA/IHBlcnNvbmVuWzBdLm5hbWUgOiAnJwogICAgfTsKCiAgICAvLyBad2VpIGdldHJlbm50ZSBW b3JsYWdlbiBqZSBuYWNoIFBlcnNvbmVuemFobDogJ2Jlc2V0enVuZ3NBbmZyYWdlX2VpbnplbG4n CiAgICAvLyBiZWkgZ2VuYXUgZWluZW0gRW1wZmFlbmdlciAoRHUtU2luZ3VsYXIpLCAnYmVzZXR6 dW5nc0FuZnJhZ2UnIGJlaQogICAgLy8gbWVocmVyZW4gKFBsdXJhbCAvICJIYWxsbyB6dXNhbW1l biIpLiBCZWlkZSBzaW5kIGltIEFkbWluIHVudGVyCiAgICAvLyBFLU1haWwtVm9ybGFnZW4gZnJl aSBlZGl0aWVyYmFyOyBhdXMgZGVtIFRvZ2dsZSAnZW1wZmFlbmdlckltQmNjJyBkZXIKICAgIC8v IGpld2VpbGlnZW4gVm9ybGFnZSB3aXJkIGFiZ2VsZWl0ZXQsIG9iIGRpZSBBZHJlc3NlbiBpbnMg QW4tIG9kZXIKICAgIC8vIEJDQy1GZWxkIHdhbmRlcm4uCiAgICB2YXIgdm9ybGFnZW5LZXkgPSBl aW56ZWwgPyAnYmVzZXR6dW5nc0FuZnJhZ2VfZWluemVsbicgOiAnYmVzZXR6dW5nc0FuZnJhZ2Un OwoKICAgIC8vIEZhbGxiYWNrLUJvZHkgKGVpbmdlYmF1dGUgRHUtRm9ybSksIGZhbGxzIGRpZSBW b3JsYWdlIG5pY2h0IGdlem9nZW4KICAgIC8vIHdlcmRlbiBrYW5uIOKAlCB3aXJkIGdsZWljaCBh dWNoIGZ1ZXIgZGVuIGZlaGxlbmRlbi1Wb3JsYWdlLVBmYWQgZ2VudXR6dC4KICAgIGZ1bmN0aW9u IGZhbGxiYWNrQmF1ZW4oKSB7CiAgICAgICAgdmFyIGJldHJlZmZGYiA9ICdBdXNoaWxmZSAnICsg c2NoaWNodE5hbWUgKyAnc2NoaWNodCAnICsgZGF0dW1Gb3JtYXRERShkYXR1bSk7CiAgICAgICAg dmFyIGFucmVkZSA9IGVpbnplbAogICAgICAgICAgICA/ICdIYWxsbycgKyAocGVyc29uZW5bMF0u dm9ybmFtZSA/ICcgJyArIHBlcnNvbmVuWzBdLnZvcm5hbWUgOiAnJykgKyAnLCcKICAgICAgICAg ICAgOiAnSGFsbG8genVzYW1tZW4sJzsKICAgICAgICB2YXIgdGV4dEZiID0gYW5yZWRlICsgJ1xu XG4nICsKICAgICAgICAgICAgJ2bDvHIgZGllICcgKyBzY2hpY2h0TmFtZSArICdzY2hpY2h0IGFt ICcgKyBkYXR1bUZvcm1hdERFKGRhdHVtKSArCiAgICAgICAgICAgICcgKCcgKyB3dCArICcpIHNp bmQgYWt0dWVsbCBudXIgJyArIGlzdCArICcgdm9uICcgKyBzb2xsICsKICAgICAgICAgICAgJyBG w7xocnVuZ3NrcsOkZnRlbiBlaW5nZXBsYW50LiAnICsKICAgICAgICAgICAgKGVpbnplbAogICAg ICAgICAgICAgICAgPyAnV8O8cmRlc3QgRHUgYW4gZGVtIFRhZyBhdXNoZWxmZW4ga8O2bm5lbj8n CiAgICAgICAgICAgICAgICA6ICdLw7ZubnRlIGplbWFuZCB2b24gRXVjaCBhbiBkZW0gVGFnIGF1 c2hlbGZlbj8nKSArCiAgICAgICAgICAgICdcblxuVmllbGUgR3LDvMOfZVxuJyArIGFic2VuZGVy TmFtZUVybWl0dGVsbigpOwogICAgICAgIHJldHVybiB7IGJldHJlZmY6IGJldHJlZmZGYiwgdGV4 dDogdGV4dEZiIH07CiAgICB9CgogICAgdmFyIGJldHJlZmYsIHRleHQ7CiAgICB2YXIgdm9ybGFn ZSA9IG51bGw7CiAgICBpZiAoYmVzZXR6dW5nSG9va3MuZW1haWxWb3JsYWdlbkhvbGVuICYmIGJl c2V0enVuZ0hvb2tzLmVtYWlsVm9ybGFnZUJlZnVlbGxlbikgewogICAgICAgIHZhciBhbGxlVm9y bGFnZW4gPSBiZXNldHp1bmdIb29rcy5lbWFpbFZvcmxhZ2VuSG9sZW4oKSB8fCB7fTsKICAgICAg ICB2b3JsYWdlID0gYWxsZVZvcmxhZ2VuW3ZvcmxhZ2VuS2V5XSB8fCBudWxsOwogICAgICAgIC8v IEJhY2t3YXJkcy1Db21wYXQ6IHdlbm4gZGllIEVpbnplbG4tVmFyaWFudGUgaW4gZGVyIEluc3Rh bGxhdGlvbgogICAgICAgIC8vIG5vY2ggZmVobHQgKEFkbWluIGhhdCBzaWUgei5CLiBuaWUgZ2Vw ZmxlZ3QpLCBmYWVsbHQgZGVyIENvZGUgYXVmCiAgICAgICAgLy8gZGllIFNhbW1lbC1Wb3JsYWdl IHp1cnVlY2sg4oCUIGJlc3NlciBhbHMgbGVlcmUgTWFpbC4KICAgICAgICBpZiAoIXZvcmxhZ2Ug JiYgZWluemVsKSB2b3JsYWdlID0gYWxsZVZvcmxhZ2VuWydiZXNldHp1bmdzQW5mcmFnZSddIHx8 IG51bGw7CiAgICB9CiAgICBpZiAodm9ybGFnZSAmJiAodm9ybGFnZS5iZXRyZWZmIHx8IHZvcmxh Z2UudGV4dCkpIHsKICAgICAgICBiZXRyZWZmID0gYmVzZXR6dW5nSG9va3MuZW1haWxWb3JsYWdl QmVmdWVsbGVuKHZvcmxhZ2UuYmV0cmVmZiB8fCAnJywgY3R4KTsKICAgICAgICB0ZXh0ICAgID0g YmVzZXR6dW5nSG9va3MuZW1haWxWb3JsYWdlQmVmdWVsbGVuKHZvcmxhZ2UudGV4dCAgICB8fCAn JywgY3R4KTsKICAgIH0gZWxzZSB7CiAgICAgICAgdmFyIGZiID0gZmFsbGJhY2tCYXVlbigpOwog ICAgICAgIGJldHJlZmYgPSBmYi5iZXRyZWZmOwogICAgICAgIHRleHQgICAgPSBmYi50ZXh0Owog ICAgfQoKICAgIC8vIFdlbm4gdW1kaXNwb25pZXJiYXJlIFBlcnNvbmVuICg9IGFrdHVlbGwgaW4g V0RGL0ZCUCBkZXIgZ2xlaWNoZW4KICAgIC8vIFNjaGljaHQgZWluZ2VwbGFudCkgdW50ZXIgZGVu IEVtcGZhZW5nZXJuIHNpbmQsIGVpbmVuIEhpbndlaXMgYW5zCiAgICAvLyBNYWlsLUVuZGUgYW5o YWVuZ2VuIOKAlCBkYW1pdCBkaWUgYW5nZXNjaHJpZWJlbmUgUGVyc29uIHdlaXNzLCBkYXNzCiAg ICAvLyBzaWUgbmljaHQgImVpbmZhY2ggc28iIGVpbnNwcmluZ2VuIGthbm4sIHNvbmRlcm4gaWhy ZSBiaXNoZXJpZ2UKICAgIC8vIEZ1bmt0aW9uIG5ldSBiZXNldHp0IHdlcmRlbiBtdXNzLgogICAg dmFyIGhhdFVtZGlzID0gcGVyc29uZW4uc29tZShmdW5jdGlvbihwKSB7IHJldHVybiBwLnVtZGlz OyB9KTsKICAgIGlmIChoYXRVbWRpcykgewogICAgICAgIHRleHQgKz0gJ1xuXG5IaW53ZWlzOiBF aW5pZ2UgZGVyIGFuZ2VzY2hyaWViZW5lbiBQZXJzb25lbiBzaW5kIGFrdHVlbGwgJyArCiAgICAg ICAgICAgICdhbHMgV0RGIG9kZXIgRkJQIGluIGRlcnNlbGJlbiBTY2hpY2h0IGVpbmdlcGxhbnQu IFdlciDDvGJlcm5pbW10LCAnICsKICAgICAgICAgICAgJ3NvbGx0ZSBtaXIga3VyeiBCZXNjaGVp ZCBnZWJlbiDigJQgZGllIGJpc2hlcmlnZSBGdW5rdGlvbiBtdXNzIGRhbm4gJyArCiAgICAgICAg ICAgICdkdXJjaCBlaW5lIGFuZGVyZSBQZXJzb24gYmVzZXR6dCB3ZXJkZW4uJzsKICAgIH0KCiAg ICAvLyBNYWlsdG8tQmF1OiBFbXBmYWVuZ2VyLUZlbGQgKEFuIHZzLiBCQ0MpIHdpcmQgYXVzIGRl bSBWb3JsYWdlbi0KICAgIC8vIFRvZ2dsZSAnZW1wZmFlbmdlckltQmNjJyBiZXN0aW1tdC4gRGVm YXVsdC1Mb2dpayB3ZW5uIGRpZSBWb3JsYWdlCiAgICAvLyBkZW4gVG9nZ2xlIG5pY2h0IHNldHp0 OiBFaW56ZWwtQWRyZXNzYXQgLT4gQW4gKEJDQyBpc3QgYmVpIDEgUGVyc29uCiAgICAvLyBzaW5u bG9zKSwgU2FtbWVsIC0+IEJDQyAoRGF0ZW5zY2h1dHopLgogICAgdmFyIGVtYWlscyA9IHBlcnNv bmVuLm1hcChmdW5jdGlvbihwKSB7IHJldHVybiBwLmVtYWlsOyB9KS5maWx0ZXIoQm9vbGVhbik7 CiAgICB2YXIgYmNjVm9yZ2FiZSA9IHZvcmxhZ2UgJiYgdm9ybGFnZS5lbXBmYWVuZ2VySW1CY2Mg IT0gbnVsbAogICAgICAgID8gISF2b3JsYWdlLmVtcGZhZW5nZXJJbUJjYwogICAgICAgIDogIWVp bnplbDsgICAvLyBGYWxsYmFjayBvaG5lIFZvcmxhZ2U6IEVpbnplbD1BbiwgU2FtbWVsPUJDQwog ICAgdmFyIHVybDsKICAgIGlmIChlbWFpbHMubGVuZ3RoID09PSAwKSB7CiAgICAgICAgdXJsID0g J21haWx0bzonOwogICAgfSBlbHNlIGlmIChiY2NWb3JnYWJlKSB7CiAgICAgICAgdXJsID0gJ21h aWx0bzo/YmNjPScgKyBlbmNvZGVVUklDb21wb25lbnQoZW1haWxzLmpvaW4oJywnKSk7CiAgICB9 IGVsc2UgewogICAgICAgIHVybCA9ICdtYWlsdG86JyArIGVuY29kZVVSSUNvbXBvbmVudChlbWFp bHMuam9pbignLCcpKTsKICAgIH0KICAgIHVybCArPSAodXJsLmluZGV4T2YoJz8nKSA+PSAwID8g JyYnIDogJz8nKSArCiAgICAgICAgJ3N1YmplY3Q9JyArIGVuY29kZVVSSUNvbXBvbmVudChiZXRy ZWZmKSArCiAgICAgICAgJyZib2R5PScgKyBlbmNvZGVVUklDb21wb25lbnQodGV4dCk7CiAgICB3 aW5kb3cubG9jYXRpb24uaHJlZiA9IHVybDsKfQoK ### FILE: js/core_api.js | 1087 Ly8gPT09IGNvcmUvYXBpLmpzID09PQovLyBGZXRjaC1XcmFwcGVyIGZ1ZXIgZGllIFZJMy1KU09O LUFQSS4KCmV4cG9ydCBmdW5jdGlvbiBhcGkocGZhZCwgb3B0KSB7CiAgICByZXR1cm4gZmV0Y2go cGZhZCwgb3B0IHx8IHt9KS50aGVuKGZ1bmN0aW9uKHIpIHsKICAgICAgICBpZiAoIXIub2spIHRo cm93IG5ldyBFcnJvcignSFRUUCAnICsgci5zdGF0dXMpOwogICAgICAgIHJldHVybiByLmpzb24o KTsKICAgIH0pOwp9CgpleHBvcnQgZnVuY3Rpb24gYXBpUG9zdChwZmFkLCBkYXRlbikgewogICAg cmV0dXJuIGFwaShwZmFkLCB7IG1ldGhvZDogJ1BPU1QnLCBoZWFkZXJzOiB7ICdDb250ZW50LVR5 cGUnOiAnYXBwbGljYXRpb24vanNvbicgfSwgYm9keTogSlNPTi5zdHJpbmdpZnkoZGF0ZW4pIH0p Owp9CgpleHBvcnQgZnVuY3Rpb24gYXBpUHV0KHBmYWQsIGRhdGVuKSB7CiAgICByZXR1cm4gYXBp KHBmYWQsIHsgbWV0aG9kOiAnUFVUJywgaGVhZGVyczogeyAnQ29udGVudC1UeXBlJzogJ2FwcGxp Y2F0aW9uL2pzb24nIH0sIGJvZHk6IEpTT04uc3RyaW5naWZ5KGRhdGVuKSB9KTsKfQoKZXhwb3J0 IGZ1bmN0aW9uIGFwaURlbGV0ZShwZmFkKSB7CiAgICByZXR1cm4gYXBpKHBmYWQsIHsgbWV0aG9k OiAnREVMRVRFJyB9KTsKfQoKLy8gU3RhdHVzICsgQm9keSB6dXJ1ZWNrZ2ViZW4gc3RhdHQgenUg d2VyZmVuIOKAlCBmdWVyIEVuZHBvaW50cywgZGVyZW4KLy8gTm9uLTJ4eC1BbnR3b3J0ZW4gKHou Qi4gNDIzID0gbG9ja2VkLCA0MDkgPSBLb25mbGlrdCkgRGF0ZW4gZW50aGFsdGVuLAovLyBkaWUg ZGVyIEF1ZnJ1ZmVyIGJyYXVjaHQuCmV4cG9ydCBmdW5jdGlvbiBhcGlTYWZlKHBmYWQsIG9wdCkg ewogICAgcmV0dXJuIGZldGNoKHBmYWQsIG9wdCB8fCB7fSkudGhlbihmdW5jdGlvbihyKSB7CiAg ICAgICAgcmV0dXJuIHIuanNvbigpLnRoZW4oZnVuY3Rpb24oYm9keSkgeyByZXR1cm4geyBzdGF0 dXM6IHIuc3RhdHVzLCBib2R5OiBib2R5IH07IH0pCiAgICAgICAgICAgIC5jYXRjaChmdW5jdGlv bigpIHsgcmV0dXJuIHsgc3RhdHVzOiByLnN0YXR1cywgYm9keTogbnVsbCB9OyB9KTsKICAgIH0p Owp9Cg== ### FILE: js/core_datenLaden.js | 7203 Ly8gPT09IGNvcmUvZGF0ZW5MYWRlbi5qcyA9PT0KLy8gUGVyc29uZW4tQXVmYmF1LCBBZG1pbi1M aXN0ZW4tTm9ybWFsaXNpZXJ1bmcsICJIZXV0ZSItQmxvY2ssCi8vIEhlYXJ0YmVhdC1Xb3JrZXIg KyBJbmFrdGl2aXRhZXRzLVRpbWVyLgovLwovLyBkYXRlbkxhZGVuKCkgdW5kIGFkbWluSG90UmVs b2FkKCkgYmxlaWJlbiB6dW5hZWNoc3QgaW4gYXBwLmpzLCB3ZWlsCi8vIHNpZSBDcm9zcy1Nb2R1 bC1GdW5rdGlvbmVuICh0YWdlRXJ6ZXVnZW4vdGFnSW5mb3NCZXJlY2huZW4gYXVzCi8vIGdyaWQv cmVuZGVyLCBiZXplaWNobnVuZ2VuQW53ZW5kZW4vYWRtaW5SZW5kZXJuIGF1cyBhZG1pbi9hZG1p bikKLy8gcnVmZW4sIGRpZSBlcnN0IGluIHNwYWV0ZXJlbiBQaGFzZW4gZXh0cmFoaWVydCB3ZXJk ZW4uCi8vCi8vIEhvb2tzOiBoZWFydGJlYXRTdGFydGVuIG11c3MgYWRtaW5Ib3RSZWxvYWQgdHJp Z2dlcm4sIHdlbm4gZGVyCi8vIFdvcmtlciBlaW5lICdhZG1pbi1nZWFlbmRlcnQnLU5hY2hyaWNo dCBlcmhhZWx0LiBXaXJkIHVlYmVyCi8vIGRhdGVuTGFkZW5Ib29rcyByZWluZ2VoYWVuZ3QuCgpp bXBvcnQgeyBaIH0gZnJvbSAnLi9jb3JlX3N0YXRlLmpzJzsKCi8vID09PT09IEhvb2tzID09PT09 CgpleHBvcnQgdmFyIGRhdGVuTGFkZW5Ib29rcyA9IHsKICAgIGFkbWluSG90UmVsb2FkOiBudWxs LAogICAgcGxhbnVuZ0hvdFJlbG9hZDogbnVsbAp9OwoKLy8gPT09PT0gQWRtaW4tTGlzdGVuLU5v cm1hbGlzaWVydW5nID09PT09CgovLyBMaXN0ZS1GZWxkZXIgaW4gYWRtaW4uanNvbiwgZGllIHVu dGVyIFBTIDUuMSBkdXJjaCBDb252ZXJ0RnJvbS0vQ29udmVydFRvLUpzb24KLy8gdmVyc2VoZW50 bGljaCBhdWYgRWluemVsLU9iamVrdCBlbnRwYWNrdCB3ZXJkZW4ga29lbm5lbi4gQmVpbSBMYWRl biBpbiBBcnJheQovLyB6dXJ1ZWNrZnVlaHJlbiwgZGFtaXQgZm9yRWFjaC9maWx0ZXIgbmljaHQg YXVmIGRpZSBOYXNlIGZhbGxlbi4KZXhwb3J0IHZhciBBRE1JTl9MSVNUX0ZFTERFUiA9IFsnZmVp ZXJ0YWdlJywnZmVyaWVuJywnc29uZGVydGVybWluZScsJ3NjaGljaHRjb2RlcycsJ2dydXBwZW4n LCdzdGFuZG9ydGUnLCdmdW5rdGlvbmVuJywnZGllbnN0Z3JhZGUnLCdzdXBlclVzZXInLCdmYWNo YXVmc2ljaHQnLCdkaXJla3Rpb25zbGVpdHVuZycsJ2Z1ZWhydW5nc3N0ZWxsZScsJ3NjaGljaHRm b2xnZW4nLCdyb2xsZW4nLCdtaWtyb3RlYW1zJywnc3RhdGlzdGlrS2FjaGVsbicsJ3N0YXRpc3Rp a0xheW91dCddOwoKZXhwb3J0IGZ1bmN0aW9uIGFkbWluTGlzdGVuTm9ybWFsaXNpZXJlbihhZG0p IHsKICAgIGlmICghYWRtIHx8IHR5cGVvZiBhZG0gIT09ICdvYmplY3QnKSByZXR1cm4gYWRtOwog ICAgQURNSU5fTElTVF9GRUxERVIuZm9yRWFjaChmdW5jdGlvbihrKSB7CiAgICAgICAgdmFyIHYg PSBhZG1ba107CiAgICAgICAgaWYgKHYgPT0gbnVsbCkgeyBhZG1ba10gPSBbXTsgcmV0dXJuOyB9 CiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodikpIHJldHVybjsKICAgICAgICAvLyBQUy1FaW56 ZWwtT2JqZWt0IC0+IGluIGVpbmVsZW1lbnRpZ2VzIEFycmF5IHBhY2tlbgogICAgICAgIGlmICh0 eXBlb2YgdiA9PT0gJ29iamVjdCcpIHsKICAgICAgICAgICAgLy8gU29uZGVyZmFsbDogT2JqZWt0 IG1pdCBudW1lcmlzY2hlbiBLZXlzICgwLDEsMiwuLi4pIC0+IFdlcnRlIHNhbW1lbG4KICAgICAg ICAgICAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyh2KTsKICAgICAgICAgICAgdmFyIG51bWVyaXNj aCA9IGtleXMubGVuZ3RoID4gMCAmJiBrZXlzLmV2ZXJ5KGZ1bmN0aW9uKGspIHsgcmV0dXJuIC9e XGQrJC8udGVzdChrKTsgfSk7CiAgICAgICAgICAgIGFkbVtrXSA9IG51bWVyaXNjaAogICAgICAg ICAgICAgICAgPyBrZXlzLnNvcnQoZnVuY3Rpb24oYSxiKXtyZXR1cm4gcGFyc2VJbnQoYSwxMCkt cGFyc2VJbnQoYiwxMCk7fSkubWFwKGZ1bmN0aW9uKGkpeyByZXR1cm4gdltpXTsgfSkKICAgICAg ICAgICAgICAgIDogW3ZdOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGFkbVtrXSA9IFtd OwogICAgICAgIH0KICAgIH0pOwogICAgcmV0dXJuIGFkbTsKfQoKLy8gPT09PT0gUGVyc29uZW4t QXVmYmF1ID09PT09CgovLyBTb3J0aWVydCBaLnBlcnNvbmVuIHByaW1hZXIgbmFjaCBHcnVwcGVu LVJlaWhlbmZvbGdlIGF1cyBhZG1pbi5ncnVwcGVuLAovLyBzZWt1bmRhZXIgbmFjaCBwb3NpdGlv biBpbm5lcmhhbGIgZGVyIEdydXBwZS4gU29uc3Qgd2VyZGVuIEdydXBwZW4gaW4gZGVyCi8vIFBs YW50YWZlbCBtZWhyZmFjaCBnZXRyZW5udCwgd2VubiBkaWUgcG9zaXRpb24tUmVpaGVuZm9sZ2Ug c2llIHplcnJlaXNzdC4KZXhwb3J0IGZ1bmN0aW9uIHBlcnNvbmVuTmV1QXVmYmF1ZW4oKSB7CiAg ICB2YXIgZ3J1cHBlblJhbmcgPSB7fTsKICAgIChaLmFkbWluICYmIFouYWRtaW4uZ3J1cHBlbiB8 fCBbXSkuZm9yRWFjaChmdW5jdGlvbihnLCBpKSB7CiAgICAgICAgaWYgKGcgJiYgZy5uYW1lKSBn cnVwcGVuUmFuZ1tnLm5hbWVdID0gaTsKICAgIH0pOwogICAgLy8gRnVua3Rpb25zLVdoaXRlbGlz dCBmdWVyIGRpZSBQbGFudW5nc2Fuc2ljaHQ6IEZ1bmt0aW9uZW4sIGRpZSBpbQogICAgLy8gQWRt aW4gYXVmICJJbiBQbGFudW5nIHNpY2h0YmFyID0gbmVpbiIgZ2VzZXR6dCBzaW5kLCB3ZXJkZW4g YXVzCiAgICAvLyBkZXIgUGxhbnRhZmVsIGF1c2dlYmxlbmRldCAoei5CLiBEaWVuc3RzdGVsbGVu bGVpdHVuZykuIFBlcnNvbmVuCiAgICAvLyBtaXQgc29sY2hlciBGdW5rdGlvbiBibGVpYmVuIGlu IGRlciBQZXJzb25hbHZlcndhbHR1bmcgYmVzdGVoZW4uCiAgICB2YXIgdmVyc3RlY2t0ZUZ1bmt0 aW9uZW4gPSB7fTsKICAgIChaLmFkbWluICYmIFouYWRtaW4uZnVua3Rpb25lbiB8fCBbXSkuZm9y RWFjaChmdW5jdGlvbihmKSB7CiAgICAgICAgaWYgKGYgJiYgZi5jb2RlICYmIGYuaW5QbGFudW5n ID09PSBmYWxzZSkgdmVyc3RlY2t0ZUZ1bmt0aW9uZW5bZi5jb2RlXSA9IHRydWU7CiAgICB9KTsK ICAgIC8vIEdsZWljaGUgTG9naWsgZnVlciBEaWVuc3RncnVwcGVuOiBncnVwcGUuaW5QbGFudW5n ID09PSBmYWxzZSBibGVuZGV0CiAgICAvLyBkaWUga29tcGxldHRlIEdydXBwZSAoYWxsZSBQZXJz b25lbiBkYXJpbikgYXVzIFBsYW51bmcsIFdvY2hlbnBsYW4KICAgIC8vIHVuZCBQZXJzb2VubGlj aGVtIFBsYW4gYXVzLiBQZXJzb25lbiBibGVpYmVuIHdlaXRlciBpbiBkZXIgUGVyc29uYWwtCiAg ICAvLyB2ZXJ3YWx0dW5nIHBmbGVnYmFyIHVuZCB0YXVjaGVuIGluIGRlciBTdGF0aXN0aWsgYXVm LiBGZWhsdCBkYXMgRmVsZAogICAgLy8gKEFsdGRhdGVuKSwgd2lyZCBkaWUgR3J1cHBlIHdpZSBn ZXdvaG50IGFuZ2V6ZWlndC4KICAgIHZhciB2ZXJzdGVja3RlR3J1cHBlbiA9IHt9OwogICAgKFou YWRtaW4gJiYgWi5hZG1pbi5ncnVwcGVuIHx8IFtdKS5mb3JFYWNoKGZ1bmN0aW9uKGcpIHsKICAg ICAgICBpZiAoZyAmJiBnLm5hbWUgJiYgZy5pblBsYW51bmcgPT09IGZhbHNlKSB2ZXJzdGVja3Rl R3J1cHBlbltnLm5hbWVdID0gdHJ1ZTsKICAgIH0pOwogICAgWi5wZXJzb25lbiA9ICgoWi5wbGFu dW5nICYmIFoucGxhbnVuZy5wZXJzb25lbikgfHwgW10pCiAgICAgICAgLmZpbHRlcihmdW5jdGlv bihwKSB7CiAgICAgICAgICAgIGlmICghKHAuYWt0aXYgfHwgWi51bWdlc2V0enRlRWluYmxlbmRl bikpIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgLy8gUHJvLVBlcnNvbiBhdXMgZGVyIFBsYW51 bmcgYXVzZ2VibGVuZGV0IChhbmFsb2cgR3J1cHBlbi9GdW5rdGlvbmVuCiAgICAgICAgICAgIC8v IGluUGxhbnVuZykuIEdyZWlmdCB1bmFiaGFlbmdpZyB2b20gYWt0aXYvdW1nZXNldHp0LVN0YXR1 cy4KICAgICAgICAgICAgaWYgKHAuaW5QbGFudW5nID09PSBmYWxzZSAmJiAhWi51bWdlc2V0enRl RWluYmxlbmRlbikgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICBpZiAocC5mdW5rdGlvbiAmJiB2 ZXJzdGVja3RlRnVua3Rpb25lbltwLmZ1bmt0aW9uXSkgcmV0dXJuIGZhbHNlOwogICAgICAgICAg ICBpZiAocC5ncnVwcGUgICAmJiB2ZXJzdGVja3RlR3J1cHBlbltwLmdydXBwZV0pICAgICByZXR1 cm4gZmFsc2U7CiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0pCiAgICAgICAgLnNv cnQoZnVuY3Rpb24oYSwgYikgewogICAgICAgICAgICB2YXIgckEgPSAoYS5ncnVwcGUgaW4gZ3J1 cHBlblJhbmcpID8gZ3J1cHBlblJhbmdbYS5ncnVwcGVdIDogOTk5OwogICAgICAgICAgICB2YXIg ckIgPSAoYi5ncnVwcGUgaW4gZ3J1cHBlblJhbmcpID8gZ3J1cHBlblJhbmdbYi5ncnVwcGVdIDog OTk5OwogICAgICAgICAgICBpZiAockEgIT09IHJCKSByZXR1cm4gckEgLSByQjsKICAgICAgICAg ICAgcmV0dXJuIChhLnBvc2l0aW9uIHx8IDk5OSkgLSAoYi5wb3NpdGlvbiB8fCA5OTkpOwogICAg ICAgIH0pOwp9CgovLyA9PT09PSBIZXV0ZS1CbG9jayAobGlua2UgS29wZnNwYWx0ZSkgPT09PT0K Ci8vIERhdHVtL1dvY2hlbnRhZyBpbiBkZXIgbGlua2VuIEtvcGZzcGFsdGUgKHVlYmVyICJTdGFl cmtlIERHTCBpbiBWSSAzIikuCmV4cG9ydCBmdW5jdGlvbiBoZXV0ZUJsb2NrQWt0dWFsaXNpZXJl bigpIHsKICAgIHZhciBkID0gbmV3IERhdGUoKTsKICAgIHZhciB3TmFtZW4gPSBbJ1Nvbm50YWcn LCdNb250YWcnLCdEaWVuc3RhZycsJ01pdHR3b2NoJywnRG9ubmVyc3RhZycsJ0ZyZWl0YWcnLCdT YW1zdGFnJ107CiAgICB2YXIgdGFnID0gKGQuZ2V0RGF0ZSgpIDwgMTAgPyAnMCcgOiAnJykgKyBk LmdldERhdGUoKTsKICAgIHZhciBtb24gPSAoKGQuZ2V0TW9udGgoKSArIDEpIDwgMTAgPyAnMCcg OiAnJykgKyAoZC5nZXRNb250aCgpICsgMSk7CiAgICB2YXIgZWxEYXQgPSBkb2N1bWVudC5nZXRF bGVtZW50QnlJZCgna2wtaGV1dGUtZGF0dW0nKTsKICAgIHZhciBlbFd0ZyA9IGRvY3VtZW50Lmdl dEVsZW1lbnRCeUlkKCdrbC1oZXV0ZS13dGFnJyk7CiAgICBpZiAoZWxEYXQpIGVsRGF0LnRleHRD b250ZW50ID0gdGFnICsgJy4nICsgbW9uICsgJy4nICsgZC5nZXRGdWxsWWVhcigpOwogICAgaWYg KGVsV3RnKSBlbFd0Zy50ZXh0Q29udGVudCA9IHdOYW1lbltkLmdldERheSgpXTsKfQoKLy8gPT09 PT0gSGVhcnRiZWF0LVdvcmtlciA9PT09PQoKLy8gV2F0Y2hkb2ctU3RyYXRlZ2llIHN0YXR0IGV4 cGxpeml0ZW0gc2VuZEJlYWNvbignL2FwaS9zaHV0ZG93bicpOgovLyAtIGJlZm9yZXVubG9hZC9w YWdlaGlkZSBmZXVlcm4gYmVpIEY1L1JlZnJlc2ggZWJlbmZhbGxzIHVuZCB3dWVyZGVuCi8vICAg ZGVuIFNlcnZlciBiZWltIE5ldWxhZGVuIHRvZXRlbi4KLy8gLSBzdGF0dGRlc3NlbiB1ZWJlcm5p bW10IGRlciAzMC1zLUhlYXJ0YmVhdC1XYXRjaGRvZzogc29sYW5nZSBkZXIKLy8gICBXb3JrZXIg VGlja3Mgc2VuZGV0LCBsYWV1ZnQgZGVyIFNlcnZlci4gRWNodGVyIFRhYi1DbG9zZSBzdG9wcHQK Ly8gICBkaWUgVGlja3MsIFNlcnZlciBiZWVuZGV0IHNpY2ggbmFjaCAzMCBzIHZvbiBhbGxlaW4u CmV4cG9ydCBmdW5jdGlvbiBoZWFydGJlYXRTdGFydGVuKCkgewogICAgdHJ5IHsKICAgICAgICBa LmhlYXJ0YmVhdFdvcmtlciA9IG5ldyBXb3JrZXIoJ2hlYXJ0YmVhdC13b3JrZXIuanMnKTsKICAg ICAgICBaLmhlYXJ0YmVhdFdvcmtlci5vbm1lc3NhZ2UgPSBmdW5jdGlvbihldikgewogICAgICAg ICAgICAvLyBEZXIgV29ya2VyIG1lbGRldCwgd2VubiBzaWNoIGFkbWluLmpzb24gc2VydmVyc2Vp dGlnCiAgICAgICAgICAgIC8vIGdlYWVuZGVydCBoYXQgKGFuZGVyZXIgU1UgaGF0IHdhcyBnZXNw ZWljaGVydCkuIENsaWVudAogICAgICAgICAgICAvLyBsYWVkdCBBZG1pbi1EYXRlbiArIFJlY2h0 ZSBuZXUgdW5kIHJlbmRlcnQgZGllIE9iZXJmbGFlY2hlCiAgICAgICAgICAgIC8vIHBhc3NlbmQg bmV1IC0gUm9sbGVud2VjaHNlbCBvaG5lIEY1LgogICAgICAgICAgICBpZiAoZXYuZGF0YSAmJiBl di5kYXRhLnR5cCA9PT0gJ2FkbWluLWdlYWVuZGVydCcpIHsKICAgICAgICAgICAgICAgIGlmIChk YXRlbkxhZGVuSG9va3MuYWRtaW5Ib3RSZWxvYWQpIGRhdGVuTGFkZW5Ib29rcy5hZG1pbkhvdFJl bG9hZCgpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIC8vIHBsYW51bmdWZXJzaW9uIGRlY2t0 IHYuYS4gZWRpdFJlY2h0ZS9zZWhlbi1BZW5kZXJ1bmdlbiBkZXIKICAgICAgICAgICAgLy8gZWln ZW5lbiBQZXJzb24gYWIgKENoZXJyeS1QaWNrIDFhZWZlMjYgQnVnICMzKS4gTGl2ZS1TeW5jCiAg ICAgICAgICAgIC8vIHVlYmVyIC9hcGkvcGxhbnVuZy9jaGFuZ2VzIGt1ZW1tZXJ0IHNpY2ggdW0g WmVsbC0vS29tbWVudGFyLQogICAgICAgICAgICAvLyBVcGRhdGVzIHNlcGFyYXQg4oCUIGhpZXIg Z2VodCBlcyBudXIgdW0gUmVjaHRlLSB1bmQKICAgICAgICAgICAgLy8gU2ljaHRiYXJrZWl0cy1S ZWZyZXNoLgogICAgICAgICAgICBpZiAoZXYuZGF0YSAmJiBldi5kYXRhLnR5cCA9PT0gJ3BsYW51 bmctZ2VhZW5kZXJ0JykgewogICAgICAgICAgICAgICAgaWYgKGRhdGVuTGFkZW5Ib29rcy5wbGFu dW5nSG90UmVsb2FkKSBkYXRlbkxhZGVuSG9va3MucGxhbnVuZ0hvdFJlbG9hZCgpOwogICAgICAg ICAgICB9CiAgICAgICAgfTsKICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCd2aXNp YmlsaXR5Y2hhbmdlJywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGlmICghZG9jdW1lbnQuaGlk ZGVuICYmIFouaGVhcnRiZWF0V29ya2VyKSBaLmhlYXJ0YmVhdFdvcmtlci5wb3N0TWVzc2FnZSgn c2ljaHRiYXInKTsKICAgICAgICB9KTsKICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICAvLyBXb3Jr ZXIgbmljaHQgdmVyZnVlZ2JhciAtIEZhbGxiYWNrIGF1ZiBNYWluLVRocmVhZC1zZXRJbnRlcnZh bC4KICAgICAgICAvLyBBY2h0dW5nOiBNYWluLVRocmVhZC1UaW1lciB3ZXJkZW4gaW0gSGludGVy Z3J1bmQtVGFiIGdlZHJvc3NlbHQsCiAgICAgICAgLy8gZGVyIEZhbGxiYWNrIGlzdCBhbHNvIHNj aHdhZWNoZXIsIGFiZXIgYmVzc2VyIGFscyBuaWNodHMuCiAgICAgICAgWi5oZWFydGJlYXRGYWxs YmFjayA9IHNldEludGVydmFsKGZ1bmN0aW9uKCkgewogICAgICAgICAgICBmZXRjaCgnL2FwaS9o ZWFydGJlYXQnLCB7IG1ldGhvZDogJ1BPU1QnIH0pLmNhdGNoKGZ1bmN0aW9uKCl7fSk7CiAgICAg ICAgfSwgNTAwMCk7CiAgICB9Cn0K ### FILE: js/core_permissions.js | 21770 Ly8gPT09IGNvcmUvcGVybWlzc2lvbnMuanMgPT09Ci8vIFJvbGxlbi1Nb2RlbGwsIFRhYi1TaWNo dGJhcmtlaXQsIEltcGVyc29uYXRpb24gKFNVLVRlc3RhbnNpY2h0KSwKLy8gVmVyYmluZGxpY2hr ZWl0cy1GZW5zdGVyLgovLwovLyBSb2xsZW46IFN1cGVyVXNlciA+IEZhY2hhdWZzaWNodCA+IFJl Z3VsYWVyLgovLyBaLnJlY2h0ZSBzcGllZ2VsdCBkYXMgL2FwaS9pbmZvLVJlY2h0ZS1PYmpla3Q7 IGJlcmVjaG5lRmFjaGF1ZnNpY2h0UmVjaHRlLwovLyBiZXJlY2huZVJlZ3VsYWVyUmVjaHRlIHNp bXVsaWVyZW4gZXMgZnVlciBkaWUgSW1wZXJzb25hdGlvbi4KLy8KLy8gSG9va3M6IGltcGVyc29u YXRlQW53ZW5kZW4gcnVmdCBSZW5kZXItRnVua3Rpb25lbiBhdXMgYW5kZXJlbiBNb2R1bGVuCi8v IChBZG1pbi9HcmlkL1N0YXRpc3Rpay9CZXNldHp1bmcpLiBEaWUgd2VyZGVuIHVlYmVyIHBlcm1p c3Npb25Ib29rcwovLyByZWluZ2VoYWVuZ3QsIHdlaWwgRVNNLUltcG9ydHMgZWluZW4gWnlrbHVz IG9kZXIgbm9jaCBuaWNodCBleHRyYWhpZXJ0ZQovLyBTeW1ib2xlIGJlZGV1dGVuIHd1ZXJkZW4u CgppbXBvcnQgeyBaIH0gZnJvbSAnLi9jb3JlX3N0YXRlLmpzJzsKCi8vID09PT09IEhvb2tzICh2 b24gYXBwLmpzIGdlc2V0enQ7IG51bGwgPSBBdWZydWZlciB1ZWJlcnNwcmluZ3QgZGVuIEF1ZnJ1 ZikgPT09PT0KCmV4cG9ydCB2YXIgcGVybWlzc2lvbkhvb2tzID0gewogICAgYWRtaW5SZW5kZXJu OiBudWxsLAogICAga29wZlJlbmRlcm46IG51bGwsCiAgICBzdGF0aXN0aWtSZW5kZXJuOiBudWxs LAogICAgYmVzZXR6dW5nc2tvbnRyb2xsZVJlbmRlcm46IG51bGwsCiAgICAvLyBHcmlkIGtvbXBs ZXR0IG5ldSB6ZWljaG5lbiDigJQgbm9ldGlnIG5hY2ggZWluZW0gUmVjaHRlLVdlY2hzZWwKICAg IC8vIChJbXBlcnNvbmF0aW9uKSwgZGFtaXQgZGllIFplbGwtU3BlcnJlbiAoZ3JpZC16ZWxsZS1n ZXNwZXJydCkgZGVuCiAgICAvLyBuZXVlbiBFZGl0LUtvbnRleHQgd2lkZXJzcGllZ2Vsbi4KICAg IGdyaWRSZW5kZXJuOiBudWxsLAogICAgLy8gSG9vayBmdWVyIEFuc2ljaHQtV2VjaHNlbCAoZ3Jp ZFJlbmRlci1Nb2R1bCksIGRhbWl0IEltcGVyc29uYXRpb24tU3RhcnQKICAgIC8vIGRlbiBVc2Vy IGF1ZiBkaWUgUGxhbnVuZ3MtQW5zaWNodCBzcHJpbmdlbiBsYXNzZW4ga2Fubi4KICAgIGFuc2lj aHRXZWNoc2VsbjogbnVsbAp9OwoKLy8gPT09PT0gVGFiLVNpY2h0YmFya2VpdCAoVG9wLUxldmVs KSA9PT09PQoKLy8gU3VwZXJVc2VyIHNpZWh0IGltbWVyIGFsbGVzLiBGYWNoYXVmc2ljaHQgbnVy IGRhcywgd2FzIGluCi8vIGFkbWluLmZhY2hhdWZzaWNodFtdLnNlaGVuey4uLn0gYXVmIHRydWUg c3RlaHQuIFJlZ3VsYWVyZSBVc2VyIHNlaGVuCi8vIG5pY2h0cyBkYXZvbiAtLSBzaWUgYmVoYWx0 ZW4gbnVyIFBsYW51bmcvV29jaGVucGxhbi9QZXJzLiBQbGFuLgoKZXhwb3J0IGZ1bmN0aW9uIGRh cmZBZG1pblRhYigpIHsgcmV0dXJuICEhKFoucmVjaHRlICYmIChaLnJlY2h0ZS5pc3RTdXBlclVz ZXIgfHwgKFoucmVjaHRlLmlzdEZhY2hhdWZzaWNodCAmJiBaLnJlY2h0ZS5zZWhlbi5hZG1pbmlz dHJhdGlvbikpKTsgfQpleHBvcnQgZnVuY3Rpb24gZGFyZlN0YXRpc3RpaygpIHsgcmV0dXJuICEh KFoucmVjaHRlICYmIChaLnJlY2h0ZS5pc3RTdXBlclVzZXIgfHwgKFoucmVjaHRlLmlzdEZhY2hh dWZzaWNodCAmJiBaLnJlY2h0ZS5zZWhlbi5zdGF0aXN0aWspKSk7IH0KZXhwb3J0IGZ1bmN0aW9u IGRhcmZMb2didWNoKCkgICB7IHJldHVybiAhIShaLnJlY2h0ZSAmJiAoWi5yZWNodGUuaXN0U3Vw ZXJVc2VyIHx8IChaLnJlY2h0ZS5pc3RGYWNoYXVmc2ljaHQgJiYgWi5yZWNodGUuc2VoZW4ubG9n YnVjaCkpKTsgfQoKLy8gR3JhbnVsYXJlIFN1Yi1TaWNodGJhcmtlaXQgKEZpbmRpbmcgQy45IC8g U3BlYyBGLjIpOgovLyBTdXBlclVzZXIgb2RlciBNYXAgPT09IG51bGwgIC0+IGFsbGVzIGVybGF1 YnQgKFdpbGRjYXJkKQovLyBNYXAgPT09IHt9ICAgICAgICAgICAgICAgICAgIC0+IG5pY2h0cyBl cmxhdWJ0IChUYWIgbmljaHQgZnJlaWdlZ2ViZW4pCi8vIE1hcFtrZXldID09PSBmYWxzZSAgICAg ICAgICAgLT4gZXhwbGl6aXQgdmVyYm9yZ2VuCi8vIE1hcFtrZXldID09PSB0cnVlIC8gbmljaHQg aW4gLT4gZXJsYXVidCAoRGVmYXVsdCBpc3Qgc2VoZW4sIE5lZ2F0aXYtTGlzdGUpCmV4cG9ydCBm dW5jdGlvbiBkYXJmQWRtaW5TdWJ0YWIobmFtZSkgewogICAgaWYgKCFaLnJlY2h0ZSkgcmV0dXJu IGZhbHNlOwogICAgaWYgKFoucmVjaHRlLmlzdFN1cGVyVXNlcikgcmV0dXJuIHRydWU7CiAgICBp ZiAoIVoucmVjaHRlLnNlaGVuLmFkbWluaXN0cmF0aW9uKSByZXR1cm4gZmFsc2U7CiAgICB2YXIg bSA9IFoucmVjaHRlLmFkbWluU3VidGFiczsKICAgIGlmIChtID09PSBudWxsIHx8IG0gPT09IHVu ZGVmaW5lZCkgcmV0dXJuIHRydWU7CiAgICAvLyBOZWdhdGl2LUxpc3RlOiBudXIgZXhwbGl6aXQg e2tleTpmYWxzZX0gdmVyc3RlY2t0LiBMZWVyZSBNYXAgPSBrZWluZQogICAgLy8gVmVyc3RlY2tl ciA9IGFsbGVzIHNpY2h0YmFyIChrb25zaXN0ZW50IHp1IGZhY2hhdWZzaWNodFN1YlNpY2h0TGFi ZWwsCiAgICAvLyBkYXMge30gYWxzICJBbGxlIChTdGFuZGFyZCkiIGFuemVpZ3QpLgogICAgaWYg KG5hbWUgaW4gbSkgcmV0dXJuICEhbVtuYW1lXTsKICAgIHJldHVybiB0cnVlOwp9CgpleHBvcnQg ZnVuY3Rpb24gZGFyZlN0YXRpc3Rpa1N1YihuYW1lKSB7CiAgICBpZiAoIVoucmVjaHRlKSByZXR1 cm4gZmFsc2U7CiAgICBpZiAoWi5yZWNodGUuaXN0U3VwZXJVc2VyKSByZXR1cm4gdHJ1ZTsKICAg IGlmICghWi5yZWNodGUuc2VoZW4uc3RhdGlzdGlrKSByZXR1cm4gZmFsc2U7CiAgICB2YXIgbSA9 IFoucmVjaHRlLnN0YXRpc3Rpa0JlcmVpY2hlOwogICAgaWYgKG0gPT09IG51bGwgfHwgbSA9PT0g dW5kZWZpbmVkKSByZXR1cm4gdHJ1ZTsKICAgIGlmIChuYW1lIGluIG0pIHJldHVybiAhIW1bbmFt ZV07CiAgICByZXR1cm4gdHJ1ZTsKfQoKLy8gPT09PT0gUmVjaHRlLU9iamVrdCBhdXMgL2FwaS9p bmZvIGFibGVpdGVuID09PT09CgovLyBTcGllZ2VsdCBkYXMgL2FwaS9pbmZvLVJlY2h0ZS1PYmpl a3QgMToxIGluIGRhcyBGb3JtYXQsIG1pdCBkZW0gWi5yZWNodGUKLy8gaW0gQ2xpZW50IGFyYmVp dGV0LiBFaW56aWdlciBIZWxwZXIsIGRhbWl0IGRhdGVuTGFkZW4oKSB1bmQKLy8gYWRtaW5Ib3RS ZWxvYWQoKS9wbGFudW5nSG90UmVsb2FkKCkgbmljaHQgYXVzZWluYW5kZXJkcmlmdGVuLgpleHBv cnQgZnVuY3Rpb24gcmVjaHRlQXVzSW5mbyhpbmZvKSB7CiAgICByZXR1cm4gewogICAgICAgIHJv bGxlOiAgICAgICAgICAgICAgICAgICBpbmZvLnJvbGxlIHx8ICdyZWd1bGFlcicsCiAgICAgICAg aXN0U3VwZXJVc2VyOiAgICAgICAgICAgICEhaW5mby5pc3RTdXBlclVzZXIsCiAgICAgICAgaXN0 RmFjaGF1ZnNpY2h0OiAgICAgICAgICEhaW5mby5pc3RGYWNoYXVmc2ljaHQsCiAgICAgICAgLy8g R2VzYW10dmVyYW50d29ydGxpY2g6IFNVIGltbWVyLCBGYWNoYXVmc2ljaHQgcGVyIEFkbWluLUZs YWcuCiAgICAgICAgLy8gU3RldWVydCBkZW4gSGVhZGVyLVRhYiAiUHJ1ZWZ1bmciLgogICAgICAg IGlzdEdlc2FtdHZlcmFudHdvcnRsaWNoOiAhIWluZm8uaXN0R2VzYW10dmVyYW50d29ydGxpY2gs CiAgICAgICAgc2VoZW46ICAgICAgICAgICAgICAgICAgIGluZm8uc2VoZW4gfHwgeyBhZG1pbmlz dHJhdGlvbjogZmFsc2UsIHN0YXRpc3RpazogZmFsc2UsIGxvZ2J1Y2g6IGZhbHNlLCBiYWNrdXBz OiBmYWxzZSB9LAogICAgICAgIC8vIEdyYW51bGFyZSBTdWItU2ljaHRiYXJrZWl0IChTcGVjIEYu Mik6IG51bGwgPSBTdXBlclVzZXItCiAgICAgICAgLy8gV2lsZGNhcmQgKGFsbGVzIGVybGF1YnQp LCB7fSA9IG5pY2h0cyBlcmxhdWJ0LCBzb25zdCBNYXAKICAgICAgICAvLyA8c3VidGFifGJlcmVp Y2g+OiBib29sLiBEZWZhdWx0OiBuaWNodCBpbiBNYXAgPSBlcmxhdWJ0CiAgICAgICAgLy8gKEtv bmZpZ3VyYXRpb24gaXN0IE5lZ2F0aXYtTGlzdGUpLgogICAgICAgIGFkbWluU3VidGFiczogICAg ICAgICAgICBpbmZvLmFkbWluU3VidGFicyAhPT0gdW5kZWZpbmVkID8gaW5mby5hZG1pblN1YnRh YnMgOiBudWxsLAogICAgICAgIHN0YXRpc3Rpa0JlcmVpY2hlOiAgICAgICBpbmZvLnN0YXRpc3Rp a0JlcmVpY2hlICE9PSB1bmRlZmluZWQgPyBpbmZvLnN0YXRpc3Rpa0JlcmVpY2hlIDogbnVsbCwK ICAgICAgICAvLyBlZGl0aWVyZW4gPT09IG51bGwgaGVpc3N0ICJXaWxkY2FyZCIgKFN1cGVyVXNl ciBkYXJmIGFsbGVzKS4KICAgICAgICAvLyBTb25zdCBrb25rcmV0ZSBMaXN0ZW4gdm9uIFBlcnNv bmVuLUlkcywgRGllbnN0Z3J1cHBlbi1LdWVyemVsbiwgU3RhbmRvcnRlbi4KICAgICAgICBlZGl0 aWVyZW46ICAgICAgICAgICAgICAgaW5mby5lZGl0aWVyZW4sCiAgICAgICAgbWVpbmVQZXJzb25J ZDogICAgICAgICAgIGluZm8ubWVpbmVQZXJzb25JZAogICAgfTsKfQoKLy8gPT09PT0gUmVjaHRl LU9iamVrdC1CdWlsZGVyIChmdWVyIEltcGVyc29uYXRpb24pID09PT09CgovLyBCZXJlY2huZXQg Wi5yZWNodGUgZnVlciBlaW5lIGdlZ2ViZW5lIEZhY2hhdWZzaWNodC1Lb25maWcsIGFscyB3YWVy ZQovLyBkaWVzZSBQZXJzb24gZWluZ2Vsb2dndC4gU3BpZWdlbCBkZXIgR2V0LVJlY2h0ZS1Mb2dp ayBpbSBTZXJ2ZXIuCmV4cG9ydCBmdW5jdGlvbiBiZXJlY2huZUZhY2hhdWZzaWNodFJlY2h0ZShm YSkgewogICAgdmFyIHNlaGVuID0gZmEuc2VoZW4gfHwge307CiAgICB2YXIgYWRtaW5NYXAgPSBu dWxsOwogICAgaWYgKHNlaGVuLmFkbWluaXN0cmF0aW9uICYmIGZhLmFkbWluU2ljaHRiYXJrZWl0 KSB7CiAgICAgICAgYWRtaW5NYXAgPSB7fTsKICAgICAgICBPYmplY3Qua2V5cyhmYS5hZG1pblNp Y2h0YmFya2VpdCkuZm9yRWFjaChmdW5jdGlvbihrKSB7IGFkbWluTWFwW2tdID0gISFmYS5hZG1p blNpY2h0YmFya2VpdFtrXTsgfSk7CiAgICB9IGVsc2UgaWYgKCFzZWhlbi5hZG1pbmlzdHJhdGlv bikgewogICAgICAgIGFkbWluTWFwID0ge307CiAgICB9CiAgICB2YXIgc3RhdGlzdGlrTWFwID0g bnVsbDsKICAgIGlmIChzZWhlbi5zdGF0aXN0aWsgJiYgZmEuc3RhdGlzdGlrU2ljaHRiYXJrZWl0 KSB7CiAgICAgICAgc3RhdGlzdGlrTWFwID0ge307CiAgICAgICAgT2JqZWN0LmtleXMoZmEuc3Rh dGlzdGlrU2ljaHRiYXJrZWl0KS5mb3JFYWNoKGZ1bmN0aW9uKGspIHsgc3RhdGlzdGlrTWFwW2td ID0gISFmYS5zdGF0aXN0aWtTaWNodGJhcmtlaXRba107IH0pOwogICAgfSBlbHNlIGlmICghc2Vo ZW4uc3RhdGlzdGlrKSB7CiAgICAgICAgc3RhdGlzdGlrTWFwID0ge307CiAgICB9CiAgICByZXR1 cm4gewogICAgICAgIHJvbGxlOiAnZmFjaGF1ZnNpY2h0JywKICAgICAgICBpc3RTdXBlclVzZXI6 IGZhbHNlLAogICAgICAgIGlzdEZhY2hhdWZzaWNodDogdHJ1ZSwKICAgICAgICBpc3RHZXNhbXR2 ZXJhbnR3b3J0bGljaDogISFmYS5nZXNhbXR2ZXJhbnR3b3J0bGljaCwKICAgICAgICBzZWhlbjog ewogICAgICAgICAgICBhZG1pbmlzdHJhdGlvbjogISFzZWhlbi5hZG1pbmlzdHJhdGlvbiwKICAg ICAgICAgICAgc3RhdGlzdGlrOiAgICAgICEhc2VoZW4uc3RhdGlzdGlrLAogICAgICAgICAgICBs b2didWNoOiAgICAgICAgISFzZWhlbi5sb2didWNoLAogICAgICAgICAgICBiYWNrdXBzOiAgICAg ICAgISFzZWhlbi5iYWNrdXBzCiAgICAgICAgfSwKICAgICAgICBhZG1pblN1YnRhYnM6ICAgICAg YWRtaW5NYXAsCiAgICAgICAgc3RhdGlzdGlrQmVyZWljaGU6IHN0YXRpc3Rpa01hcCwKICAgICAg ICBlZGl0aWVyZW46ICAgICAgICAgZmEuZWRpdGllcmVuIHx8IHsgcGVyc29uZW5JZHM6IFtdLCBk aWVuc3RncnVwcGVuOiBbXSwgc3RhbmRvcnRlOiBbXSB9LAogICAgICAgIG1laW5lUGVyc29uSWQ6 ICAgICBudWxsCiAgICB9Owp9CgpleHBvcnQgZnVuY3Rpb24gYmVyZWNobmVSZWd1bGFlclJlY2h0 ZSgpIHsKICAgIHJldHVybiB7CiAgICAgICAgcm9sbGU6ICdyZWd1bGFlcicsCiAgICAgICAgaXN0 U3VwZXJVc2VyOiBmYWxzZSwKICAgICAgICBpc3RGYWNoYXVmc2ljaHQ6IGZhbHNlLAogICAgICAg IGlzdEdlc2FtdHZlcmFudHdvcnRsaWNoOiBmYWxzZSwKICAgICAgICBzZWhlbjogeyBhZG1pbmlz dHJhdGlvbjogZmFsc2UsIHN0YXRpc3RpazogZmFsc2UsIGxvZ2J1Y2g6IGZhbHNlLCBiYWNrdXBz OiBmYWxzZSB9LAogICAgICAgIGFkbWluU3VidGFiczoge30sCiAgICAgICAgc3RhdGlzdGlrQmVy ZWljaGU6IHt9LAogICAgICAgIGVkaXRpZXJlbjogeyBwZXJzb25lbklkczogW10sIGRpZW5zdGdy dXBwZW46IFtdLCBzdGFuZG9ydGU6IFtdIH0sCiAgICAgICAgbWVpbmVQZXJzb25JZDogbnVsbAog ICAgfTsKfQoKLy8gV2VidCBkaWUgZ2xvYmFsZW4gU3RhbmRhcmRyZWNodGUgKGdlZ2Vuc2VpdGln ZSBQbGFudW5nIGplIERpZW5zdGdydXBwZS8KLy8gU3RhbmRvcnQpIGFkZGl0aXYgaW4gZWluIGVk aXRpZXJlbi1PYmpla3QgZWluIOKAlCBTcGllZ2VsIGRlciBTZXJ2ZXItTG9naWsgaW4KLy8gYmVy ZWNobmVfcmVjaHRlLiBLbG9udCwgdW0gZGllIEFkbWluLUNvbmZpZyBuaWNodCB6dSBtdXRpZXJl bi4gV2lyZCBpbiBkZXIKLy8gU1UtVGVzdGFuc2ljaHQgKEltcGVyc29uYXRpb24pIGdlbnV0enQ7 IGltIEVjaHRiZXRyaWViIGxpZWZlcnQgZGVyIFNlcnZlcgovLyBlZGl0aWVyZW4gYmVyZWl0cyBh bmdlcmVpY2hlcnQuCmZ1bmN0aW9uIF9zdGFuZGFyZFJlY2h0ZUVpbndlYmVuKGVkaXRpZXJlbiwg cGVyc29uKSB7CiAgICBpZiAoIWVkaXRpZXJlbiB8fCAhcGVyc29uKSByZXR1cm4gZWRpdGllcmVu OwogICAgdmFyIHNyID0gKFouYWRtaW4gJiYgWi5hZG1pbi5zdGFuZGFyZFJlY2h0ZSkgfHwge307 CiAgICB2YXIgZ2cgPSBzci5nZWdlbnNlaXRpZ0dydXBwZW4gfHwgW107CiAgICB2YXIgZ3MgPSBz ci5nZWdlbnNlaXRpZ1N0YW5kb3J0ZSB8fCBbXTsKICAgIHZhciBkZyA9IChlZGl0aWVyZW4uZGll bnN0Z3J1cHBlbiB8fCBbXSkuc2xpY2UoKTsKICAgIHZhciBzbyA9IChlZGl0aWVyZW4uc3RhbmRv cnRlIHx8IFtdKS5zbGljZSgpOwogICAgaWYgKHBlcnNvbi5ncnVwcGUgJiYgZ2cuaW5kZXhPZihw ZXJzb24uZ3J1cHBlKSA+PSAwICYmIGRnLmluZGV4T2YocGVyc29uLmdydXBwZSkgPCAwKSBkZy5w dXNoKHBlcnNvbi5ncnVwcGUpOwogICAgaWYgKHBlcnNvbi5vZSAmJiBncy5pbmRleE9mKHBlcnNv bi5vZSkgPj0gMCAmJiBzby5pbmRleE9mKHBlcnNvbi5vZSkgPCAwKSBzby5wdXNoKHBlcnNvbi5v ZSk7CiAgICByZXR1cm4geyBwZXJzb25lbklkczogKGVkaXRpZXJlbi5wZXJzb25lbklkcyB8fCBb XSkuc2xpY2UoKSwgZGllbnN0Z3J1cHBlbjogZGcsIHN0YW5kb3J0ZTogc28gfTsKfQoKLy8gQmVy ZWNobmV0IFoucmVjaHRlIGZ1ZXIgZWluZSBrb25rcmV0ZSBQZXJzb24sIGFscyB3YWVyZSBzaWUg ZWluZ2Vsb2dndC4KLy8gU3RlaHQgZGllIFBlcnNvbiBpbiBkZXIgRmFjaGF1ZnNpY2h0LUxpc3Rl IChNYXRjaCB1ZWJlciBud0tlbm51bmcsIHNvbnN0Ci8vIE5hbWUpLCBlcmJ0IHNpZSBkZXJlbiBS ZWNodGUg4oCUIHNvbnN0IGlzdCBzaWUgcmVndWxhZXJlciBFbmRhbndlbmRlci4gSW4KLy8gYmVp ZGVuIEZhZWxsZW4gd2lyZCBtZWluZVBlcnNvbklkIGdlc2V0enQsIGRhbWl0IGRpZSBaZWxsLUVk aXQtTG9naWsKLy8gKGVpZ2VuZSBaZWlsZSArIE1pa3JvdGVhbSkgaW4gZGVyIFRlc3RhbnNpY2h0 IGtvcnJla3QgZ3JlaWZ0LgpleHBvcnQgZnVuY3Rpb24gYmVyZWNobmVQZXJzb25SZWNodGUocGVy c29uKSB7CiAgICBpZiAoIXBlcnNvbikgcmV0dXJuIGJlcmVjaG5lUmVndWxhZXJSZWNodGUoKTsK ICAgIHZhciBudyA9IChwZXJzb24ubndLZW5udW5nIHx8ICcnKS50cmltKCkudG9Mb3dlckNhc2Uo KTsKICAgIHZhciBubSA9IChwZXJzb24ubmFtZSB8fCAnJykudHJpbSgpLnRvTG93ZXJDYXNlKCk7 CiAgICB2YXIgZmEgPSAoWi5hZG1pbiAmJiBaLmFkbWluLmZhY2hhdWZzaWNodCB8fCBbXSkuZmlu ZChmdW5jdGlvbihmKSB7CiAgICAgICAgdmFyIGZudyA9IChmLm53S2VubnVuZyB8fCAnJykudHJp bSgpLnRvTG93ZXJDYXNlKCk7CiAgICAgICAgaWYgKG53ICYmIGZudyAmJiBmbncgPT09IG53KSBy ZXR1cm4gdHJ1ZTsKICAgICAgICByZXR1cm4gISFubSAmJiAoZi5uYW1lIHx8ICcnKS50cmltKCku dG9Mb3dlckNhc2UoKSA9PT0gbm07CiAgICB9KTsKICAgIHZhciByID0gZmEgPyBiZXJlY2huZUZh Y2hhdWZzaWNodFJlY2h0ZShmYSkgOiBiZXJlY2huZVJlZ3VsYWVyUmVjaHRlKCk7CiAgICByLm1l aW5lUGVyc29uSWQgPSBwZXJzb24uaWQ7CiAgICByLmVkaXRpZXJlbiA9IF9zdGFuZGFyZFJlY2h0 ZUVpbndlYmVuKHIuZWRpdGllcmVuLCBwZXJzb24pOwogICAgcmV0dXJuIHI7Cn0KCi8vID09PT09 IEltcGVyc29uYXRpb24tTW9kZSAoU1UtVGVzdGFuc2ljaHQpID09PT09Ci8vCi8vIFN1cGVyVXNl ciBrYW5uIHNpY2ggZGllIE9iZXJmbGFlY2hlIHNvIGFuemVpZ2VuIGxhc3Nlbiwgd2llIGVpbmUg YW5kZXJlCi8vIFJvbGxlIHNpZSBzaWVodCAoRmFjaGF1ZnNpY2h0IG5hY2ggaWhyZXIgU2ljaHRi YXJrZWl0cy1Lb25maWd1cmF0aW9uLAovLyBvZGVyIHJlZ3VsYWVyZXIgRW5kYW53ZW5kZXIpLiBS ZWluIGNsaWVudHNlaXRpZyDigJQgWi5yZWNodGUgd2lyZAovLyB0ZW1wb3JhZXIgdW1nZXNjaHJp ZWJlbjsgYmVpbSBadXJ1ZWNrc2NoYWx0ZW4ga29tbXQgZGVyIE9yaWdpbmFsc3RhbmQKLy8gYXVz IHJlY2h0ZU9yaWdpbmFsIHp1cnVlY2suIERlciBTZXJ2ZXIgd2Vpc3MgbmljaHRzIGRhdm9uLCBi bGVpYnQgU1UuCgp2YXIgcmVjaHRlT3JpZ2luYWwgPSBudWxsOwovLyBCZWltIFN0YXJ0IGVpbmVy IEltcGVyc29uYXRpb24gZ2VtZXJrdGVyIEhlYWRlci1UYWIgKyBBZG1pbi1TdWItVGFiLAovLyBk YW1pdCBpbXBlcnNvbmF0ZUVuZCgpIGRlbiB2b3JpZ2VuIFN0YW5kIHdpZWRlcmhlcnN0ZWxsdCBz dGF0dCBlaW5mYWNoCi8vIGF1ZiAiZGVyIGVyc3RlIGVybGF1YnRlIiB6dXJ1ZWNrenVmYWxsZW4g KENoZXJyeS1QaWNrIGRhNDNjMjEgKyA5YWY5Njg0KS4KdmFyIGFuc2ljaHRWb3JJbXBlcnNvbmF0 aW9uID0gbnVsbDsKdmFyIGFkbWluU3VidGFiVm9ySW1wZXJzb25hdGlvbiA9IG51bGw7Ci8vIEJl aW0gUGVyc29uLVRlc3Qgd2lyZCBaLm1laW5lUGVyc29uSWQgdGVtcG9yYWVyIGF1ZiBkaWUgZ2V0 ZXN0ZXRlIFBlcnNvbgovLyB1bWdlYm9nZW4gKHNvbnN0IGdyZWlmdCBkaWUgImVpZ2VuZSBaZWls ZSArIE1pa3JvdGVhbSItRWRpdC1Mb2dpayB3ZWl0ZXIKLy8gYXVmIGRpZSBTVS1QZXJzb24pLiBI aWVyIGRlciBPcmlnaW5hbC1XZXJ0IGZ1ZXIgaW1wZXJzb25hdGVFbmQuCnZhciBtZWluZVBlcnNv bklkVm9ySW1wZXJzb25hdGlvbiA9IG51bGw7CgovLyBFeGlzdGllcnQgZWluIGdlc3BlaWNoZXJ0 ZXIgT3JpZ2luYWwtUmVjaHRlLVNuYXBzaG90PyBXaXJkIHZvbQovLyBhZG1pbkhvdFJlbG9hZCAo aW4gYXBwLmpzKSBnZWJyYXVjaHQ6IHdhZWhyZW5kIGVpbmVyIEltcGVyc29uYXRpb24KLy8gc29s bCBrZWluIEhvdC1SZWxvYWQgZGFzIFoucmVjaHRlLVNwaWVsZmVsZCB1bXNvcnRpZXJlbi4KZXhw b3J0IGZ1bmN0aW9uIGltcGVyc29uYXRpb25Ba3RpdigpIHsgcmV0dXJuIHJlY2h0ZU9yaWdpbmFs ICE9PSBudWxsOyB9CgpleHBvcnQgZnVuY3Rpb24gaW1wZXJzb25hdGVBbndlbmRlbihsYWJlbFRl eHQpIHsKICAgIGlmIChsYWJlbFRleHQpIGltcGVyc29uYXRlQmFubmVyWmVpZ2VuKGxhYmVsVGV4 dCk7CiAgICBlbHNlIGltcGVyc29uYXRlQmFubmVyVmVyc3RlY2tlbigpOwogICAgbmF2U2ljaHRi YXJrZWl0QW53ZW5kZW4oKTsKICAgIGFkbWluU3VidGFiRmlsdGVyQW53ZW5kZW4oKTsKICAgIC8v IE9iZXJmbGFlY2hlIGZ1ZXIgZGVuIG5ldWVuIEtvbnRleHQgbmV1IHJlbmRlcm4uIGFkbWluUmVu ZGVybgogICAgLy8gbGFldWZ0IGFsbGUgQWRtaW4tU3ViLVJlbmRlcmVyIChQZXJzb25hbCwgR3J1 cHBlbiwgRmVpZXJ0YWdlLAogICAgLy8g4oCmLCBTdXBlclVzZXIsIEZhY2hhdWZzaWNodCkg4oCU IGRhbWl0IGRlciBTVS1vbmx5LUhpbndlaXMgaW4KICAgIC8vICJSZWNodGUgJiBTaWNodGJhcmtl aXQiIGJlaW0gWnVydWVja3NjaGFsdGVuIHZlcnNjaHdpbmRldAogICAgLy8gdW5kIEdhbGVja2lz IFNpY2h0IGJlaW0gRWluc2NoYWx0ZW4ga29ycmVrdCBlaW5nZXNjaHJhZW5rdAogICAgLy8gZXJz Y2hlaW50IChLZWluLVp1Z3JpZmYtQmxvY2tlcikuCiAgICBpZiAocGVybWlzc2lvbkhvb2tzLmFk bWluUmVuZGVybikgcGVybWlzc2lvbkhvb2tzLmFkbWluUmVuZGVybigpOwogICAgaWYgKHBlcm1p c3Npb25Ib29rcy5rb3BmUmVuZGVybikgcGVybWlzc2lvbkhvb2tzLmtvcGZSZW5kZXJuKCk7CiAg ICBpZiAocGVybWlzc2lvbkhvb2tzLnN0YXRpc3Rpa1JlbmRlcm4pIHBlcm1pc3Npb25Ib29rcy5z dGF0aXN0aWtSZW5kZXJuKCk7CiAgICBpZiAocGVybWlzc2lvbkhvb2tzLmJlc2V0enVuZ3Nrb250 cm9sbGVSZW5kZXJuKSBwZXJtaXNzaW9uSG9va3MuYmVzZXR6dW5nc2tvbnRyb2xsZVJlbmRlcm4o KTsKICAgIC8vIEdyaWQgbmV1IHplaWNobmVuLCBkYW1pdCBkaWUgWmVsbC1TcGVycmVuIHp1bSBu ZXVlbiBSZWNodGUtS29udGV4dCBwYXNzZW4uCiAgICBpZiAocGVybWlzc2lvbkhvb2tzLmdyaWRS ZW5kZXJuKSBwZXJtaXNzaW9uSG9va3MuZ3JpZFJlbmRlcm4oKTsKfQoKZnVuY3Rpb24gX2ltcGVy c29uYXRpb25TdGF0ZVNpY2hlcm4oKSB7CiAgICB2YXIgbmF2QWt0aXYgPSBkb2N1bWVudC5xdWVy eVNlbGVjdG9yKCcubmF2LWJ0bi5ha3RpdicpOwogICAgdmFyIGFkbWluQWt0aXYgPSBkb2N1bWVu dC5xdWVyeVNlbGVjdG9yKCcuYWRtaW4tbmF2LWJ0bi5ha3RpdicpOwogICAgYW5zaWNodFZvcklt cGVyc29uYXRpb24gPSBuYXZBa3RpdiA/IG5hdkFrdGl2LmdldEF0dHJpYnV0ZSgnZGF0YS1hbnNp Y2h0JykgOiBudWxsOwogICAgYWRtaW5TdWJ0YWJWb3JJbXBlcnNvbmF0aW9uID0gYWRtaW5Ba3Rp diA/IGFkbWluQWt0aXYuZ2V0QXR0cmlidXRlKCdkYXRhLWFkbWluLXRhYicpIDogbnVsbDsKICAg IG1laW5lUGVyc29uSWRWb3JJbXBlcnNvbmF0aW9uID0gWi5tZWluZVBlcnNvbklkOwp9CgpmdW5j dGlvbiBfYXVmUGxhbnVuZ3NhbnNpY2h0U3ByaW5nZW4oKSB7CiAgICAvLyBEYW1pdCBkZXIgU1Ug c29mb3J0IHNpZWh0LCB3YXMgZGllIGltcGVyc29uaWVydGUgUGVyc29uIGltIEdyaWQgc2llaHQu CiAgICBpZiAocGVybWlzc2lvbkhvb2tzLmFuc2ljaHRXZWNoc2VsbikgcGVybWlzc2lvbkhvb2tz LmFuc2ljaHRXZWNoc2VsbigncGxhbnVuZycpOwp9CgpleHBvcnQgZnVuY3Rpb24gaW1wZXJzb25h dGVTdGFydChpZHgpIHsKICAgIGlmICghcmVjaHRlT3JpZ2luYWwgJiYgIVoucmVjaHRlLmlzdFN1 cGVyVXNlcikgcmV0dXJuOwogICAgdmFyIGZhID0gKFouYWRtaW4uZmFjaGF1ZnNpY2h0IHx8IFtd KVtpZHhdOwogICAgaWYgKCFmYSkgcmV0dXJuOwogICAgaWYgKCFyZWNodGVPcmlnaW5hbCkgewog ICAgICAgIHJlY2h0ZU9yaWdpbmFsID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShaLnJlY2h0 ZSkpOwogICAgICAgIF9pbXBlcnNvbmF0aW9uU3RhdGVTaWNoZXJuKCk7CiAgICB9CiAgICBaLnJl Y2h0ZSA9IGJlcmVjaG5lRmFjaGF1ZnNpY2h0UmVjaHRlKGZhKTsKICAgIGltcGVyc29uYXRlQW53 ZW5kZW4oJ0ZhY2hhdWZzaWNodDogJyArIChmYS5uYW1lIHx8ICcob2huZSBOYW1lKScpKTsKICAg IF9hdWZQbGFudW5nc2Fuc2ljaHRTcHJpbmdlbigpOwp9CgpleHBvcnQgZnVuY3Rpb24gaW1wZXJz b25hdGVSZWd1bGFlcigpIHsKICAgIGlmICghcmVjaHRlT3JpZ2luYWwgJiYgIVoucmVjaHRlLmlz dFN1cGVyVXNlcikgcmV0dXJuOwogICAgaWYgKCFyZWNodGVPcmlnaW5hbCkgewogICAgICAgIHJl Y2h0ZU9yaWdpbmFsID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShaLnJlY2h0ZSkpOwogICAg ICAgIF9pbXBlcnNvbmF0aW9uU3RhdGVTaWNoZXJuKCk7CiAgICB9CiAgICBaLnJlY2h0ZSA9IGJl cmVjaG5lUmVndWxhZXJSZWNodGUoKTsKICAgIGltcGVyc29uYXRlQW53ZW5kZW4oJ1JlZ3Vsw6Ry ZXIgRW5kYW53ZW5kZXIgKG9obmUgUmVjaHRlKScpOwogICAgX2F1ZlBsYW51bmdzYW5zaWNodFNw cmluZ2VuKCk7Cn0KCi8vIFRlc3RhbnNpY2h0IGFscyBlaW5lIGtvbmtyZXRlIFBlcnNvbiAoYXVz IGRlciBQZXJzb25hbC1MaXN0ZSkuIFNldHp0Ci8vIHp1c2FldHpsaWNoIFoubWVpbmVQZXJzb25J ZCwgZGFtaXQgImVpZ2VuZSBaZWlsZSArIE1pa3JvdGVhbSIgaW0gR3JpZAovLyBnZW5hdSBkYXMg emVpZ3QsIHdhcyBkaWVzZSBQZXJzb24gZWRpdGllcmVuIGRhcmYuCmV4cG9ydCBmdW5jdGlvbiBp bXBlcnNvbmF0ZVBlcnNvbihwZXJzb25JZCkgewogICAgaWYgKCFyZWNodGVPcmlnaW5hbCAmJiAh Wi5yZWNodGUuaXN0U3VwZXJVc2VyKSByZXR1cm47CiAgICB2YXIgcCA9IChaLnBlcnNvbmVuIHx8 IFtdKS5maW5kKGZ1bmN0aW9uKHgpIHsgcmV0dXJuIFN0cmluZyh4LmlkKSA9PT0gU3RyaW5nKHBl cnNvbklkKTsgfSk7CiAgICBpZiAoIXApIHJldHVybjsKICAgIGlmICghcmVjaHRlT3JpZ2luYWwp IHsKICAgICAgICByZWNodGVPcmlnaW5hbCA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoWi5y ZWNodGUpKTsKICAgICAgICBfaW1wZXJzb25hdGlvblN0YXRlU2ljaGVybigpOwogICAgfQogICAg Wi5yZWNodGUgPSBiZXJlY2huZVBlcnNvblJlY2h0ZShwKTsKICAgIFoubWVpbmVQZXJzb25JZCA9 IHAuaWQ7CiAgICB2YXIgbGFiZWwgPSAocC5uYW1lIHx8ICcob2huZSBOYW1lKScpICsgKHAudm9y bmFtZSA/ICcgJyArIHAudm9ybmFtZSA6ICcnKSArIChwLmdydXBwZSA/ICcgWycgKyBwLmdydXBw ZSArICddJyA6ICcnKTsKICAgIGltcGVyc29uYXRlQW53ZW5kZW4oJ1BlcnNvbjogJyArIGxhYmVs KTsKICAgIF9hdWZQbGFudW5nc2Fuc2ljaHRTcHJpbmdlbigpOwp9CgpleHBvcnQgZnVuY3Rpb24g aW1wZXJzb25hdGVFbmQoKSB7CiAgICBpZiAoIXJlY2h0ZU9yaWdpbmFsKSByZXR1cm47CiAgICBa LnJlY2h0ZSA9IHJlY2h0ZU9yaWdpbmFsOwogICAgcmVjaHRlT3JpZ2luYWwgPSBudWxsOwogICAg Ly8gRmFsbHMgZWluZSBQZXJzb24gZ2V0ZXN0ZXQgd3VyZGU6IFoubWVpbmVQZXJzb25JZCB6dXJ1 ZWNrc3RlbGxlbi4KICAgIFoubWVpbmVQZXJzb25JZCA9IG1laW5lUGVyc29uSWRWb3JJbXBlcnNv bmF0aW9uOwogICAgbWVpbmVQZXJzb25JZFZvckltcGVyc29uYXRpb24gPSBudWxsOwogICAgLy8g R2xlaWNoZW4gUmVuZGVyLVBmYWQgd2llIGJlaW0gU3RhcnQg4oCUIGRhbWl0IGFsbGUgQWRtaW4t U3ViLQogICAgLy8gQmVyZWljaGUgKHouQi4gIlJlY2h0ZSAmIFNpY2h0YmFya2VpdCIpIGlocmVu IFNVLW9ubHktQmxvY2tlcgogICAgLy8gd2llZGVyIGFiYmF1ZW4uCiAgICBpbXBlcnNvbmF0ZUFu d2VuZGVuKG51bGwpOwogICAgLy8gVm9yaGVyaWdlbiBIZWFkZXItVGFiIHJlc3RhdXJpZXJlbiAo c29uc3QgYmxlaWJ0IGRlciBVc2VyIGF1ZiBkZXIKICAgIC8vIFBsYW51bmdzLUFuc2ljaHQgaGFl bmdlbiwgYXVmIGRpZSB3aXIgYmVpbSBTdGFydCBnZXNwcnVuZ2VuIHNpbmQpLgogICAgaWYgKGFu c2ljaHRWb3JJbXBlcnNvbmF0aW9uICYmIHBlcm1pc3Npb25Ib29rcy5hbnNpY2h0V2VjaHNlbG4p IHsKICAgICAgICBwZXJtaXNzaW9uSG9va3MuYW5zaWNodFdlY2hzZWxuKGFuc2ljaHRWb3JJbXBl cnNvbmF0aW9uKTsKICAgIH0KICAgIGFuc2ljaHRWb3JJbXBlcnNvbmF0aW9uID0gbnVsbDsKICAg IC8vIFZvcmhlcmlnZW4gQWRtaW4tU3ViLVRhYiB3aWVkZXIgYWt0aXZpZXJlbi4gYWRtaW5TdWJ0 YWJGaWx0ZXJBbndlbmRlbgogICAgLy8gaGF0IG9iZW4gaW4gaW1wZXJzb25hdGVBbndlbmRlbigp IGJlcmVpdHMgYWxsZSBCdXR0b25zIHNpY2h0YmFyIGdlbWFjaHQsCiAgICAvLyBhbHNvIGthbm4g ZGVyIEtsaWNrIGpldHp0IHdpZWRlciBkdXJjaGxhdWZlbi4KICAgIGlmIChhZG1pblN1YnRhYlZv ckltcGVyc29uYXRpb24pIHsKICAgICAgICB2YXIgYnRuID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rv cignLmFkbWluLW5hdi1idG5bZGF0YS1hZG1pbi10YWI9IicgKyBhZG1pblN1YnRhYlZvckltcGVy c29uYXRpb24gKyAnIl0nKTsKICAgICAgICBpZiAoYnRuKSBidG4uY2xpY2soKTsKICAgIH0KICAg IGFkbWluU3VidGFiVm9ySW1wZXJzb25hdGlvbiA9IG51bGw7Cn0KCmV4cG9ydCBmdW5jdGlvbiBp bXBlcnNvbmF0ZUJhbm5lclplaWdlbihsYWJlbCkgewogICAgdmFyIGIgPSBkb2N1bWVudC5nZXRF bGVtZW50QnlJZCgnaW1wZXJzb25hdGUtYmFubmVyJyk7CiAgICBpZiAoIWIpIHsKICAgICAgICBi ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiAgICAgICAgYi5pZCA9ICdpbXBlcnNv bmF0ZS1iYW5uZXInOwogICAgICAgIGIuY2xhc3NOYW1lID0gJ2ltcGVyc29uYXRlLWJhbm5lcic7 CiAgICAgICAgYi5pbm5lckhUTUwgPSAnPHNwYW4gY2xhc3M9ImltcC1pY29uIj7wn5GBPC9zcGFu PjxzcGFuIGNsYXNzPSJpbXAtdGV4dCI+PC9zcGFuPicgKwogICAgICAgICAgICAnPGJ1dHRvbiBj bGFzcz0iYnRuIGJ0bi1rbGVpbiIgaWQ9ImltcC1idG4tenVydWVjayIgdHlwZT0iYnV0dG9uIj5a dXLDvGNrIHp1ciBTVS1TaWNodDwvYnV0dG9uPic7CiAgICAgICAgZG9jdW1lbnQuYm9keS5pbnNl cnRCZWZvcmUoYiwgZG9jdW1lbnQuYm9keS5maXJzdENoaWxkKTsKICAgICAgICBkb2N1bWVudC5n ZXRFbGVtZW50QnlJZCgnaW1wLWJ0bi16dXJ1ZWNrJykuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2sn LCBpbXBlcnNvbmF0ZUVuZCk7CiAgICB9CiAgICBiLnF1ZXJ5U2VsZWN0b3IoJy5pbXAtdGV4dCcp LnRleHRDb250ZW50ID0gJ1Rlc3RhbnNpY2h0IOKAlCAnICsgbGFiZWw7CiAgICBiLnN0eWxlLmRp c3BsYXkgPSAnJzsKfQoKZXhwb3J0IGZ1bmN0aW9uIGltcGVyc29uYXRlQmFubmVyVmVyc3RlY2tl bigpIHsKICAgIHZhciBiID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ltcGVyc29uYXRlLWJh bm5lcicpOwogICAgaWYgKGIpIGIuc3R5bGUuZGlzcGxheSA9ICdub25lJzsKfQoKLy8gPT09PT0g U3ViLVNpY2h0YmFya2VpdHMtRmlsdGVyIChBZG1pbikgPT09PT0KLy8KLy8gVmVyc3RlY2t0IGRp ZWplbmlnZW4gU3ViLVRhYi1CdXR0b25zICsgQ29udGFpbmVyLCBmdWVyIGRpZSBkZXIgYWt0dWVs bGUKLy8gVXNlciBrZWluZSBCZXJlY2h0aWd1bmcgaGF0LiBTdXBlclVzZXIgc2llaHQgaW1tZXIg YWxsZXMuCi8vIFNpY2hlcmhlaXRza3JpdGlzY2hlIFRhYnMgKHN1cGVydXNlciwgZmFjaGF1ZnNp Y2h0LCBzaWNodGJhcmtlaXQpIGJsZWliZW4KLy8gaGFydGtvZGllcnQgU1Utb25seSDigJQgZGll IEdyYW51bGFyLU1hcCBrYW5uIHNpZSBuaWNodCBmcmVpc2NoYWx0ZW4uCgp2YXIgQURNSU5fU1VC VEFCU19OSUVNQUxTX0ZVRVJfRkFDSEFVRlNJQ0hUID0gWydzdXBlcnVzZXInLCAnZmFjaGF1ZnNp Y2h0JywgJ3NpY2h0YmFya2VpdCcsICdmZWF0dXJlcycsICd0ZXN0ZGF0ZW4nLCAnaGlud2Vpc2Ut cHJvdG9rb2xsJywgJ21pdHRlaWx1bmdlbicsICdzdGF0aXN0aWstbGF5b3V0JywgJ3N0YW5kYXJk cmVjaHRlJ107CgpleHBvcnQgZnVuY3Rpb24gYWRtaW5TdWJ0YWJGaWx0ZXJBbndlbmRlbigpIHsK ICAgIGlmICghWi5yZWNodGUpIHJldHVybjsKICAgIGlmIChaLnJlY2h0ZS5pc3RTdXBlclVzZXIp IHsKICAgICAgICAvLyBTVTogYWxsZSB3aWVkZXIgc2ljaHRiYXIgbWFjaGVuICh3aWNodGlnIG5h Y2ggSW1wZXJzb25hdGlvbi1FbmRlKQogICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwo Jy5hZG1pbi1uYXYtYnRuJykuZm9yRWFjaChmdW5jdGlvbihidG4pIHsgYnRuLnN0eWxlLmRpc3Bs YXkgPSAnJzsgfSk7CiAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmFkbWluLW5h di1ncnVwcGUnKS5mb3JFYWNoKGZ1bmN0aW9uKGcpIHsgZy5zdHlsZS5kaXNwbGF5ID0gJyc7IH0p OwogICAgICAgIHJldHVybjsKICAgIH0KICAgIHZhciBlcnN0ZXJFcmxhdWJ0ZXIgPSBudWxsOwog ICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmFkbWluLW5hdi1idG4nKS5mb3JFYWNoKGZ1 bmN0aW9uKGJ0bikgewogICAgICAgIHZhciBuYW1lID0gYnRuLmdldEF0dHJpYnV0ZSgnZGF0YS1h ZG1pbi10YWInKTsKICAgICAgICB2YXIgZXJsYXVidCA9IGRhcmZBZG1pblN1YnRhYihuYW1lKSAm JiBBRE1JTl9TVUJUQUJTX05JRU1BTFNfRlVFUl9GQUNIQVVGU0lDSFQuaW5kZXhPZihuYW1lKSA8 IDA7CiAgICAgICAgYnRuLnN0eWxlLmRpc3BsYXkgPSBlcmxhdWJ0ID8gJycgOiAnbm9uZSc7CiAg ICAgICAgaWYgKCFlcmxhdWJ0KSB7CiAgICAgICAgICAgIHZhciB0YWIgPSBkb2N1bWVudC5nZXRF bGVtZW50QnlJZCgnYWRtaW4tdGFiLScgKyBuYW1lKTsKICAgICAgICAgICAgaWYgKHRhYikgdGFi LmNsYXNzTGlzdC5hZGQoJ3ZlcnN0ZWNrdCcpOwogICAgICAgIH0gZWxzZSBpZiAoIWVyc3RlckVy bGF1YnRlcikgewogICAgICAgICAgICBlcnN0ZXJFcmxhdWJ0ZXIgPSBidG47CiAgICAgICAgfQog ICAgfSk7CiAgICAvLyBHcnVwcGVuLUhlYWRlciAoU2lkZWJhci1DbHVzdGVyKSBhdXRvLWhpZGVu LCB3ZW5uIGFsbGUgQnV0dG9ucyBpbgogICAgLy8gZGVyIEdydXBwZSB2ZXJzdGVja3Qgc2luZCDi gJQgc29uc3QgYmxlaWJ0IGVpbmUgVWViZXJzY2hyaWZ0IG9obmUKICAgIC8vIEluaGFsdCBzdGVo ZW4uCiAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuYWRtaW4tbmF2LWdydXBwZScpLmZv ckVhY2goZnVuY3Rpb24oZ3J1cHBlKSB7CiAgICAgICAgdmFyIGhhdFNpY2h0YmFyID0gZmFsc2U7 CiAgICAgICAgZ3J1cHBlLnF1ZXJ5U2VsZWN0b3JBbGwoJy5hZG1pbi1uYXYtYnRuJykuZm9yRWFj aChmdW5jdGlvbihiKSB7CiAgICAgICAgICAgIGlmIChiLnN0eWxlLmRpc3BsYXkgIT09ICdub25l JykgaGF0U2ljaHRiYXIgPSB0cnVlOwogICAgICAgIH0pOwogICAgICAgIGdydXBwZS5zdHlsZS5k aXNwbGF5ID0gaGF0U2ljaHRiYXIgPyAnJyA6ICdub25lJzsKICAgIH0pOwogICAgLy8gRmFsbHMg YWt0dWVsbCBha3RpdmVyIFN1Yi1UYWIgdmVyc3RlY2t0IHd1cmRlOiB6dW0gZXJzdGVuIGVybGF1 YnRlbiBzcHJpbmdlbgogICAgdmFyIGFrdGl2ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmFk bWluLW5hdi1idG4uYWt0aXYnKTsKICAgIGlmIChha3RpdiAmJiBha3Rpdi5zdHlsZS5kaXNwbGF5 ID09PSAnbm9uZScgJiYgZXJzdGVyRXJsYXVidGVyKSBlcnN0ZXJFcmxhdWJ0ZXIuY2xpY2soKTsK fQoKLy8gPT09PT0gRWRpdC1CZXJlY2h0aWd1bmcgcHJvIFplbGxlID09PT09CgovLyBMaWVmZXJ0 IGFsbGUgUGVyc29uLUlEcywgZGllIG1pdCBkZW0gYWt0dWVsbGVuIFVzZXIgaW4gbWluZGVzdGVu cwovLyBlaW5lbSBNaWtyb3RlYW0gc2l0emVuLiBXaXJkIGluIGRhcmZaZWxsZUVkaXRpZXJlbiBi ZW51dHp0IOKAlCBqZWRlcgovLyBVc2VyIGRhcmYgc2VpbiBNaWtyb3RlYW0gbWl0LXBsYW5lbiAo VXNlci1XdW5zY2ggMjAyNi0wNS0yMykuCmV4cG9ydCBmdW5jdGlvbiBtZWluZU1pa3JvdGVhbVBl cnNvbklkcygpIHsKICAgIGlmICghWi5tZWluZVBlcnNvbklkIHx8ICFaLmFkbWluIHx8ICFaLmFk bWluLm1pa3JvdGVhbXMpIHJldHVybiBbXTsKICAgIHZhciBtZWluZSA9IE51bWJlcihaLm1laW5l UGVyc29uSWQpOwogICAgdmFyIGlkcyA9IFtdOwogICAgWi5hZG1pbi5taWtyb3RlYW1zLmZvckVh Y2goZnVuY3Rpb24odCkgewogICAgICAgIGlmICghdCB8fCAhdC5wZXJzb25JZHMgfHwgdC5wZXJz b25JZHMuaW5kZXhPZihtZWluZSkgPCAwKSByZXR1cm47CiAgICAgICAgdC5wZXJzb25JZHMuZm9y RWFjaChmdW5jdGlvbihwaWQpIHsKICAgICAgICAgICAgaWYgKGlkcy5pbmRleE9mKHBpZCkgPCAw KSBpZHMucHVzaChwaWQpOwogICAgICAgIH0pOwogICAgfSk7CiAgICByZXR1cm4gaWRzOwp9Cgov LyBQcnVlZnQsIG9iIGRlciBha3R1ZWxsZSBCZW51dHplciBlaW5lIGJlc3RpbW10ZSBaZWxsZSBl ZGl0aWVyZW4gZGFyZi4KLy8gU3VwZXJVc2VyOiBpbW1lci4gU29uc3QgZWlnZW5lIFplaWxlICsg TWlrcm90ZWFtLU1pdGdsaWVkZXIgKyBrb25maWd1cmllcnRlCi8vIExpc3RlbiAocGVyc29uZW5J ZHMgLyBkaWVuc3RncnVwcGVuIC8gc3RhbmRvcnRlIGF1cyBaLnJlY2h0ZS5lZGl0aWVyZW4pLgpl eHBvcnQgZnVuY3Rpb24gZGFyZlplbGxlRWRpdGllcmVuKHBlcnNvbklkKSB7CiAgICBpZiAoIVou cmVjaHRlKSByZXR1cm4gZmFsc2U7CiAgICBpZiAoWi5yZWNodGUuZWRpdGllcmVuID09PSBudWxs IHx8IFoucmVjaHRlLmVkaXRpZXJlbiA9PT0gdW5kZWZpbmVkKSByZXR1cm4gdHJ1ZTsgLy8gU3Vw ZXJVc2VyCiAgICBpZiAoWi5tZWluZVBlcnNvbklkICE9IG51bGwgJiYgU3RyaW5nKFoubWVpbmVQ ZXJzb25JZCkgPT09IFN0cmluZyhwZXJzb25JZCkpIHJldHVybiB0cnVlOwogICAgdmFyIHAgPSBa LnBlcnNvbmVuLmZpbmQoZnVuY3Rpb24oeCkgeyByZXR1cm4gU3RyaW5nKHguaWQpID09PSBTdHJp bmcocGVyc29uSWQpOyB9KTsKICAgIGlmICghcCkgcmV0dXJuIGZhbHNlOwogICAgLy8gTWlrcm90 ZWFtOiBhbGxlIE1pdGdsaWVkZXIgZWluZXMgVGVhbXMgZHVlcmZlbiBkYXMgVGVhbSBnZW1laW5z YW0gcGxhbmVuLgogICAgaWYgKG1laW5lTWlrcm90ZWFtUGVyc29uSWRzKCkuaW5kZXhPZihOdW1i ZXIocC5pZCkpID49IDApIHJldHVybiB0cnVlOwogICAgdmFyIGVkID0gWi5yZWNodGUuZWRpdGll cmVuOwogICAgaWYgKChlZC5wZXJzb25lbklkcyB8fCBbXSkuaW5kZXhPZihOdW1iZXIocC5pZCkp ID49IDApIHJldHVybiB0cnVlOwogICAgaWYgKHAuZ3J1cHBlICYmIChlZC5kaWVuc3RncnVwcGVu IHx8IFtdKS5pbmRleE9mKHAuZ3J1cHBlKSA+PSAwKSByZXR1cm4gdHJ1ZTsKICAgIGlmIChwLm9l ICYmIChlZC5zdGFuZG9ydGUgfHwgW10pLmluZGV4T2YocC5vZSkgPj0gMCkgcmV0dXJuIHRydWU7 CiAgICByZXR1cm4gZmFsc2U7Cn0KCi8vID09PT09IEhlYWRlci1UYWItU2ljaHRiYXJrZWl0IChB ZG1pbi9TdGF0aXN0aWsvTG9nYnVjaC9CZXNldHp1bmcpID09PT09CgpleHBvcnQgZnVuY3Rpb24g bmF2U2ljaHRiYXJrZWl0QW53ZW5kZW4oKSB7CiAgICB2YXIgbmF2ID0gewogICAgICAgICduYXYt YWRtaW4nOiAgICAgICAgZGFyZkFkbWluVGFiKCksCiAgICAgICAgJ25hdi1zdGF0aXN0aWsnOiAg ICBkYXJmU3RhdGlzdGlrKCksCiAgICAgICAgJ25hdi1sb2didWNoJzogICAgICBkYXJmTG9nYnVj aCgpLAogICAgICAgICduYXYtYmVzZXR6dW5nJzogICAgISEoWi5yZWNodGUgJiYgWi5yZWNodGUu aXN0R2VzYW10dmVyYW50d29ydGxpY2gpCiAgICB9OwogICAgT2JqZWN0LmtleXMobmF2KS5mb3JF YWNoKGZ1bmN0aW9uKGlkKSB7CiAgICAgICAgdmFyIGVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5 SWQoaWQpOwogICAgICAgIGlmIChlbCkgZWwuc3R5bGUuZGlzcGxheSA9IG5hdltpZF0gPyAnJyA6 ICdub25lJzsKICAgIH0pOwoKICAgIC8vIFVYLUF1ZGl0IFNwcmludCAxLjMgKDIwMjYtMDUtMjkp OiBEZWZlbnNlLWluLURlcHRoLiBTZXJ2ZXIgZ2F0ZWQKICAgIC8vIGFsbGUgRGF0ZW4tRW5kcG9p bnRzLCBhYmVyIGRhcyBIVE1MLVNrZWxldHQgZGVyIEFkbWluLS9TdGF0aXN0aWstLwogICAgLy8g TG9nYnVjaC0vQmVzZXR6dW5nLVNla3Rpb25lbiBsaWVndCBpbSBET00gdW5kIGthbm4gei5CLiBi ZWkKICAgIC8vIGxhbmdzYW0tbGFkZW5kZW4gUmVjaHRlbiBrdXJ6IGF1ZmJsaXR6ZW4gb2RlciBw ZXIgRGV2VG9vbHMtCiAgICAvLyB2ZXJzdGVja3QtS2xhc3NlIGVudGZlcm50IHNpY2h0YmFyIHdl cmRlbi4gV2lyIHNldHplbiAudmVyc3RlY2t0CiAgICAvLyB1bmQgYXJpYS1oaWRkZW4genVzYWV0 emxpY2ggenVyIE5hdi1WZXJzdGVja3VuZy4KICAgIHZhciBhbnNpY2h0ZW4gPSB7CiAgICAgICAg J2Fuc2ljaHQtYWRtaW4nOiAgICAgIG5hdlsnbmF2LWFkbWluJ10sCiAgICAgICAgJ2Fuc2ljaHQt c3RhdGlzdGlrJzogIG5hdlsnbmF2LXN0YXRpc3RpayddLAogICAgICAgICdhbnNpY2h0LWxvZ2J1 Y2gnOiAgICBuYXZbJ25hdi1sb2didWNoJ10sCiAgICAgICAgJ2Fuc2ljaHQtYmVzZXR6dW5nJzog IG5hdlsnbmF2LWJlc2V0enVuZyddCiAgICB9OwogICAgdmFyIGFrdHVlbGxlVmVyc3RlY2t0ID0g ZmFsc2U7CiAgICBPYmplY3Qua2V5cyhhbnNpY2h0ZW4pLmZvckVhY2goZnVuY3Rpb24oaWQpIHsK ICAgICAgICB2YXIgZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCk7CiAgICAgICAgaWYg KCFlbCkgcmV0dXJuOwogICAgICAgIGlmICghYW5zaWNodGVuW2lkXSkgewogICAgICAgICAgICB2 YXIgd2FyU2ljaHRiYXIgPSAhZWwuY2xhc3NMaXN0LmNvbnRhaW5zKCd2ZXJzdGVja3QnKTsKICAg ICAgICAgICAgZWwuY2xhc3NMaXN0LmFkZCgndmVyc3RlY2t0Jyk7CiAgICAgICAgICAgIGVsLnNl dEF0dHJpYnV0ZSgnYXJpYS1oaWRkZW4nLCAndHJ1ZScpOwogICAgICAgICAgICBpZiAod2FyU2lj aHRiYXIpIGFrdHVlbGxlVmVyc3RlY2t0ID0gdHJ1ZTsKICAgICAgICB9IGVsc2UgewogICAgICAg ICAgICBlbC5yZW1vdmVBdHRyaWJ1dGUoJ2FyaWEtaGlkZGVuJyk7CiAgICAgICAgfQogICAgfSk7 CiAgICAvLyBFZGdlLUNhc2U6IFBlcm1pc3Npb24gd3VyZGUgbGl2ZSBlbnR6b2dlbiB3YWVocmVu ZCBVc2VyIGF1ZiBkZXIKICAgIC8vIGpldHp0IHZlcmJvdGVuZW4gQW5zaWNodCBzdGVodC4gRmFs bGJhY2sgYXVmIFBsYW51bmcsIHNvbnN0IHNpZWh0CiAgICAvLyBlciBsZWVyZW4gQmlsZHNjaGly bS4KICAgIGlmIChha3R1ZWxsZVZlcnN0ZWNrdCkgewogICAgICAgIHZhciBwbGFudW5nID0gZG9j dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Fuc2ljaHQtcGxhbnVuZycpOwogICAgICAgIGlmIChwbGFu dW5nKSBwbGFudW5nLmNsYXNzTGlzdC5yZW1vdmUoJ3ZlcnN0ZWNrdCcpOwogICAgfQp9CgovLyA9 PT09PSBWZXJiaW5kbGljaGtlaXRzZmVuc3RlciAoMTQgVGFnZSkgPT09PT0KCi8vIFRydWUsIHdl bm4gZGFzIERhdHVtIGlubmVyaGFsYiBkZXIgbmFlY2hzdGVuIDE0IFRhZ2UgKGlua2wuIGhldXRl KSBsaWVndC4KLy8gQWVuZGVydW5nZW4gaW4gZGllc2VtIEZlbnN0ZXIgc2luZCAidmVyYmluZGxp Y2giIOKAlCBBdWZydWVja2VyIGJla29tbWVuCi8vIGRhbm4gZGVuIFZlcmFudHdvcnR1bmdzLVVl YmVyZ2FuZy1NYWlsLURpYWxvZyAoc2llaGUgZ3JpZC9lZGl0b3IuanMpLgpleHBvcnQgZnVuY3Rp b24gZGF0dW1JblZlcmJpbmRsaWNoa2VpdChkYXR1bSkgewogICAgdmFyIHRlaWxlID0gZGF0dW0u c3BsaXQoJy0nKTsKICAgIGlmICh0ZWlsZS5sZW5ndGggIT09IDMpIHJldHVybiBmYWxzZTsKICAg IHZhciB6aWVsID0gbmV3IERhdGUoK3RlaWxlWzBdLCArdGVpbGVbMV0gLSAxLCArdGVpbGVbMl0p OwogICAgdmFyIGhldXRlID0gbmV3IERhdGUoKTsKICAgIGhldXRlLnNldEhvdXJzKDAsIDAsIDAs IDApOwogICAgdmFyIHRhZ2UgPSBNYXRoLnJvdW5kKCh6aWVsIC0gaGV1dGUpIC8gKDEwMDAgKiA2 MCAqIDYwICogMjQpKTsKICAgIHJldHVybiB0YWdlID49IDAgJiYgdGFnZSA8PSAxNDsKfQo= ### FILE: js/core_state.js | 1412 Ly8gPT09IGNvcmUvc3RhdGUuanMgPT09Ci8vIEdsb2JhbGVyIEFud2VuZHVuZ3MtWnVzdGFuZCBa IGRlciBWSTMtREdMLVBsYW51bmcuCi8vCi8vIFNjaHJlaWItWnVncmlmZiBwcm8gRmVsZCBpc3Qg aW4gZG9jcy9NT0RVTF9LQVJURS5tZCBkb2t1bWVudGllcnQKLy8gKExlc2UtWnVncmlmZiB1ZWJl cmFsbCwgU2NocmVpYi1adWdyaWZmIGxva2FsaXNpZXJ0KS4KCmV4cG9ydCB2YXIgWiA9IHsKICAg IGFkbWluOiBudWxsLAogICAgcGxhbnVuZzogbnVsbCwKICAgIHBlcnNvbmVuOiBbXSwKICAgIHRh Z2U6IFtdLAogICAgdGFnSW5mb3M6IHt9LAogICAgY29kZU1hcDoge30sCiAgICBncnVwcGVuTWFw OiB7fSwKICAgIGJlbnV0emVyOiAnJywKICAgIGhldXRlU3RyOiAnJywKICAgIC8vIERhdGVuLUNh Y2hlIGZ1ZXIgZGllIFN0YXRpc3RpayAoc2llaGUganMvc3RhdGlzdGlrLmpzKS4KICAgIHN0YXRp c3RpazogbnVsbCwKICAgIHVtZ2VzZXR6dGVFaW5ibGVuZGVuOiBmYWxzZSwKICAgIC8vIFp1Z2V3 aWVzZW4gaW4gZGF0ZW5MYWRlbigpIC8gaW1wZXJzb25hdGUqLUZ1bmt0aW9uZW46CiAgICByZWNo dGU6IG51bGwsCiAgICBtZWluZVBlcnNvbklkOiBudWxsLAogICAgLy8gWnVnZXdpZXNlbiB2b20g TW9kYWwtU3lzdGVtICh1aS9kaWFsb2cuanMsIFBoYXNlIDIpOgogICAgbW9kYWxEaXJ0eTogZmFs c2UsCiAgICBtb2RhbE9uU3BlaWNoZXJuOiBudWxsLAogICAgbW9kYWxTcGVpY2hlckZ1c3NIdG1s OiBudWxsLAogICAgbW9kYWxLZXk6IG51bGwsCiAgICAvLyBadWdld2llc2VuIHZvbSBIZWFydGJl YXQtV29ya2VyIChjb3JlL2RhdGVuTGFkZW4uanMsIFBoYXNlIDMpOgogICAgaGVhcnRiZWF0V29y a2VyOiBudWxsLAogICAgaGVhcnRiZWF0RmFsbGJhY2s6IG51bGwsCiAgICAvLyBMaXZlLVN5bmMg KFBoYXNlOiBTeW5jLVdvcmtlciwgc3luYy9zeW5jLWNsaWVudC5qcyk6CiAgICBzeW5jV29ya2Vy OiBudWxsLAogICAgbGFzdFN5bmNUczogJycsCiAgICBsYXN0U3luY1NlcTogbnVsbCwgICAgICAg ICAgICAgICAvLyBtb25vdG9uZSBTZXF1ZW56bnVtbWVyID0gcmFjZS1mcmVpZXIgTGl2ZS1TeW5j LUN1cnNvcgogICAgZnJlbWRlTG9ja3M6IHt9LCAgICAgICAgICAgICAgICAgLy8ga2V5ID0gIjxk YXR1bT58PHBlcnNvbklkPiIgLT4gTG9jay1PYmpla3QKICAgIHplbGxMb2NrOiB7IHRva2VuOiBu dWxsLCBkYXR1bTogJycsIHBlcnNvbklkOiAnJywgaGJUaW1lcjogbnVsbCB9LAogICAgLy8gSGlu d2Vpcy1TeXN0ZW0gKHNlcnZlci1zZWl0aWcgaW4gZGF0YS9oaW53ZWlzZS5qc29uIGdlZnVlaHJ0 LCB2b20KICAgIC8vIFN5bmMtV29ya2VyIGdlcG9sbHQpLiBOdXIgZnVlciBTVSArIEdlc2FtdHZl cmFudHdvcnRsaWNoZSBiZWZ1ZWxsdC4KICAgIGhpbndlaXNlOiBbXQp9Owo= ### FILE: js/core_util.js | 12046 Ly8gPT09IGNvcmUvdXRpbC5qcyA9PT0KLy8gRGF0dW0tLCBIVE1MLSB1bmQgUGVyc29uLUhlbHBl ciBzb3dpZSBTdGFtbS1Lb25zdGFudGVuCi8vIChGdW5rdGlvbmVuLCBEaWVuc3RncmFkZSkuCgpp bXBvcnQgeyBaIH0gZnJvbSAnLi9jb3JlX3N0YXRlLmpzJzsKCi8vID09PT09IFBlcnNvbi1JRC1L b252ZW50aW9uID09PT09CgovLyBLYW5vbmlzY2hlciBTdHJpbmctS2V5IGZ1ZXIgUGVyc29uLUlE cyBpbiBaLnBsYW51bmcuZWludHJhZWdlIHVuZAovLyBaLnBsYW51bmcua29tbWVudGFyZSAoYmVp ZGVzIHtkYXR1bToge3BpZDogLi4ufX0tRGljdHMpLiBKU09OLU9iamVjdC1LZXlzCi8vIHNpbmQg aW1tZXIgU3RyaW5ncyDigJQgd2VyIG1pdCBOdW1iZXItS2V5cyBhcmJlaXRldCwga3JpZWd0IHp3 YXIgaW1wbGl6aXQKLy8gU3RyaW5nLUtvbnZlcnRpZXJ1bmcsIGFiZXIgPT09IGF1ZiB6d2VpIFBl cnNvbi1JRHMgKHouQi4gcC5pZCBJbnQgdnMuCi8vIG0uemllbElkIFN0cmluZykgc2NobGFlZ3Qg ZmVobC4gS29udmVudGlvbjogdWViZXJhbGwgd28gZWluZSBwZXJzb25JZCB6dQovLyBlaW5lbSBM b29rdXAgb2RlciBWZXJnbGVpY2ggd2lyZCwgZHVyY2ggcGlkS2V5KCkgc2NoaWNrZW4uCi8vIEVp bmdlYmF1dCBpbiBTcHJpbnQgMiDigJQgRGF0ZW5tb2RlbGwtS29uc2lzdGVueiAoMjAyNi0wNS0y OCkuCmV4cG9ydCBmdW5jdGlvbiBwaWRLZXkoaWQpIHsKICAgIHJldHVybiBpZCA9PSBudWxsID8g JycgOiBTdHJpbmcoaWQpOwp9CgovLyA9PT09PSBSZW5kZXItRXJyb3ItV3JhcHBlciAoVVgtQXVk aXQgU3ByaW50IDEuMiwgMjAyNi0wNS0yOSkgPT09PT0KLy8KLy8gQ0xBVURFLm1kLUtvbnZlbnRp b246IFJlbmRlci1GdW5rdGlvbmVuIHdyYXBwZW4gKyBGZWhsZXJib3ggaW0gQ29udGFpbmVyCi8v IHN0YXR0IGxlZXJlciBUYWIuIExpZWZlcnQgZWluZSBzaWNodGJhcmUgRmVobGVyYm94IGluIGRl biBDb250YWluZXIgdW5kCi8vIGxvZ2d0IGRpZSBFeGNlcHRpb24gaW4gZGllIERldlRvb2xzLUNv bnNvbGUsIGRhbWl0IEJ1Z3MgbmljaHQgc3R1bW0gaW4KLy8gZWluZW0gYmxhbmtlbiBUYWIgdmVy c2Nod2luZGVuLgpleHBvcnQgZnVuY3Rpb24gcmVuZGVyRXJyb3JCb3goY29udGFpbmVyLCBmZWhs ZXIsIG1vZHVsbmFtZSkgewogICAgaWYgKCFjb250YWluZXIpIHJldHVybjsKICAgIHRyeSB7IGNv bnNvbGUuZXJyb3IoJ1tyZW5kZXI6JyArIG1vZHVsbmFtZSArICddJywgZmVobGVyKTsgfSBjYXRj aCAoXykge30KICAgIHZhciBtc2cgPSAoZmVobGVyICYmIGZlaGxlci5tZXNzYWdlKSA/IGZlaGxl ci5tZXNzYWdlIDogU3RyaW5nKGZlaGxlcik7CiAgICBjb250YWluZXIuaW5uZXJIVE1MID0KICAg ICAgICAnPGRpdiBjbGFzcz0icmVuZGVyLWZlaGxlci1ib3giIHJvbGU9ImFsZXJ0IiBhcmlhLWxp dmU9InBvbGl0ZSI+JyArCiAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJyZW5kZXItZmVobGVyLWlj b24iIGFyaWEtaGlkZGVuPSJ0cnVlIj7imqDvuI88L2Rpdj4nICsKICAgICAgICAgICAgJzxkaXYg Y2xhc3M9InJlbmRlci1mZWhsZXItdGV4dCI+JyArCiAgICAgICAgICAgICAgICAnPGRpdiBjbGFz cz0icmVuZGVyLWZlaGxlci10aXRlbCI+QW56ZWlnZS1GZWhsZXIgaW4g4oCeJyArIGVzY2FwZUhU TUwobW9kdWxuYW1lIHx8ICc/JykgKyAnIjwvZGl2PicgKwogICAgICAgICAgICAgICAgJzxkaXYg Y2xhc3M9InJlbmRlci1mZWhsZXItZGV0YWlsIj4nICsgZXNjYXBlSFRNTChtc2cpICsgJzwvZGl2 PicgKwogICAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9InJlbmRlci1mZWhsZXItaGludCI+Qml0 dGUgU2VpdGUgbmV1IGxhZGVuLiBEZXRhaWxzIHN0ZWhlbiBpbiBkZXIgRGV2VG9vbHMtQ29uc29s ZSAoRjEyKS48L2Rpdj4nICsKICAgICAgICAgICAgJzwvZGl2PicgKwogICAgICAgICc8L2Rpdj4n Owp9CgovLyA9PT09PSBIVE1ML1N0cmluZy1Fc2NhcGluZyA9PT09PQoKZXhwb3J0IGZ1bmN0aW9u IGVzY2FwZUhUTUwoc3RyKSB7CiAgICBpZiAoc3RyID09IG51bGwgfHwgc3RyID09PSAnJykgcmV0 dXJuICcnOwogICAgdmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogICAg ZGl2LnRleHRDb250ZW50ID0gU3RyaW5nKHN0cik7CiAgICByZXR1cm4gZGl2LmlubmVySFRNTDsK fQoKZXhwb3J0IGZ1bmN0aW9uIGVzY2FwZUF0dHIoc3RyKSB7CiAgICBpZiAoc3RyID09IG51bGwg fHwgc3RyID09PSAnJykgcmV0dXJuICcnOwogICAgcmV0dXJuIFN0cmluZyhzdHIpLnJlcGxhY2Uo LyYvZywgJyZhbXA7JykucmVwbGFjZSgvIi9nLCAnJnF1b3Q7JykucmVwbGFjZSgvJy9nLCAnJiMz OTsnKS5yZXBsYWNlKC88L2csICcmbHQ7JykucmVwbGFjZSgvPi9nLCAnJmd0OycpOwp9CgovLyA9 PT09PSBEYXR1bSA9PT09PQoKZXhwb3J0IGZ1bmN0aW9uIGRhdHVtU3RyKGQpIHsKICAgIHZhciBt ID0gZC5nZXRNb250aCgpICsgMSwgdCA9IGQuZ2V0RGF0ZSgpOwogICAgcmV0dXJuIGQuZ2V0RnVs bFllYXIoKSArICctJyArIChtIDwgMTAgPyAnMCcgOiAnJykgKyBtICsgJy0nICsgKHQgPCAxMCA/ ICcwJyA6ICcnKSArIHQ7Cn0KCmV4cG9ydCBmdW5jdGlvbiBkYXR1bUZvcm1hdERFKHN0cikgewog ICAgaWYgKCFzdHIpIHJldHVybiAnJzsKICAgIHZhciB0ZWlsZSA9IHN0ci5zcGxpdCgnLScpOwog ICAgcmV0dXJuIHRlaWxlWzJdICsgJy4nICsgdGVpbGVbMV0gKyAnLicgKyB0ZWlsZVswXTsKfQoK ZXhwb3J0IGZ1bmN0aW9uIGRhdHVtS3VyekRFKGQpIHsKICAgIHZhciB0ID0gZC5nZXREYXRlKCks IG0gPSBkLmdldE1vbnRoKCkgKyAxOwogICAgcmV0dXJuICh0IDwgMTAgPyAnMCcgOiAnJykgKyB0 ICsgJy4nICsgKG0gPCAxMCA/ICcwJyA6ICcnKSArIG0gKyAnLic7Cn0KCmV4cG9ydCBmdW5jdGlv biB3b2NoZW50YWdLdXJ6KGQpIHsKICAgIHZhciBuID0gWydTbycsJ01vJywnRGknLCdNaScsJ0Rv JywnRnInLCdTYSddOwogICAgcmV0dXJuIG5bZC5nZXREYXkoKV07Cn0KCmV4cG9ydCBmdW5jdGlv biBpc3RXb2NoZW5lbmRlKGQpIHsgdmFyIHQgPSBkLmdldERheSgpOyByZXR1cm4gdCA9PT0gMCB8 fCB0ID09PSA2OyB9CgovLyBIZXV0aWdlIFNjaGljaHQgKEYvUy9OKSBlaW5lciBQZXJzb24gYXVz IGRlciBTdGFuZG9ydC1TY2hpY2h0Zm9sZ2UgYWJsZWl0ZW4uCi8vIFN0YW5kb3J0IGhhdCBzY2hp Y2h0Zm9sZ2VbZGF0dW1dID0gei5CLiAiQUJDIiAoR3J1cHBlIEE9RiwgQj1TLCBDPU4pIG9kZXIK Ly8gIkJDQSIgKEI9RiwgQz1TLCBBPU4pIG9kZXIgIkNBQiIuIFdlbm4gZGVyIEdydXBwZW4tQ29k ZSBuaWNodCBpbiBkZXIKLy8gUGVybXV0YXRpb24gc3RlaHQgKHouQi4gV0QvV0wvVkQpIG9kZXIg ZGVyIFN0YW5kb3J0IGVpbiBQb29sIG9obmUKLy8gU2NoaWNodGZvbGdlIGlzdCwgZ2lidCdzIGtl aW5lIGVpbmRldXRpZ2UgU2NoaWNodCDigJQgUnVlY2tnYWJlIG51bGwuCi8vIFdpY2h0aWc6IGln bm9yaWVydCBkZW4gVGFnZXNlaW50cmFnIOKAlCBsaWVmZXJ0IGRpZSBSb3RhdGlvbnMtU2NoaWNo dCBhdWNoCi8vIGZ1ZXIgd2ZyL2Rmci1UYWdlICh3YXMgc2llIHJlZ3VsYWVyIGFyYmVpdGVuIFdV RVJERU4pLgpleHBvcnQgZnVuY3Rpb24gcGVyc29uU2NoaWNodEFtKHBlcnNvbiwgZGF0dW0pIHsK ICAgIGlmICghcGVyc29uIHx8ICFwZXJzb24uZ3J1cHBlIHx8ICFwZXJzb24ub2UpIHJldHVybiBu dWxsOwogICAgdmFyIHN0YW5kb3J0ID0gKFouYWRtaW4uc3RhbmRvcnRlIHx8IFtdKS5maW5kKGZ1 bmN0aW9uKHMpIHsgcmV0dXJuIChzLmt1ZXJ6ZWwgfHwgJycpID09PSBwZXJzb24ub2U7IH0pOwog ICAgaWYgKCFzdGFuZG9ydCB8fCBzdGFuZG9ydC5pc3RQb29sKSByZXR1cm4gbnVsbDsKICAgIHZh ciBwZXJtID0gKHN0YW5kb3J0LnNjaGljaHRmb2xnZSB8fCB7fSlbZGF0dW1dOwogICAgaWYgKCFw ZXJtIHx8IHR5cGVvZiBwZXJtICE9PSAnc3RyaW5nJyB8fCBwZXJtLmxlbmd0aCAhPT0gMykgcmV0 dXJuIG51bGw7CiAgICB2YXIgcG9zID0gcGVybS5pbmRleE9mKHBlcnNvbi5ncnVwcGUpOwogICAg aWYgKHBvcyA8IDApIHJldHVybiBudWxsOwogICAgcmV0dXJuIFsnRicsICdTJywgJ04nXVtwb3Nd Owp9CgovLyA9PT09PSBTdGFtbS1Lb25zdGFudGVuID09PT09CgovLyBTdGFtbS1GdW5rdGlvbmVu IGVpbmVyIFBlcnNvbi4gRGVyIFJhbmcgYmVzdGltbXQgZGllIFJlaWhlbmZvbGdlIGluIGRlcgov LyAiYWt0aXZlbiBGdWVocnVuZyIgZWluZXIgU2NoaWNodDogREdMICgwKSA+IFdERiAoMSkgPiAz LiBQZXJzb24gKDIpID4KLy8gV2FjaGxlaXR1bmcvR3J1cHBlbmZ1ZWhydW5nICgzKS4gR2xlaWNo ZSBSYW5nd2VydGUgc2luZCBnbGVpY2h3ZXJ0aWcKLy8gKERHTC9ER0xpbiwgV0RGL1dERmluLCAz LiBNYW5uLzMuIEZyYXUpIHVuZCB3ZXJkZW4gaW5uZXJoYWxiIGR1cmNoIGRpZQovLyByb2hlIHBv c2l0aW9uLVphaGwgc29ydGllcnQuCi8vCi8vIEFiIDIwMjYtMDUtMTkgc2luZCBGVU5LVElPTkVO IHVuZCBESUVOU1RHUkFERSBrZWluZSByZWluZW4gQ29kZS0KLy8gS29uc3RhbnRlbiBtZWhyLCBz b25kZXJuIERFRkFVTFRTLCBkaWUgZGVyIEFkbWluIGluIEFkbWluIC0+IEJlemVpY2gtCi8vIG51 bmdlbiAmIExpc3RlbiB1ZWJlcnNjaHJlaWJlbiBrYW5uLiBMaXZlLVdlcnRlIGxpZWdlbiBpbgov LyBaLmFkbWluLmZ1bmt0aW9uZW4gYnp3LiBaLmFkbWluLmRpZW5zdGdyYWRlLiBGYWxscyBkaWUg YWRtaW4uanNvbgovLyBrZWluIGVpZ2VuZXMgRmVsZCB0cmFlZ3QgKHouQi4gZnJpc2NoZSBJbnN0 YWxsYXRpb24pLCBncmVpZnQgZGVyCi8vIERlZmF1bHQgYXVzIGRpZXNlciBEYXRlaS4KLy8gUHJv IEZ1bmt0aW9uOiBjb2RlLCByYW5nLCBvcHRpb25hbCBpblBsYW51bmcgKERlZmF1bHQgdHJ1ZSku IFdlbm4KLy8gaW5QbGFudW5nPWZhbHNlLCB3ZXJkZW4gUGVyc29uZW4gbWl0IGRpZXNlciBGdW5r dGlvbiBuaWNodCBpbiBkZXIKLy8gUGxhbnVuZ3NhbnNpY2h0IC8gV29jaGVucGxhbiAvIFBlcnMu IFBsYW4gYXVzZ2V3aWVzZW4g4oCUIHNpZSBibGVpYmVuCi8vIGluIGRlciBQZXJzb25hbHZlcndh bHR1bmcgcGZsZWdiYXIuCmV4cG9ydCB2YXIgRlVOS1RJT05FTl9ERUZBVUxUID0gWwogICAgeyBj b2RlOiAnTC9EaXJWJywgICAgICAgICByYW5nOiAtMiwgaW5QbGFudW5nOiBmYWxzZSB9LAogICAg eyBjb2RlOiAnTC9WSTMnLCAgICAgICAgICByYW5nOiAtMSwgaW5QbGFudW5nOiBmYWxzZSB9LAog ICAgeyBjb2RlOiAnREdMJywgICAgICAgICAgICByYW5nOiAwIH0sCiAgICB7IGNvZGU6ICdER0xp bicsICAgICAgICAgIHJhbmc6IDAgfSwKICAgIHsgY29kZTogJ1dERicsICAgICAgICAgICAgcmFu ZzogMSB9LAogICAgeyBjb2RlOiAnV0RGaW4nLCAgICAgICAgICByYW5nOiAxIH0sCiAgICB7IGNv ZGU6ICczLiBNYW5uJywgICAgICAgIHJhbmc6IDIgfSwKICAgIHsgY29kZTogJzMuIEZyYXUnLCAg ICAgICAgcmFuZzogMiB9LAogICAgeyBjb2RlOiAnV2FjaGxlaXR1bmcnLCAgICByYW5nOiAzIH0s CiAgICB7IGNvZGU6ICdHcnVwcGVuZsO8aHJ1bmcnLCByYW5nOiAzIH0KXTsKCi8vIEhlbHBlcjog bGllZmVydCB0cnVlLCB3ZW5uIGVpbmUgRnVua3Rpb24gaW4gZGVyIFBsYW50YWZlbCBhbmdlemVp Z3QKLy8gd2VyZGVuIGRhcmYuIERlZmF1bHQgdHJ1ZSAodW5iZWthbm50ZSBGdW5rdGlvbiAvIGtl aW4gRWludHJhZykuCmV4cG9ydCBmdW5jdGlvbiBmdW5rdGlvbkluUGxhbnVuZyhjb2RlKSB7CiAg ICBpZiAoIWNvZGUpIHJldHVybiB0cnVlOwogICAgdmFyIGxpc3RlID0gZ2V0RnVua3Rpb25lbigp OwogICAgdmFyIGYgPSBsaXN0ZS5maW5kKGZ1bmN0aW9uKHgpIHsgcmV0dXJuIHguY29kZSA9PT0g Y29kZTsgfSk7CiAgICBpZiAoIWYpIHJldHVybiB0cnVlOwogICAgcmV0dXJuIGYuaW5QbGFudW5n ICE9PSBmYWxzZTsKfQoKLy8gUmVsZXZhbnRlIERpZW5zdGdyYWRlIGJlaSBWSTMgKFBPSyBiaXMg TFBEaW4sIGpld2VpbHMgbS93KS4gUmVpaGVuZm9sZ2UKLy8gQUJTVEVJR0VORCBpbSBSYW5nIChM UERpbiB6dWVyc3QpLCBqZXdlaWxzIG1hc2t1bGluZSB1bmQgZmVtaW5pbmUgRm9ybQovLyB6dXNh bW1lbiBncnVwcGllcnQuIFBISyogPSBBMTIgKHp3aXNjaGVuIFBISyBBMTEgdW5kIEVQSEsgQTEz KS4KLy8gUEQgPSBQb2xpemVpZGlyZWt0b3IvaW4gKEExNSksIExQRGluID0gTGVpdGVuZGUgUG9s aXplaWRpcmVrdG9yaW4gKEExNikuCmV4cG9ydCB2YXIgRElFTlNUR1JBREVfREVGQVVMVCA9IFsn TFBEaW4nLCAnUEQnLCAiRVBISydpbiIsICdFUEhLJywgIlBISyonaW4iLCAnUEhLKicsICJQSEsn aW4iLCAnUEhLJywgIlBPSydpbiIsICdQT0snXTsKCi8vIEhlbHBlcjogbGllZmVydCBkaWUgYWt0 dWVsbCBrb25maWd1cmllcnRlIExpc3RlLCBtaXQgRGVmYXVsdCBhbHMgRmFsbGJhY2suCi8vIEF1 ZnJ1ZmVyIGJlbnV0emVuIElNTUVSIGRpZXNlIEZ1bmt0aW9uZW4gc3RhdHQgZGVyIERFRkFVTFQt S29uc3RhbnRlbi4KZXhwb3J0IGZ1bmN0aW9uIGdldEZ1bmt0aW9uZW4oKSB7CiAgICB2YXIgZiA9 IFouYWRtaW4gJiYgWi5hZG1pbi5mdW5rdGlvbmVuOwogICAgaWYgKEFycmF5LmlzQXJyYXkoZikg JiYgZi5sZW5ndGgpIHJldHVybiBmOwogICAgcmV0dXJuIEZVTktUSU9ORU5fREVGQVVMVDsKfQpl eHBvcnQgZnVuY3Rpb24gZ2V0RGllbnN0Z3JhZGUoKSB7CiAgICB2YXIgZCA9IFouYWRtaW4gJiYg Wi5hZG1pbi5kaWVuc3RncmFkZTsKICAgIGlmIChBcnJheS5pc0FycmF5KGQpICYmIGQubGVuZ3Ro KSByZXR1cm4gZDsKICAgIHJldHVybiBESUVOU1RHUkFERV9ERUZBVUxUOwp9CgpleHBvcnQgZnVu Y3Rpb24gZnVua3Rpb25zUmFuZyhjb2RlKSB7CiAgICB2YXIgZiA9IGdldEZ1bmt0aW9uZW4oKS5m aW5kKGZ1bmN0aW9uKHgpIHsgcmV0dXJuIHguY29kZSA9PT0gY29kZTsgfSk7CiAgICByZXR1cm4g ZiA/IGYucmFuZyA6IDk5Owp9CgoKLy8gPT09PT0gUHJvZmlsYmlsZGVyIChBdmF0YXJlKSA9PT09 PQovLwovLyBTcGVpY2hlci1QZmFkIHNlcnZlcnNlaXRpZzogVkkzL2RhdGEvYXZhdGFycy88aWQ+ LmpwZwovLyBQZXJzb24tRGF0ZW5zYXR6IGZ1ZWhydCBhdmF0YXJUcyAobXMtVGltZXN0YW1wKTog d2lyIGhhZW5nZW4gZGFzIGFuCi8vIGRpZSBVUkwgYWxzIENhY2hlLUJ1c3Rlci4gT2huZSBhdmF0 YXJUcyAtPiBrZWluIEJpbGQgLT4gSW5pdGlhbGVuLQovLyBGYWxsYmFjayBtaXQgc3RhYmlsZXIg RmFyYmUgKEhhc2ggYXVzIFBlcnNvbklkIG1vZHVsbyBGYXJiLVBhbGV0dGUpLgoKZXhwb3J0IGZ1 bmN0aW9uIGF2YXRhclVybChwKSB7CiAgICBpZiAoIXAgfHwgIXAuYXZhdGFyVHMpIHJldHVybiAn JzsKICAgIHJldHVybiAnL2RhdGEvYXZhdGFycy8nICsgcC5pZCArICcuanBnP3RzPScgKyBwLmF2 YXRhclRzOwp9CgpleHBvcnQgZnVuY3Rpb24gYXZhdGFySW5pdGlhbGVuKHApIHsKICAgIGlmICgh cCkgcmV0dXJuICc/JzsKICAgIHZhciB2ID0gKHAudm9ybmFtZSB8fCAnJykudHJpbSgpOwogICAg dmFyIG4gPSAocC5uYW1lIHx8ICcnKS50cmltKCk7CiAgICB2YXIgaSA9ICcnOwogICAgaWYgKHYp IGkgKz0gdi5jaGFyQXQoMCkudG9VcHBlckNhc2UoKTsKICAgIGlmIChuKSBpICs9IG4uY2hhckF0 KDApLnRvVXBwZXJDYXNlKCk7CiAgICByZXR1cm4gaSB8fCAnPyc7Cn0KCi8vIEVpbmhlaXRsaWNo ZSBBbnRocmF6aXQtRmFyYmUgZnVlciBhbGxlIEluaXRpYWxlbi1BdmF0YXJlIOKAlCB1bmlmb3Jt ZXMKLy8gRGVzaWduIHN0YXR0IGJ1bnRlciBIYXNoLVBhbGV0dGUgKFVzZXItRmVlZGJhY2sgMjAy Ni0wNS0yMykuCnZhciBBVkFUQVJfRkFSQkVfREVGQVVMVCA9ICcjM0EzRjQ3JzsKCmV4cG9ydCBm dW5jdGlvbiBhdmF0YXJLcmVpc0h0bWwocCwgZ3JvZXNzZSkgewogICAgaWYgKCFwKSByZXR1cm4g Jyc7CiAgICB2YXIgc2l6ZSA9IGdyb2Vzc2UgfHwgMjY7CiAgICB2YXIgdXJsID0gYXZhdGFyVXJs KHApOwogICAgLy8gUm91bmRlZCBzcXVhcmUgKGJvcmRlci1yYWRpdXMgbmljaHQgNTAlLCBzb25k ZXJuIHByb3BvcnRpb25hbCB6dXIKICAgIC8vIEdyb2Vzc2Ug4oCUIGdsZWljaGVyIHZpc3VlbGxl ciBTdGlsIGJlaSBrbGVpbmVuIHVuZCBncm9zc2VuIEF2YXRhcmVuKS4KICAgIHZhciByYWRpdXMg PSBNYXRoLm1heCgzLCBNYXRoLnJvdW5kKHNpemUgKiAwLjE4KSk7CiAgICB2YXIgc3R5bGUgPSAn d2lkdGg6JyArIHNpemUgKyAncHg7aGVpZ2h0OicgKyBzaXplICsgJ3B4O2ZvbnQtc2l6ZTonICsg TWF0aC5yb3VuZChzaXplICogMC40MikgKyAncHg7Ym9yZGVyLXJhZGl1czonICsgcmFkaXVzICsg J3B4JzsKICAgIGlmICh1cmwpIHsKICAgICAgICByZXR1cm4gJzxzcGFuIGNsYXNzPSJ2aTMtYXZh dGFyIHZpMy1hdmF0YXItYmlsZCIgc3R5bGU9IicgKyBzdHlsZSArICc7YmFja2dyb3VuZC1pbWFn ZTp1cmwoXCcnICsgZXNjYXBlQXR0cih1cmwpICsgJ1wnKSI+PC9zcGFuPic7CiAgICB9CiAgICBy ZXR1cm4gJzxzcGFuIGNsYXNzPSJ2aTMtYXZhdGFyIHZpMy1hdmF0YXItaW5pdGlhbGVuIiBzdHls ZT0iJyArIHN0eWxlICsgJztiYWNrZ3JvdW5kOicgKyBBVkFUQVJfRkFSQkVfREVGQVVMVCArICci PicgKyBlc2NhcGVIVE1MKGF2YXRhckluaXRpYWxlbihwKSkgKyAnPC9zcGFuPic7Cn0KCi8vID09 PT09IFBlcnNvbi1BbnplaWdlID09PT09CgovLyBBbnplaWdlLU5hbWUgZWluZXIgUGVyc29uIChE aWVuc3RncmFkICsgVm9ybmFtZSArIE5hY2huYW1lKS4KZXhwb3J0IGZ1bmN0aW9uIF9wZXJzb25B bnplaWdlKHApIHsKICAgIGlmICghcCkgcmV0dXJuICfigJQnOwogICAgdmFyIHZvbGwgPSAoKHAu dm9ybmFtZSB8fCAnJykgKyAnICcgKyAocC5uYW1lIHx8ICcnKSkudHJpbSgpOwogICAgcmV0dXJu IHAuZGllbnN0Z3JhZCA/IHAuZGllbnN0Z3JhZCArICcgJyArIHZvbGwgOiB2b2xsOwp9CgovLyBX YW5kZWx0IGVpbmUgTlctS2VubnVuZyB3aWUgIlBPTElaRUlcbncwNTU4MDEiIG9kZXIgIm53MDU1 ODAxIiBpbiBkZW4KLy8gS2xhcm5hbWVuICgiU2FiaW5lIFJhdWRzenVzIikgdW0sIGluZGVtIFou cGVyc29uZW4gKyBBZG1pbi1MaXN0ZW4gbmFjaAovLyBwYXNzZW5kZXIgbndLZW5udW5nIGR1cmNo c3VjaHQgd2VyZGVuLiBGYWxsYmFjazogZGllIEtlbm51bmcgc2VsYnN0Ci8vIChvaG5lIERvbWFp bi1QcmVmaXgsIGRhbWl0IGRlciBUb2FzdCBuaWNodCBzbyB0ZWNobmlzY2ggd2lya3QpLgpleHBv cnQgZnVuY3Rpb24gYW56ZWlnZU5hbWVGdWVyS2VubnVuZyhrZW5udW5nKSB7CiAgICBpZiAoIWtl bm51bmcpIHJldHVybiAnJzsKICAgIHZhciBrID0gU3RyaW5nKGtlbm51bmcpLnRvTG93ZXJDYXNl KCk7CiAgICB2YXIga0t1cnogPSBrLmluZGV4T2YoJ1xcJykgPj0gMCA/IGsuc3BsaXQoJ1xcJyku cG9wKCkgOiBrOwogICAgZnVuY3Rpb24gbWF0Y2goZWludHJhZ0tlbm51bmcpIHsKICAgICAgICBp ZiAoIWVpbnRyYWdLZW5udW5nKSByZXR1cm4gZmFsc2U7CiAgICAgICAgdmFyIGUgPSBTdHJpbmco ZWludHJhZ0tlbm51bmcpLnRvTG93ZXJDYXNlKCk7CiAgICAgICAgcmV0dXJuIGUgPT09IGsgfHwg ZSA9PT0ga0t1cnogfHwgay5lbmRzV2l0aCgnXFwnICsgZSkgfHwga0t1cnogPT09IGU7CiAgICB9 CiAgICB2YXIgcCA9IChaLnBlcnNvbmVuIHx8IFtdKS5maW5kKGZ1bmN0aW9uKHgpIHsgcmV0dXJu IG1hdGNoKHgubndLZW5udW5nKTsgfSk7CiAgICBpZiAocCkgewogICAgICAgIHZhciB2b2xsID0g KChwLnZvcm5hbWUgfHwgJycpICsgJyAnICsgKHAubmFtZSB8fCAnJykpLnRyaW0oKTsKICAgICAg ICBpZiAodm9sbCkgcmV0dXJuIHZvbGw7CiAgICB9CiAgICB2YXIgZmEgPSAoWi5hZG1pbiAmJiBa LmFkbWluLmZhY2hhdWZzaWNodCB8fCBbXSkuZmluZChmdW5jdGlvbih4KSB7IHJldHVybiBtYXRj aCh4Lm53S2VubnVuZyk7IH0pOwogICAgaWYgKGZhICYmIGZhLm5hbWUpIHJldHVybiBmYS5uYW1l OwogICAgdmFyIHN1ID0gKFouYWRtaW4gJiYgWi5hZG1pbi5zdXBlclVzZXIgfHwgW10pLmZpbmQo ZnVuY3Rpb24oeCkgeyByZXR1cm4gbWF0Y2goeC5ud0tlbm51bmcpOyB9KTsKICAgIGlmIChzdSAm JiBzdS5uYW1lKSByZXR1cm4gc3UubmFtZTsKICAgIHJldHVybiBrS3VyeiB8fCBTdHJpbmcoa2Vu bnVuZyk7Cn0KCi8vIEUtTWFpbC1BZHJlc3NlIGRlcyBlaW5nZWxvZ2d0ZW4gUGxhbmVuZGVuIChm dWVyIENDIGJlaSBWZXJhbnR3b3J0dW5ncy1NYWlscykuCi8vIEJldm9yenVndCBkaWUgenVnZW9y ZG5ldGUgUGxhbi1QZXJzb24sIHNvbnN0IE1hdGNoIHVlYmVyIGRpZSBOVy1LZW5udW5nIGluCi8v IFBlcnNvbmVuIC8gRmFjaGF1ZnNpY2h0IC8gU3VwZXJVc2VyLiAnJyB3ZW5uIG5pY2h0cyBoaW50 ZXJsZWd0LgpleHBvcnQgZnVuY3Rpb24gYXVzbG9lc2VyRW1haWxFcm1pdHRlbG4oKSB7CiAgICBp ZiAoWi5tZWluZVBlcnNvbklkICE9IG51bGwpIHsKICAgICAgICB2YXIgbXAgPSAoWi5wZXJzb25l biB8fCBbXSkuZmluZChmdW5jdGlvbih4KSB7IHJldHVybiBTdHJpbmcoeC5pZCkgPT09IFN0cmlu ZyhaLm1laW5lUGVyc29uSWQpOyB9KTsKICAgICAgICBpZiAobXAgJiYgbXAuZW1haWwpIHJldHVy biBtcC5lbWFpbDsKICAgIH0KICAgIHZhciBiID0gKFouYmVudXR6ZXIgfHwgJycpLnRvTG93ZXJD YXNlKCk7CiAgICB2YXIgYkt1cnogPSBiLnNwbGl0KCdcXCcpLnBvcCgpOwogICAgZnVuY3Rpb24g bWF0Y2goaykgeyBpZiAoIWspIHJldHVybiBmYWxzZTsgayA9IFN0cmluZyhrKS50b0xvd2VyQ2Fz ZSgpOyByZXR1cm4gayA9PT0gYiB8fCBrID09PSBiS3VyeiB8fCBiLmVuZHNXaXRoKCdcXCcgKyBr KTsgfQogICAgdmFyIHAgPSAoWi5wZXJzb25lbiB8fCBbXSkuZmluZChmdW5jdGlvbih4KSB7IHJl dHVybiBtYXRjaCh4Lm53S2VubnVuZykgJiYgeC5lbWFpbDsgfSk7CiAgICBpZiAocCkgcmV0dXJu IHAuZW1haWw7CiAgICB2YXIgZmEgPSAoWi5hZG1pbiAmJiBaLmFkbWluLmZhY2hhdWZzaWNodCB8 fCBbXSkuZmluZChmdW5jdGlvbih4KSB7IHJldHVybiBtYXRjaCh4Lm53S2VubnVuZykgJiYgeC5l bWFpbDsgfSk7CiAgICBpZiAoZmEpIHJldHVybiBmYS5lbWFpbDsKICAgIHZhciBzdSA9IChaLmFk bWluICYmIFouYWRtaW4uc3VwZXJVc2VyIHx8IFtdKS5maW5kKGZ1bmN0aW9uKHgpIHsgcmV0dXJu IG1hdGNoKHgubndLZW5udW5nKSAmJiB4LmVtYWlsOyB9KTsKICAgIGlmIChzdSkgcmV0dXJuIHN1 LmVtYWlsOwogICAgcmV0dXJuICcnOwp9CgovLyBGaW5kZXQgZGVuIEFkbWluLUxpc3Rlbi1FaW50 cmFnIChGYWNoYXVmc2ljaHQgb2RlciBTdXBlclVzZXIpLCBkZXIgenVyCi8vIGFrdHVlbGxlbiBO Vy1LZW5udW5nIHBhc3N0IOKAlCBmdWVyIEFic2VuZGVyLU5hbWUgaW4gZGVyIGdlbmVyaWVydGVu IE1haWwuCmV4cG9ydCBmdW5jdGlvbiBhYnNlbmRlck5hbWVFcm1pdHRlbG4oKSB7CiAgICB2YXIg YiA9IChaLmJlbnV0emVyIHx8ICcnKS50b0xvd2VyQ2FzZSgpOwogICAgdmFyIGJLdXJ6ID0gYi5z cGxpdCgnXFwnKS5wb3AoKTsKICAgIGZ1bmN0aW9uIG1hdGNoS2VubnVuZyhrKSB7CiAgICAgICAg aWYgKCFrKSByZXR1cm4gZmFsc2U7CiAgICAgICAgayA9IGsudG9Mb3dlckNhc2UoKTsKICAgICAg ICByZXR1cm4gayA9PT0gYiB8fCBrID09PSBiS3VyeiB8fCBiLmVuZHNXaXRoKCdcXCcgKyBrKTsK ICAgIH0KICAgIHZhciBmYSA9IG51bGw7CiAgICAoWi5hZG1pbi5mYWNoYXVmc2ljaHQgfHwgW10p LmZvckVhY2goZnVuY3Rpb24oZikgeyBpZiAobWF0Y2hLZW5udW5nKGYubndLZW5udW5nKSkgZmEg PSBmOyB9KTsKICAgIGlmIChmYSAmJiBmYS5uYW1lKSByZXR1cm4gZmEubmFtZTsKICAgIHZhciBz dSA9IG51bGw7CiAgICAoWi5hZG1pbi5zdXBlclVzZXIgfHwgW10pLmZvckVhY2goZnVuY3Rpb24o cykgeyBpZiAobWF0Y2hLZW5udW5nKHMubndLZW5udW5nKSkgc3UgPSBzOyB9KTsKICAgIGlmIChz dSAmJiBzdS5uYW1lKSByZXR1cm4gc3UubmFtZTsKICAgIHJldHVybiBaLmJlbnV0emVyIHx8ICdW STMgREdMLVBsYW51bmcnOwp9Cg== ### FILE: js/email_vorlagen.js | 41671 Ly8gPT09IGVtYWlsL2VtYWlsLXZvcmxhZ2VuLmpzID09PQovLyBTdGFuZDogMjAyNi0wNS0xNAov LyBWSTMtc3BlemlmaXNjaDogRS1NYWlsLVZvcmxhZ2VuIChEZWZhdWx0cyArIGFkbWluLmpzb24t T3ZlcnJpZGUpIHVuZAovLyBtYWlsdG86LUF1dG8tVHJpZ2dlci1EaXNwYXRjaGVyIGZ1ZXIgS3Jh bmttZWxkdW5nLCBJZGVudGl0YWV0cy0vUm9sbGVuLQovLyBBZW5kZXJ1bmcsIEJhY2t1cC1XaWVk ZXJoZXJzdGVsbHVuZywgUGxhbnVuZ3MtUmVzZXQsIERlZml6aXQtQnJpZWZpbmcsCi8vIFZlcmFu dHdvcnR1bmdzLVVlYmVyZ2FuZywgQmVzZXR6dW5ncy1BbmZyYWdlLiBWZXJzYW5kOiBhdXNzY2hs aWVzc2xpY2gKLy8gbWFpbHRvOjsgZGVyIFVzZXIgcHJ1ZWZ0IGRpZSBNYWlsIGluIE91dGxvb2sg dW5kIHNlbmRldCBtYW51ZWxsLgovLwovLyBIb29rczogaHRtbEF1c0ZlbGQgKFBoYXNlIDgg4oCU IGFkbWluLUhlbHBlciwgZGVyIERlZmF1bHQtUGxhaW50ZXh0IHp1Ci8vIEhUTUwga29udmVydGll cnQgYmVpbSBNb2RhbC1PcGVuKS4KCmltcG9ydCB7IFogfSBmcm9tICcuL2NvcmVfc3RhdGUuanMn OwppbXBvcnQgeyBlc2NhcGVIVE1MLCBlc2NhcGVBdHRyLCBhYnNlbmRlck5hbWVFcm1pdHRlbG4g fSBmcm9tICcuL2NvcmVfdXRpbC5qcyc7CmltcG9ydCB7IHRvYXN0LCBtb2RhbFplaWdlbiwgbW9k YWxTY2hsaWVzc2VuLCBlbnR3dXJmTG9lc2NoZW4gfSBmcm9tICcuL3VpX2RpYWxvZy5qcyc7Cmlt cG9ydCB7IHNhbml0aXplUmljaEh0bWwsIHJ0ZUluaXQgfSBmcm9tICcuL3VpX3J0ZS5qcyc7Cmlt cG9ydCB7IGFwaVB1dCB9IGZyb20gJy4vY29yZV9hcGkuanMnOwoKLy8gPT09PT0gSG9va3MgPT09 PT0KCmV4cG9ydCB2YXIgZW1haWxIb29rcyA9IHsKICAgIGh0bWxBdXNGZWxkOiBudWxsICAvLyBQ aGFzZSA4OiBrb252ZXJ0aWVydCBQbGFpbi1UZXh0LUZlbGQgenUgSFRNTCBmdWVyIGRlbiBSVEUt RWRpdG9yCn07CgovLyA9PT09PSBLb25zdGFudGVuID09PT09CgovLyBEZWZhdWx0LVRlbXBsYXRl LCBkYXMgZ3JlaWZ0IHdlbm4gaW4gYWRtaW4uanNvbiBub2NoIG5pY2h0cyBlaW5nZXRyYWdlbiBp c3QuCi8vIFZhcmlhYmxlbiBzaWVoZSBIaW53ZWlzdGV4dCBpbSBBZG1pbi1UYWIgYnp3LiBlbWFp bFZvcmxhZ2VCZWZ1ZWxsZW4oKS4KLy8gQWxsZSBWb3JsYWdlbi1UZXh0ZSBzaW5kIGluIGRlciBE dS1Gb3JtIGZvcm11bGllcnQg4oCUIGtvbGxlZ2lhbCwKLy8gZnJldW5kbGljaCwgcHJvZmVzc2lv bmVsbC4gTWFpbHRvOi1CdWlsZGVyIGZ1ZXIgZGllIFNhbW1lbC1WYXJpYW50ZQovLyAoc2FtbWVs QW5mcmFnZU1haWxPZWZmbmVuIGluIGJlc2V0enVuZy5qcykgcHJ1ZWZ0LCBvYiBudXIgZWluCi8v IEVtcGZhZW5nZXIgYXVzZ2V3YWVobHQgaXN0IHVuZCBlcnNldHp0ICdIYWxsbyB6dXNhbW1lbicg aW1wbGl6aXQKLy8gZHVyY2ggJ0hhbGxvIHtlbXBmYWVuZ2VyX3Zvcm5hbWV9JyB2aWEgQ29udGV4 dC1WYXJpYWJsZS4KZXhwb3J0IHZhciBFTUFJTF9WT1JMQUdFTl9ERUZBVUxUID0gewogICAgLy8g U2FtbWVsLUFuZnJhZ2UgKG1laHJlcmUgS2FuZGlkYXRlbiBnbGVpY2h6ZWl0aWcpOiBQbHVyYWwt QW5yZWRlLAogICAgLy8gRW1wZmFlbmdlciBhbHMgQkNDIChEYXRlbnNjaHV0ejogYW5kZXJlIEFk cmVzc2F0ZW4gbmljaHQgc2ljaHRiYXIpLgogICAgLy8gV2lyZCBiZW51dHp0LCB3ZW5uIGF1cyBk ZW0gVGFnLURldGFpbCBtZWhyZXJlIFBlcnNvbmVuIG1hcmtpZXJ0CiAgICAvLyB3ZXJkZW4g4oCU IFNpbmd1bGFyLVZhcmlhbnRlICdiZXNldHp1bmdzQW5mcmFnZV9laW56ZWxuJyBzaWVoZSB1bnRl bi4KICAgIGJlc2V0enVuZ3NBbmZyYWdlOiB7CiAgICAgICAgYmV0cmVmZjogJ0F1c2hpbGZlIGdl c3VjaHQ6IHtzY2hpY2h0fXNjaGljaHQgYW0ge2RhdHVtfSAoe2lzdH0ve3NvbGx9KScsCiAgICAg ICAgdGV4dDogJ0hhbGxvIHp1c2FtbWVuLFxuXG4nICsKICAgICAgICAgICAgICAnYW0ge2RhdHVt fSAoe3dvY2hlbnRhZ30pIGlzdCBkaWUge3NjaGljaHR9c2NoaWNodCBha3R1ZWxsIHVudGVyYmVz ZXR6dCDigJQgbnVyIHtpc3R9IHZvbiB7c29sbH0gRsO8aHJ1bmdza3LDpGZ0ZW4gZWluZ2VwbGFu dC5cblxuJyArCiAgICAgICAgICAgICAgJ0lociBoYWJ0IGFuIGRlbSBUYWcgamV3ZWlscyBkaWVu c3RmcmVpIG9kZXIgd2FjaGZyZWkgZWluZ2V0cmFnZW4uIE1hZyBqZW1hbmQgdm9uIEV1Y2ggbm9j aCBlaW5tYWwgc2NoYXVlbiwgb2IgZXIgb2RlciBzaWUgYW4gZGVtIFRhZyBhdXNoZWxmZW4ga8O2 bm50ZT8gSWNoIHdlacOfLCBkYXMgaXN0IGt1cnpmcmlzdGlnIOKAlCB3ZW5uIGVzIGJlaSBuaWVt YW5kZW0gcGFzc3QsIGlzdCBkYXMgYXVjaCBpbiBPcmRudW5nLCBkYW5uIGZyYWdlIGljaCB3ZWl0 ZXIuXG5cbicgKwogICAgICAgICAgICAgICdCZWkgRnJhZ2VuIG9kZXIga3VyemVtIFRlbGVmb25h dDogbWVsZGV0IGV1Y2ggZWluZmFjaC5cblxuJyArCiAgICAgICAgICAgICAgJ0RhbmtlIHVuZCB2 aWVsZSBHcsO8w59lXG4nICsKICAgICAgICAgICAgICAne2Fic2VuZGVyX25hbWV9JywKICAgICAg ICBlbXBmYWVuZ2VySW1CY2M6IHRydWUKICAgIH0sCiAgICAvLyBFaW56ZWwtQW5mcmFnZSAoZ2Vu YXUgZWluIEthbmRpZGF0IG1hcmtpZXJ0KTogcGVyc29lbmxpY2hlIER1LUZvcm0KICAgIC8vIHVu ZCBTaW5ndWxhci1BbnNwcmFjaGUsIEVtcGZhZW5nZXIgZGlyZWt0IGltIEFuLUZlbGQgKGtlaW4g R3J1bmQKICAgIC8vIGZ1ZXIgQkNDLCB3ZWlsIG51ciBlaW5lIFBlcnNvbikuCiAgICBiZXNldHp1 bmdzQW5mcmFnZV9laW56ZWxuOiB7CiAgICAgICAgYmV0cmVmZjogJ0F1c2hpbGZlIGdlc3VjaHQ6 IHtzY2hpY2h0fXNjaGljaHQgYW0ge2RhdHVtfScsCiAgICAgICAgdGV4dDogJ0hhbGxvIHtlbXBm YWVuZ2VyX3Zvcm5hbWV9LFxuXG4nICsKICAgICAgICAgICAgICAnYW0ge2RhdHVtfSAoe3dvY2hl bnRhZ30pIGlzdCBkaWUge3NjaGljaHR9c2NoaWNodCBha3R1ZWxsIHVudGVyYmVzZXR6dCDigJQg bnVyIHtpc3R9IHZvbiB7c29sbH0gRsO8aHJ1bmdza3LDpGZ0ZW4gZWluZ2VwbGFudC5cblxuJyAr CiAgICAgICAgICAgICAgJ0R1IGhhc3QgYW4gZGVtIFRhZyBkaWVuc3RmcmVpIG9kZXIgd2FjaGZy ZWkgZWluZ2V0cmFnZW4uIE1hZ3N0IER1IG5vY2ggZWlubWFsIHNjaGF1ZW4sIG9iIER1IGFuIGRl bSBUYWcgYXVzaGVsZmVuIGvDtm5udGVzdD8gSWNoIHdlacOfLCBkYXMgaXN0IGt1cnpmcmlzdGln IOKAlCB3ZW5uIGVzIGJlaSBEaXIgbmljaHQgcGFzc3QsIGlzdCBkYXMgdsO2bGxpZyBpbiBPcmRu dW5nLCBkYW5uIGZyYWdlIGljaCB3ZWl0ZXIuXG5cbicgKwogICAgICAgICAgICAgICdXZW5uIER1 IEZyYWdlbiBoYXN0IG9kZXIga3VyeiB0ZWxlZm9uaWVyZW4gbcO2Y2h0ZXN0LCBtZWxkZSBEaWNo IGVpbmZhY2guXG5cbicgKwogICAgICAgICAgICAgICdEYW5rZSB1bmQgdmllbGUgR3LDvMOfZVxu JyArCiAgICAgICAgICAgICAgJ3thYnNlbmRlcl9uYW1lfScsCiAgICAgICAgZW1wZmFlbmdlcklt QmNjOiBmYWxzZQogICAgfSwKICAgIC8vIEVJTkUgU2FtbWVsLU1haWwgYmVpIGplZGVtIFZlcmFu dHdvcnR1bmdzd2VjaHNlbCBpbm5lcmhhbGIgZGVzIDE0LVRhZ2UtCiAgICAvLyBWZXJiaW5kbGlj aGtlaXRzZmVuc3RlcnMuIEluZm9ybWllcnQgaW4gRUlORVIgTWFpbCBBTExFIEJldHJvZmZlbmVu OiB3ZXIKICAgIC8vIG5ldSBpbiBkaWUgVG9wLTItRnVlaHJ1bmcgYXVmcnVlY2t0IFVORCB3ZXIg ZGFkdXJjaCBoZXJhdXNmYWVsbHQgKHVuZAogICAgLy8gZmxleGlibGVyIHBsYW5lbiBrYW5uKS4g RGllIGVpbnplbG5lbiBCZXdlZ3VuZ2VuIHN0ZWhlbiBhbHMgZ2VuZXJpZXJ0ZXIKICAgIC8vIEJs b2NrIGltIFBsYXR6aGFsdGVyIHt3ZWNoc2VsX2Jsb2NrfS4gQmV3dXNzdCBFSU5FIE1haWwgYW4g YWxsZSBzdGF0dAogICAgLy8gbWVocmVyZXIgRWluemVsLU1haWxzIOKAlCBzbyBtdXNzIGRlciBQ bGFuZW5kZSBudXIgZWlubWFsIGtsaWNrZW4uCiAgICB2ZXJhbnR3b3J0dW5nc1VlYmVyZ2FuZzog ewogICAgICAgIGJldHJlZmY6ICdWZXJhbnR3b3J0dW5nc3dlY2hzZWw6IHtzY2hpY2h0fXNjaGlj aHQgYW0ge2RhdHVtfScsCiAgICAgICAgdGV4dDogJ0hhbGxvLFxuXG4nICsKICAgICAgICAgICAg ICAnZHVyY2ggZWluZSBQbGFudW5nc8OkbmRlcnVuZyBhbSB7ZGF0dW19ICh7d29jaGVudGFnfSkg w6RuZGVydCBzaWNoIGRpZSBGw7xocnVuZ3MtVmVyYW50d29ydHVuZyBkZXIge3NjaGljaHR9c2No aWNodDpcblxuJyArCiAgICAgICAgICAgICAgJ3t3ZWNoc2VsX2Jsb2NrfVxuXG4nICsKICAgICAg ICAgICAgICAnRGllIMOEbmRlcnVuZyBsaWVndCBpbm5lcmhhbGIgZGVzIDE0LVRhZ2UtVmVyYmlu ZGxpY2hrZWl0c2ZlbnN0ZXJzIOKAlCBiaXR0ZSBrdXJ6IHByw7xmZW4sIG9iIGFsbGVzIHBhc3N0 LCBvZGVyIGVpbmUga3VyemUgUsO8Y2ttZWxkdW5nIGdlYmVuLlxuXG4nICsKICAgICAgICAgICAg ICAnVmllbGUgR3LDvMOfZVxuJyArCiAgICAgICAgICAgICAgJ3thYnNlbmRlcl9uYW1lfScsCiAg ICAgICAgY2NBbmRlcmVyRGdsOiB0cnVlLAogICAgICAgIGJjY0dlc2FtdHZlcmFudHdvcnRsaWNo OiB0cnVlLAogICAgICAgIGNjQXVzbG9lc2VyOiB0cnVlCiAgICB9LAogICAgLy8gU1UtIG9kZXIg R2VzYW10dmVyYW50d29ydGxpY2gtU3RhdHVzIGhhdCBzaWNoIGdlYWVuZGVydCAocmVpbi9yYXVz KS4KICAgIC8vIFdpcmQgdm9tIFNlcnZlciBiZWkgL2FwaS9hZG1pbi9zdXBlcnVzZXIgYnp3LiAv YXBpL2FkbWluL2ZhY2hhdWZzaWNodAogICAgLy8gaW0gUmVzcG9uc2UgYWxzIF9icmF1Y2h0X21h aWx0byBhbmdlemVpZ3Q7IENsaWVudCBvZWZmbmV0IGRpZSBPdXRsb29rLQogICAgLy8gVm9ybGFn ZS4gSW0gR2VnZW5zYXR6IHp1IHZlcmFudHdvcnR1bmdzVWViZXJnYW5nIGlzdCBkYXMgS0VJTgog ICAgLy8gU2NoaWNodGJldHJpZWItRXJlaWduaXMsIHNvbmRlcm4gZWluIGFkbWluaXN0cmF0aXZl ciBSb2xsZW4tV2VjaHNlbC4KICAgIHJvbGxlX3ZlcmFudHdvcnR1bmc6IHsKICAgICAgICBiZXRy ZWZmOiAne3JvbGxlfToge25hbWV9IHtyaWNodHVuZ192ZXJifScsCiAgICAgICAgdGV4dDogJ0hh bGxvIHtuYW1lfSxcblxuJyArCiAgICAgICAgICAgICAgJ2R1IHd1cmRlc3Qge3JpY2h0dW5nX3Zl cmJ9OlxuXG4nICsKICAgICAgICAgICAgICAnICBSb2xsZTogICAge3JvbGxlfVxuJyArCiAgICAg ICAgICAgICAgJyAgV2lya3NhbTogIGFiIHNvZm9ydFxuXG4nICsKICAgICAgICAgICAgICAnQmVp IFLDvGNrZnJhZ2VuIG1lbGRlIGRpY2ggYmVpbSBHZXNhbXR2ZXJhbnR3b3J0bGljaGVuIG9kZXIg ZWluZW0gU3VwZXJVc2VyLlxuXG4nICsKICAgICAgICAgICAgICAnVmllbGUgR3LDvMOfZVxuJyAr CiAgICAgICAgICAgICAgJ3thYnNlbmRlcl9uYW1lfScKICAgIH0sCiAgICAvLyBBdXRvLVRyaWdn ZXItVm9ybGFnZW4g4oCUIHdlcmRlbiBiZWltIHBhc3NlbmRlbiBTYXZlLUNhbGxiYWNrCiAgICAv LyAoU2NoaWNodC1FZGl0L1BlcnNvbi1TYXZlL0JhY2t1cC1SZXN0b3JlL1Jlc2V0L1NVK0ZBLURp ZmYpIHZvbQogICAgLy8gRnJvbnRlbmQtRGlzcGF0Y2hlciBtYWlsVHJpZ2dlckZldWVybigpIGFs cyBtYWlsdG86LVBvcHVwIGF1ZmdlcnVmZW4uCiAgICAvLyBFbXBmYWVuZ2VybGlzdGUgcHJvIFRy aWdnZXIgaW4gYWRtaW4uZW1haWxUcmlnZ2VyLjx0eXA+LmVtcGZhZW5nZXIuCiAgICAvLyBWb3Js YWdlbi1IVE1MIHdpcmQgYmVpbSBWZXJzYW5kIHZpYSBodG1sWnVQbGFpblRleHQoKSBpbiBLbGFy dGV4dAogICAgLy8gdW1nZXdhbmRlbHQgKG1haWx0bzoga2FubiBrZWluZSBIVE1MLU1haWxzKS4K ICAgIGtyYW5rbWVsZHVuZzogewogICAgICAgIGJldHJlZmY6ICdLcmFua21lbGR1bmc6IHtwZXJz b25fbmFtZX0gYW0ge2RhdHVtfSAoe3NjaGljaHR9KScsCiAgICAgICAgdGV4dDogJzxwPkhhbGxv LDwvcD4nICsKICAgICAgICAgICAgICAnPHA+ZsO8ciB7cGVyc29uX25hbWV9IGlzdCBlaW5lIEty YW5rbWVsZHVuZyBlaW5nZXRyYWdlbiB3b3JkZW46PC9wPjx1bD4nICsKICAgICAgICAgICAgICAn PGxpPjxzdHJvbmc+RGF0dW06PC9zdHJvbmc+IHtkYXR1bX0gKHt3b2NoZW50YWd9KTwvbGk+JyAr CiAgICAgICAgICAgICAgJzxsaT48c3Ryb25nPlNjaGljaHQ6PC9zdHJvbmc+IHtzY2hpY2h0fTwv bGk+JyArCiAgICAgICAgICAgICAgJzxsaT48c3Ryb25nPkNvZGU6PC9zdHJvbmc+IHtjb2RlfTwv bGk+JyArCiAgICAgICAgICAgICAgJzxsaT48c3Ryb25nPkVpbmdldHJhZ2VuIHZvbjo8L3N0cm9u Zz4ge2F1c2zDtnNlcn08L2xpPicgKwogICAgICAgICAgICAgICc8L3VsPjxwPkJpdHRlIGVpbm1h bCBzY2hhdWVuLCBvYiBFcnNhdHogb3JnYW5pc2llcnQgd2VyZGVuIG11c3MuIERhbmtlITwvcD4n CiAgICB9LAogICAgaWRlbnRpdGFldF9nZWFlbmRlcnQ6IHsKICAgICAgICBiZXRyZWZmOiAnSWRl bnRpdMOkdHMtRGF0ZW4gZ2XDpG5kZXJ0OiB7cGVyc29uX25hbWV9JywKICAgICAgICB0ZXh0OiAn PHA+SGFsbG8sPC9wPicgKwogICAgICAgICAgICAgICc8cD5mb2xnZW5kZSBJZGVudGl0w6R0cy1E YXRlbiB3dXJkZW4gZ2XDpG5kZXJ0OjwvcD48dWw+JyArCiAgICAgICAgICAgICAgJzxsaT48c3Ry b25nPlBlcnNvbjo8L3N0cm9uZz4ge3BlcnNvbl9uYW1lfTwvbGk+JyArCiAgICAgICAgICAgICAg JzxsaT48c3Ryb25nPkdlw6RuZGVydGVzIEZlbGQ6PC9zdHJvbmc+IHtmZWxkfTwvbGk+JyArCiAg ICAgICAgICAgICAgJzxsaT48c3Ryb25nPlZvcmhlcjo8L3N0cm9uZz4ge2FsdGVyX3dlcnR9PC9s aT4nICsKICAgICAgICAgICAgICAnPGxpPjxzdHJvbmc+TmFjaGhlcjo8L3N0cm9uZz4ge25ldWVy X3dlcnR9PC9saT4nICsKICAgICAgICAgICAgICAnPGxpPjxzdHJvbmc+R2XDpG5kZXJ0IHZvbjo8 L3N0cm9uZz4ge2F1c2zDtnNlcn08L2xpPicgKwogICAgICAgICAgICAgICc8L3VsPjxwPkZhbGxz IGRpZXNlIMOEbmRlcnVuZyBuaWNodCBkdXJjaCBkaWNoIG9kZXIgbWl0IGRlaW5lbSBXaXNzZW4g ZXJmb2xndCBpc3QsIG1lbGRlIGRpY2ggYml0dGUgdW1nZWhlbmQgYmVpIGVpbmVtIFN1cGVyVXNl ci48L3A+JwogICAgfSwKICAgIHJvbGxlX2dlYWVuZGVydDogewogICAgICAgIGJldHJlZmY6ICdS b2xsZW4tU3RhdHVzIGdlw6RuZGVydDoge3BlcnNvbl9uYW1lfSDihpIge25ldWVfcm9sbGV9JywK ICAgICAgICB0ZXh0OiAnPHA+SGFsbG8sPC9wPicgKwogICAgICAgICAgICAgICc8cD5kZXIgUm9s bGVuLVN0YXR1cyB3dXJkZSBnZcOkbmRlcnQ6PC9wPjx1bD4nICsKICAgICAgICAgICAgICAnPGxp PjxzdHJvbmc+UGVyc29uOjwvc3Ryb25nPiB7cGVyc29uX25hbWV9PC9saT4nICsKICAgICAgICAg ICAgICAnPGxpPjxzdHJvbmc+Um9sbGU6PC9zdHJvbmc+IHtyb2xsZV90eXB9PC9saT4nICsKICAg ICAgICAgICAgICAnPGxpPjxzdHJvbmc+QWt0aW9uOjwvc3Ryb25nPiB7YWt0aW9ufTwvbGk+JyAr CiAgICAgICAgICAgICAgJzxsaT48c3Ryb25nPkdlw6RuZGVydCB2b246PC9zdHJvbmc+IHthdXNs w7ZzZXJ9PC9saT4nICsKICAgICAgICAgICAgICAnPC91bD48cD5OdXIgenUgZGVpbmVyIEluZm9y bWF0aW9uIOKAlCBiZWkgRnJhZ2VuIGVpbmZhY2ggbWVsZGVuLjwvcD4nCiAgICB9LAogICAgYmFj a3VwX3dpZWRlcmhlcmdlc3RlbGx0OiB7CiAgICAgICAgYmV0cmVmZjogJ0JhY2t1cCB3aWVkZXJo ZXJnZXN0ZWxsdDoge2RhdGVpbmFtZX0nLAogICAgICAgIHRleHQ6ICc8cD5IYWxsbyw8L3A+JyAr CiAgICAgICAgICAgICAgJzxwPmVpbiBCYWNrdXAgd3VyZGUgd2llZGVyaGVyZ2VzdGVsbHQ6PC9w Pjx1bD4nICsKICAgICAgICAgICAgICAnPGxpPjxzdHJvbmc+UXVlbGwtRGF0ZWk6PC9zdHJvbmc+ IHtkYXRlaW5hbWV9PC9saT4nICsKICAgICAgICAgICAgICAnPGxpPjxzdHJvbmc+SW5oYWx0Ojwv c3Ryb25nPiB7aW5oYWx0fTwvbGk+JyArCiAgICAgICAgICAgICAgJzxsaT48c3Ryb25nPlNpY2hl cnVuZyBkZXIgdm9yaGVyaWdlbiBEYXRlbjo8L3N0cm9uZz4ge3NpY2hlcnVuZ308L2xpPicgKwog ICAgICAgICAgICAgICc8bGk+PHN0cm9uZz5XaWVkZXJoZXJnZXN0ZWxsdCB2b246PC9zdHJvbmc+ IHthdXNsw7ZzZXJ9PC9saT4nICsKICAgICAgICAgICAgICAnPC91bD48cD5OdXIgenVyIEluZm9y bWF0aW9uLjwvcD4nCiAgICB9LAogICAgcGxhbnVuZ19yZXNldDogewogICAgICAgIGJldHJlZmY6 ICdQbGFudW5nIHp1csO8Y2tnZXNldHp0JywKICAgICAgICB0ZXh0OiAnPHA+SGFsbG8sPC9wPicg KwogICAgICAgICAgICAgICc8cD5kaWUgZ2VzYW10ZSBQbGFudW5nIHd1cmRlIHp1csO8Y2tnZXNl dHp0OjwvcD48dWw+JyArCiAgICAgICAgICAgICAgJzxsaT48c3Ryb25nPkF1dG8tQmFja3VwIHZv cmFiOjwvc3Ryb25nPiB7c2ljaGVydW5nfTwvbGk+JyArCiAgICAgICAgICAgICAgJzxsaT48c3Ry b25nPlp1csO8Y2tnZXNldHp0IHZvbjo8L3N0cm9uZz4ge2F1c2zDtnNlcn08L2xpPicgKwogICAg ICAgICAgICAgICc8L3VsPjxwPkJlaSBCZWRhcmYga8O2bm5lbiB3aXIgZGFzIEF1dG8tQmFja3Vw IGplZGVyemVpdCB3aWVkZXIgZWluc3BpZWxlbi48L3A+JwogICAgfSwKICAgIGRlZml6aXRfYnJp ZWZpbmc6IHsKICAgICAgICBiZXRyZWZmOiAnVMOkZ2xpY2hlcyBEZWZpeml0LUJyaWVmaW5nOiB7 ZGVmaXppdF9hbnphaGx9IFRhZyhlKSBtaXQgVW50ZXJiZXNldHp1bmcnLAogICAgICAgIHRleHQ6 ICc8cD5IYWxsbyw8L3A+JyArCiAgICAgICAgICAgICAgJzxwPlN0YW5kIGhldXRlIG1vcmdlbiDi gJQgRsO8aHJ1bmdzLVVudGVyYmVzZXR6dW5nZW4gaW4gZGVuIG7DpGNoc3RlbiA0IFdvY2hlbjo8 L3A+JyArCiAgICAgICAgICAgICAgJzxwPjxzdHJvbmc+e2RlZml6aXRfYW56YWhsfTwvc3Ryb25n PiB2b24ge2dlc2FtdF9hbnphaGx9IFRhZ2VuIHNpbmQgbmljaHQgdm9sbHN0w6RuZGlnIGJlc2V0 enQuPC9wPicgKwogICAgICAgICAgICAgICc8cD57ZGVmaXppdF9saXN0ZV9odG1sfTwvcD4nICsK ICAgICAgICAgICAgICAnPHA+RGV0YWlscyBmaW5kZXN0IGR1IGltIFRhYiA8ZW0+UHLDvGZ1bmc8 L2VtPi4gQmVpIFLDvGNrZnJhZ2VuIGVpbmZhY2ggbWVsZGVuLjwvcD4nCiAgICB9Cn07CgovLyBN ZXRhLURhdGVuIGRlciBFLU1haWwtU3plbmFyaWVuIOKAlCBzdGV1ZXJ0IEthcnRlbi1MaXN0ZSwg TW9kYWwtVmFyaWFibGVuLCBUb2dnbGVzLgpleHBvcnQgdmFyIEVNQUlMX1ZBUklBQkxFTl9CRVND SFJFSUJVTkcgPSB7CiAgICBkYXR1bTogICAgICAgICAgICdEYXR1bSAoei5CLiAxNC4wNS4yMDI2 KScsCiAgICB3b2NoZW50YWc6ICAgICAgICdXb2NoZW50YWcgKE1vbnRhZywgRGllbnN0YWcsIC4u LiknLAogICAgc2NoaWNodDogICAgICAgICAnRnLDvGgsIFNww6R0IG9kZXIgTmFjaHQnLAogICAg c2NoaWNodF9rdXJ6OiAgICAnRiwgUyBvZGVyIE4nLAogICAgaXN0OiAgICAgICAgICAgICAnQWt0 dWVsbCBiZXNldHp0ZSBGw7xocnVuZ3NrcsOkZnRlJywKICAgIHNvbGw6ICAgICAgICAgICAgJ0Vy Zm9yZGVybGljaGUgRsO8aHJ1bmdza3LDpGZ0ZSAoZmVzdCAyKScsCiAgICBkZWZpeml0OiAgICAg ICAgICdGZWhsZW5kZSBBbnphaGwgKHNvbGwg4oiSIGlzdCknLAogICAgYWJzZW5kZXJfbmFtZTog ICAnTmFtZSBkZXMgR2VzYW10dmVyYW50d29ydGxpY2hlbicsCiAgICB3ZWNoc2VsX2Jsb2NrOiAg ICdBdXRvbWF0aXNjaCBlcnpldWd0ZSBMaXN0ZSBhbGxlciBCZXdlZ3VuZ2VuICh3ZXIgYXVmcsO8 Y2t0LCB3ZXIgaGVyYXVzZsOkbGx0KSDigJQgamUgZWluZSBaZWlsZSBwcm8gUGVyc29uJywKICAg IG5hbWU6ICAgICAgICAgICAgJ05hbWUgZGVyIGJldHJvZmZlbmVuIFBlcnNvbicsCiAgICBwZXJz b25fbmFtZTogICAgICdWb3ItIHVuZCBOYWNobmFtZSBkZXIgYmV0cm9mZmVuZW4gUGVyc29uJywK ICAgIGNvZGU6ICAgICAgICAgICAgJ1NjaGljaHRjb2RlICh6LkIuIGtyLCBLdXIpJywKICAgICdh dXNsw7ZzZXInOiAgICAgJ05XLUtlbm51bmcgZGVyIFBlcnNvbiwgZGllIGRpZSBBa3Rpb24gYXVz Z2Vsw7ZzdCBoYXQnLAogICAgZmVsZDogICAgICAgICAgICAnR2XDpG5kZXJ0ZXMgRmVsZCAoei5C LiBud0tlbm51bmcsIGVtYWlsKScsCiAgICBhbHRlcl93ZXJ0OiAgICAgICdXZXJ0IHZvciBkZXIg w4RuZGVydW5nJywKICAgIG5ldWVyX3dlcnQ6ICAgICAgJ1dlcnQgbmFjaCBkZXIgw4RuZGVydW5n JywKICAgIHJvbGxlX3R5cDogICAgICAgJ1N1cGVyVXNlciBvZGVyIEZhY2hhdWZzaWNodCcsCiAg ICBha3Rpb246ICAgICAgICAgICdoaW56dWdlZsO8Z3Qgb2RlciBlbnRmZXJudCcsCiAgICBuZXVl X3JvbGxlOiAgICAgICdOZXVlIFJvbGxlbi1CZXplaWNobnVuZycsCiAgICByb2xsZTogICAgICAg ICAgICdTdXBlclVzZXIgb2RlciBHZXNhbXR2ZXJhbnR3b3J0bGljaCcsCiAgICBuYW1lOiAgICAg ICAgICAgICdOYW1lIGRlciBiZXRyb2ZmZW5lbiBQZXJzb24nLAogICAgcmljaHR1bmc6ICAgICAg ICAncmVpbiBvZGVyIHJhdXMnLAogICAgcmljaHR1bmdfdmVyYjogICAn4oCeenVtIFggZXJuYW5u dCIgYnp3LiDigJ5hdXMgZGVyIFJvbGxlIFggZW50bGFzc2VuIicsCiAgICBkYXRlaW5hbWU6ICAg ICAgICdCYWNrdXAtRGF0ZWluYW1lJywKICAgIGluaGFsdDogICAgICAgICAgJ0JhY2t1cC1Jbmhh bHQgKHBsYW51bmcsIGFkbWluIG9kZXIgYmVpZGVzKScsCiAgICBzaWNoZXJ1bmc6ICAgICAgICdB dXRvLUJhY2t1cCB2b3IgZGVyIEFrdGlvbicsCiAgICBkZWZpeml0X2FuemFobDogICdBbnphaGwg VGFnZSBtaXQgRGVmaXppdCcsCiAgICBnZXNhbXRfYW56YWhsOiAgICdBbnphaGwgVGFnZSBpbSBI b3Jpem9udCAoMjgpJywKICAgIGRlZml6aXRfbGlzdGVfaHRtbDogJ0hUTUwtTGlzdGUgZGVyIERl Zml6aXQtVGFnZSAodm9yYmVyZWl0ZXQpJwp9OwoKLy8gVmVyZnVlZ2JhcmUgRW1wZmFlbmdlci1U YWdzIG1pdCBVc2VyLWZyZXVuZGxpY2hlbiBMYWJlbHMuCmV4cG9ydCB2YXIgRU1QRkFFTkdFUl9P UFRJT05FTiA9IFsKICAgIHsga2V5OiAnYmV0cm9mZmVuZV9wZXJzb24nLCAgICAgICAgIGxhYmVs OiAnQmV0cm9mZmVuZSBQZXJzb24gc2VsYnN0JyB9LAogICAgeyBrZXk6ICd3YWNobGVpdHVuZ19w ZXJzb24nLCAgICAgICAgbGFiZWw6ICdXYWNobGVpdHVuZyBkZXIgYmV0cm9mZmVuZW4gUGVyc29u IChHcnVwcGUgV0wsIGdsZWljaGVyIFN0YW5kb3J0KScgfSwKICAgIHsga2V5OiAnZGdsX3NjaGlj aHQnLCAgICAgICAgICAgICAgIGxhYmVsOiAnREdMcyBkZXIgYmV0cm9mZmVuZW4gU2NoaWNodCAo b2huZSBkaWUgaGFuZGVsbmRlIFBlcnNvbiknIH0sCiAgICB7IGtleTogJ2dlc2FtdHZlcmFudHdv cnRsaWNoJywgICAgICBsYWJlbDogJ0FsbGUgR2VzYW10dmVyYW50d29ydGxpY2hlbiAoRmFjaGF1 ZnNpY2h0IG1pdCBGbGFnKScgfSwKICAgIHsga2V5OiAnc3VwZXJ1c2VyJywgICAgICAgICAgICAg ICAgIGxhYmVsOiAnQWxsZSBTdXBlclVzZXInIH0sCiAgICB7IGtleTogJ2RpZW5zdF93YWNoX2Zy ZWlfaW5fc2NoaWNodCcsIGxhYmVsOiAnRGllbnN0LS93YWNoZnJlaWUgUGVyc29uZW4gYW0gVGFn IChmw7xyIEJlc2V0enVuZ3MtQW5mcmFnZW4pJyB9Cl07CgovLyBtb2R1czogJ21haWx0bycgPSBv ZWZmbmV0IHdlaXRlcmhpbiBPdXRsb29rIChWZXJhbnR3b3J0dW5ncy1VZWJlcmdhZW5nZSwKLy8g QmVzZXR6dW5ncy1BbmZyYWdlbiwgRGVmaXppdC1CcmllZmluZykuICdoaW53ZWlzJyA9IEluLUFw cC1CYW5uZXIvTW9kYWwsCi8vIGtlaW4gT3V0bG9vayAoS3JhbmttZWxkdW5nLCBJZGVudGl0YWV0 LCBCYWNrdXAsIFJlc2V0LCBSb2xsZSBvaG5lCi8vIFZlcmFudHdvcnR1bmdzLVdlY2hzZWwpLiBB ZW5kZXJ1bmcgaW4gUGhhc2UgNSAoMjAyNi0wNS0yMCkuCmV4cG9ydCB2YXIgRU1BSUxfVk9STEFH RU5fTUVUQSA9IHsKICAgIGJlc2V0enVuZ3NBbmZyYWdlOiB7CiAgICAgICAgdGl0ZWw6ICdCZXNl dHp1bmdzLUFuZnJhZ2UgKFNhbW1lbCwgUGx1cmFsKScsCiAgICAgICAgYmVzY2hyZWlidW5nOiAn V2lyZCB2ZXJ3ZW5kZXQsIHdlbm4gaW0gVGFnLURldGFpbCBtZWhyZXJlIEthbmRpZGF0ZW4gZ2Vt ZWluc2FtIGFuZ2VzY2hyaWViZW4gd2VyZGVuLiBTdGFuZGFyZG3DpMOfaWcgUGx1cmFsLUFucmVk ZSAo4oCeSGFsbG8genVzYW1tZW4sIOKApklociBoYWJ04oCmIikuIEVtcGbDpG5nZXJmZWxkIGtv bmZpZ3VyaWVyYmFyIChEZWZhdWx0IEJDQzogQWRyZXNzYXRlbiBzZWhlbiBzaWNoIG5pY2h0IGdl Z2Vuc2VpdGlnKS4gVmVyc2FuZDogbWFpbHRvOiAobWFudWVsbGUgUHLDvGZ1bmcgaW0gTWFpbHBy b2dyYW1tKS4nLAogICAgICAgIGljb246ICdBbmZyYWdlJywKICAgICAgICBmYXJiZTogJ3dhcm51 bmcnLAogICAgICAgIG1vZHVzOiAnbWFpbHRvJywKICAgICAgICB2YXJpYWJsZW46IFsnZGF0dW0n LCAnd29jaGVudGFnJywgJ3NjaGljaHQnLCAnc2NoaWNodF9rdXJ6JywgJ2lzdCcsICdzb2xsJywg J2RlZml6aXQnLCAnYWJzZW5kZXJfbmFtZSddLAogICAgICAgIHRvZ2dsZXM6IFsKICAgICAgICAg ICAgeyBrZXk6ICdlbXBmYWVuZ2VySW1CY2MnLCBsYWJlbDogJ0VtcGbDpG5nZXIgaW0gQkNDLUZl bGQgKERhdGVuc2NodXR6OiBhbmRlcmUgQWRyZXNzYXRlbiBzaW5kIHVuc2ljaHRiYXIpLiBXZW5u IGF1c2dlc2NoYWx0ZXQ6IGFsbGUgc3RlaGVuIGltIEFuLUZlbGQgdW5kIHNlaGVuIHNpY2ggZ2Vn ZW5zZWl0aWcuJyB9CiAgICAgICAgXQogICAgfSwKICAgIGJlc2V0enVuZ3NBbmZyYWdlX2Vpbnpl bG46IHsKICAgICAgICB0aXRlbDogJ0Jlc2V0enVuZ3MtQW5mcmFnZSAoRWluemVsLCBwZXJzw7Zu bGljaGVzIER1KScsCiAgICAgICAgYmVzY2hyZWlidW5nOiAnV2lyZCB2ZXJ3ZW5kZXQsIHdlbm4g aW0gVGFnLURldGFpbCBudXIgRUlOIEthbmRpZGF0IG1hcmtpZXJ0IGlzdCDigJQgcGVyc8O2bmxp Y2hlIER1LUFucmVkZSBtaXQgVm9ybmFtZW4sIFNpbmd1bGFyLUZvcm11bGllcnVuZy4gU3RhbmRh cmRtw6TDn2lnIEVtcGbDpG5nZXIgaW0gQW4tRmVsZCAoQkNDIGlzdCBiZWkgZWluZXIgUGVyc29u IHNpbm5sb3MsIGthbm4gYWJlciBiZWkgQmVkYXJmIHVtZ2VzdGVsbHQgd2VyZGVuKS4nLAogICAg ICAgIGljb246ICdFaW56ZWwnLAogICAgICAgIGZhcmJlOiAnd2FybnVuZycsCiAgICAgICAgbW9k dXM6ICdtYWlsdG8nLAogICAgICAgIHZhcmlhYmxlbjogWydkYXR1bScsICd3b2NoZW50YWcnLCAn c2NoaWNodCcsICdzY2hpY2h0X2t1cnonLCAnaXN0JywgJ3NvbGwnLCAnZGVmaXppdCcsICdhYnNl bmRlcl9uYW1lJywgJ2VtcGZhZW5nZXJfdm9ybmFtZScsICdlbXBmYWVuZ2VyX25hbWUnXSwKICAg ICAgICB0b2dnbGVzOiBbCiAgICAgICAgICAgIHsga2V5OiAnZW1wZmFlbmdlckltQmNjJywgbGFi ZWw6ICdFbXBmw6RuZ2VyIGltIEJDQy1GZWxkIChzdGF0dCBpbSBBbi1GZWxkKS4gQmVpIG51ciBl aW5lciBQZXJzb24gbm9ybWFsZXJ3ZWlzZSBuaWNodCBzaW5udm9sbCDigJQgU3RhbmRhcmQ6IGF1 cy4nIH0KICAgICAgICBdCiAgICB9LAogICAgdmVyYW50d29ydHVuZ3NVZWJlcmdhbmc6IHsKICAg ICAgICB0aXRlbDogJ1ZlcmFudHdvcnR1bmdzd2VjaHNlbCAoU2NoaWNodCkg4oCUIGVpbmUgU2Ft bWVsLU1haWwnLAogICAgICAgIGJlc2NocmVpYnVuZzogJ0VJTkUgTWFpbCBiZWkgamVkZW0gVmVy YW50d29ydHVuZ3N3ZWNoc2VsIGlubmVyaGFsYiBkZXMgMTQtVGFnZS1WZXJiaW5kbGljaGtlaXRz ZmVuc3RlcnMuIEluZm9ybWllcnQgaW4gZWluZXIgZWluemlnZW4gTWFpbCBBTExFIEJldHJvZmZl bmVuIGF1ZiBlaW5tYWw6IHdlciBuZXUgaW4gZGllIEbDvGhydW5ncy1WZXJhbnR3b3J0dW5nIGF1 ZnLDvGNrdCBVTkQgd2VyIGRhZHVyY2ggaGVyYXVzZsOkbGx0ICh1bmQgZmxleGlibGVyIHBsYW5l biBrYW5uKS4gRGllIGVpbnplbG5lbiBCZXdlZ3VuZ2VuIGVyc2NoZWluZW4gYXV0b21hdGlzY2gg aW0gUGxhdHpoYWx0ZXIge3dlY2hzZWxfYmxvY2t9LiBFbXBmw6RuZ2VyIChBbi1GZWxkKSBzaW5k IGFsbGUgQmV0cm9mZmVuZW4gYXVzc2VyIGRlbSBQbGFuZW5kZW4gc2VsYnN0LiBWZXJzYW5kOiBt YWlsdG86LicsCiAgICAgICAgaWNvbjogJ1dlY2hzZWwnLAogICAgICAgIGZhcmJlOiAnYWt6ZW50 JywKICAgICAgICBtb2R1czogJ21haWx0bycsCiAgICAgICAgdmFyaWFibGVuOiBbJ2RhdHVtJywg J3dvY2hlbnRhZycsICdzY2hpY2h0JywgJ3NjaGljaHRfa3VyeicsICdhYnNlbmRlcl9uYW1lJywg J3dlY2hzZWxfYmxvY2snXSwKICAgICAgICB0b2dnbGVzOiBbCiAgICAgICAgICAgIHsga2V5OiAn Y2NBbmRlcmVyRGdsJywgICAgICAgICAgIGxhYmVsOiAnQ0M6IHp3ZWl0ZSBGw7xocnVuZ3NrcmFm dCBkZXIgU2NoaWNodCAoZmFsbHMgdm9yaGFuZGVuICsgRS1NYWlsIGhpbnRlcmxlZ3QpJyB9LAog ICAgICAgICAgICB7IGtleTogJ2JjY0dlc2FtdHZlcmFudHdvcnRsaWNoJywgbGFiZWw6ICdCQ0M6 IEdlc2FtdHZlcmFudHdvcnRsaWNoZXIgKGltbWVyIG51ciBhbHMgQkNDLCBudXIgenVyIEtlbm50 bmlzKScgfSwKICAgICAgICAgICAgeyBrZXk6ICdjY0F1c2xvZXNlcicsICAgICAgICAgICAgbGFi ZWw6ICdDQzogZGVyIGVpbmdlbG9nZ3RlIFBsYW5lbmRlLCBkZXIgZGllIMOEbmRlcnVuZyBhdXNn ZWzDtnN0IGhhdCcgfQogICAgICAgIF0KICAgIH0sCiAgICByb2xsZV92ZXJhbnR3b3J0dW5nOiB7 CiAgICAgICAgdGl0ZWw6ICdWZXJhbnR3b3J0dW5nc8O8YmVyZ2FuZyAoUm9sbGUpJywKICAgICAg ICBiZXNjaHJlaWJ1bmc6ICdtYWlsdG86LVBvcHVwIHdlbm4gamVtYW5kIHp1bSBTdXBlclVzZXIg b2RlciBHZXNhbXR2ZXJhbnR3b3J0bGljaGVuIGVybmFubnQgb2RlciBhYmdlbMO2c3Qgd2lyZC4g U2VydmVyLWdldHJpZ2dlcnQgw7xiZXIgZGFzIF9icmF1Y2h0X21haWx0by1GZWxkIGluIGRlciBS ZXNwb25zZS4nLAogICAgICAgIGljb246ICdSb2xsZScsCiAgICAgICAgZmFyYmU6ICdha3plbnQn LAogICAgICAgIG1vZHVzOiAnbWFpbHRvJywKICAgICAgICBhdXRvVHJpZ2dlcjogdHJ1ZSwKICAg ICAgICB2YXJpYWJsZW46IFsncm9sbGUnLCAnbmFtZScsICdyaWNodHVuZycsICdyaWNodHVuZ192 ZXJiJywgJ2Fic2VuZGVyX25hbWUnXSwKICAgICAgICBkZWZhdWx0RW1wZmFlbmdlcjogWydiZXRy b2ZmZW5lX3BlcnNvbicsICdzdXBlcnVzZXInLCAnZ2VzYW10dmVyYW50d29ydGxpY2gnXSwKICAg ICAgICB0b2dnbGVzOiBbXQogICAgfSwKICAgIGtyYW5rbWVsZHVuZzogewogICAgICAgIHRpdGVs OiAnS3JhbmttZWxkdW5nJywKICAgICAgICBiZXNjaHJlaWJ1bmc6ICdJbi1BcHAtSGlud2VpcyAo QmFubmVyICsgTW9kYWwpIHdlbm4gZGVyIENvZGUg4oCea3IiIG9kZXIg4oCeS3VyIiBpbiBlaW5l IFplbGxlIGVpbmdldHJhZ2VuIHdpcmQuIEVtcGbDpG5nZXI6IFN1cGVyVXNlciArIEdlc2FtdHZl cmFudHdvcnRsaWNoZS4nLAogICAgICAgIGljb246ICdLcmFuaycsIGZhcmJlOiAnd2FybnVuZycs IGF1dG9UcmlnZ2VyOiB0cnVlLAogICAgICAgIG1vZHVzOiAnaGlud2VpcycsCiAgICAgICAgdmFy aWFibGVuOiBbJ3BlcnNvbl9uYW1lJywgJ2RhdHVtJywgJ3dvY2hlbnRhZycsICdzY2hpY2h0Jywg J3NjaGljaHRfa3VyeicsICdjb2RlJywgJ2F1c2zDtnNlciddLAogICAgICAgIGRlZmF1bHRFbXBm YWVuZ2VyOiBbJ3dhY2hsZWl0dW5nX3BlcnNvbicsICdkZ2xfc2NoaWNodCddLAogICAgICAgIHRv Z2dsZXM6IFtdCiAgICB9LAogICAgaWRlbnRpdGFldF9nZWFlbmRlcnQ6IHsKICAgICAgICB0aXRl bDogJ0lkZW50aXTDpHRzLURhdGVuIGdlw6RuZGVydCAoQXVkaXQpJywKICAgICAgICBiZXNjaHJl aWJ1bmc6ICdJbi1BcHAtSGlud2VpcyAoQmFubmVyICsgTW9kYWwpIHdlbm4gTlctS2VubnVuZyBv ZGVyIEUtTWFpbC1BZHJlc3NlIGVpbmVyIFBlcnNvbiBnZcOkbmRlcnQgd2lyZC4gRW1wZsOkbmdl cjogU3VwZXJVc2VyICsgR2VzYW10dmVyYW50d29ydGxpY2hlLicsCiAgICAgICAgaWNvbjogJ0lk ZW50aXTDpHQnLCBmYXJiZTogJ2FremVudCcsIGF1dG9UcmlnZ2VyOiB0cnVlLAogICAgICAgIG1v ZHVzOiAnaGlud2VpcycsCiAgICAgICAgdmFyaWFibGVuOiBbJ3BlcnNvbl9uYW1lJywgJ2ZlbGQn LCAnYWx0ZXJfd2VydCcsICduZXVlcl93ZXJ0JywgJ2F1c2zDtnNlciddLAogICAgICAgIGRlZmF1 bHRFbXBmYWVuZ2VyOiBbJ2JldHJvZmZlbmVfcGVyc29uJywgJ3N1cGVydXNlciddLAogICAgICAg IHRvZ2dsZXM6IFtdCiAgICB9LAogICAgcm9sbGVfZ2VhZW5kZXJ0OiB7CiAgICAgICAgdGl0ZWw6 ICdSb2xsZW4tU3RhdHVzIGdlw6RuZGVydCAoQXVkaXQpJywKICAgICAgICBiZXNjaHJlaWJ1bmc6 ICdJbi1BcHAtSGlud2VpcyBiZWkgRmFjaGF1ZnNpY2h0LcOEbmRlcnVuZ2VuIG9obmUgR2VzYW10 dmVyYW50d29ydGxpY2gtV2VjaHNlbCAoei5CLiBTZWhlbi1GbGFnLURpZmYpLiBTVS0gdW5kIEdl c2FtdHZlcmFudHdvcnRsaWNoLVdlY2hzZWwgbGF1ZmVuIMO8YmVyIHJvbGxlX3ZlcmFudHdvcnR1 bmcuJywKICAgICAgICBpY29uOiAnUm9sbGUnLCBmYXJiZTogJ2FremVudCcsIGF1dG9UcmlnZ2Vy OiB0cnVlLAogICAgICAgIG1vZHVzOiAnaGlud2VpcycsCiAgICAgICAgdmFyaWFibGVuOiBbJ3Bl cnNvbl9uYW1lJywgJ3JvbGxlX3R5cCcsICdha3Rpb24nLCAnbmV1ZV9yb2xsZScsICdhdXNsw7Zz ZXInXSwKICAgICAgICBkZWZhdWx0RW1wZmFlbmdlcjogWydiZXRyb2ZmZW5lX3BlcnNvbicsICdz dXBlcnVzZXInXSwKICAgICAgICB0b2dnbGVzOiBbXQogICAgfSwKICAgIGJhY2t1cF93aWVkZXJo ZXJnZXN0ZWxsdDogewogICAgICAgIHRpdGVsOiAnQmFja3VwIHdpZWRlcmhlcmdlc3RlbGx0IChB dWRpdCknLAogICAgICAgIGJlc2NocmVpYnVuZzogJ0luLUFwcC1IaW53ZWlzIHdlbm4gZWluIEJh Y2t1cC1TdGFuZCB3aWVkZXJoZXJnZXN0ZWxsdCB3aXJkLicsCiAgICAgICAgaWNvbjogJ0JhY2t1 cCcsIGZhcmJlOiAnYWt6ZW50JywgYXV0b1RyaWdnZXI6IHRydWUsCiAgICAgICAgbW9kdXM6ICdo aW53ZWlzJywKICAgICAgICB2YXJpYWJsZW46IFsnZGF0ZWluYW1lJywgJ2luaGFsdCcsICdzaWNo ZXJ1bmcnLCAnYXVzbMO2c2VyJ10sCiAgICAgICAgZGVmYXVsdEVtcGZhZW5nZXI6IFsnc3VwZXJ1 c2VyJ10sCiAgICAgICAgdG9nZ2xlczogW10KICAgIH0sCiAgICBwbGFudW5nX3Jlc2V0OiB7CiAg ICAgICAgdGl0ZWw6ICdQbGFudW5nIHp1csO8Y2tnZXNldHp0IChBdWRpdCknLAogICAgICAgIGJl c2NocmVpYnVuZzogJ0luLUFwcC1IaW53ZWlzIHdlbm4gZGllIFBsYW51bmcga29tcGxldHQgenVy w7xja2dlc2V0enQgd2lyZC4nLAogICAgICAgIGljb246ICdSZXNldCcsIGZhcmJlOiAnd2FybnVu ZycsIGF1dG9UcmlnZ2VyOiB0cnVlLAogICAgICAgIG1vZHVzOiAnaGlud2VpcycsCiAgICAgICAg dmFyaWFibGVuOiBbJ3NpY2hlcnVuZycsICdhdXNsw7ZzZXInXSwKICAgICAgICBkZWZhdWx0RW1w ZmFlbmdlcjogWydzdXBlcnVzZXInXSwKICAgICAgICB0b2dnbGVzOiBbXQogICAgfSwKICAgIGRl Zml6aXRfYnJpZWZpbmc6IHsKICAgICAgICB0aXRlbDogJ0RlZml6aXQtQnJpZWZpbmcnLAogICAg ICAgIGJlc2NocmVpYnVuZzogJ01hbnVlbGwgcGVyIEJ1dHRvbiBpbSBQcsO8ZnVuZ3MtVGFiIGF1 c2dlbMO2c3Qg4oCUIMO2ZmZuZXQgZWluIG1haWx0bzotUG9wdXAgbWl0IMOcYmVyc2ljaHQgZGVy IEbDvGhydW5ncy1VbnRlcmJlc2V0enVuZ2VuIGluIGRlbiBuw6RjaHN0ZW4gNCBXb2NoZW4uJywK ICAgICAgICBpY29uOiAnRGVmaXppdCcsIGZhcmJlOiAnYWt6ZW50JywgYXV0b1RyaWdnZXI6IHRy dWUsCiAgICAgICAgbW9kdXM6ICdtYWlsdG8nLAogICAgICAgIHZhcmlhYmxlbjogWydkZWZpeml0 X2FuemFobCcsICdnZXNhbXRfYW56YWhsJywgJ2RlZml6aXRfbGlzdGVfaHRtbCddLAogICAgICAg IGRlZmF1bHRFbXBmYWVuZ2VyOiBbJ2dlc2FtdHZlcmFudHdvcnRsaWNoJ10sCiAgICAgICAgdG9n Z2xlczogW10KICAgIH0KfTsKCi8vID09PT09IFZvcmxhZ2VuIGhvbGVuIC8gcmVuZGVybiAvIGJl YXJiZWl0ZW4gPT09PT0KCi8vIExpZWZlcnQgcHJvIFZvcmxhZ2VuLUtleSAoYWxsZSBhdXMgRU1B SUxfVk9STEFHRU5fTUVUQSkgZGFzIGdlbWVyZ2V0ZQovLyBPYmpla3QgYXVzIGFkbWluLmVtYWls Vm9ybGFnZW4gKyBEZWZhdWx0cy4gUm9idXN0IGF1Y2ggZnVlciBLZXlzLCBkaWUKLy8gbmljaHQg aW4gREVGQVVMVFMgc3RlaGVuIChyZXR1cm50IGRhbm4gbGVlcmVzIE9iamVrdCkuCmV4cG9ydCBm dW5jdGlvbiBlbWFpbFZvcmxhZ2VuSG9sZW4oKSB7CiAgICB2YXIgZ2VzcGVpY2hlcnQgPSBaLmFk bWluLmVtYWlsVm9ybGFnZW4gfHwge307CiAgICB2YXIgZXJnZWJuaXMgPSB7fTsKICAgIE9iamVj dC5rZXlzKEVNQUlMX1ZPUkxBR0VOX01FVEEpLmZvckVhY2goZnVuY3Rpb24oa2V5KSB7CiAgICAg ICAgdmFyIGRlZiA9IEVNQUlMX1ZPUkxBR0VOX0RFRkFVTFRba2V5XSB8fCB7IGJldHJlZmY6ICcn LCB0ZXh0OiAnJyB9OwogICAgICAgIHZhciBnID0gZ2VzcGVpY2hlcnRba2V5XSB8fCB7fTsKICAg ICAgICB2YXIgb3V0ID0ge307CiAgICAgICAgLy8gQWxsZSBEZWZhdWx0LUZlbGRlciBkdXJjaHNj aGxlaWZlbgogICAgICAgIE9iamVjdC5rZXlzKGRlZikuZm9yRWFjaChmdW5jdGlvbihrKSB7CiAg ICAgICAgICAgIG91dFtrXSA9IChrIGluIGcgJiYgZ1trXSAhPT0gJycgJiYgZ1trXSAhPSBudWxs KSA/IGdba10gOiBkZWZba107CiAgICAgICAgfSk7CiAgICAgICAgLy8gUGx1cyBhbGxlIGV2ZW50 dWVsbGVuIFRvZ2dsZS1GZWxkZXIgYXVzIGRlbSBnZXNwZWljaGVydGVuIFN0YW5kCiAgICAgICAg T2JqZWN0LmtleXMoZykuZm9yRWFjaChmdW5jdGlvbihrKSB7CiAgICAgICAgICAgIGlmICghKGsg aW4gb3V0KSkgb3V0W2tdID0gZ1trXTsKICAgICAgICB9KTsKICAgICAgICBlcmdlYm5pc1trZXld ID0gb3V0OwogICAgfSk7CiAgICByZXR1cm4gZXJnZWJuaXM7Cn0KCmV4cG9ydCBmdW5jdGlvbiBl bWFpbFZvcmxhZ2VuUmVuZGVybigpIHsKICAgIHZhciBjb250ID0gZG9jdW1lbnQuZ2V0RWxlbWVu dEJ5SWQoJ2VtYWlsdm9ybGFnZW4taW5oYWx0Jyk7CiAgICBpZiAoIWNvbnQpIHJldHVybjsKICAg IHZhciB2ID0gZW1haWxWb3JsYWdlbkhvbGVuKCk7CiAgICAvLyBTcGxpdCBuYWNoIHZlcnN0ZWNr dC1GbGFnLiBWaXNpYmxlLVZvcmxhZ2VuIGVyc2NoZWluZW4gYWxzIGdyb3NzZQogICAgLy8gS2Fy dGVuIGluIGRlciBQcmltYWVyYW5zaWNodCwgSGlkZGVuIGxhbmRlbiBrb21wYWt0IHVudGVuIGFs cwogICAgLy8gUGlsbGVuIG1pdCAiZWluYmxlbmRlbiItQnV0dG9uLiBWZXJzdGVja3QtRmxhZyBs ZWJ0IGluCiAgICAvLyBhZG1pbi5qc29uLmVtYWlsVm9ybGFnZW5ba2V5XS52ZXJzdGVja3QuCiAg ICB2YXIgc2ljaHRiYXIgPSBbXSwgdmVyc3RlY2t0ID0gW107CiAgICBPYmplY3Qua2V5cyhFTUFJ TF9WT1JMQUdFTl9NRVRBKS5mb3JFYWNoKGZ1bmN0aW9uKGtleSkgewogICAgICAgIGlmICh2W2tl eV0gJiYgdltrZXldLnZlcnN0ZWNrdCkgdmVyc3RlY2t0LnB1c2goa2V5KTsKICAgICAgICBlbHNl ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpY2h0YmFyLnB1c2goa2V5KTsKICAgIH0pOwoK ICAgIHZhciBodG1sID0gJzxkaXYgY2xhc3M9ImVtYWlsdm9ybGFnZW4ta2FydGVuIj4nOwogICAg c2ljaHRiYXIuZm9yRWFjaChmdW5jdGlvbihrZXkpIHsKICAgICAgICB2YXIgbWV0YSA9IEVNQUlM X1ZPUkxBR0VOX01FVEFba2V5XTsKICAgICAgICB2YXIgdm9ybGFnZSA9IHZba2V5XTsKICAgICAg ICB2YXIgcHJldmlldyA9ICh2b3JsYWdlLnRleHQgfHwgJycpLnJlcGxhY2UoL1xzKy9nLCAnICcp LnNsaWNlKDAsIDE0MCk7CiAgICAgICAgaWYgKCh2b3JsYWdlLnRleHQgfHwgJycpLmxlbmd0aCA+ IDE0MCkgcHJldmlldyArPSAn4oCmJzsKICAgICAgICAvLyByb2xlPWJ1dHRvbiBzdGF0dCA8YnV0 dG9uPjogZGllIEthcnRlIGVudGhhZWx0IHNlbGJzdCBlaW5lbgogICAgICAgIC8vIEF1c2JsZW5k ZW4tPGJ1dHRvbj4sIHVuZCBlaW4gPGJ1dHRvbj4gaW0gPGJ1dHRvbj4gaXN0IHVuZ3VlbHRpZ2Vz CiAgICAgICAgLy8gSFRNTCAoZGVyIEJyb3dzZXIgemVycmVpc3N0IGRlbiBET00tQmF1bSkuIEtl eWJvYXJkLUFrdGl2aWVydW5nCiAgICAgICAgLy8gKEVudGVyL1NwYWNlKSBoYWVuZ3QgYW0gQ29u dGFpbmVyLUtleWRvd24tSGFuZGxlciBpbiBhcHAuanMuCiAgICAgICAgaHRtbCArPSAnPGRpdiBj bGFzcz0iZW1haWx2b3JsYWdlLWthcnRlIiByb2xlPSJidXR0b24iIHRhYmluZGV4PSIwIiBkYXRh LXZvcmxhZ2U9IicgKyBlc2NhcGVBdHRyKGtleSkgKyAnIj4nICsKICAgICAgICAgICAgJzxkaXYg Y2xhc3M9ImV2ay1pY29uIGV2ay1pY29uLScgKyBlc2NhcGVBdHRyKG1ldGEuZmFyYmUpICsgJyI+ JyArIGVzY2FwZUhUTUwobWV0YS5pY29uKSArICc8L2Rpdj4nICsKICAgICAgICAgICAgJzxkaXYg Y2xhc3M9ImV2ay1pbmhhbHQiPicgKwogICAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9ImV2ay10 aXRlbCI+JyArIGVzY2FwZUhUTUwobWV0YS50aXRlbCkgKyAnPC9kaXY+JyArCiAgICAgICAgICAg ICAgICAnPGRpdiBjbGFzcz0iZXZrLWJlc2NocmVpYnVuZyI+JyArIGVzY2FwZUhUTUwobWV0YS5i ZXNjaHJlaWJ1bmcpICsgJzwvZGl2PicgKwogICAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9ImV2 ay1iZXRyZWZmIiB0aXRsZT0iQmV0cmVmZiI+PHNwYW4gY2xhc3M9ImV2ay1sYWJlbCI+QmV0cmVm Zjo8L3NwYW4+ICcgKyBlc2NhcGVIVE1MKHZvcmxhZ2UuYmV0cmVmZiB8fCAnKGxlZXIpJykgKyAn PC9kaXY+JyArCiAgICAgICAgICAgICAgICAnPGRpdiBjbGFzcz0iZXZrLXByZXZpZXciIHRpdGxl PSJCZWdpbm4gZGVzIEFuc2NocmVpYmVucyI+JyArIGVzY2FwZUhUTUwocHJldmlldyB8fCAnKGxl ZXIpJykgKyAnPC9kaXY+JyArCiAgICAgICAgICAgICc8L2Rpdj4nICsKICAgICAgICAgICAgJzxk aXYgY2xhc3M9ImV2ay1ha3Rpb24iPkJlYXJiZWl0ZW4g4oaSPC9kaXY+JyArCiAgICAgICAgICAg IC8vIEF1c2JsZW5kZW4tS25vcGYgKGtsZWluLCBvYmVuIHJlY2h0czsgbnVyIGJlaSBIb3ZlciBz aWNodGJhcikuCiAgICAgICAgICAgIC8vIHN0b3BQcm9wYWdhdGlvbiBpbSBDbGljay1IYW5kbGVy IHZlcmhpbmRlcnQgZGFzIE9lZmZuZW4gZGVzCiAgICAgICAgICAgIC8vIEJlYXJiZWl0ZW4tTW9k YWxzLCB3ZW5uIG51ciBhdXNnZWJsZW5kZXQgd2VyZGVuIHNvbGwuCiAgICAgICAgICAgICc8YnV0 dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImV2ay1oaWRlLWJ0biIgZGF0YS1ha3Rpb249ImV2LWhp ZGUiIGRhdGEtdm9ybGFnZT0iJyArIGVzY2FwZUF0dHIoa2V5KSArICciIHRpdGxlPSJWb3JsYWdl IGF1cyBkZXIgVWViZXJzaWNodCBhdXNibGVuZGVuIChrYW5uIHVudGVuIHdpZWRlciBlaW5nZWJs ZW5kZXQgd2VyZGVuKSI+QXVzYmxlbmRlbjwvYnV0dG9uPicgKwogICAgICAgICc8L2Rpdj4nOwog ICAgfSk7CiAgICBodG1sICs9ICc8L2Rpdj4nOwoKICAgIGlmICh2ZXJzdGVja3QubGVuZ3RoKSB7 CiAgICAgICAgaHRtbCArPSAnPGRpdiBjbGFzcz0iZW1haWx2b3JsYWdlbi12ZXJzdGVja3QiPicg KwogICAgICAgICAgICAnPGRpdiBjbGFzcz0iZW1haWx2b3JsYWdlbi12ZXJzdGVja3Qta29wZiI+ JyArCiAgICAgICAgICAgICAgICAnPHNwYW4+VmVyc3RlY2t0ZSBWb3JsYWdlbiAoJyArIHZlcnN0 ZWNrdC5sZW5ndGggKyAnKTwvc3Bhbj4nICsKICAgICAgICAgICAgICAgICc8c3BhbiBzdHlsZT0i Zm9udC13ZWlnaHQ6NDAwIj7igJQgcGVyIEtsaWNrIHdpZWRlciBlaW5ibGVuZGVuPC9zcGFuPicg KwogICAgICAgICAgICAnPC9kaXY+JyArCiAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJlbWFpbHZv cmxhZ2VuLXZlcnN0ZWNrdC1saXN0ZSI+JzsKICAgICAgICB2ZXJzdGVja3QuZm9yRWFjaChmdW5j dGlvbihrZXkpIHsKICAgICAgICAgICAgdmFyIG1ldGEgPSBFTUFJTF9WT1JMQUdFTl9NRVRBW2tl eV07CiAgICAgICAgICAgIGh0bWwgKz0gJzxzcGFuIGNsYXNzPSJldmstdmVyc3RlY2t0LXBpbGxl Ij4nICsKICAgICAgICAgICAgICAgICc8c3BhbiBzdHlsZT0iZm9udC1zaXplOjE0cHgiPicgKyBl c2NhcGVIVE1MKG1ldGEuaWNvbikgKyAnPC9zcGFuPicgKwogICAgICAgICAgICAgICAgJzxzcGFu IGNsYXNzPSJldmstdmVyc3RlY2t0LXRpdGVsIj4nICsgZXNjYXBlSFRNTChtZXRhLnRpdGVsKSAr ICc8L3NwYW4+JyArCiAgICAgICAgICAgICAgICAnPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNz PSJldmstc2hvdy1idG4iIGRhdGEtYWt0aW9uPSJldi1zaG93IiBkYXRhLXZvcmxhZ2U9IicgKyBl c2NhcGVBdHRyKGtleSkgKyAnIiB0aXRsZT0iVm9ybGFnZSB3aWVkZXIgaW4gZGVyIFByaW1hZXJh bnNpY2h0IHplaWdlbiI+ZWluYmxlbmRlbjwvYnV0dG9uPicgKwogICAgICAgICAgICAnPC9zcGFu Pic7CiAgICAgICAgfSk7CiAgICAgICAgaHRtbCArPSAnPC9kaXY+PC9kaXY+JzsKICAgIH0KICAg IGNvbnQuaW5uZXJIVE1MID0gaHRtbDsKfQoKLy8gRWRpdG9yLU1vZGFsIHBybyBWb3JsYWdlLiBM aW5rZSBTcGFsdGU6IEJldHJlZmYgKyBUZXh0YXJlYSArIFRvZ2dsZXMuCi8vIFJlY2h0ZSBTcGFs dGU6IFZhcmlhYmxlbi1JbnNlcnQtQnV0dG9ucy4gS2xpY2sgYXVmIFZhcmlhYmxlIGZ1ZWd0Ci8v IHtuYW1lfSBhbiBDdXJzb3ItUG9zaXRpb24gaW0genVsZXR6dCBmb2t1c3NpZXJ0ZW4gRmVsZCBl aW4uCmV4cG9ydCBmdW5jdGlvbiBlbWFpbFZvcmxhZ2VCZWFyYmVpdGVuTW9kYWwoa2V5KSB7CiAg ICB2YXIgbWV0YSA9IEVNQUlMX1ZPUkxBR0VOX01FVEFba2V5XTsKICAgIGlmICghbWV0YSkgcmV0 dXJuOwogICAgdmFyIHYgPSBlbWFpbFZvcmxhZ2VuSG9sZW4oKVtrZXldOwoKICAgIHZhciB2YXJp YWJsZW5CdG5zID0gbWV0YS52YXJpYWJsZW4ubWFwKGZ1bmN0aW9uKHZhck5hbWUpIHsKICAgICAg ICB2YXIgYmVzY2hyID0gRU1BSUxfVkFSSUFCTEVOX0JFU0NIUkVJQlVOR1t2YXJOYW1lXSB8fCAn JzsKICAgICAgICByZXR1cm4gJzxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iZXZtLXZhci1i dG4iIGRhdGEtdmFyPSInICsgZXNjYXBlQXR0cih2YXJOYW1lKSArICciIHRpdGxlPSInICsgZXNj YXBlQXR0cignVmFyaWFibGUgZWluZsO8Z2VuOiB7JyArIHZhck5hbWUgKyAnfSDigJQgJyArIGJl c2NocikgKyAnIj4nICsKICAgICAgICAgICAgJzxjb2RlIGNsYXNzPSJldm0tdmFyLW5hbWUiPnsn ICsgZXNjYXBlSFRNTCh2YXJOYW1lKSArICd9PC9jb2RlPicgKwogICAgICAgICAgICAnPHNwYW4g Y2xhc3M9ImV2bS12YXItYmVzY2hyIj4nICsgZXNjYXBlSFRNTChiZXNjaHIpICsgJzwvc3Bhbj4n ICsKICAgICAgICAnPC9idXR0b24+JzsKICAgIH0pLmpvaW4oJycpOwoKICAgIHZhciB0b2dnbGVz SHRtbCA9IG1ldGEudG9nZ2xlcy5sZW5ndGgKICAgICAgICA/ICc8ZGl2IGNsYXNzPSJldm0tdG9n Z2xlcyI+JyArCiAgICAgICAgICAgIG1ldGEudG9nZ2xlcy5tYXAoZnVuY3Rpb24odCkgewogICAg ICAgICAgICAgICAgdmFyIGNoZWNrZWQgPSAhIXZbdC5rZXldOwogICAgICAgICAgICAgICAgcmV0 dXJuICc8bGFiZWwgY2xhc3M9ImV2bS10b2dnbGUiPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgaWQ9 ImV2bS10b2dnbGUtJyArIGVzY2FwZUF0dHIodC5rZXkpICsgJyInICsgKGNoZWNrZWQgPyAnIGNo ZWNrZWQnIDogJycpICsgJz48c3Bhbj4nICsgZXNjYXBlSFRNTCh0LmxhYmVsKSArICc8L3NwYW4+ PC9sYWJlbD4nOwogICAgICAgICAgICB9KS5qb2luKCcnKSArCiAgICAgICAgICAnPC9kaXY+Jwog ICAgICAgIDogJyc7CgogICAgdmFyIHRyaWdnZXJIdG1sID0gJyc7CiAgICBpZiAobWV0YS5hdXRv VHJpZ2dlcikgewogICAgICAgIHZhciB0cmlnZ2VyQ2ZnID0gKChaLmFkbWluICYmIFouYWRtaW4u ZW1haWxUcmlnZ2VyKSB8fCB7fSlba2V5XSB8fCB7fTsKICAgICAgICB2YXIgYWt0aXYgPSAhIXRy aWdnZXJDZmcuYWt0aXY7CiAgICAgICAgdmFyIGFrdGl2ZUVtcGYgPSB0cmlnZ2VyQ2ZnLmVtcGZh ZW5nZXIgfHwgbWV0YS5kZWZhdWx0RW1wZmFlbmdlciB8fCBbXTsKICAgICAgICB2YXIgZW1wZkh0 bWwgPSBFTVBGQUVOR0VSX09QVElPTkVOLm1hcChmdW5jdGlvbihvcHQpIHsKICAgICAgICAgICAg dmFyIGNoZWNrZWQgPSBha3RpdmVFbXBmLmluZGV4T2Yob3B0LmtleSkgPj0gMDsKICAgICAgICAg ICAgcmV0dXJuICc8bGFiZWwgY2xhc3M9ImV2bS1lbXBmLXplaWxlIj4nICsKICAgICAgICAgICAg ICAgICc8aW5wdXQgdHlwZT0iY2hlY2tib3giIGNsYXNzPSJldm0tZW1wZi1jaGsiIGRhdGEta2V5 PSInICsgZXNjYXBlQXR0cihvcHQua2V5KSArICciJyArIChjaGVja2VkID8gJyBjaGVja2VkJyA6 ICcnKSArICc+JyArCiAgICAgICAgICAgICAgICAnPHNwYW4+JyArIGVzY2FwZUhUTUwob3B0Lmxh YmVsKSArICc8L3NwYW4+JyArCiAgICAgICAgICAgICc8L2xhYmVsPic7CiAgICAgICAgfSkuam9p bignJyk7CiAgICAgICAgaWYgKG1ldGEubW9kdXMgPT09ICdoaW53ZWlzJykgewogICAgICAgICAg ICAvLyBQaGFzZSA1ICgyMDI2LTA1LTIwKToga2VpbiBtYWlsdG8sIHNvbmRlcm4gSW4tQXBwLUJh bm5lcitNb2RhbAogICAgICAgICAgICAvLyBmdWVyIFNVICsgR2VzYW10dmVyYW50d29ydGxpY2hl LiBBa3Rpdi1Ub2dnbGUgZW50ZmFlbGx0OiBkZXIKICAgICAgICAgICAgLy8gU2VydmVyIGVyemV1 Z3QgZGVuIEhpbndlaXMgYmVpIGplZGVtIEVyZWlnbmlzLgogICAgICAgICAgICB0cmlnZ2VySHRt bCA9CiAgICAgICAgICAgICAgICAnPGRpdiBjbGFzcz0iZXZtLXRyaWdnZXItYmxvY2siPicgKwog ICAgICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJldm0tdHJpZ2dlci10aXRlbCI+SW4tQXBw LUhpbndlaXM8L2Rpdj4nICsKICAgICAgICAgICAgICAgICAgICAnPHAgY2xhc3M9ImV2bS1oaW53 ZWlzIiBzdHlsZT0ibWFyZ2luOjAiPkJlaW0gRWludHJpdHQgZGVzIEVyZWlnbmlzc2VzIHdpcmQg ZWluIEhpbndlaXMgaW0gQmFubmVyIHVuZCBpbSBIaW53ZWlzLU1vZGFsIGZ1ZXIgU3VwZXJVc2Vy ICsgR2VzYW10dmVyYW50d29ydGxpY2hlIGFuZ2V6ZWlndC4gS2VpbiBPdXRsb29rLVBvcHVwLiBE aWVzZSBWb3JsYWdlIHdpcmQgbmljaHQgdmVyc2VuZGV0OyBzaWUgZGllbnQgbnVyIGFscyBCZXNj aHJlaWJ1bmcgZGVzIEVyZWlnbmlzc2VzLjwvcD4nICsKICAgICAgICAgICAgICAgICc8L2Rpdj4n OwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHRyaWdnZXJIdG1sID0KICAgICAgICAgICAg ICAgICc8ZGl2IGNsYXNzPSJldm0tdHJpZ2dlci1ibG9jayI+JyArCiAgICAgICAgICAgICAgICAg ICAgJzxkaXYgY2xhc3M9ImV2bS10cmlnZ2VyLXRpdGVsIj5tYWlsdG86LUF1dG8tVHJpZ2dlcjwv ZGl2PicgKwogICAgICAgICAgICAgICAgICAgICc8bGFiZWwgY2xhc3M9ImV2bS10cmlnZ2VyLWFr dGl2Ij4nICsKICAgICAgICAgICAgICAgICAgICAgICAgJzxpbnB1dCB0eXBlPSJjaGVja2JveCIg aWQ9ImV2bS10cmlnLWFrdGl2IicgKyAoYWt0aXYgPyAnIGNoZWNrZWQnIDogJycpICsgJz4nICsK ICAgICAgICAgICAgICAgICAgICAgICAgJzxzcGFuPlRyaWdnZXIgYWt0aXZpZXJlbiAow7ZmZm5l dCBPdXRsb29rIG1pdCB2b3JhdXNnZWbDvGxsdGVyIE1haWwsIHdlbm4gZGFzIEVyZWlnbmlzIGVp bnRyaXR0KTwvc3Bhbj4nICsKICAgICAgICAgICAgICAgICAgICAnPC9sYWJlbD4nICsKICAgICAg ICAgICAgICAgICAgICAnPGxhYmVsIGNsYXNzPSJldm0tbGFiZWwiIHN0eWxlPSJtYXJnaW4tdG9w OjhweCI+RW1wZsOkbmdlciAod2VyZGVuIGFscyBCQ0Mgdm9yYXVzZ2Vmw7xsbHQpPC9sYWJlbD4n ICsKICAgICAgICAgICAgICAgICAgICAnPGRpdiBjbGFzcz0iZXZtLWVtcGYtbGlzdGUiPicgKyBl bXBmSHRtbCArICc8L2Rpdj4nICsKICAgICAgICAgICAgICAgICAgICAnPHNtYWxsIGNsYXNzPSJl dm0taGlud2VpcyI+S2VpbiBhdXRvbWF0aXNjaGVyIFZlcnNhbmQuIEJlaW0gRWludHJpdHQgZGVz IEVyZWlnbmlzc2VzIMO2ZmZuZXQgc2ljaCBkYXMgU3RhbmRhcmQtTWFpbHByb2dyYW1tIG1pdCBF bXBmw6RuZ2VybiwgQmV0cmVmZiB1bmQgVGV4dCB2b3JhdXNnZWbDvGxsdDsgZHUgcHLDvGZzdCBk aWUgTWFpbCB1bmQgdmVyc2NoaWNrc3Qgc2llIG1hbnVlbGwuPC9zbWFsbD4nICsKICAgICAgICAg ICAgICAgICc8L2Rpdj4nOwogICAgICAgIH0KICAgIH0KCiAgICB2YXIgcnRlVG9vbGJhciA9CiAg ICAgICAgJzxkaXYgY2xhc3M9InJ0ZS10b29sYmFyIj4nICsKICAgICAgICAgICAgJzxidXR0b24g dHlwZT0iYnV0dG9uIiBjbGFzcz0icnRlLWJ0biIgZGF0YS1jbWQ9ImJvbGQiIHRpdGxlPSJGZXR0 IChDdHJsK0IpIj48c3Ryb25nPkI8L3N0cm9uZz48L2J1dHRvbj4nICsKICAgICAgICAgICAgJzxi dXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0icnRlLWJ0biIgZGF0YS1jbWQ9Iml0YWxpYyIgdGl0 bGU9Ikt1cnNpdiAoQ3RybCtJKSI+PGVtPkk8L2VtPjwvYnV0dG9uPicgKwogICAgICAgICAgICAn PGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJydGUtYnRuIiBkYXRhLWNtZD0idW5kZXJsaW5l IiB0aXRsZT0iVW50ZXJzdHJpY2hlbiAoQ3RybCtVKSI+PHU+VTwvdT48L2J1dHRvbj4nICsKICAg ICAgICAgICAgJzxzcGFuIGNsYXNzPSJydGUtc2VwIj48L3NwYW4+JyArCiAgICAgICAgICAgICc8 YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9InJ0ZS1idG4iIGRhdGEtY21kPSJpbnNlcnRVbm9y ZGVyZWRMaXN0IiB0aXRsZT0iQXVmesOkaGx1bmciPuKAojwvYnV0dG9uPicgKwogICAgICAgICAg ICAnPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJydGUtYnRuIiBkYXRhLWNtZD0iaW5zZXJ0 T3JkZXJlZExpc3QiIHRpdGxlPSJOdW1tZXJpZXJ0Ij4xLjwvYnV0dG9uPicgKwogICAgICAgICAg ICAnPHNwYW4gY2xhc3M9InJ0ZS1zZXAiPjwvc3Bhbj4nICsKICAgICAgICAgICAgJzxidXR0b24g dHlwZT0iYnV0dG9uIiBjbGFzcz0icnRlLWJ0biIgZGF0YS1jbWQ9Im91dGRlbnQiIHRpdGxlPSJB dXNyw7xja2VuIj7ih6Q8L2J1dHRvbj4nICsKICAgICAgICAgICAgJzxidXR0b24gdHlwZT0iYnV0 dG9uIiBjbGFzcz0icnRlLWJ0biIgZGF0YS1jbWQ9ImluZGVudCIgdGl0bGU9IkVpbnLDvGNrZW4i PuKHpTwvYnV0dG9uPicgKwogICAgICAgICAgICAnPHNwYW4gY2xhc3M9InJ0ZS1zZXAiPjwvc3Bh bj4nICsKICAgICAgICAgICAgJzxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0icnRlLWJ0biIg ZGF0YS1jbWQ9InJlbW92ZUZvcm1hdCIgdGl0bGU9IkZvcm1hdGllcnVuZyBlbnRmZXJuZW4iPkzD tnNjaGVuPC9idXR0b24+JyArCiAgICAgICAgJzwvZGl2Pic7CgogICAgdmFyIHRleHRIdG1sID0g ZW1haWxIb29rcy5odG1sQXVzRmVsZCA/IGVtYWlsSG9va3MuaHRtbEF1c0ZlbGQodi50ZXh0IHx8 ICcnKSA6ICh2LnRleHQgfHwgJycpOwoKICAgIHZhciBrb2VycGVyID0KICAgICAgICAnPHAgY2xh c3M9ImV2bS1iZXNjaHJlaWJ1bmciPicgKyBlc2NhcGVIVE1MKG1ldGEuYmVzY2hyZWlidW5nKSAr ICc8L3A+JyArCiAgICAgICAgJzxkaXYgY2xhc3M9ImV2bS1ncmlkIj4nICsKICAgICAgICAgICAg JzxkaXYgY2xhc3M9ImV2bS1mb3JtIj4nICsKICAgICAgICAgICAgICAgICc8bGFiZWwgY2xhc3M9 ImV2bS1sYWJlbCIgZm9yPSJldm0tYmV0cmVmZiI+QmV0cmVmZjwvbGFiZWw+JyArCiAgICAgICAg ICAgICAgICAnPGlucHV0IHR5cGU9InRleHQiIGlkPSJldm0tYmV0cmVmZiIgY2xhc3M9ImZvcm0t aW5wdXQgZXZtLWJldHJlZmYtaW5wdXQiIHZhbHVlPSInICsgZXNjYXBlQXR0cih2LmJldHJlZmYg fHwgJycpICsgJyIgcGxhY2Vob2xkZXI9IkJldHJlZmYgZGVyIEUtTWFpbCDigKYiPicgKwogICAg ICAgICAgICAgICAgJzxsYWJlbCBjbGFzcz0iZXZtLWxhYmVsIiBzdHlsZT0ibWFyZ2luLXRvcDox NHB4Ij5BbnNjaHJlaWJlbjwvbGFiZWw+JyArCiAgICAgICAgICAgICAgICBydGVUb29sYmFyICsK ICAgICAgICAgICAgICAgICc8ZGl2IGlkPSJldm0tdGV4dCIgY2xhc3M9InJ0ZS1lZGl0b3IgZXZt LXRleHQtcnRlIiBjb250ZW50ZWRpdGFibGU9InRydWUiIHNwZWxsY2hlY2s9InRydWUiIGRhdGEt cGxhY2Vob2xkZXI9Ikd1dGVuIFRhZyDigKYiPicgKyB0ZXh0SHRtbCArICc8L2Rpdj4nICsKICAg ICAgICAgICAgICAgICc8c21hbGwgY2xhc3M9ImV2bS1oaW53ZWlzIj5Gb3JtYXRpZXJ1bmcgKGZl dHQva3Vyc2l2L0xpc3RlbikgaXN0IG3DtmdsaWNoOyBiZWltIG1haWx0by1WZXJzYW5kIHdpcmQg c2llIGluIHJlaW5lbiBUZXh0IHVtZ2V3YW5kZWx0LCBkZXIgZGFubiBpbiBPdXRsb29rIGVyc2No ZWludC4gVmFyaWFibGVuIHdpZSA8Y29kZT57ZGF0dW19PC9jb2RlPiB3ZXJkZW4gYmVpbSDDlmZm bmVuIGRlcyBQb3B1cHMgYXV0b21hdGlzY2ggZXJzZXR6dC48L3NtYWxsPicgKwogICAgICAgICAg ICAgICAgdG9nZ2xlc0h0bWwgKwogICAgICAgICAgICAgICAgdHJpZ2dlckh0bWwgKwogICAgICAg ICAgICAnPC9kaXY+JyArCiAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJldm0tdmFycyI+JyArCiAg ICAgICAgICAgICAgICAnPGRpdiBjbGFzcz0iZXZtLXZhcnMtdGl0ZWwiPlZhcmlhYmxlbiBlaW5m w7xnZW48L2Rpdj4nICsKICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJldm0tdmFycy1oaW53 ZWlzIj5LbGljayBhdWYgZWluZSBWYXJpYWJsZSBmw7xndCBzaWUgYW4gZGVyIEN1cnNvci1Qb3Np dGlvbiBlaW4gKGltIGFrdHVlbGwgYWt0aXZlbiBGZWxkIOKAlCBCZXRyZWZmIG9kZXIgQW5zY2hy ZWliZW4pLjwvZGl2PicgKwogICAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9ImV2bS12YXJzLWxp c3RlIj4nICsgdmFyaWFibGVuQnRucyArICc8L2Rpdj4nICsKICAgICAgICAgICAgJzwvZGl2Picg KwogICAgICAgICc8L2Rpdj4nOwoKICAgIHZhciBmdXNzID0gJzxidXR0b24gY2xhc3M9ImJ0biIg aWQ9ImV2bS1hYmJyZWNoZW4iIHR5cGU9ImJ1dHRvbiI+QWJicmVjaGVuPC9idXR0b24+JyArCiAg ICAgICAgICAgICAgICc8YnV0dG9uIGNsYXNzPSJidG4gYnRuLXByaW1hZXIiIGlkPSJkbGctc3Bl aWNoZXJuIiB0eXBlPSJidXR0b24iPlNwZWljaGVybjwvYnV0dG9uPic7CgogICAgLy8gQXV0by1T YXZlIChQYWtldC1DLCAyMDI2LTA1LTI5KTogYmVpbSBTY2hsaWVzc2VuIHdpcmQgYXV0b21hdGlz Y2gKICAgIC8vIGdlc3BlaWNoZXJ0LiBVc2VyLVByYWVmZXJlbnogZnVlciBhbGxlIGdyb2Vzc2Vy ZW4gRWRpdC1Nb2RhbHMuCiAgICBtb2RhbFplaWdlbihtZXRhLnRpdGVsICsgJyBiZWFyYmVpdGVu Jywga29lcnBlciwgZnVzcywgZnVuY3Rpb24oKSB7CiAgICAgICAgLy8gMSkgVm9ybGFnZSAoYmV0 cmVmZiArIHRleHQgKyB0b2dnbGVzKSBzcGVpY2hlcm4KICAgICAgICB2YXIgcGF5bG9hZCA9IFou YWRtaW4uZW1haWxWb3JsYWdlbiA/IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoWi5hZG1pbi5l bWFpbFZvcmxhZ2VuKSkgOiB7fTsKICAgICAgICB2YXIgcnRlRWwgPSBkb2N1bWVudC5nZXRFbGVt ZW50QnlJZCgnZXZtLXRleHQnKTsKICAgICAgICBwYXlsb2FkW2tleV0gPSB7CiAgICAgICAgICAg IGJldHJlZmY6IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdldm0tYmV0cmVmZicpLnZhbHVlLAog ICAgICAgICAgICB0ZXh0OiAgICBzYW5pdGl6ZVJpY2hIdG1sKHJ0ZUVsID8gcnRlRWwuaW5uZXJI VE1MIDogJycpCiAgICAgICAgfTsKICAgICAgICBtZXRhLnRvZ2dsZXMuZm9yRWFjaChmdW5jdGlv bih0KSB7CiAgICAgICAgICAgIHBheWxvYWRba2V5XVt0LmtleV0gPSBkb2N1bWVudC5nZXRFbGVt ZW50QnlJZCgnZXZtLXRvZ2dsZS0nICsgdC5rZXkpLmNoZWNrZWQ7CiAgICAgICAgfSk7CgogICAg ICAgIC8vIDIpIEJlaSBtYWlsdG8tYXV0b1RyaWdnZXIgenVzYWV0emxpY2ggVHJpZ2dlci1Lb25m aWcgKGFrdGl2ICsgZW1wZmFlbmdlcikKICAgICAgICAvLyBzcGVpY2hlcm4uIEhpbndlaXMtVHJp Z2dlciBoYWJlbiBrZWluIGFrdGl2LVRvZ2dsZSAoU2VydmVyIGVudHNjaGVpZGV0KSwKICAgICAg ICAvLyBkYWhlciBrZWluIFNhdmUtUGF5bG9hZC4KICAgICAgICB2YXIgdHJpZ2dlclBheWxvYWQg PSBudWxsOwogICAgICAgIGlmIChtZXRhLmF1dG9UcmlnZ2VyICYmIG1ldGEubW9kdXMgIT09ICdo aW53ZWlzJykgewogICAgICAgICAgICB2YXIgdHJpZ0FsbGUgPSBaLmFkbWluLmVtYWlsVHJpZ2dl ciA/IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoWi5hZG1pbi5lbWFpbFRyaWdnZXIpKSA6IHt9 OwogICAgICAgICAgICB2YXIgYWt0aXZFbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdldm0t dHJpZy1ha3RpdicpOwogICAgICAgICAgICB2YXIgZW1wZkNoa3MgPSBkb2N1bWVudC5xdWVyeVNl bGVjdG9yQWxsKCcuZXZtLWVtcGYtY2hrJyk7CiAgICAgICAgICAgIHZhciBlbXBmID0gW107CiAg ICAgICAgICAgIGVtcGZDaGtzLmZvckVhY2goZnVuY3Rpb24oYykgeyBpZiAoYy5jaGVja2VkKSBl bXBmLnB1c2goYy5nZXRBdHRyaWJ1dGUoJ2RhdGEta2V5JykpOyB9KTsKICAgICAgICAgICAgdHJp Z0FsbGVba2V5XSA9IHsKICAgICAgICAgICAgICAgIGFrdGl2OiAgICAgIGFrdGl2RWwgPyBha3Rp dkVsLmNoZWNrZWQgOiBmYWxzZSwKICAgICAgICAgICAgICAgIGVtcGZhZW5nZXI6IGVtcGYKICAg ICAgICAgICAgfTsKICAgICAgICAgICAgdHJpZ2dlclBheWxvYWQgPSB0cmlnQWxsZTsKICAgICAg ICB9CgogICAgICAgIC8vIEVyc3QgVm9ybGFnZW4tU2F2ZSwgZGFubiAob3B0aW9uYWwpIFRyaWdn ZXItU2F2ZSBzZXF1ZW56aWVsbAogICAgICAgIGFwaVB1dCgnL2FwaS9hZG1pbi9lbWFpbHZvcmxh Z2VuJywgcGF5bG9hZCkudGhlbihmdW5jdGlvbigpIHsKICAgICAgICAgICAgWi5hZG1pbi5lbWFp bFZvcmxhZ2VuID0gcGF5bG9hZDsKICAgICAgICAgICAgaWYgKHRyaWdnZXJQYXlsb2FkKSB7CiAg ICAgICAgICAgICAgICByZXR1cm4gYXBpUHV0KCcvYXBpL2FkbWluL2VtYWlsdHJpZ2dlcicsIHRy aWdnZXJQYXlsb2FkKS50aGVuKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIFouYWRt aW4uZW1haWxUcmlnZ2VyID0gdHJpZ2dlclBheWxvYWQ7CiAgICAgICAgICAgICAgICB9KTsKICAg ICAgICAgICAgfQogICAgICAgIH0pLnRoZW4oZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGVudHd1 cmZMb2VzY2hlbignZW1haWxfJyArIGtleSk7CiAgICAgICAgICAgIG1vZGFsU2NobGllc3Nlbih0 cnVlKTsKICAgICAgICAgICAgZW1haWxWb3JsYWdlblJlbmRlcm4oKTsKICAgICAgICAgICAgdG9h c3QobWV0YS50aXRlbCArICcgZ2VzcGVpY2hlcnQnLCAnZXJmb2xnJyk7CiAgICAgICAgfSkuY2F0 Y2goZnVuY3Rpb24oZSkgeyB0b2FzdCgnRmVobGVyOiAnICsgZS5tZXNzYWdlLCAnZmVobGVyJyk7 IH0pOwogICAgfSwgJ2VtYWlsXycgKyBrZXksIHsgYXV0b1NhdmU6IHRydWUgfSk7CgogICAgLy8g TW9kYWwgdmVyZ3JvZXNzZXJuIChTdGFuZGFyZCA2MjBweCB3YXIgenUgZW5nIOKAlCBVc2VyLVd1 bnNjaCkKICAgIHZhciBtb2RhbEluaGFsdCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNtb2Rh bC1vdmVybGF5IC5tb2RhbC1pbmhhbHQnKTsKICAgIGlmIChtb2RhbEluaGFsdCkgbW9kYWxJbmhh bHQuY2xhc3NMaXN0LmFkZCgnbW9kYWwtaW5oYWx0LWdyb3NzJyk7CgogICAgLy8gUlRFIGF1ZiBk YXMgY29udGVudGVkaXRhYmxlLUZlbGQgaGFlbmdlbgogICAgdmFyIHJ0ZUVkaXRvciA9IGRvY3Vt ZW50LmdldEVsZW1lbnRCeUlkKCdldm0tdGV4dCcpOwogICAgaWYgKHJ0ZUVkaXRvcikgcnRlSW5p dChydGVFZGl0b3IpOwoKICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdldm0tYWJicmVjaGVu JykuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbigpIHsgbW9kYWxTY2hsaWVzc2Vu KCk7IH0pOwoKICAgIC8vIFRyYWNraW5nIHdlbGNoZXMgRmVsZCB6dWxldHp0IGZva3Vzc2llcnQg d2FyIChCZXRyZWZmIHZzLiBBbnNjaHJlaWJlbikuCiAgICAvLyBCZWltIEtsaWNrIGF1ZiBWYXJp YWJsZSB3aXJkIGRvcnQgZWluZ2VmdWVndC4KICAgIHZhciBsZXR6dGVzRmVsZCA9IHJ0ZUVkaXRv ciB8fCBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZXZtLWJldHJlZmYnKTsKICAgIHZhciBiZXRy ZWZmRWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZXZtLWJldHJlZmYnKTsKICAgIGlmIChi ZXRyZWZmRWwpIGJldHJlZmZFbC5hZGRFdmVudExpc3RlbmVyKCdmb2N1cycsIGZ1bmN0aW9uKCkg eyBsZXR6dGVzRmVsZCA9IGJldHJlZmZFbDsgfSk7CiAgICBpZiAocnRlRWRpdG9yKSAgcnRlRWRp dG9yLmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3VzJywgZnVuY3Rpb24oKSB7IGxldHp0ZXNGZWxkID0g cnRlRWRpdG9yOyB9KTsKICAgIGlmIChydGVFZGl0b3IpIHJ0ZUVkaXRvci5mb2N1cygpOwoKICAg IC8vIFZhcmlhYmxlbi1JbnNlcnQtQnV0dG9ucy4gV0lDSFRJRzogbW91c2Vkb3duLnByZXZlbnRE ZWZhdWx0KCkgaGFlbHQKICAgIC8vIGRlbiBDdXJzb3ItRm9rdXMgaW0gWmllbC1GZWxkLCBzb25z dCB2ZXJsaWVydCBjb250ZW50ZWRpdGFibGUgZGllCiAgICAvLyBDdXJzb3ItUG9zaXRpb24gYmV2 b3IgZXhlY0NvbW1hbmQgZ3JlaWZ0LgogICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmV2 bS12YXItYnRuJykuZm9yRWFjaChmdW5jdGlvbihidG4pIHsKICAgICAgICBidG4uYWRkRXZlbnRM aXN0ZW5lcignbW91c2Vkb3duJywgZnVuY3Rpb24oZSkgeyBlLnByZXZlbnREZWZhdWx0KCk7IH0p OwogICAgICAgIGJ0bi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKCkgewogICAg ICAgICAgICB2YXIgdmFyTmFtZSA9IGJ0bi5nZXRBdHRyaWJ1dGUoJ2RhdGEtdmFyJyk7CiAgICAg ICAgICAgIHZhciB0b2tlbiA9ICd7JyArIHZhck5hbWUgKyAnfSc7CiAgICAgICAgICAgIHZhciB6 aWVsID0gbGV0enRlc0ZlbGQ7CiAgICAgICAgICAgIGlmICghemllbCkgcmV0dXJuOwogICAgICAg ICAgICBpZiAoemllbC50YWdOYW1lID09PSAnSU5QVVQnIHx8IHppZWwudGFnTmFtZSA9PT0gJ1RF WFRBUkVBJykgewogICAgICAgICAgICAgICAgdmFyIHMgPSB6aWVsLnNlbGVjdGlvblN0YXJ0IHx8 IDA7CiAgICAgICAgICAgICAgICB2YXIgZTIgPSB6aWVsLnNlbGVjdGlvbkVuZCB8fCAwOwogICAg ICAgICAgICAgICAgemllbC52YWx1ZSA9IHppZWwudmFsdWUuc2xpY2UoMCwgcykgKyB0b2tlbiAr IHppZWwudmFsdWUuc2xpY2UoZTIpOwogICAgICAgICAgICAgICAgemllbC5zZWxlY3Rpb25TdGFy dCA9IHppZWwuc2VsZWN0aW9uRW5kID0gcyArIHRva2VuLmxlbmd0aDsKICAgICAgICAgICAgICAg IHppZWwuZm9jdXMoKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIC8vIGNv bnRlbnRlZGl0YWJsZTogYW4gQ3Vyc29yLVBvc2l0aW9uIGVpbmZ1ZWdlbgogICAgICAgICAgICAg ICAgemllbC5mb2N1cygpOwogICAgICAgICAgICAgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ2lu c2VydFRleHQnLCBmYWxzZSwgdG9rZW4pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIFoubW9k YWxEaXJ0eSA9IHRydWU7CiAgICAgICAgfSk7CiAgICB9KTsKfQoKLy8gPT09PT0gVm9ybGFnZW4t RW5naW5lIChiZWZ1ZWxsZW4gKyBFbXBmYWVuZ2VyLVJlc29sdmUgKyBUcmlnZ2VyLURpc3BhdGNo KSA9PT09PQoKLy8gV2FuZGVsdCBzYW5pdGllcnRlcyBNaW5pLUhUTUwgaW4gUGxhaW4tVGV4dCBm dWVyIG1haWx0bzotVmVyc2FuZC4KLy8gQmFja3dhcmRzLWNvbXBhdDogYWx0ZSBQbGFpbi1Wb3Js YWdlbiAobWl0IFxuKSBnZWhlbiB1bnZlcmFlbmRlcnQgZHVyY2guCmV4cG9ydCBmdW5jdGlvbiBo dG1sWnVQbGFpblRleHQoaHRtbCkgewogICAgaWYgKCFodG1sKSByZXR1cm4gJyc7CiAgICB2YXIg cyA9IFN0cmluZyhodG1sKTsKICAgIGlmICghLzxcLz8oYnxzdHJvbmd8aXxlbXx1fHVsfG9sfGxp fHB8YnJ8ZGl2fHNwYW58YXxoXGR8YmxvY2txdW90ZSlcYi9pLnRlc3QocykpIHJldHVybiBzOwog ICAgcyA9IHMKICAgICAgICAucmVwbGFjZSgvPGJyXHMqXC8/Pi9naSwgJ1xuJykKICAgICAgICAu cmVwbGFjZSgvPFwvKHB8ZGl2fGhcZHxsaXxibG9ja3F1b3RlKT4vZ2ksICdcbicpCiAgICAgICAg LnJlcGxhY2UoLzxsaVtePl0qPi9naSwgJyogJykKICAgICAgICAucmVwbGFjZSgvPFwvPyhwfGRp dnxoXGR8dWx8b2x8YnxzdHJvbmd8aXxlbXx1fHNwYW58YXxibG9ja3F1b3RlKVtePl0qPi9naSwg JycpCiAgICAgICAgLnJlcGxhY2UoLyZuYnNwOy9nLCAnICcpCiAgICAgICAgLnJlcGxhY2UoLyZh bXA7L2csICcmJykKICAgICAgICAucmVwbGFjZSgvJmx0Oy9nLCAnPCcpCiAgICAgICAgLnJlcGxh Y2UoLyZndDsvZywgJz4nKQogICAgICAgIC5yZXBsYWNlKC8mcXVvdDsvZywgJyInKQogICAgICAg IC5yZXBsYWNlKC8mIzM5Oy9nLCAiJyIpCiAgICAgICAgLnJlcGxhY2UoL1xuezMsfS9nLCAnXG5c bicpOwogICAgcmV0dXJuIHMudHJpbSgpOwp9CgovLyBFcnNldHp0IHt2YXJpYWJsZX0tUGxhdHpo YWx0ZXIgaW0gU3RyaW5nIGR1cmNoIGRpZSBrb25rcmV0ZW4gV2VydGUuCi8vIEtvbnZlcnRpZXJ0 IEhUTUwtVm9ybGFnZW4gKG5ldWVyIFJURS1FZGl0b3IpIGF1dG9tYXRpc2NoIHp1IFBsYWluLVRl eHQKLy8gZnVlciBkZW4gbWFpbHRvOi1WZXJzYW5kLiBjdHgtT2JqZWt0OiB7ZGF0dW0sIHdvY2hl bnRhZywgc2NoaWNodCwgLi4ufQpleHBvcnQgZnVuY3Rpb24gZW1haWxWb3JsYWdlQmVmdWVsbGVu KHZvcmxhZ2UsIGN0eCkgewogICAgdmFyIHBsYWluID0gaHRtbFp1UGxhaW5UZXh0KHZvcmxhZ2Up OwogICAgcmV0dXJuIHBsYWluLnJlcGxhY2UoL1x7KFx3KylcfS9nLCBmdW5jdGlvbihfLCBrKSB7 CiAgICAgICAgcmV0dXJuIChjdHggJiYgayBpbiBjdHgpID8gU3RyaW5nKGN0eFtrXSkgOiAoJ3sn ICsgayArICd9Jyk7CiAgICB9KTsKfQoKLy8gTG9lc3Qgc3ltYm9saXNjaGUgRW1wZmFlbmdlci1U YWdzICh6LkIuICdzdXBlcnVzZXInLCAnd2FjaGxlaXR1bmdfcGVyc29uJykKLy8gaW4ga29ua3Jl dGUgRS1NYWlsLUFkcmVzc2VuIGF1Zi4gY3R4IGthbm4gJ3BlcnNvbl9pZCcsICdkYXR1bScsCi8v ICdzY2hpY2h0X2t1cnonIGVudGhhbHRlbiwgZGFtaXQgdGFnLXNwZXppZmlzY2hlIEJlenVlZ2Ug ZnVua3Rpb25pZXJlbi4KLy8gUmV0dXJuOiBBcnJheSB2b24gU3RyaW5ncyAoZWluZGV1dGlnZSBB ZHJlc3NlbiwgTG93ZXJjYXNlLWRlZHVwbGl6aWVydCkuCi8vIEF1ZGl0LVBoYXNlIEMuMSAoMjAy Ni0wNS0yMSk6IG5pY2h0IG1laHIgZXhwb3J0aWVydCwgbnVyIGludGVybiBpbgovLyBtYWlsVHJp Z2dlckZldWVybiBnZW51dHp0LiBEZXIgZnJ1ZWhlciBpbiBhcHAuanMgZ2VmdWVocnRlIEltcG9y dCB3dXJkZQovLyBlbnRmZXJudCDigJQga2VpbmUgZXh0ZXJuZW4gS29uc3VtZW50ZW4uCmZ1bmN0 aW9uIGVtYWlsRW1wZmFlbmdlclJlc29sdmUodGFncywgY3R4KSB7CiAgICBpZiAoIXRhZ3MgfHwg IXRhZ3MubGVuZ3RoKSByZXR1cm4gW107CiAgICB2YXIgcGVyc29uZW4gPSAoWi5wbGFudW5nICYm IFoucGxhbnVuZy5wZXJzb25lbikgfHwgW107CiAgICB2YXIgYnlJZCA9IHt9OwogICAgcGVyc29u ZW4uZm9yRWFjaChmdW5jdGlvbihwKSB7IGJ5SWRbU3RyaW5nKHAuaWQpXSA9IHA7IH0pOwogICAg dmFyIG91dCA9IHt9OwogICAgZnVuY3Rpb24gYWRkKHApIHsKICAgICAgICBpZiAoIXApIHJldHVy bjsKICAgICAgICB2YXIgZW0gPSBTdHJpbmcocC5lbWFpbCB8fCAnJykudHJpbSgpOwogICAgICAg IGlmICghZW0gfHwgZW0uaW5kZXhPZignQCcpIDwgMCkgcmV0dXJuOwogICAgICAgIG91dFtlbS50 b0xvd2VyQ2FzZSgpXSA9IGVtOwogICAgfQogICAgdmFyIHppZWxQZXJzb24gPSBjdHggJiYgY3R4 LnBlcnNvbl9pZCAhPSBudWxsID8gYnlJZFtTdHJpbmcoY3R4LnBlcnNvbl9pZCldIDogbnVsbDsK ICAgIHRhZ3MuZm9yRWFjaChmdW5jdGlvbih0YWcpIHsKICAgICAgICBpZiAodGFnID09PSAnYmV0 cm9mZmVuZV9wZXJzb24nKSB7CiAgICAgICAgICAgIGlmICh6aWVsUGVyc29uKSBhZGQoemllbFBl cnNvbik7CiAgICAgICAgfSBlbHNlIGlmICh0YWcgPT09ICd3YWNobGVpdHVuZ19wZXJzb24nKSB7 CiAgICAgICAgICAgIHZhciBvZSA9IHppZWxQZXJzb24gJiYgemllbFBlcnNvbi5vZTsKICAgICAg ICAgICAgcGVyc29uZW4uZm9yRWFjaChmdW5jdGlvbihwKSB7CiAgICAgICAgICAgICAgICBpZiAo IXAuYWt0aXYgfHwgcC5ncnVwcGUgIT09ICdXTCcpIHJldHVybjsKICAgICAgICAgICAgICAgIGlm IChvZSAmJiBwLm9lICYmIHAub2UgIT09IG9lKSByZXR1cm47CiAgICAgICAgICAgICAgICBhZGQo cCk7CiAgICAgICAgICAgIH0pOwogICAgICAgIH0gZWxzZSBpZiAodGFnID09PSAnZ2VzYW10dmVy YW50d29ydGxpY2gnKSB7CiAgICAgICAgICAgIChaLmFkbWluLmZhY2hhdWZzaWNodCB8fCBbXSku Zm9yRWFjaChmdW5jdGlvbihmYSkgewogICAgICAgICAgICAgICAgaWYgKCFmYS5nZXNhbXR2ZXJh bnR3b3J0bGljaCkgcmV0dXJuOwogICAgICAgICAgICAgICAgaWYgKGZhLmVtYWlsKSB7IG91dFtT dHJpbmcoZmEuZW1haWwpLnRvTG93ZXJDYXNlKCldID0gZmEuZW1haWw7IHJldHVybjsgfQogICAg ICAgICAgICAgICAgdmFyIHAgPSBwZXJzb25lbi5maW5kKGZ1bmN0aW9uKHgpIHsgcmV0dXJuICh4 Lm53S2VubnVuZyB8fCAnJykudG9Mb3dlckNhc2UoKSA9PT0gU3RyaW5nKGZhLm53S2VubnVuZyB8 fCAnJykudG9Mb3dlckNhc2UoKTsgfSk7CiAgICAgICAgICAgICAgICBhZGQocCk7CiAgICAgICAg ICAgIH0pOwogICAgICAgIH0gZWxzZSBpZiAodGFnID09PSAnc3VwZXJ1c2VyJykgewogICAgICAg ICAgICAoWi5hZG1pbi5zdXBlclVzZXIgfHwgW10pLmZvckVhY2goZnVuY3Rpb24oc3UpIHsKICAg ICAgICAgICAgICAgIHZhciBwID0gcGVyc29uZW4uZmluZChmdW5jdGlvbih4KSB7IHJldHVybiAo eC5ud0tlbm51bmcgfHwgJycpLnRvTG93ZXJDYXNlKCkgPT09IFN0cmluZyhzdS5ud0tlbm51bmcg fHwgJycpLnRvTG93ZXJDYXNlKCk7IH0pOwogICAgICAgICAgICAgICAgYWRkKHApOwogICAgICAg ICAgICB9KTsKICAgICAgICB9IGVsc2UgaWYgKHRhZyA9PT0gJ2RnbF9zY2hpY2h0JykgewogICAg ICAgICAgICBpZiAoY3R4ICYmIGN0eC5kYXR1bSAmJiBjdHguc2NoaWNodF9rdXJ6ICYmIFoucGxh bnVuZy5laW50cmFlZ2UpIHsKICAgICAgICAgICAgICAgIHZhciB0YWdfZWludHJhZWdlID0gWi5w bGFudW5nLmVpbnRyYWVnZVtjdHguZGF0dW1dIHx8IHt9OwogICAgICAgICAgICAgICAgdmFyIHpp ZWxDb2RlcyA9IFtjdHguc2NoaWNodF9rdXJ6ICsgJy1ER0wnLCBjdHguc2NoaWNodF9rdXJ6ICsg Jy1XREYnLCBjdHguc2NoaWNodF9rdXJ6ICsgJy1GQlAnXTsKICAgICAgICAgICAgICAgIE9iamVj dC5rZXlzKHRhZ19laW50cmFlZ2UpLmZvckVhY2goZnVuY3Rpb24ocGlkKSB7CiAgICAgICAgICAg ICAgICAgICAgaWYgKFN0cmluZyhwaWQpID09PSBTdHJpbmcoY3R4LnBlcnNvbl9pZCkpIHJldHVy bjsKICAgICAgICAgICAgICAgICAgICBpZiAoemllbENvZGVzLmluZGV4T2YodGFnX2VpbnRyYWVn ZVtwaWRdKSA+PSAwKSBhZGQoYnlJZFtwaWRdKTsKICAgICAgICAgICAgICAgIH0pOwogICAgICAg ICAgICB9CiAgICAgICAgfSBlbHNlIGlmICh0YWcgPT09ICdkaWVuc3Rfd2FjaF9mcmVpX2luX3Nj aGljaHQnKSB7CiAgICAgICAgICAgIGlmIChjdHggJiYgY3R4LmRhdHVtICYmIFoucGxhbnVuZy5l aW50cmFlZ2UpIHsKICAgICAgICAgICAgICAgIHZhciB0ZSA9IFoucGxhbnVuZy5laW50cmFlZ2Vb Y3R4LmRhdHVtXSB8fCB7fTsKICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKHRlKS5mb3JFYWNo KGZ1bmN0aW9uKHBpZCkgewogICAgICAgICAgICAgICAgICAgIGlmICh0ZVtwaWRdID09PSAnZGZy JyB8fCB0ZVtwaWRdID09PSAnd2ZyJykgYWRkKGJ5SWRbcGlkXSk7CiAgICAgICAgICAgICAgICB9 KTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0pOwogICAgcmV0dXJuIE9iamVjdC5rZXlz KG91dCkubWFwKGZ1bmN0aW9uKGspIHsgcmV0dXJuIG91dFtrXTsgfSk7Cn0KCi8vIFplbnRyYWxl ciBtYWlsdG86LVRyaWdnZXItRGlzcGF0Y2hlci4KLy8gb3B0Lm1hbnVlbGwgPSB0cnVlIGJlaSB2 b20gTnV0emVyIGFrdGl2IGFuZ2VrbGlja3RlbiBNYWlscyAoei5CLiBEZWZpeml0LQovLyBCcmll ZmluZy1CdXR0b24gaW0gUHJ1ZWZ1bmdzLVRhYikuIEluIGRlbSBGYWxsIGlnbm9yaWVyZW4gd2ly IGRlbgovLyBhZG1pbi1rb25maWd1cmllcnRlbiBjZmcuYWt0aXYtU3RhdHVzIHVuZCBmYWxsZW4g ZnVlciBFbXBmYWVuZ2VyIGF1ZgovLyBtZXRhLmRlZmF1bHRFbXBmYWVuZ2VyIHp1cnVlY2ssIHdl bm4gZGVyIEFkbWluLVRhYiBub2NoIG5pY2h0IGFuZ2VmYXNzdAovLyB3dXJkZS4gRGFzIHZlcmhp bmRlcnQgInN0aWxsZSIgS2xpY2tzLCBiZWkgZGVuZW4gc2ljaCBuaWNodHMgb2VmZm5ldC4KLy8g QXV0by1UcmlnZ2VyIChLcmFua21lbGR1bmcgdS5hLikgYmxlaWJlbiB3aWUgYmlzaGVyOiBudXIg ZmV1ZXJuLCB3ZW5uCi8vIGRlciBBZG1pbiBzaWUgZXhwbGl6aXQgYWt0aXZpZXJ0IGhhdC4KZXhw b3J0IGZ1bmN0aW9uIG1haWxUcmlnZ2VyRmV1ZXJuKHRyaWdnZXJUeXAsIGN0eCwgb3B0KSB7CiAg ICBvcHQgPSBvcHQgfHwge307CiAgICB2YXIgY2ZnID0gKChaLmFkbWluICYmIFouYWRtaW4uZW1h aWxUcmlnZ2VyKSB8fCB7fSlbdHJpZ2dlclR5cF0gfHwgbnVsbDsKICAgIHZhciBtZXRhID0gRU1B SUxfVk9STEFHRU5fTUVUQVt0cmlnZ2VyVHlwXTsKICAgIGlmICghbWV0YSkgcmV0dXJuIGZhbHNl OwogICAgLy8gSGlud2Vpcy1UcmlnZ2VyIChQaGFzZSA1LCAyMDI2LTA1LTIwKTogZGVyIFNlcnZl ciBoYXQgZGVuIEhpbndlaXMKICAgIC8vIGJlcmVpdHMgaW4gZGF0YS9oaW53ZWlzZS5qc29uIGdl c2NocmllYmVuIOKAlCBrZWluIE91dGxvb2stUG9wdXAuCiAgICAvLyBCYW5uZXIgKyBCYWRnZSBl cnNjaGVpbmVuIGJlaW0gbmFlY2hzdGVuIFN5bmMtV29ya2VyLVRpY2suCiAgICBpZiAobWV0YS5t b2R1cyA9PT0gJ2hpbndlaXMnKSByZXR1cm4gZmFsc2U7CiAgICBpZiAoIW9wdC5tYW51ZWxsKSB7 CiAgICAgICAgaWYgKCFjZmcgfHwgIWNmZy5ha3RpdikgcmV0dXJuIGZhbHNlOwogICAgfQogICAg dmFyIHRhZ3MgPSAoY2ZnICYmIGNmZy5lbXBmYWVuZ2VyICYmIGNmZy5lbXBmYWVuZ2VyLmxlbmd0 aCkKICAgICAgICA/IGNmZy5lbXBmYWVuZ2VyCiAgICAgICAgOiAobWV0YS5kZWZhdWx0RW1wZmFl bmdlciB8fCBbXSk7CiAgICB2YXIgdm9ybGFnZSA9IGVtYWlsVm9ybGFnZW5Ib2xlbigpW3RyaWdn ZXJUeXBdOwogICAgaWYgKCF2b3JsYWdlKSByZXR1cm4gZmFsc2U7CiAgICB2YXIgZW1wZmFlbmdl ciA9IGVtYWlsRW1wZmFlbmdlclJlc29sdmUodGFncywgY3R4IHx8IHt9KTsKICAgIGlmICghZW1w ZmFlbmdlci5sZW5ndGgpIHsKICAgICAgICB0b2FzdCgnTWFpbCDigJ4nICsgbWV0YS50aXRlbCAr ICciOiBrZWluZSBFbXBmw6RuZ2VyIG1pdCBFLU1haWwtQWRyZXNzZSBnZWZ1bmRlbiAoR2VzYW10 dmVyYW50d29ydGxpY2hlL3IgaW4gYWRtaW4uZmFjaGF1ZnNpY2h0IHBmbGVnZW4/KScsICd3YXJu dW5nJyk7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQogICAgdmFyIGJldHJlZmYgPSBlbWFp bFZvcmxhZ2VCZWZ1ZWxsZW4odm9ybGFnZS5iZXRyZWZmIHx8ICcnLCBjdHggfHwge30pOwogICAg dmFyIHRleHQgICAgPSBlbWFpbFZvcmxhZ2VCZWZ1ZWxsZW4odm9ybGFnZS50ZXh0ICAgIHx8ICcn LCBjdHggfHwge30pOwogICAgdmFyIHVybCA9ICdtYWlsdG86P2JjYz0nICsgZW5jb2RlVVJJQ29t cG9uZW50KGVtcGZhZW5nZXIuam9pbignLCcpKSArCiAgICAgICAgICAgICAgJyZzdWJqZWN0PScg KyBlbmNvZGVVUklDb21wb25lbnQoYmV0cmVmZikgKwogICAgICAgICAgICAgICcmYm9keT0nICAg ICsgZW5jb2RlVVJJQ29tcG9uZW50KHRleHQpOwogICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSB1 cmw7CiAgICByZXR1cm4gdHJ1ZTsKfQoKLy8gU2VydmVyLWdldHJpZ2dlcnRlcyBtYWlsdG86IGJl aSBTVS0gb2RlciBHZXNhbXR2ZXJhbnR3b3J0bGljaC1XZWNoc2VsCi8vIGxpZWZlcnQgZGVyIFNl cnZlciBpbSBSZXNwb25zZS1Cb2R5IGBfYnJhdWNodF9tYWlsdG8gPSB7IHRyaWdnZXIsIGRpZmZz IH1gLgovLyBQcm8gRGlmZiAocmVpbi9yYXVzLCByb2xsZSwgbmFtZSkgd2lyZCBlaW4gZWlnZW5l cyBtYWlsdG8tUG9wdXAgZ2VvZWZmbmV0LgovLyBXaXJkIHZvbiBhZG1pbl9yb2xsZW4uanMgZGly ZWt0IG5hY2ggZGVtIFNhdmUgYXVmZ2VydWZlbi4KZXhwb3J0IGZ1bmN0aW9uIHZlcmFudHdvcnR1 bmdzTWFpbHRvRmV1ZXJuKGJyYXVjaHRNYWlsdG8pIHsKICAgIGlmICghYnJhdWNodE1haWx0byB8 fCAhYnJhdWNodE1haWx0by5kaWZmcyB8fCAhYnJhdWNodE1haWx0by5kaWZmcy5sZW5ndGgpIHJl dHVybiBmYWxzZTsKICAgIHZhciB0cmlnZ2VyID0gYnJhdWNodE1haWx0by50cmlnZ2VyIHx8ICdy b2xsZV92ZXJhbnR3b3J0dW5nJzsKICAgIGJyYXVjaHRNYWlsdG8uZGlmZnMuZm9yRWFjaChmdW5j dGlvbihkKSB7CiAgICAgICAgdmFyIHJpY2h0dW5nVmVyYiA9IChkLnJpY2h0dW5nID09PSAncmVp bicpCiAgICAgICAgICAgID8gKCd6dW0gJyArIGQucm9sbGUgKyAnIGVybmFubnQnKQogICAgICAg ICAgICA6ICgnYXVzIGRlciBSb2xsZSAnICsgZC5yb2xsZSArICcgZW50bGFzc2VuJyk7CiAgICAg ICAgbWFpbFRyaWdnZXJGZXVlcm4odHJpZ2dlciwgewogICAgICAgICAgICByb2xsZTogICAgICAg ICAgZC5yb2xsZSwKICAgICAgICAgICAgbmFtZTogICAgICAgICAgIGQubmFtZSB8fCBkLm53S2Vu bnVuZyB8fCAnJywKICAgICAgICAgICAgcmljaHR1bmc6ICAgICAgIGQucmljaHR1bmcsCiAgICAg ICAgICAgIHJpY2h0dW5nX3ZlcmI6ICByaWNodHVuZ1ZlcmIsCiAgICAgICAgICAgICdhdXNsw7Zz ZXInOiAgICBhYnNlbmRlck5hbWVFcm1pdHRlbG4oKSwKICAgICAgICAgICAgYWJzZW5kZXJfbmFt ZTogIGFic2VuZGVyTmFtZUVybWl0dGVsbigpCiAgICAgICAgfSwgeyBtYW51ZWxsOiB0cnVlIH0p OwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKLy8gcm9sbGVEaWZmVHJpZ2dlcm4gZW50ZmFl bGx0IHNlaXQgUGhhc2UgNSAoMjAyNi0wNS0yMCk6IFNVLSB1bmQKLy8gR2VzYW10dmVyYW50d29y dGxpY2gtV2VjaHNlbCB3ZXJkZW4gdm9tIFNlcnZlciB1ZWJlciBkYXMKLy8gX2JyYXVjaHRfbWFp bHRvLUZlbGQgaW0gUmVzcG9uc2Ugc2lnbmFsaXNpZXJ0IChzaWVoZQovLyB2ZXJhbnR3b3J0dW5n c01haWx0b0ZldWVybiBvYmVuKS4gRkEtU2VoZW4tRmxhZy1BZW5kZXJ1bmdlbiB3ZXJkZW4KLy8g dm9tIFNlcnZlciBpbiBkYXRhL2hpbndlaXNlLmpzb24gYWxzIEluLUFwcC1IaW53ZWlzIGVyemV1 Z3QuCg== ### FILE: js/export_plan.js | 20784 Ly8gPT09IGV4cG9ydF9wbGFuLmpzID09PQovLyBEaWVuc3RwbGFuLUV4cG9ydCAoQWRtaW4tVGFi IOKAnkV4Y2VsLUV4cG9ydCIpLiBFcnpldWd0IGNsaWVudHNlaXRpZyBhdXMgZGVuCi8vIGJlcmVp dHMgZ2VsYWRlbmVuIERhdGVuIChaLnBsYW51bmcuZWludHJhZWdlLCBaLnBlcnNvbmVuLCBaLnRh Z0luZm9zKSBlaW5lCi8vIGtvbmZpZ3VyaWVyYmFyZSBUYWJlbGxlOgovLwovLyAgIE5hbWUgfCBE aWVuc3RncnVwcGUgfCBEYXR1bSB8IE1vbmF0IHwgVGFnIHwgV29jaGVudGFnIHwgS1cgfCBTY2hp Y2h0IHwgS2xhcnRleHQKLy8KLy8gRGFydW50ZXIgZm9sZ3QgZWluZSB6d2VpdGUgSW5mb2JveCDi gJ5IaW53ZWlzZSB6dSBUYWdlbiBtaXQgQmVzb25kZXJoZWl0ZW4iCi8vIChGZWllcnRhZ2UgLyBG ZXJpZW4gLyBTb25kZXJ0ZXJtaW5lIOKAlCBhbHNvIGdlbmF1IGRpZSBpbSBQbGFuLUhlYWRlciBl cmthbm50ZW4KLy8gSGlud2Vpc2UpIGZ1ZXIgZGVuIGV4cG9ydGllcnRlbiBaZWl0cmF1bS4KLy8K Ly8gVW1mYW5nIGVpbnN0ZWxsYmFyOiBnYW56ZXMgUGxhbnVuZ3NqYWhyIHwgS2FsZW5kZXJ3b2No ZW4gKHZvbuKAk2JpcykgfAovLyBEYXR1bSAodm9u4oCTYmlzKTsgUGVyc29uZW5rcmVpczogYWxs ZSB8IERpZW5zdGdydXBwZW4gfCBlaW56ZWxuZSBQZXJzb25lbgovLyAoPSBpbmRpdmlkdWVsbGVy IEV4cG9ydCkuIEZvcm1hdDogZm9ybWF0aWVydGVzIFhMU1ggKFNoZWV0SlMsIGxva2FsKSBvZGVy IENTVgovLyAoVVRGLTggQk9NLCBTZW1pa29sb24g4oCUIEV4Y2VsLURFLXRhdWdsaWNoKS4gS2Vp bmUgU2VydmVyLUFlbmRlcnVuZyBub2V0aWcuCgppbXBvcnQgeyBaIH0gZnJvbSAnLi9jb3JlX3N0 YXRlLmpzJzsKaW1wb3J0IHsgZXNjYXBlSFRNTCwgZXNjYXBlQXR0ciwgZGF0dW1TdHIsIGRhdHVt Rm9ybWF0REUsIHBpZEtleSB9IGZyb20gJy4vY29yZV91dGlsLmpzJzsKaW1wb3J0IHsgdG9hc3Qg fSBmcm9tICcuL3VpX2RpYWxvZy5qcyc7Cgp2YXIgTU9OQVRFID0gWydKYW51YXInLCAnRmVicnVh cicsICdNw6RyeicsICdBcHJpbCcsICdNYWknLCAnSnVuaScsICdKdWxpJywgJ0F1Z3VzdCcsICdT ZXB0ZW1iZXInLCAnT2t0b2JlcicsICdOb3ZlbWJlcicsICdEZXplbWJlciddOwp2YXIgV1QgICAg ID0gWydTbycsICdNbycsICdEaScsICdNaScsICdEbycsICdGcicsICdTYSddOwp2YXIgU1BBTFRF TiA9IFsnTmFtZScsICdEaWVuc3RncnVwcGUnLCAnRGF0dW0nLCAnTW9uYXQnLCAnVGFnJywgJ1dv Y2hlbnRhZycsICdLVycsICdTY2hpY2h0JywgJ1NjaGljaHQgKEtsYXJ0ZXh0KSddOwp2YXIgSElO V0VJU19TUEFMVEVOID0gWydEYXR1bScsICdXb2NoZW50YWcnLCAnVHlwJywgJ0JlemVpY2hudW5n JywgJ0Jlc2NocmVpYnVuZyddOwoKZnVuY3Rpb24gX2RhcmYoKSB7CiAgICByZXR1cm4gISEoWi5y ZWNodGUgJiYgKFoucmVjaHRlLmlzdFN1cGVyVXNlciB8fCAoWi5yZWNodGUuc2VoZW4gJiYgWi5y ZWNodGUuc2VoZW4uYWRtaW5pc3RyYXRpb24pKSk7Cn0KCi8vID09PT09IEthbGVuZGVyLUhlbGZl ciA9PT09PQoKLy8gSVNPLUthbGVuZGVyd29jaGUgKE1vLWJhc2llcnQpIOKAlCBzcGllZ2VsdCBz dGF0aXN0aWtfZW5naW5lLl9pc29LVy4KZnVuY3Rpb24gX2lzb0tXKGQpIHsKICAgIHZhciB0ID0g bmV3IERhdGUoZC5nZXRGdWxsWWVhcigpLCBkLmdldE1vbnRoKCksIGQuZ2V0RGF0ZSgpKTsKICAg IHZhciB0YWcgPSAodC5nZXREYXkoKSArIDYpICUgNzsKICAgIHQuc2V0RGF0ZSh0LmdldERhdGUo KSAtIHRhZyArIDMpOwogICAgdmFyIGphaHJTdGFydCA9IG5ldyBEYXRlKHQuZ2V0RnVsbFllYXIo KSwgMCwgNCk7CiAgICB2YXIga3cgPSAxICsgTWF0aC5yb3VuZCgoKHQgLSBqYWhyU3RhcnQpIC8g ODY0MDAwMDAgLSAzICsgKChqYWhyU3RhcnQuZ2V0RGF5KCkgKyA2KSAlIDcpKSAvIDcpOwogICAg cmV0dXJuIHsgamFocjogdC5nZXRGdWxsWWVhcigpLCBrdzoga3cgfTsKfQovLyBNb250YWcgZGVy IElTTy1LYWxlbmRlcndvY2hlIChXb2NoZSAxID0gZGllIG1pdCBkZW0gNC4gSmFudWFyKS4KZnVu Y3Rpb24gX2lzb1dvY2hlbk1vbnRhZyhqYWhyLCB3b2NoZSkgewogICAgdmFyIGphbjQgPSBuZXcg RGF0ZShqYWhyLCAwLCA0KTsKICAgIHZhciB0YWcgPSAoamFuNC5nZXREYXkoKSArIDYpICUgNzsK ICAgIHZhciB3MSA9IG5ldyBEYXRlKGphbjQuZ2V0RnVsbFllYXIoKSwgamFuNC5nZXRNb250aCgp LCBqYW40LmdldERhdGUoKSAtIHRhZyk7CiAgICByZXR1cm4gbmV3IERhdGUodzEuZ2V0RnVsbFll YXIoKSwgdzEuZ2V0TW9udGgoKSwgdzEuZ2V0RGF0ZSgpICsgKHdvY2hlIC0gMSkgKiA3KTsKfQov LyAnWVlZWS1Xd3cnIChXZXJ0IGVpbmVzIDxpbnB1dCB0eXBlPSJ3ZWVrIj4pIC0+IHsgdm9uOkRh dGUsIGJpczpEYXRlLCBqYWhyLCBrdyB9LgpmdW5jdGlvbiBfa3dHcmVuemVuKHdrU3RyKSB7CiAg ICB2YXIgbSA9IC9eKFxkezR9KS1XKFxkezEsMn0pJC8uZXhlYyh3a1N0ciB8fCAnJyk7CiAgICBp ZiAoIW0pIHJldHVybiBudWxsOwogICAgdmFyIGphaHIgPSBwYXJzZUludChtWzFdLCAxMCksIGt3 ID0gcGFyc2VJbnQobVsyXSwgMTApOwogICAgdmFyIG1vID0gX2lzb1dvY2hlbk1vbnRhZyhqYWhy LCBrdyk7CiAgICB2YXIgc28gPSBuZXcgRGF0ZShtby5nZXRGdWxsWWVhcigpLCBtby5nZXRNb250 aCgpLCBtby5nZXREYXRlKCkgKyA2KTsKICAgIHJldHVybiB7IHZvbjogbW8sIGJpczogc28sIGph aHI6IGphaHIsIGt3OiBrdyB9Owp9CgovLyA9PT09PSBTdGFtbWRhdGVuLUhlbGZlciA9PT09PQoK ZnVuY3Rpb24gX2dydXBwZUxhYmVsKG5hbWUpIHsKICAgIHZhciBnbSA9IFouZ3J1cHBlbk1hcCAm JiBaLmdydXBwZW5NYXBbbmFtZV07CiAgICBpZiAoZ20gJiYgZ20uYmV6ZWljaG51bmcpIHJldHVy biBnbS5iZXplaWNobnVuZzsKICAgIHZhciBnID0gKFouYWRtaW4uZ3J1cHBlbiB8fCBbXSkuZmls dGVyKGZ1bmN0aW9uKHgpeyByZXR1cm4geC5uYW1lID09PSBuYW1lOyB9KVswXTsKICAgIHJldHVy biBnID8gKGcuYmV6ZWljaG51bmcgfHwgZy5uYW1lKSA6IChuYW1lIHx8ICcnKTsKfQpmdW5jdGlv biBfY29kZUJlemVpY2hudW5nKGNvZGUpIHsKICAgIHZhciBjID0gKFouYWRtaW4uc2NoaWNodGNv ZGVzIHx8IFtdKS5maWx0ZXIoZnVuY3Rpb24oeCl7IHJldHVybiB4LmNvZGUgPT09IGNvZGU7IH0p WzBdOwogICAgcmV0dXJuIGMgPyAoYy5iZXplaWNobnVuZyB8fCBjLmNvZGUpIDogY29kZTsKfQpm dW5jdGlvbiBfcGVyc29uTmFtZShwKSB7CiAgICByZXR1cm4gKHAubmFtZSB8fCAnJykgKyAocC52 b3JuYW1lID8gKCcsICcgKyBwLnZvcm5hbWUpIDogJycpOwp9Ci8vIEhUTUwgKFNvbmRlcnRlcm1p bi1UZXh0IGlzdCBhZG1pbi1zYW5pdGlzaWVydCkgLT4gcmVpbmVyIFRleHQgZnVlciBkZW4gRXhw b3J0LgpmdW5jdGlvbiBfc3RyaXBIdG1sKHMpIHsKICAgIGlmICghcykgcmV0dXJuICcnOwogICAg dmFyIGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKICAgIGQuaW5uZXJIVE1MID0g czsKICAgIHJldHVybiAoZC50ZXh0Q29udGVudCB8fCBkLmlubmVyVGV4dCB8fCAnJykucmVwbGFj ZSgvXHMrL2csICcgJykudHJpbSgpOwp9CgovLyA9PT09PSBGb3JtdWxhci1MZXNlbiA9PT09PQoK ZnVuY3Rpb24gX3ZhbChpZCkgeyB2YXIgZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKTsg cmV0dXJuIGUgPyBlLnZhbHVlIDogJyc7IH0KZnVuY3Rpb24gX2NoayhpZCkgeyB2YXIgZSA9IGRv Y3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKTsgcmV0dXJuICEhKGUgJiYgZS5jaGVja2VkKTsgfQpm dW5jdGlvbiBfY2hlY2tlZChncnApIHsKICAgIHZhciBvdXQgPSBbXTsKICAgIGRvY3VtZW50LnF1 ZXJ5U2VsZWN0b3JBbGwoJyNleHBvcnQtaW5oYWx0IFtkYXRhLWV4cD0iJyArIGdycCArICciXTpj aGVja2VkJykuZm9yRWFjaChmdW5jdGlvbihjKXsgb3V0LnB1c2goYy52YWx1ZSk7IH0pOwogICAg cmV0dXJuIG91dDsKfQoKLy8gWmVpdHJhdW0gYXVzIGRlbSBGb3JtdWxhciAtPiB7IHZvbjpEYXRl LCBiaXM6RGF0ZSwgbGFiZWwgfSBvZGVyIG51bGwuCmZ1bmN0aW9uIF96ZWl0cmF1bSgpIHsKICAg IHZhciBtb2R1cyA9IF92YWwoJ2V4cC16ZWl0bW9kdXMnKSB8fCAnamFocic7CiAgICBpZiAobW9k dXMgPT09ICdqYWhyJykgewogICAgICAgIHZhciBqID0gKFouYWRtaW4gJiYgWi5hZG1pbi5qYWhy KSB8fCBuZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKCk7CiAgICAgICAgcmV0dXJuIHsgdm9uOiBuZXcg RGF0ZShqLCAwLCAxKSwgYmlzOiBuZXcgRGF0ZShqLCAxMSwgMzEpLCBsYWJlbDogJ1BsYW51bmdz amFociAnICsgaiB9OwogICAgfQogICAgaWYgKG1vZHVzID09PSAna3cnKSB7CiAgICAgICAgdmFy IHYgPSBfa3dHcmVuemVuKF92YWwoJ2V4cC1rdy12b24nKSksIGIgPSBfa3dHcmVuemVuKF92YWwo J2V4cC1rdy1iaXMnKSk7CiAgICAgICAgaWYgKCF2ICYmICFiKSByZXR1cm4gbnVsbDsKICAgICAg ICBpZiAoIXYpIHYgPSBiOwogICAgICAgIGlmICghYikgYiA9IHY7CiAgICAgICAgLy8gRmFsbHMg YmlzIHZvciB2b24gbGllZ3QsIHRhdXNjaGVuLgogICAgICAgIHZhciB2b24gPSB2LnZvbiwgYmlz ID0gYi5iaXM7CiAgICAgICAgaWYgKHZvbiA+IGJpcykgeyB2YXIgdCA9IHZvbjsgdm9uID0gYi52 b247IGJpcyA9IHYuYmlzOyB9CiAgICAgICAgdmFyIGxhYiA9ICh2Lmt3ID09PSBiLmt3ICYmIHYu amFociA9PT0gYi5qYWhyKQogICAgICAgICAgICA/ICgnS1cgJyArIHYua3cgKyAnIC8gJyArIHYu amFocikKICAgICAgICAgICAgOiAoJ0tXICcgKyB2Lmt3ICsgJ+KAkycgKyBiLmt3ICsgJyAvICcg KyAodi5qYWhyID09PSBiLmphaHIgPyB2LmphaHIgOiAodi5qYWhyICsgJ+KAkycgKyBiLmphaHIp KSk7CiAgICAgICAgcmV0dXJuIHsgdm9uOiB2b24sIGJpczogYmlzLCBsYWJlbDogbGFiIH07CiAg ICB9CiAgICAvLyBkYXR1bQogICAgdmFyIGR2ID0gX3ZhbCgnZXhwLWRhdHVtLXZvbicpLCBkYiA9 IF92YWwoJ2V4cC1kYXR1bS1iaXMnKTsKICAgIGlmICghZHYgJiYgIWRiKSByZXR1cm4gbnVsbDsK ICAgIHZhciBkVm9uID0gZHYgPyBuZXcgRGF0ZShkdiArICdUMDA6MDA6MDAnKSA6IG5ldyBEYXRl KGRiICsgJ1QwMDowMDowMCcpOwogICAgdmFyIGRCaXMgPSBkYiA/IG5ldyBEYXRlKGRiICsgJ1Qw MDowMDowMCcpIDogbmV3IERhdGUoZHYgKyAnVDAwOjAwOjAwJyk7CiAgICBpZiAoZFZvbiA+IGRC aXMpIHsgdmFyIHR0ID0gZFZvbjsgZFZvbiA9IGRCaXM7IGRCaXMgPSB0dDsgfQogICAgcmV0dXJu IHsgdm9uOiBkVm9uLCBiaXM6IGRCaXMsIGxhYmVsOiBkYXR1bUZvcm1hdERFKGRhdHVtU3RyKGRW b24pKSArICcg4oCTICcgKyBkYXR1bUZvcm1hdERFKGRhdHVtU3RyKGRCaXMpKSB9Owp9CgovLyBQ ZXJzb25lbmtyZWlzIGF1cyBkZW0gRm9ybXVsYXIgLT4geyBsaXN0ZTpbcGVyc29uXSwgbGFiZWwg fS4KZnVuY3Rpb24gX3BlcnNvbmVuS3JlaXMoKSB7CiAgICB2YXIgbW9kdXMgPSBfdmFsKCdleHAt d2VybW9kdXMnKSB8fCAnYWxsZSc7CiAgICB2YXIgYWxsZSA9IChaLnBlcnNvbmVuIHx8IFtdKS5z bGljZSgpOwogICAgaWYgKG1vZHVzID09PSAnZ3J1cHBlJykgewogICAgICAgIHZhciBzZWwgPSBf Y2hlY2tlZCgnZ3JwJyk7CiAgICAgICAgaWYgKCFzZWwubGVuZ3RoKSByZXR1cm4geyBsaXN0ZTog YWxsZSwgbGFiZWw6ICdBbGxlIChrZWluZSBHcnVwcGUgZ2V3w6RobHQpJyB9OwogICAgICAgIHZh ciBsaXN0ZSA9IGFsbGUuZmlsdGVyKGZ1bmN0aW9uKHApeyByZXR1cm4gc2VsLmluZGV4T2YocC5n cnVwcGUpID49IDA7IH0pOwogICAgICAgIHJldHVybiB7IGxpc3RlOiBsaXN0ZSwgbGFiZWw6ICdE aWVuc3RncnVwcGVuOiAnICsgc2VsLm1hcChfZ3J1cHBlTGFiZWwpLmpvaW4oJywgJykgfTsKICAg IH0KICAgIGlmIChtb2R1cyA9PT0gJ3BlcnNvbicpIHsKICAgICAgICB2YXIgc2VsUCA9IF9jaGVj a2VkKCdwZXJzb24nKTsKICAgICAgICBpZiAoIXNlbFAubGVuZ3RoKSByZXR1cm4geyBsaXN0ZTog YWxsZSwgbGFiZWw6ICdBbGxlIChrZWluZSBQZXJzb24gZ2V3w6RobHQpJyB9OwogICAgICAgIHZh ciBscCA9IGFsbGUuZmlsdGVyKGZ1bmN0aW9uKHApeyByZXR1cm4gc2VsUC5pbmRleE9mKFN0cmlu ZyhwLmlkKSkgPj0gMDsgfSk7CiAgICAgICAgdmFyIG5hbWVuID0gbHAubWFwKF9wZXJzb25OYW1l KTsKICAgICAgICByZXR1cm4geyBsaXN0ZTogbHAsIGxhYmVsOiAobHAubGVuZ3RoID09PSAxID8g J0VpbnplbHBlcnNvbjogJyA6IChscC5sZW5ndGggKyAnIFBlcnNvbmVuOiAnKSkgKyBuYW1lbi5z bGljZSgwLCAzKS5qb2luKCc7ICcpICsgKG5hbWVuLmxlbmd0aCA+IDMgPyAnIOKApicgOiAnJykg fTsKICAgIH0KICAgIHJldHVybiB7IGxpc3RlOiBhbGxlLCBsYWJlbDogJ0FsbGUgUGVyc29uZW4n IH07Cn0KCi8vID09PT09IERhdGVuc2FtbWx1bmcgPT09PT0KCmZ1bmN0aW9uIF9zYW1tZWxuKCkg ewogICAgdmFyIHpyID0gX3plaXRyYXVtKCk7CiAgICBpZiAoIXpyKSByZXR1cm4geyBmZWhsZXI6 ICdCaXR0ZSBlaW5lbiBnw7xsdGlnZW4gWmVpdHJhdW0gd8OkaGxlbi4nIH07CiAgICB2YXIgcGsg PSBfcGVyc29uZW5LcmVpcygpOwogICAgdmFyIGVpbnRyID0gKFoucGxhbnVuZyAmJiBaLnBsYW51 bmcuZWludHJhZWdlKSB8fCB7fTsKICAgIHZhciB0YWdJbmZvcyA9IFoudGFnSW5mb3MgfHwge307 CgogICAgdmFyIHJvd3MgPSBbXSwgaGlud2Vpc2UgPSBbXSwgc2VlbkggPSB7fTsKICAgIHZhciBk ID0gbmV3IERhdGUoenIudm9uLmdldEZ1bGxZZWFyKCksIHpyLnZvbi5nZXRNb250aCgpLCB6ci52 b24uZ2V0RGF0ZSgpKTsKICAgIHZhciBlbmRlID0gbmV3IERhdGUoenIuYmlzLmdldEZ1bGxZZWFy KCksIHpyLmJpcy5nZXRNb250aCgpLCB6ci5iaXMuZ2V0RGF0ZSgpKTsKICAgIHZhciBzY2h1dHog PSAwOwogICAgd2hpbGUgKGQgPD0gZW5kZSAmJiBzY2h1dHogPCAxMDAwKSB7CiAgICAgICAgdmFy IGtleSA9IGRhdHVtU3RyKGQpOwogICAgICAgIHZhciB0YWcgPSBlaW50cltrZXldIHx8IHt9Owog ICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcGsubGlzdGUubGVuZ3RoOyBpKyspIHsKICAgICAg ICAgICAgdmFyIHAgPSBway5saXN0ZVtpXTsKICAgICAgICAgICAgdmFyIGNvZGUgPSB0YWdbcGlk S2V5KHAuaWQpXTsKICAgICAgICAgICAgaWYgKCFjb2RlKSBjb250aW51ZTsKICAgICAgICAgICAg cm93cy5wdXNoKHsgcDogcCwgZGF0dW06IGtleSwgZDogbmV3IERhdGUoZC5nZXRUaW1lKCkpLCBj b2RlOiBjb2RlIH0pOwogICAgICAgIH0KICAgICAgICBpZiAoIXNlZW5IW2tleV0pIHsKICAgICAg ICAgICAgc2Vlbkhba2V5XSA9IHRydWU7CiAgICAgICAgICAgIHZhciBpbmZvID0gdGFnSW5mb3Nb a2V5XTsKICAgICAgICAgICAgaWYgKGluZm8pIHsKICAgICAgICAgICAgICAgIGlmIChpbmZvLnR5 cCA9PT0gJ2ZlaWVydGFnJykgewogICAgICAgICAgICAgICAgICAgIHZhciBrYXRadXNhdHogPSAo aW5mby5rYXRlZ29yaWUgJiYgaW5mby5rYXRlZ29yaWUgIT09ICdnZXNldHpsaWNoJykgPyAoJyAo JyArIGluZm8ua2F0ZWdvcmllICsgJyknKSA6ICcnOwogICAgICAgICAgICAgICAgICAgIGhpbndl aXNlLnB1c2goeyBkYXR1bToga2V5LCB0eXA6ICdGZWllcnRhZycsIHRpdGVsOiAoaW5mby5uYW1l IHx8ICcnKSArIGthdFp1c2F0eiwgdGV4dDogaW5mby5rdXJ6YmVzY2hyZWlidW5nIHx8ICcnIH0p OwogICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpbmZvLnR5cCA9PT0gJ2ZlcmllbicpIHsKICAg ICAgICAgICAgICAgICAgICBoaW53ZWlzZS5wdXNoKHsgZGF0dW06IGtleSwgdHlwOiAnRmVyaWVu JywgdGl0ZWw6IGluZm8ubmFtZSB8fCAnJywgdGV4dDogJycgfSk7CiAgICAgICAgICAgICAgICB9 CiAgICAgICAgICAgICAgICBpZiAoaW5mby5zb25kZXIpIHsKICAgICAgICAgICAgICAgICAgICB2 YXIgcyA9IGluZm8uc29uZGVyOwogICAgICAgICAgICAgICAgICAgIGhpbndlaXNlLnB1c2goeyBk YXR1bToga2V5LCB0eXA6IChzLnR5cCA9PT0gJ3dhcm51bmcnID8gJ1NvbmRlcnRlcm1pbiAoV2Fy bnVuZyknIDogJ1NvbmRlcnRlcm1pbicpLCB0aXRlbDogcy50aXRlbCB8fCAnJywgdGV4dDogX3N0 cmlwSHRtbChzLnRleHQgfHwgJycpIH0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9 CiAgICAgICAgfQogICAgICAgIGQuc2V0RGF0ZShkLmdldERhdGUoKSArIDEpOyBzY2h1dHorKzsK ICAgIH0KCiAgICAvLyBTb3J0aWVydW5nOiBlcnN0IFBlcnNvbmVuLVJlaWhlbmZvbGdlIChHcnVw cGUvUG9zaXRpb24gYXVzIFoucGVyc29uZW4pLAogICAgLy8gZGFubiBjaHJvbm9sb2dpc2NoIOKA lCBzbyBsaWVzdCBzaWNoIGVpbiBFaW56ZWxwbGFuIGFtIFN0dWVjay4KICAgIHZhciBwT3JkZXIg PSB7fTsKICAgIChaLnBlcnNvbmVuIHx8IFtdKS5mb3JFYWNoKGZ1bmN0aW9uKHBwLCBpZHgpeyBw T3JkZXJbcHAuaWRdID0gaWR4OyB9KTsKICAgIHJvd3Muc29ydChmdW5jdGlvbihhLCBiKSB7CiAg ICAgICAgdmFyIHBhID0gcE9yZGVyW2EucC5pZF0sIHBiID0gcE9yZGVyW2IucC5pZF07CiAgICAg ICAgaWYgKHBhICE9PSBwYikgcmV0dXJuIChwYSA9PSBudWxsID8gMWU5IDogcGEpIC0gKHBiID09 IG51bGwgPyAxZTkgOiBwYik7CiAgICAgICAgcmV0dXJuIGEuZGF0dW0gPCBiLmRhdHVtID8gLTEg OiAoYS5kYXR1bSA+IGIuZGF0dW0gPyAxIDogMCk7CiAgICB9KTsKICAgIGhpbndlaXNlLnNvcnQo ZnVuY3Rpb24oYSwgYil7IHJldHVybiBhLmRhdHVtIDwgYi5kYXR1bSA/IC0xIDogKGEuZGF0dW0g PiBiLmRhdHVtID8gMSA6IDApOyB9KTsKCiAgICByZXR1cm4geyB6cjogenIsIHdlckxhYmVsOiBw ay5sYWJlbCwgcGVyc29uZW46IHBrLmxpc3RlLCByb3dzOiByb3dzLCBoaW53ZWlzZTogaGlud2Vp c2UgfTsKfQoKZnVuY3Rpb24gX21ldGFaZWlsZShkYXRlbikgewogICAgdmFyIGpldHp0ID0gbmV3 IERhdGUoKTsKICAgIHZhciBwYWQgPSBmdW5jdGlvbihuKXsgcmV0dXJuIChuIDwgMTAgPyAnMCcg OiAnJykgKyBuOyB9OwogICAgcmV0dXJuICdaZWl0cmF1bTogJyArIGRhdGVuLnpyLmxhYmVsICsK ICAgICAgICAnICDigKIgIFBlcnNvbmVua3JlaXM6ICcgKyBkYXRlbi53ZXJMYWJlbCArCiAgICAg ICAgJyAg4oCiICAnICsgZGF0ZW4ucm93cy5sZW5ndGggKyAnIEVpbnRyw6RnZScgKwogICAgICAg ICcgIOKAoiAgZXJzdGVsbHQgJyArIHBhZChqZXR6dC5nZXREYXRlKCkpICsgJy4nICsgcGFkKGpl dHp0LmdldE1vbnRoKCkgKyAxKSArICcuJyArIGpldHp0LmdldEZ1bGxZZWFyKCkgKwogICAgICAg ICcgJyArIHBhZChqZXR6dC5nZXRIb3VycygpKSArICc6JyArIHBhZChqZXR6dC5nZXRNaW51dGVz KCkpOwp9CmZ1bmN0aW9uIF9kYXRlblplaWxlKHIpIHsKICAgIHZhciBpc28gPSBfaXNvS1coci5k KTsKICAgIHJldHVybiBbX3BlcnNvbk5hbWUoci5wKSwgX2dydXBwZUxhYmVsKHIucC5ncnVwcGUp LCBkYXR1bUZvcm1hdERFKHIuZGF0dW0pLCBNT05BVEVbci5kLmdldE1vbnRoKCldLAogICAgICAg ICAgICByLmQuZ2V0RGF0ZSgpLCBXVFtyLmQuZ2V0RGF5KCldLCBpc28ua3csIHIuY29kZSwgX2Nv ZGVCZXplaWNobnVuZyhyLmNvZGUpXTsKfQpmdW5jdGlvbiBfaGlud2Vpc1plaWxlKGgpIHsKICAg IHZhciBkZCA9IG5ldyBEYXRlKGguZGF0dW0gKyAnVDAwOjAwOjAwJyk7CiAgICByZXR1cm4gW2Rh dHVtRm9ybWF0REUoaC5kYXR1bSksIFdUW2RkLmdldERheSgpXSwgaC50eXAsIGgudGl0ZWwsIGgu dGV4dF07Cn0KZnVuY3Rpb24gX2RhdGVpQmFzaXMoZGF0ZW4pIHsKICAgIHZhciBqZXR6dCA9IG5l dyBEYXRlKCk7CiAgICB2YXIgcGFkID0gZnVuY3Rpb24obil7IHJldHVybiAobiA8IDEwID8gJzAn IDogJycpICsgbjsgfTsKICAgIHZhciBzdGFtcCA9IGpldHp0LmdldEZ1bGxZZWFyKCkgKyBwYWQo amV0enQuZ2V0TW9udGgoKSArIDEpICsgcGFkKGpldHp0LmdldERhdGUoKSkgKyAnLScgKyBwYWQo amV0enQuZ2V0SG91cnMoKSkgKyBwYWQoamV0enQuZ2V0TWludXRlcygpKTsKICAgIHJldHVybiAn VkkzLURpZW5zdHBsYW5fJyArIHN0YW1wOwp9CgovLyA9PT09PSBYTFNYLUVyemV1Z3VuZyAoZm9y bWF0aWVydCkgPT09PT0KCmZ1bmN0aW9uIF9leHBvcnRYbHN4KGRhdGVuLCBtaXRIaW53ZWlzZSkg ewogICAgaWYgKHR5cGVvZiBYTFNYID09PSAndW5kZWZpbmVkJykgeyB0b2FzdCgnRXhjZWwtQmli bGlvdGhlayBuaWNodCBnZWxhZGVuIOKAlCBiaXR0ZSBTZWl0ZSBuZXUgbGFkZW4uJywgJ2ZlaGxl cicpOyByZXR1cm47IH0KICAgIHZhciBhb2EgPSBbXTsKICAgIGFvYS5wdXNoKFsnRGllbnN0cGxh bi1FeHBvcnQg4oCUIFZJMyBER0wtUGxhbnVuZyddKTsKICAgIGFvYS5wdXNoKFtfbWV0YVplaWxl KGRhdGVuKV0pOwogICAgYW9hLnB1c2goW10pOwogICAgdmFyIGhlYWRlclIgPSBhb2EubGVuZ3Ro OyAgICAgICAgICAgICAgICAgLy8gMC1iYXNpZXJ0OiBaZWlsZSBkZXIgU3BhbHRlbmtvZXBmZQog ICAgYW9hLnB1c2goU1BBTFRFTi5zbGljZSgpKTsKICAgIGRhdGVuLnJvd3MuZm9yRWFjaChmdW5j dGlvbihyKXsgYW9hLnB1c2goX2RhdGVuWmVpbGUocikpOyB9KTsKICAgIHZhciBkYXRlbkVuZGVS ID0gYW9hLmxlbmd0aCAtIDE7ICAgICAgICAgIC8vIGxldHp0ZSBEYXRlbnplaWxlICgwLWJhc2ll cnQpCgogICAgaWYgKG1pdEhpbndlaXNlICYmIGRhdGVuLmhpbndlaXNlLmxlbmd0aCkgewogICAg ICAgIGFvYS5wdXNoKFtdKTsgYW9hLnB1c2goW10pOwogICAgICAgIGFvYS5wdXNoKFsnSGlud2Vp c2UgenUgVGFnZW4gbWl0IEJlc29uZGVyaGVpdGVuIChGZWllcnRhZ2UsIEZlcmllbiwgU29uZGVy dGVybWluZSknXSk7CiAgICAgICAgdmFyIGhpbndIZWFkZXJSID0gYW9hLmxlbmd0aDsKICAgICAg ICBhb2EucHVzaChISU5XRUlTX1NQQUxURU4uc2xpY2UoKSk7CiAgICAgICAgZGF0ZW4uaGlud2Vp c2UuZm9yRWFjaChmdW5jdGlvbihoKXsgYW9hLnB1c2goX2hpbndlaXNaZWlsZShoKSk7IH0pOwog ICAgICAgIHZhciB3czAgPSBYTFNYLnV0aWxzLmFvYV90b19zaGVldChhb2EpOwogICAgICAgIHdz MFsnIW1lcmdlcyddID0gWwogICAgICAgICAgICB7IHM6IHsgcjogMCwgYzogMCB9LCBlOiB7IHI6 IDAsIGM6IFNQQUxURU4ubGVuZ3RoIC0gMSB9IH0sCiAgICAgICAgICAgIHsgczogeyByOiAxLCBj OiAwIH0sIGU6IHsgcjogMSwgYzogU1BBTFRFTi5sZW5ndGggLSAxIH0gfSwKICAgICAgICAgICAg eyBzOiB7IHI6IGhpbndIZWFkZXJSIC0gMSwgYzogMCB9LCBlOiB7IHI6IGhpbndIZWFkZXJSIC0g MSwgYzogU1BBTFRFTi5sZW5ndGggLSAxIH0gfQogICAgICAgIF07CiAgICAgICAgX2ZpbmlzaFdz KHdzMCwgaGVhZGVyUiwgZGF0ZW5FbmRlUik7CiAgICAgICAgX2Rvd25sb2FkKHdzMCwgZGF0ZW4p OwogICAgICAgIHJldHVybjsKICAgIH0KICAgIHZhciB3cyA9IFhMU1gudXRpbHMuYW9hX3RvX3No ZWV0KGFvYSk7CiAgICB3c1snIW1lcmdlcyddID0gWwogICAgICAgIHsgczogeyByOiAwLCBjOiAw IH0sIGU6IHsgcjogMCwgYzogU1BBTFRFTi5sZW5ndGggLSAxIH0gfSwKICAgICAgICB7IHM6IHsg cjogMSwgYzogMCB9LCBlOiB7IHI6IDEsIGM6IFNQQUxURU4ubGVuZ3RoIC0gMSB9IH0KICAgIF07 CiAgICBfZmluaXNoV3Mod3MsIGhlYWRlclIsIGRhdGVuRW5kZVIpOwogICAgX2Rvd25sb2FkKHdz LCBkYXRlbik7Cn0KZnVuY3Rpb24gX2ZpbmlzaFdzKHdzLCBoZWFkZXJSLCBkYXRlbkVuZGVSKSB7 CiAgICB3c1snIWNvbHMnXSA9IFsgeyB3Y2g6IDI2IH0sIHsgd2NoOiAyMCB9LCB7IHdjaDogMTIg fSwgeyB3Y2g6IDExIH0sIHsgd2NoOiA1IH0sIHsgd2NoOiAxMCB9LCB7IHdjaDogNSB9LCB7IHdj aDogMTIgfSwgeyB3Y2g6IDI4IH0gXTsKICAgIC8vIEF1dG8tRmlsdGVyIE5VUiB1ZWJlciBkZXIg SGF1cHR0YWJlbGxlIChLb3BmemVpbGUgKyBEYXRlbnplaWxlbikuCiAgICBpZiAoZGF0ZW5FbmRl UiA+PSBoZWFkZXJSKSB7CiAgICAgICAgd3NbJyFhdXRvZmlsdGVyJ10gPSB7IHJlZjogWExTWC51 dGlscy5lbmNvZGVfcmFuZ2UoeyBzOiB7IHI6IGhlYWRlclIsIGM6IDAgfSwgZTogeyByOiBkYXRl bkVuZGVSLCBjOiBTUEFMVEVOLmxlbmd0aCAtIDEgfSB9KSB9OwogICAgfQp9CmZ1bmN0aW9uIF9k b3dubG9hZCh3cywgZGF0ZW4pIHsKICAgIHZhciB3YiA9IFhMU1gudXRpbHMuYm9va19uZXcoKTsK ICAgIFhMU1gudXRpbHMuYm9va19hcHBlbmRfc2hlZXQod2IsIHdzLCAnRGllbnN0cGxhbicpOwog ICAgWExTWC53cml0ZUZpbGUod2IsIF9kYXRlaUJhc2lzKGRhdGVuKSArICcueGxzeCcpOwp9Cgov LyA9PT09PSBDU1YtRXJ6ZXVndW5nID09PT09CgpmdW5jdGlvbiBfY3N2RmVsZCh2KSB7CiAgICB2 ID0gKHYgPT0gbnVsbCA/ICcnIDogU3RyaW5nKHYpKTsKICAgIGlmICgvWyI7XG5ccl0vLnRlc3Qo dikpIHJldHVybiAnIicgKyB2LnJlcGxhY2UoLyIvZywgJyIiJykgKyAnIic7CiAgICByZXR1cm4g djsKfQpmdW5jdGlvbiBfY3N2WmVpbGUoYXJyKSB7IHJldHVybiBhcnIubWFwKF9jc3ZGZWxkKS5q b2luKCc7Jyk7IH0KCmZ1bmN0aW9uIF9leHBvcnRDc3YoZGF0ZW4sIG1pdEhpbndlaXNlKSB7CiAg ICB2YXIgbGluZXMgPSBbXTsKICAgIGxpbmVzLnB1c2goX2NzdkZlbGQoJ0RpZW5zdHBsYW4tRXhw b3J0IOKAlCBWSTMgREdMLVBsYW51bmcnKSk7CiAgICBsaW5lcy5wdXNoKF9jc3ZGZWxkKF9tZXRh WmVpbGUoZGF0ZW4pKSk7CiAgICBsaW5lcy5wdXNoKCcnKTsKICAgIGxpbmVzLnB1c2goX2Nzdlpl aWxlKFNQQUxURU4pKTsKICAgIGRhdGVuLnJvd3MuZm9yRWFjaChmdW5jdGlvbihyKXsgbGluZXMu cHVzaChfY3N2WmVpbGUoX2RhdGVuWmVpbGUocikpKTsgfSk7CiAgICBpZiAobWl0SGlud2Vpc2Ug JiYgZGF0ZW4uaGlud2Vpc2UubGVuZ3RoKSB7CiAgICAgICAgbGluZXMucHVzaCgnJyk7IGxpbmVz LnB1c2goJycpOwogICAgICAgIGxpbmVzLnB1c2goX2NzdkZlbGQoJ0hpbndlaXNlIHp1IFRhZ2Vu IG1pdCBCZXNvbmRlcmhlaXRlbiAoRmVpZXJ0YWdlLCBGZXJpZW4sIFNvbmRlcnRlcm1pbmUpJykp OwogICAgICAgIGxpbmVzLnB1c2goX2NzdlplaWxlKEhJTldFSVNfU1BBTFRFTikpOwogICAgICAg IGRhdGVuLmhpbndlaXNlLmZvckVhY2goZnVuY3Rpb24oaCl7IGxpbmVzLnB1c2goX2NzdlplaWxl KF9oaW53ZWlzWmVpbGUoaCkpKTsgfSk7CiAgICB9CiAgICB2YXIgY3N2ID0gU3RyaW5nLmZyb21D aGFyQ29kZSgweEZFRkYpICsgbGluZXMuam9pbignXHJcbicpOyAgIC8vIEJPTSAtPiBFeGNlbC1E RSBlcmtlbm50IFVURi04CiAgICB2YXIgYmxvYiA9IG5ldyBCbG9iKFtjc3ZdLCB7IHR5cGU6ICd0 ZXh0L2NzdjtjaGFyc2V0PXV0Zi04OycgfSk7CiAgICB2YXIgdXJsID0gVVJMLmNyZWF0ZU9iamVj dFVSTChibG9iKTsKICAgIHZhciBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpOwogICAg YS5ocmVmID0gdXJsOyBhLmRvd25sb2FkID0gX2RhdGVpQmFzaXMoZGF0ZW4pICsgJy5jc3YnOwog ICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChhKTsgYS5jbGljaygpOyBkb2N1bWVudC5ib2R5 LnJlbW92ZUNoaWxkKGEpOwogICAgc2V0VGltZW91dChmdW5jdGlvbigpeyBVUkwucmV2b2tlT2Jq ZWN0VVJMKHVybCk7IH0sIDE1MDApOwp9CgovLyA9PT09PSBVSSA9PT09PQoKZXhwb3J0IGZ1bmN0 aW9uIGV4cG9ydFJlbmRlcm4oKSB7CiAgICB2YXIgY29udCA9IGRvY3VtZW50LmdldEVsZW1lbnRC eUlkKCdleHBvcnQtaW5oYWx0Jyk7CiAgICBpZiAoIWNvbnQpIHJldHVybjsKICAgIGlmICghX2Rh cmYoKSkgewogICAgICAgIGNvbnQuaW5uZXJIVE1MID0gJzxkaXYgY2xhc3M9ImFkbWluLWVtcHR5 Ij48ZGl2IGNsYXNzPSJhZG1pbi1lbXB0eS10ZXh0Ij5OdXIgU3VwZXJVc2VyIHVuZCBCZXJlY2h0 aWd0ZSBtaXQgQWRtaW5pc3RyYXRpb25zLVp1Z3JpZmYgZMO8cmZlbiBleHBvcnRpZXJlbi48L2Rp dj48L2Rpdj4nOwogICAgICAgIHJldHVybjsKICAgIH0KICAgIGNvbnQuaW5uZXJIVE1MID0gX2Zv cm1IdG1sKCk7CiAgICBfdmVyZHJhaHRlbihjb250KTsKICAgIF96ZWl0U2ljaHRiYXJrZWl0KCk7 CiAgICBfd2VyU2ljaHRiYXJrZWl0KCk7CiAgICBfdm9yc2NoYXVBa3R1YWxpc2llcmVuKCk7Cn0K CmZ1bmN0aW9uIF9ncnBDaGlwcygpIHsKICAgIHJldHVybiAoWi5hZG1pbi5ncnVwcGVuIHx8IFtd KS5tYXAoZnVuY3Rpb24oZyl7CiAgICAgICAgcmV0dXJuICc8bGFiZWwgY2xhc3M9ImJsZC1jaGlw Ij48aW5wdXQgdHlwZT0iY2hlY2tib3giIGRhdGEtZXhwPSJncnAiIHZhbHVlPSInICsgZXNjYXBl QXR0cihnLm5hbWUpICsgJyI+PHNwYW4+JyArIGVzY2FwZUhUTUwoZy5iZXplaWNobnVuZyB8fCBn Lm5hbWUpICsgJzwvc3Bhbj48L2xhYmVsPic7CiAgICB9KS5qb2luKCcnKTsKfQpmdW5jdGlvbiBf cGVyc29uQ2hpcHMoKSB7CiAgICB2YXIgYnlHcnAgPSB7fTsKICAgIChaLnBlcnNvbmVuIHx8IFtd KS5mb3JFYWNoKGZ1bmN0aW9uKHApeyB2YXIgZyA9IHAuZ3J1cHBlIHx8ICfigJQnOyAoYnlHcnBb Z10gfHwgKGJ5R3JwW2ddID0gW10pKS5wdXNoKHApOyB9KTsKICAgIHZhciBvcmRlciA9IChaLmFk bWluLmdydXBwZW4gfHwgW10pLm1hcChmdW5jdGlvbihnKXsgcmV0dXJuIGcubmFtZTsgfSk7CiAg ICB2YXIgbmFtZW4gPSBvcmRlci5maWx0ZXIoZnVuY3Rpb24obil7IHJldHVybiBieUdycFtuXTsg fSkuY29uY2F0KE9iamVjdC5rZXlzKGJ5R3JwKS5maWx0ZXIoZnVuY3Rpb24obil7IHJldHVybiBv cmRlci5pbmRleE9mKG4pIDwgMDsgfSkpOwogICAgcmV0dXJuIG5hbWVuLm1hcChmdW5jdGlvbihn bil7CiAgICAgICAgdmFyIGxldXRlID0gYnlHcnBbZ25dLnNsaWNlKCkuc29ydChmdW5jdGlvbihh LCBiKXsgcmV0dXJuIChhLm5hbWUgfHwgJycpLmxvY2FsZUNvbXBhcmUoYi5uYW1lIHx8ICcnLCAn ZGUnKTsgfSk7CiAgICAgICAgdmFyIGNoaXBzID0gbGV1dGUubWFwKGZ1bmN0aW9uKHApewogICAg ICAgICAgICByZXR1cm4gJzxsYWJlbCBjbGFzcz0iYmxkLWNoaXAiPjxpbnB1dCB0eXBlPSJjaGVj a2JveCIgZGF0YS1leHA9InBlcnNvbiIgdmFsdWU9IicgKyBlc2NhcGVBdHRyKFN0cmluZyhwLmlk KSkgKyAnIj48c3Bhbj4nICsgZXNjYXBlSFRNTChfcGVyc29uTmFtZShwKSkgKyAnPC9zcGFuPjwv bGFiZWw+JzsKICAgICAgICB9KS5qb2luKCcnKTsKICAgICAgICByZXR1cm4gJzxkaXYgY2xhc3M9 ImJsZC1wZXJzLWdycCI+PGRpdiBjbGFzcz0iYmxkLXBlcnMtZ3JwLWtvcGYiPjxzcGFuPicgKyBl c2NhcGVIVE1MKF9ncnVwcGVMYWJlbChnbikpICsgJzwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPSJi bGQtY2hpcHMiPicgKyBjaGlwcyArICc8L2Rpdj48L2Rpdj4nOwogICAgfSkuam9pbignJyk7Cn0K CmZ1bmN0aW9uIF9mb3JtSHRtbCgpIHsKICAgIHZhciBqID0gKFouYWRtaW4gJiYgWi5hZG1pbi5q YWhyKSB8fCBuZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKCk7CiAgICByZXR1cm4gJycgKwogICAgJzxk aXYgY2xhc3M9ImV4cC1mb3JtIj4nICsKICAgICc8ZGl2IGNsYXNzPSJibGQtZmVsZCI+PHNwYW4g Y2xhc3M9ImJsZC1mZWxkLXRpdGVsIj5VbWZhbmcgKFplaXRyYXVtKTwvc3Bhbj4nICsKICAgICAg ICAnPHNlbGVjdCBpZD0iZXhwLXplaXRtb2R1cyIgY2xhc3M9ImZvcm0taW5wdXQiPicgKwogICAg ICAgICAgICAnPG9wdGlvbiB2YWx1ZT0iamFociI+R2FuemVzIFBsYW51bmdzamFociAoJyArIGog KyAnKTwvb3B0aW9uPicgKwogICAgICAgICAgICAnPG9wdGlvbiB2YWx1ZT0ia3ciPkthbGVuZGVy d29jaGVuICh2b27igJNiaXMpPC9vcHRpb24+JyArCiAgICAgICAgICAgICc8b3B0aW9uIHZhbHVl PSJkYXR1bSI+RGF0dW0gKHZvbuKAk2Jpcyk8L29wdGlvbj4nICsKICAgICAgICAnPC9zZWxlY3Q+ PC9kaXY+JyArCiAgICAnPGRpdiBjbGFzcz0iYmxkLWZlbGQgYmxkLWZlbGQtMiIgZGF0YS16ZWl0 PSJrdyIgc3R5bGU9ImRpc3BsYXk6bm9uZSI+JyArCiAgICAgICAgJzxsYWJlbCBjbGFzcz0iYmxk LW1pbmkiPlZvbiBLVzxpbnB1dCBpZD0iZXhwLWt3LXZvbiIgY2xhc3M9ImZvcm0taW5wdXQiIHR5 cGU9IndlZWsiPjwvbGFiZWw+JyArCiAgICAgICAgJzxsYWJlbCBjbGFzcz0iYmxkLW1pbmkiPkJp cyBLVzxpbnB1dCBpZD0iZXhwLWt3LWJpcyIgY2xhc3M9ImZvcm0taW5wdXQiIHR5cGU9IndlZWsi PjwvbGFiZWw+PC9kaXY+JyArCiAgICAnPGRpdiBjbGFzcz0iYmxkLWZlbGQgYmxkLWZlbGQtMiIg ZGF0YS16ZWl0PSJkYXR1bSIgc3R5bGU9ImRpc3BsYXk6bm9uZSI+JyArCiAgICAgICAgJzxsYWJl bCBjbGFzcz0iYmxkLW1pbmkiPlZvbjxpbnB1dCBpZD0iZXhwLWRhdHVtLXZvbiIgY2xhc3M9ImZv cm0taW5wdXQiIHR5cGU9ImRhdGUiPjwvbGFiZWw+JyArCiAgICAgICAgJzxsYWJlbCBjbGFzcz0i YmxkLW1pbmkiPkJpczxpbnB1dCBpZD0iZXhwLWRhdHVtLWJpcyIgY2xhc3M9ImZvcm0taW5wdXQi IHR5cGU9ImRhdGUiPjwvbGFiZWw+PC9kaXY+JyArCgogICAgJzxkaXYgY2xhc3M9ImJsZC1mZWxk Ij48c3BhbiBjbGFzcz0iYmxkLWZlbGQtdGl0ZWwiPlBlcnNvbmVua3JlaXM8L3NwYW4+JyArCiAg ICAgICAgJzxzZWxlY3QgaWQ9ImV4cC13ZXJtb2R1cyIgY2xhc3M9ImZvcm0taW5wdXQiPicgKwog ICAgICAgICAgICAnPG9wdGlvbiB2YWx1ZT0iYWxsZSI+QWxsZSBQZXJzb25lbjwvb3B0aW9uPicg KwogICAgICAgICAgICAnPG9wdGlvbiB2YWx1ZT0iZ3J1cHBlIj5CZXN0aW1tdGUgRGllbnN0Z3J1 cHBlbjwvb3B0aW9uPicgKwogICAgICAgICAgICAnPG9wdGlvbiB2YWx1ZT0icGVyc29uIj5FaW56 ZWxuZSBQZXJzb25lbiAoaW5kaXZpZHVlbGxlciBFeHBvcnQpPC9vcHRpb24+JyArCiAgICAgICAg Jzwvc2VsZWN0PjwvZGl2PicgKwogICAgJzxkaXYgY2xhc3M9ImJsZC1mZWxkIiBkYXRhLXdlcj0i Z3J1cHBlIiBzdHlsZT0iZGlzcGxheTpub25lIj48c3BhbiBjbGFzcz0iYmxkLWZlbGQtdGl0ZWwi PkRpZW5zdGdydXBwZW4gd8OkaGxlbjwvc3Bhbj4nICsKICAgICAgICAnPGRpdiBjbGFzcz0iYmxk LWNoaXBzIj4nICsgX2dycENoaXBzKCkgKyAnPC9kaXY+PC9kaXY+JyArCiAgICAnPGRldGFpbHMg Y2xhc3M9ImJsZC1zZWt0aW9uIiBkYXRhLXdlcj0icGVyc29uIiBzdHlsZT0iZGlzcGxheTpub25l Ij48c3VtbWFyeT5QZXJzb25lbiB3w6RobGVuICgnICsgKFoucGVyc29uZW4gfHwgW10pLmxlbmd0 aCArICcpPC9zdW1tYXJ5PicgKwogICAgICAgICc8cCBjbGFzcz0iYmxkLXBlcnMtaGlud2VpcyI+ TmljaHRzIGdld8OkaGx0ID0gYWxsZS4gTWVocmVyZSBQZXJzb25lbiBmw7xyIGVpbmVuIFNhbW1l bC1FaW56ZWxleHBvcnQgbWFya2llcmVuLjwvcD4nICsKICAgICAgICBfcGVyc29uQ2hpcHMoKSAr ICc8L2RldGFpbHM+JyArCgogICAgJzxkaXYgY2xhc3M9ImJsZC1mZWxkIj48c3BhbiBjbGFzcz0i YmxkLWZlbGQtdGl0ZWwiPkZvcm1hdDwvc3Bhbj4nICsKICAgICAgICAnPGRpdiBjbGFzcz0iYmxk LXRvZ2dsZXMiPicgKwogICAgICAgICAgICAnPGxhYmVsIGNsYXNzPSJibGQtdG9nZ2xlIj48aW5w dXQgdHlwZT0icmFkaW8iIG5hbWU9ImV4cC1mb3JtYXQiIGlkPSJleHAtZm10LXhsc3giIHZhbHVl PSJ4bHN4IiBjaGVja2VkPiBYTFNYIChmb3JtYXRpZXJ0KTwvbGFiZWw+JyArCiAgICAgICAgICAg ICc8bGFiZWwgY2xhc3M9ImJsZC10b2dnbGUiPjxpbnB1dCB0eXBlPSJyYWRpbyIgbmFtZT0iZXhw LWZvcm1hdCIgdmFsdWU9ImNzdiI+IENTViAoRXhjZWwvU2VtaWtvbG9uKTwvbGFiZWw+JyArCiAg ICAgICAgJzwvZGl2PjwvZGl2PicgKwogICAgJzxkaXYgY2xhc3M9ImJsZC1mZWxkIj48ZGl2IGNs YXNzPSJibGQtdG9nZ2xlcyI+JyArCiAgICAgICAgJzxsYWJlbCBjbGFzcz0iYmxkLXRvZ2dsZSI+ PGlucHV0IHR5cGU9ImNoZWNrYm94IiBpZD0iZXhwLW1pdC1oaW53ZWlzZSIgY2hlY2tlZD4gSW5m b2JveCDigJ5IaW53ZWlzZSB6dSBUYWdlbiBtaXQgQmVzb25kZXJoZWl0ZW4iIHVudGVyaGFsYiBh bmjDpG5nZW48L2xhYmVsPicgKwogICAgICAgICc8L2Rpdj48L2Rpdj4nICsKCiAgICAnPGRpdiBj bGFzcz0iYmxkLWFrdGlvbmVuIiBzdHlsZT0ibWFyZ2luLXRvcDoxNHB4Ij4nICsKICAgICAgICAn PGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1wcmltYWVyIiB0eXBlPSJidXR0b24iIGlkPSJleHAtc3Rh cnRlbiI+4qSTIEV4cG9ydGllcmVuPC9idXR0b24+JyArCiAgICAgICAgJzxzcGFuIGlkPSJleHAt dm9yc2NoYXUiIGNsYXNzPSJibGQtcGVycy1oaW53ZWlzIiBzdHlsZT0ibWFyZ2luLWxlZnQ6MTJw eCI+PC9zcGFuPicgKwogICAgJzwvZGl2PicgKwogICAgJzwvZGl2Pic7Cn0KCmZ1bmN0aW9uIF96 ZWl0U2ljaHRiYXJrZWl0KCkgewogICAgdmFyIG1vZHVzID0gX3ZhbCgnZXhwLXplaXRtb2R1cycp IHx8ICdqYWhyJzsKICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJyNleHBvcnQtaW5oYWx0 IFtkYXRhLXplaXRdJykuZm9yRWFjaChmdW5jdGlvbihlbCl7CiAgICAgICAgZWwuc3R5bGUuZGlz cGxheSA9IChlbC5nZXRBdHRyaWJ1dGUoJ2RhdGEtemVpdCcpID09PSBtb2R1cykgPyAnJyA6ICdu b25lJzsKICAgIH0pOwp9CmZ1bmN0aW9uIF93ZXJTaWNodGJhcmtlaXQoKSB7CiAgICB2YXIgbW9k dXMgPSBfdmFsKCdleHAtd2VybW9kdXMnKSB8fCAnYWxsZSc7CiAgICBkb2N1bWVudC5xdWVyeVNl bGVjdG9yQWxsKCcjZXhwb3J0LWluaGFsdCBbZGF0YS13ZXJdJykuZm9yRWFjaChmdW5jdGlvbihl bCl7CiAgICAgICAgZWwuc3R5bGUuZGlzcGxheSA9IChlbC5nZXRBdHRyaWJ1dGUoJ2RhdGEtd2Vy JykgPT09IG1vZHVzKSA/ICcnIDogJ25vbmUnOwogICAgfSk7Cn0KZnVuY3Rpb24gX3ZvcnNjaGF1 QWt0dWFsaXNpZXJlbigpIHsKICAgIHZhciBlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdl eHAtdm9yc2NoYXUnKTsKICAgIGlmICghZWwpIHJldHVybjsKICAgIHZhciBkYXRlbiA9IF9zYW1t ZWxuKCk7CiAgICBpZiAoZGF0ZW4uZmVobGVyKSB7IGVsLnRleHRDb250ZW50ID0gZGF0ZW4uZmVo bGVyOyByZXR1cm47IH0KICAgIGVsLnRleHRDb250ZW50ID0gJ1ZvcnNjaGF1OiAnICsgZGF0ZW4u cm93cy5sZW5ndGggKyAnIEVpbnRyw6RnZScKICAgICAgICArICcg4oCiICcgKyBkYXRlbi5wZXJz b25lbi5sZW5ndGggKyAnIFBlcnNvbmVuJwogICAgICAgICsgJyDigKIgJyArIGRhdGVuLmhpbndl aXNlLmxlbmd0aCArICcgSGlud2Vpcy1FaW50csOkZ2UgKEZlaWVydGFnL0Zlcmllbi9Tb25kZXJ0 ZXJtaW4pJzsKfQoKZnVuY3Rpb24gX3ZlcmRyYWh0ZW4oY29udCkgewogICAgY29udC5hZGRFdmVu dExpc3RlbmVyKCdjaGFuZ2UnLCBmdW5jdGlvbihlKSB7CiAgICAgICAgdmFyIHQgPSBlLnRhcmdl dDsKICAgICAgICBpZiAodC5pZCA9PT0gJ2V4cC16ZWl0bW9kdXMnKSBfemVpdFNpY2h0YmFya2Vp dCgpOwogICAgICAgIGlmICh0LmlkID09PSAnZXhwLXdlcm1vZHVzJykgX3dlclNpY2h0YmFya2Vp dCgpOwogICAgICAgIF92b3JzY2hhdUFrdHVhbGlzaWVyZW4oKTsKICAgIH0pOwogICAgY29udC5h ZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsIGZ1bmN0aW9uKGUpIHsKICAgICAgICB2YXIgaWQgPSBl LnRhcmdldCAmJiBlLnRhcmdldC5pZDsKICAgICAgICBpZiAoaWQgPT09ICdleHAta3ctdm9uJyB8 fCBpZCA9PT0gJ2V4cC1rdy1iaXMnIHx8IGlkID09PSAnZXhwLWRhdHVtLXZvbicgfHwgaWQgPT09 ICdleHAtZGF0dW0tYmlzJykgX3ZvcnNjaGF1QWt0dWFsaXNpZXJlbigpOwogICAgfSk7CiAgICB2 YXIgYnRuID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2V4cC1zdGFydGVuJyk7CiAgICBpZiAo YnRuKSBidG4uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBfZXhwb3J0U3RhcnRlbik7Cn0KCmZ1 bmN0aW9uIF9leHBvcnRTdGFydGVuKCkgewogICAgdmFyIGRhdGVuID0gX3NhbW1lbG4oKTsKICAg IGlmIChkYXRlbi5mZWhsZXIpIHsgdG9hc3QoZGF0ZW4uZmVobGVyLCAnd2FybnVuZycpOyByZXR1 cm47IH0KICAgIGlmICghZGF0ZW4ucm93cy5sZW5ndGgpIHsgdG9hc3QoJ0tlaW5lIEVpbnRyw6Rn ZSBpbSBnZXfDpGhsdGVuIFVtZmFuZyDigJQgbmljaHRzIHp1IGV4cG9ydGllcmVuLicsICd3YXJu dW5nJyk7IHJldHVybjsgfQogICAgdmFyIG1pdEhpbndlaXNlID0gX2NoaygnZXhwLW1pdC1oaW53 ZWlzZScpOwogICAgdmFyIGZtdCA9IChkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjZXhwb3J0LWlu aGFsdCBpbnB1dFtuYW1lPSJleHAtZm9ybWF0Il06Y2hlY2tlZCcpIHx8IHt9KS52YWx1ZSB8fCAn eGxzeCc7CiAgICB0cnkgewogICAgICAgIGlmIChmbXQgPT09ICdjc3YnKSBfZXhwb3J0Q3N2KGRh dGVuLCBtaXRIaW53ZWlzZSk7CiAgICAgICAgZWxzZSBfZXhwb3J0WGxzeChkYXRlbiwgbWl0SGlu d2Vpc2UpOwogICAgICAgIHRvYXN0KCdFeHBvcnQgZXJzdGVsbHQ6ICcgKyBkYXRlbi5yb3dzLmxl bmd0aCArICcgRWludHLDpGdlJyArIChtaXRIaW53ZWlzZSA/ICcgKyAnICsgZGF0ZW4uaGlud2Vp c2UubGVuZ3RoICsgJyBIaW53ZWlzLUVpbnRyw6RnZScgOiAnJyksICdlcmZvbGcnKTsKICAgIH0g Y2F0Y2ggKGUpIHsKICAgICAgICB0cnkgeyBjb25zb2xlLmVycm9yKCdbZXhwb3J0XScsIGUpOyB9 IGNhdGNoIChfKSB7fQogICAgICAgIHRvYXN0KCdFeHBvcnQgZmVobGdlc2NobGFnZW46ICcgKyAo ZS5tZXNzYWdlIHx8IGUpLCAnZmVobGVyJyk7CiAgICB9Cn0K ### FILE: js/feiertage_de.js | 3209 Ly8gPT09IGZlaWVydGFnZV9kZS5qcyA9PT0KLy8gRGV0ZXJtaW5pc3Rpc2NoZXIgS2F0YWxvZyBk ZXIgZ2VzZXR6bGljaGVuIEZlaWVydGFnZSBpbiBEZXV0c2NobGFuZCAoYnVuZGVzLQovLyB3ZWl0 KSB1bmQgTm9yZHJoZWluLVdlc3RmYWxlbiDigJQgcHJvIEphaHIgYmVyZWNobmV0LCBvaG5lIEFi aGFlbmdpZ2tlaXQgdm9uCi8vIGFkbWluLmpzb24uIEJld2VnbGljaCBGZXN0ZSAoS2FyZnJlaXRh ZywgT3N0ZXJtb250YWcsIENocmlzdGkgSGltbWVsZmFocnQsCi8vIFBmaW5nc3Rtb250YWcsIEZy b25sZWljaG5hbSkgbGVpdGVuIHNpY2ggdm9tIE9zdGVyc29ubnRhZyBhYiAoR2F1c3MvQW5vbnlt ZQovLyBHcmVnb3JpYW5pc2NoZSBPc3RlcmZvcm1lbCkuIEdlbnV0enQgdm9tIFN0YXRpc3Rpay1C dWlsZGVyLy1FbmdpbmUsIHVtCi8vIERpZW5zdGUgbmFjaCDigJ5idW5kZXN3ZWl0IiB2cy4g4oCe TlJXLXNwZXppZmlzY2giIGF1Znp1c2NobHVlc3NlbG4uCi8vCi8vIFF1ZWxsZSBkZXIgS2xhc3Np ZmlrYXRpb246IGdlc2V0emxpY2hlIEZlaWVydGFnZSBOUlcgKDExIFN0dWVjaykg4oCUIGRhdm9u IHNpbmQKLy8gRnJvbmxlaWNobmFtIHVuZCBBbGxlcmhlaWxpZ2VuIE5SVy1zcGV6aWZpc2NoLCBk aWUgdWVicmlnZW4gOSBidW5kZXN3ZWl0LgovLyBIZWlsaWdhYmVuZC9TaWx2ZXN0ZXIgc2luZCBL RUlORSBnZXNldHpsaWNoZW4gRmVpZXJ0YWdlIHVuZCBkYWhlciBoaWVyCi8vIGJld3Vzc3Qgbmlj aHQgZW50aGFsdGVuIChhZG1pbi5qc29uIGZ1ZWhydCBzaWUgc2VwYXJhdCAtPiBUeXAg4oCec29u c3RpZ2UiKS4KCmltcG9ydCB7IGRhdHVtU3RyIH0gZnJvbSAnLi9jb3JlX3V0aWwuanMnOwoKLy8g T3N0ZXJzb25udGFnIChHcmVnb3JpYW5pc2NoKSBwZXIgQW5vbnltZS1HcmVnb3JpYW5pc2NoZS1P c3RlcmZvcm1lbC4KZnVuY3Rpb24gX29zdGVybihqYWhyKSB7CiAgICB2YXIgYSA9IGphaHIgJSAx OTsKICAgIHZhciBiID0gTWF0aC5mbG9vcihqYWhyIC8gMTAwKTsKICAgIHZhciBjID0gamFociAl IDEwMDsKICAgIHZhciBkID0gTWF0aC5mbG9vcihiIC8gNCk7CiAgICB2YXIgZSA9IGIgJSA0Owog ICAgdmFyIGYgPSBNYXRoLmZsb29yKChiICsgOCkgLyAyNSk7CiAgICB2YXIgZyA9IE1hdGguZmxv b3IoKGIgLSBmICsgMSkgLyAzKTsKICAgIHZhciBoID0gKDE5ICogYSArIGIgLSBkIC0gZyArIDE1 KSAlIDMwOwogICAgdmFyIGkgPSBNYXRoLmZsb29yKGMgLyA0KTsKICAgIHZhciBrID0gYyAlIDQ7 CiAgICB2YXIgbCA9ICgzMiArIDIgKiBlICsgMiAqIGkgLSBoIC0gaykgJSA3OwogICAgdmFyIG0g PSBNYXRoLmZsb29yKChhICsgMTEgKiBoICsgMjIgKiBsKSAvIDQ1MSk7CiAgICB2YXIgbW9uYXQg PSBNYXRoLmZsb29yKChoICsgbCAtIDcgKiBtICsgMTE0KSAvIDMxKTsgICAvLyAzID0gTWFlcnos IDQgPSBBcHJpbAogICAgdmFyIHRhZyA9ICgoaCArIGwgLSA3ICogbSArIDExNCkgJSAzMSkgKyAx OwogICAgcmV0dXJuIG5ldyBEYXRlKGphaHIsIG1vbmF0IC0gMSwgdGFnKTsKfQoKZnVuY3Rpb24g X3BsdXMoZCwgbikgewogICAgdmFyIHIgPSBuZXcgRGF0ZShkLmdldFRpbWUoKSk7CiAgICByLnNl dERhdGUoci5nZXREYXRlKCkgKyBuKTsKICAgIHJldHVybiByOwp9Cgp2YXIgX2NhY2hlID0ge307 CgovLyBMaWVmZXJ0IGVpbmUgTWFwIHsgJ1lZWVktTU0tREQnOiB7IG5hbWUsIHR5cCB9IH0gZnVl ciBlaW4gSmFoci4KLy8gdHlwIOKIiCAnYnVuZGVzd2VpdCcgfCAnbnJ3Jy4KZXhwb3J0IGZ1bmN0 aW9uIGZlaWVydGFnZUZ1ZXJKYWhyKGphaHIpIHsKICAgIGphaHIgPSBwYXJzZUludChqYWhyLCAx MCk7CiAgICBpZiAoIWphaHIpIHJldHVybiB7fTsKICAgIGlmIChfY2FjaGVbamFocl0pIHJldHVy biBfY2FjaGVbamFocl07CiAgICB2YXIgbyA9IF9vc3Rlcm4oamFocik7CiAgICB2YXIgbWFwID0g e307CiAgICBmdW5jdGlvbiBhZGQoZGF0dW0sIG5hbWUsIHR5cCkgeyBtYXBbZGF0dW1dID0geyBu YW1lOiBuYW1lLCB0eXA6IHR5cCB9OyB9CgogICAgYWRkKGphaHIgKyAnLTAxLTAxJywgICAgICAg ICAgJ05ldWphaHInLCAgICAgICAgICAgICAgICAgICAgJ2J1bmRlc3dlaXQnKTsKICAgIGFkZChk YXR1bVN0cihfcGx1cyhvLCAtMikpLCAgICdLYXJmcmVpdGFnJywgICAgICAgICAgICAgICAgICdi dW5kZXN3ZWl0Jyk7CiAgICBhZGQoZGF0dW1TdHIoX3BsdXMobywgIDEpKSwgICAnT3N0ZXJtb250 YWcnLCAgICAgICAgICAgICAgICAnYnVuZGVzd2VpdCcpOwogICAgYWRkKGphaHIgKyAnLTA1LTAx JywgICAgICAgICAgJ1RhZyBkZXIgQXJiZWl0JywgICAgICAgICAgICAgJ2J1bmRlc3dlaXQnKTsK ICAgIGFkZChkYXR1bVN0cihfcGx1cyhvLCAzOSkpLCAgICdDaHJpc3RpIEhpbW1lbGZhaHJ0Jywg ICAgICAgICdidW5kZXN3ZWl0Jyk7CiAgICBhZGQoZGF0dW1TdHIoX3BsdXMobywgNTApKSwgICAn UGZpbmdzdG1vbnRhZycsICAgICAgICAgICAgICAnYnVuZGVzd2VpdCcpOwogICAgYWRkKGRhdHVt U3RyKF9wbHVzKG8sIDYwKSksICAgJ0Zyb25sZWljaG5hbScsICAgICAgICAgICAgICAgJ25ydycp OyAgICAgICAgICAvLyBOUlctc3BlemlmaXNjaAogICAgYWRkKGphaHIgKyAnLTEwLTAzJywgICAg ICAgICAgJ1RhZyBkZXIgRGV1dHNjaGVuIEVpbmhlaXQnLCAgJ2J1bmRlc3dlaXQnKTsKICAgIGFk ZChqYWhyICsgJy0xMS0wMScsICAgICAgICAgICdBbGxlcmhlaWxpZ2VuJywgICAgICAgICAgICAg ICducncnKTsgICAgICAgICAgLy8gTlJXLXNwZXppZmlzY2gKICAgIGFkZChqYWhyICsgJy0xMi0y NScsICAgICAgICAgICcxLiBXZWlobmFjaHRzdGFnJywgICAgICAgICAgICdidW5kZXN3ZWl0Jyk7 CiAgICBhZGQoamFociArICctMTItMjYnLCAgICAgICAgICAnMi4gV2VpaG5hY2h0c3RhZycsICAg ICAgICAgICAnYnVuZGVzd2VpdCcpOwoKICAgIF9jYWNoZVtqYWhyXSA9IG1hcDsKICAgIHJldHVy biBtYXA7Cn0KCi8vIEluZm8genUgZWluZW0ga29ua3JldGVuIERhdHVtICgnWVlZWS1NTS1ERCcp IG9kZXIgbnVsbC4KZXhwb3J0IGZ1bmN0aW9uIGZlaWVydGFnSW5mbyhkYXR1bSkgewogICAgaWYg KCFkYXR1bSB8fCBkYXR1bS5sZW5ndGggPCA0KSByZXR1cm4gbnVsbDsKICAgIHZhciBtYXAgPSBm ZWllcnRhZ2VGdWVySmFocihkYXR1bS5zdWJzdHJpbmcoMCwgNCkpOwogICAgcmV0dXJuIG1hcFtk YXR1bV0gfHwgbnVsbDsKfQo= ### FILE: js/grid_editor.js | 40851 Ly8gPT09IGdyaWQvZWRpdG9yLmpzID09PQovLyBTdGFuZDogMjAyNi0wNS0xNAovLyBaZWxsLUVk aXRvciAoU2NoaWNodC1BdXN3YWhsICsgS29tbWVudGFyKSBpbmtsLiBSdWhlemVpdC1QcnVlZnVu ZywKLy8gRnVlaHJ1bmdzLUxvZ2lrIChER0wvV0RGL0ZCUC1aYWVobHVuZykgdW5kIFZlcmFudHdv cnR1bmdzLVVlYmVyZ2FuZy0KLy8gTWFpbC1EaWFsb2cgaW0gMTQtVGFnZS1WZXJiaW5kbGljaGtl aXRzZmVuc3Rlci4KLy8KLy8gSG9va3M6IGZlYXR1cmVJc3RBa3RpdiAoUGhhc2UgOCksIHNvbmRl ckZ1ZXJEYXR1bS9zb25kZXJXYXJuTW9kYWxaZWlnZW4KLy8gKFNvbmRlcnRlcm1pbmUgaW4gUGhh c2UgOCksIGlzdENvZGVBa3RpdiAoUGhhc2UgOCksIGVtYWlsVm9ybGFnZW5Ib2xlbi8KLy8gZW1h aWxWb3JsYWdlQmVmdWVsbGVuL21haWxUcmlnZ2VyRmV1ZXJuIChQaGFzZSA3KSwgYmVzZXR6dW5n c2tvbnRyb2xsZVJlbmRlcm4KLy8gKFBoYXNlIDYpLgoKaW1wb3J0IHsgWiB9IGZyb20gJy4vY29y ZV9zdGF0ZS5qcyc7CmltcG9ydCB7CiAgICBlc2NhcGVIVE1MLCBlc2NhcGVBdHRyLCBkYXR1bVN0 ciwgZGF0dW1Gb3JtYXRERSwKICAgIGZ1bmt0aW9uc1JhbmcsIF9wZXJzb25BbnplaWdlLCBhYnNl bmRlck5hbWVFcm1pdHRlbG4sCiAgICBhbnplaWdlTmFtZUZ1ZXJLZW5udW5nLCBhdXNsb2VzZXJF bWFpbEVybWl0dGVsbgp9IGZyb20gJy4vY29yZV91dGlsLmpzJzsKaW1wb3J0IHsgZGFyZlplbGxl RWRpdGllcmVuLCBkYXR1bUluVmVyYmluZGxpY2hrZWl0IH0gZnJvbSAnLi9jb3JlX3Blcm1pc3Np b25zLmpzJzsKaW1wb3J0IHsgYXBpUG9zdCB9IGZyb20gJy4vY29yZV9hcGkuanMnOwppbXBvcnQg eyB0b2FzdCwgYmVzdGFldGlnZW4sIG1vZGFsWmVpZ2VuLCBtb2RhbFNjaGxpZXNzZW4gfSBmcm9t ICcuL3VpX2RpYWxvZy5qcyc7CmltcG9ydCB7IHN0YWVya2VCZXJlY2huZW4sIHplbGxlVmlzdWVs bEFrdHVhbGlzaWVyZW4gfSBmcm9tICcuL2dyaWRfcmVuZGVyLmpzJzsKaW1wb3J0IHsKICAgIGtv bW1lbnRhckxhZGVuLCBrb21tZW50YXJFaW50cmFnLCBrb21tZW50YXJNZXRhVGV4dCwgaW50ZXJh Y3Rpb25Ib29rcywKICAgIGZ1ZWxsSGFuZGxlWmVpZ2VuLCBmdWVsbEhhbmRsZVZlcnN0ZWNrZW4s CiAgICBrb21tZW50YXJMaXN0ZSwga29tbWVudGFyTG9lc2NoZW4sIGRhcmZLb21tZW50YXJMb2Vz Y2hlbgp9IGZyb20gJy4vZ3JpZF9pbnRlcmFjdGlvbi5qcyc7CmltcG9ydCB7CiAgICBsb2NrWmVs bGVBY3F1aXJlLCBsb2NrWmVsbGVGb3JjZSwgbG9ja1plbGxlUmVsZWFzZSwKICAgIGxvY2tIZWFy dGJlYXRTdGFydGVuLCBsb2NrSGVhcnRiZWF0U3RvcHBlbgp9IGZyb20gJy4vc3luYy5qcyc7Cgov LyA9PT09PSBIb29rcyA9PT09PQoKZXhwb3J0IHZhciBlZGl0b3JIb29rcyA9IHsKICAgIGZlYXR1 cmVJc3RBa3RpdjogbnVsbCwKICAgIHNvbmRlckZ1ZXJEYXR1bTogbnVsbCwKICAgIHNvbmRlcldh cm5Nb2RhbFplaWdlbjogbnVsbCwKICAgIGlzdENvZGVBa3RpdjogbnVsbCwKICAgIGVtYWlsVm9y bGFnZW5Ib2xlbjogbnVsbCwKICAgIGVtYWlsVm9ybGFnZUJlZnVlbGxlbjogbnVsbCwKICAgIG1h aWxUcmlnZ2VyRmV1ZXJuOiBudWxsLAogICAgYmVzZXR6dW5nc2tvbnRyb2xsZVJlbmRlcm46IG51 bGwsCiAgICBiZXNldHp1bmdza29udHJvbGxlVGFnVXBkYXRlbjogbnVsbAp9OwoKLy8gPT09PT0g S29uc3RhbnRlbiA9PT09PQoKLy8gU29sbC1CZXNldHp1bmcgcHJvIFNjaGljaHQ6IDIgRnVlaHJ1 bmdza3JhZWZ0ZSAoMS4gKyAyLiBWZXJhbnR3b3J0dW5nKS4KLy8gQWxsZSBkYXJ1ZWJlciBoaW5h dXMgZWluZ2V0cmFnZW5lbiBER0xzIHNpbmQgUmVzZXJ2ZS4KZXhwb3J0IHZhciBGVUVIUlVOR19T T0xMID0gMjsKCi8vIFNjaGljaHR6ZWl0ZW4tTW9kZWxsIChTdHVuZGVuIGFiIFRhZ2Vzc3RhcnQp LiAzMCA9IG5hZWNoc3RlciBUYWcgMDY6MDAuCnZhciBzY2hpY2h0WmVpdGVuID0gewogICAgJ0Yn OiB7IHN0YXJ0OiA2LCBlbmRlOiAxNCB9LAogICAgJ1MnOiB7IHN0YXJ0OiAxNCwgZW5kZTogMjIg fSwKICAgICdOJzogeyBzdGFydDogMjIsIGVuZGU6IDMwIH0KfTsKCi8vID09PT09IEZ1ZWhydW5n cy1Mb2dpayA9PT09PQoKLy8gTGllZmVydCAnRicgLyAnUycgLyAnTicsIHdlbm4gd2VydCBlaW5l IEZ1ZWhydW5nc3NjaGljaHQgaXN0LCBzb25zdCBudWxsLgovLyBFcyB6YWVobHQgYXVzc2NobGll c3NsaWNoIGRpZSBSb2xsZSBER0wg4oCUIFdERi9GQlAgc2luZCBrZWluZSBGdWVocnVuZy4KZXhw b3J0IGZ1bmN0aW9uIGZ1ZWhydW5nc1NjaGljaHQod2VydCkgewogICAgaWYgKCF3ZXJ0IHx8IHdl cnQubGVuZ3RoIDwgNSkgcmV0dXJuIG51bGw7CiAgICB2YXIgcHJlZml4ID0gd2VydC5jaGFyQXQo MCk7CiAgICBpZiAocHJlZml4ICE9PSAnRicgJiYgcHJlZml4ICE9PSAnUycgJiYgcHJlZml4ICE9 PSAnTicpIHJldHVybiBudWxsOwogICAgaWYgKHdlcnQuc3Vic3RyaW5nKDIsIDUpID09PSAnREdM JykgcmV0dXJuIHByZWZpeDsKICAgIHJldHVybiBudWxsOwp9CgpleHBvcnQgZnVuY3Rpb24gZnVl aHJ1bmdzWmFlaGxlbihkYXR1bSwgc2NoaWNodCkgewogICAgLy8gRGVja3VuZ3NnbGVpY2ggbWl0 IHN0YWVya2VCZXJlY2huZW4oKSDigJQgZ2xlaWNoZSBaZWxsZSwgZ2xlaWNoZSBaYWhsLgogICAg dmFyIHN0ID0gc3RhZXJrZUJlcmVjaG5lbihkYXR1bSk7CiAgICBpZiAoc2NoaWNodCA9PT0gJ0Yn KSByZXR1cm4gc3QuZjsKICAgIGlmIChzY2hpY2h0ID09PSAnUycpIHJldHVybiBzdC5zOwogICAg aWYgKHNjaGljaHQgPT09ICdOJykgcmV0dXJuIHN0Lm47CiAgICByZXR1cm4gMDsKfQoKLy8gTGll ZmVydCBhbGxlIGFrdGl2ZW4gREdMcyBmdWVyIERhdHVtICsgU2NoaWNodCAoRi9TL04pLCBzb3J0 aWVydCBwcmltYWVyCi8vIG5hY2ggU3RhbW0tRnVua3Rpb25zLVJhbmcgKERHTCA+IFdERiA+IDMu IFBlcnNvbiA+IFdhY2hsZWl0dW5nL0dydXBwZW4tCi8vIGZ1ZWhydW5nKSwgc2VrdW5kYWVyIG5h Y2ggcm9oZXIgcG9zaXRpb24uIFswXSA9IDEuIFZlcmFudHdvcnR1bmcsCi8vIFsxXSA9IDIuIFZl cmFudHdvcnR1bmcsIFsyXSsgPSB3ZWl0ZXJlIChSZXNlcnZlKS4KZXhwb3J0IGZ1bmN0aW9uIGRn bHNJblNjaGljaHQoZGF0dW0sIHNjaGljaHRMZXR0ZXIpIHsKICAgIHZhciBlID0gKFoucGxhbnVu Zy5laW50cmFlZ2UgfHwge30pW2RhdHVtXSB8fCB7fTsKICAgIHZhciBrYW5kaWRhdGVuID0gW107 CiAgICAoWi5wbGFudW5nLnBlcnNvbmVuIHx8IFtdKS5mb3JFYWNoKGZ1bmN0aW9uKHApIHsKICAg ICAgICBpZiAoIXAuYWt0aXYpIHJldHVybjsKICAgICAgICB2YXIgdyA9IGVbU3RyaW5nKHAuaWQp XSB8fCAnJzsKICAgICAgICBpZiAoZnVlaHJ1bmdzU2NoaWNodCh3KSA9PT0gc2NoaWNodExldHRl cikga2FuZGlkYXRlbi5wdXNoKHApOwogICAgfSk7CiAgICBrYW5kaWRhdGVuLnNvcnQoZnVuY3Rp b24oYSwgYikgewogICAgICAgIHZhciByQSA9IGZ1bmt0aW9uc1JhbmcoYS5mdW5rdGlvbik7CiAg ICAgICAgdmFyIHJCID0gZnVua3Rpb25zUmFuZyhiLmZ1bmt0aW9uKTsKICAgICAgICBpZiAockEg IT09IHJCKSByZXR1cm4gckEgLSByQjsKICAgICAgICByZXR1cm4gKGEucG9zaXRpb24gfHwgOTk5 KSAtIChiLnBvc2l0aW9uIHx8IDk5OSk7CiAgICB9KTsKICAgIHJldHVybiBrYW5kaWRhdGVuOwp9 CgpleHBvcnQgZnVuY3Rpb24gYWt0aXZlRnVlaHJ1bmcoZGF0dW0sIHNjaGljaHRMZXR0ZXIpIHsK ICAgIHJldHVybiBkZ2xzSW5TY2hpY2h0KGRhdHVtLCBzY2hpY2h0TGV0dGVyKS5zbGljZSgwLCBG VUVIUlVOR19TT0xMKTsKfQoKLy8gVkkzLURHTC1RdWFsaWZpemllcnVuZzogZGFzIEZsYWcgZWxE Z2xRdWFsaWZpemllcnQgaXN0IHNlaXQgMjAyNi0wNS0yMwovLyBmdWVyIGFsbGUgUGVyc29uZW4g cGZsZWdiYXIgKGF1Y2ggQXQtREdML1dERi9OZXV6dWdhZW5nZSBtdWVzc2VuCi8vIGV4cGxpeml0 IHF1YWxpZml6aWVydCB3ZXJkZW4sIHdlbm4gZGFzIGdld3VlbnNjaHQgaXN0KS4gRmFsbGJhY2sg ZnVlcgovLyBCZXN0YW5kOiBGdW5rdGlvbiBER0wvREdMaW4gZ2lsdCB3ZWl0ZXJoaW4gaW1wbGl6 aXQgYWxzIHF1YWxpZml6aWVydCwKLy8gZGFtaXQga2VpbiBNaWdyYXRpb25zLVBmbGljaHRkdXJj aGxhdWYgbm9ldGlnIGlzdC4KZXhwb3J0IGZ1bmN0aW9uIGlzdERnbFF1YWxpZml6aWVydChwKSB7 CiAgICBpZiAoIXApIHJldHVybiBmYWxzZTsKICAgIGlmIChwLmVsRGdsUXVhbGlmaXppZXJ0ID09 PSB0cnVlKSByZXR1cm4gdHJ1ZTsKICAgIHZhciBmID0gU3RyaW5nKHAuZnVua3Rpb24gfHwgJycp OwogICAgaWYgKGYgPT09ICdER0wnIHx8IGYgPT09ICdER0xpbicpIHJldHVybiB0cnVlOwogICAg cmV0dXJuIGZhbHNlOwp9CgovLyBMaWVmZXJ0IHRydWUsIHdlbm4gZGllIFBlcnNvbiBHZXNhbXR2 ZXJhbnR3b3J0bGljaCBpc3QuIEdlc2FtdHZlcmFudHdvcnRsaWNoZQovLyBrb21tZW4gYXVzIGRl ciBEaWVuc3RzdGVsbGVubGVpdHVuZyB1bmQgbmVobWVuIGRpZSBER0wtRnVua3Rpb24gbmljaHQg bWVocgovLyBzZWxic3Qgd2FociDigJQgZGFoZXIgYXVzIFNjaGljaHQtQmVzZXR6dW5ncy1LYW5k aWRhdGVuIGF1c2dlc2NobG9zc2VuLgpleHBvcnQgZnVuY3Rpb24gaXN0R2VzYW10dmVyYW50d29y dGxpY2gocCkgewogICAgaWYgKCFwIHx8ICFwLm53S2VubnVuZykgcmV0dXJuIGZhbHNlOwogICAg dmFyIHBrID0gU3RyaW5nKHAubndLZW5udW5nKS50b0xvd2VyQ2FzZSgpOwogICAgdmFyIGZhcyA9 IChaLmFkbWluICYmIFouYWRtaW4uZmFjaGF1ZnNpY2h0KSB8fCBbXTsKICAgIGZvciAodmFyIGkg PSAwOyBpIDwgZmFzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgdmFyIGZhID0gZmFzW2ldOwogICAg ICAgIGlmIChmYSAmJiBmYS5nZXNhbXR2ZXJhbnR3b3J0bGljaCAmJiBTdHJpbmcoZmEubndLZW5u dW5nIHx8ICcnKS50b0xvd2VyQ2FzZSgpID09PSBwaykgcmV0dXJuIHRydWU7CiAgICB9CiAgICBy ZXR1cm4gZmFsc2U7Cn0KCi8vIEUtTWFpbCBkZXMgR2VzYW10dmVyYW50d29ydGxpY2hlbiBhdXMg YWRtaW4uZmFjaGF1ZnNpY2h0LiBGYWxsYmFjayB1ZWJlcgovLyBkaWUgTlctS2VubnVuZyBhdWYg ZGVuIHBhc3NlbmRlbiBQZXJzb25lbi1FaW50cmFnLgpleHBvcnQgZnVuY3Rpb24gZ2VzYW10dmVy YW50d29ydGxpY2hFbWFpbCgpIHsKICAgIHZhciBmYSA9IChaLmFkbWluLmZhY2hhdWZzaWNodCB8 fCBbXSkuZmluZChmdW5jdGlvbihmKSB7IHJldHVybiBmLmdlc2FtdHZlcmFudHdvcnRsaWNoOyB9 KTsKICAgIGlmICghZmEpIHJldHVybiAnJzsKICAgIGlmIChmYS5lbWFpbCkgcmV0dXJuIGZhLmVt YWlsOwogICAgaWYgKGZhLm53S2VubnVuZykgewogICAgICAgIHZhciBwID0gKFoucGxhbnVuZy5w ZXJzb25lbiB8fCBbXSkuZmluZChmdW5jdGlvbih4KSB7CiAgICAgICAgICAgIHJldHVybiAoeC5u d0tlbm51bmcgfHwgJycpLnRvTG93ZXJDYXNlKCkgPT09IGZhLm53S2VubnVuZy50b0xvd2VyQ2Fz ZSgpOwogICAgICAgIH0pOwogICAgICAgIGlmIChwICYmIHAuZW1haWwpIHJldHVybiBwLmVtYWls OwogICAgfQogICAgcmV0dXJuICcnOwp9CgovLyA9PT09PSBWZXJhbnR3b3J0dW5ncy1XZWNoc2Vs IChFSU5FIFNhbW1lbC1NYWlsKSA9PT09PQovLwovLyBFaW5lIFBsYW51bmdzYWVuZGVydW5nIGlu IGRlciAxNC1UYWdlLVZlcmJpbmRsaWNoa2VpdCBrYW5uIG1laHJlcmUgUGVyc29uZW4KLy8gYmV0 cmVmZmVuOiB3ZXIgaW4gZGllIFRvcC0yLUZ1ZWhydW5nIGF1ZnJ1ZWNrdCBVTkQgd2VyIGRhZHVy Y2ggaGVyYXVzZmFlbGx0LgovLyBGcnVlaGVyIG9lZmZuZXRlIGRhcyBwcm8gUGVyc29uIGVpbmVu IGVpZ2VuZW4gRGlhbG9nICsgZWluZSBlaWdlbmUgTWFpbCDigJQKLy8genUgdmllbGUgU2Nocml0 dGUsIGRlciBVc2VyIHN0aWVnIGF1cy4gSmV0enQ6IEVJTkUgQmVzdGFldGlndW5nLCBFSU5FIE1h aWwKLy8gYW4gQUxMRSBCZXRyb2ZmZW5lbiAoQW4tRmVsZCksIG1pdCBlaW5lbSBnZW5lcmllcnRl biBXZWNoc2VsLUJsb2NrIGltIFRleHQuCi8vCi8vIHdlY2hzZWwgPSB7Ci8vICAgZGF0dW0sICAg ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFlZWVktTU0tREQKLy8gICBwcmltYWVyU2NoaWNo dCwgICAgICAgICAgICAgICAgICAgLy8gRi9TL04g4oCUIGZ1ZXIgQmV0cmVmZgovLyAgIGVpbnRy YWVnZTogWyB7YXJ0OidhdWYnfCdmcmVpJywgc2NoaWNodExldHRlciwgcGVyc29uLCBzdHVmZSwg Z2VnZW59IF0sCi8vICAgZW1wZmFlbmdlcjogWyB7ZW1haWwsIHBlcnNvbn0gXSwgIC8vIEFuLUZl bGQgKGRlZHVwZSk6IEF1ZnJ1ZWNrZXIgYXVzc2VyCi8vICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIC8vICAgU2VsYnN0cGxhbmVyICsgVmVyZHJhZW5ndGUsIG1pdCBNYWlsCi8v ICAgY2NQYXJ0bmVyRW1haWxzOiBbIC4uLiBdICAgICAgICAgIC8vIHp3ZWl0ZSBGdWVocnVuZ3Nr cmFmdCBqZSBTY2hpY2h0Ci8vIH0KCi8vIEJhdXQgZGllIEtsYXJ0ZXh0LVplaWxlbiBkZXMgV2Vj aHNlbC1CbG9ja3MgKGZ1ZXIgRGlhbG9nICsgTWFpbC1Cb2R5KS4KZnVuY3Rpb24gd2VjaHNlbFRl eHRaZWlsZW4od2VjaHNlbCkgewogICAgdmFyIHNjaGljaHROYW1lID0geyBGOiAnRnLDvGgnLCBT OiAnU3DDpHQnLCBOOiAnTmFjaHQnIH07CiAgICByZXR1cm4gd2VjaHNlbC5laW50cmFlZ2UubWFw KGZ1bmN0aW9uKGUpIHsKICAgICAgICB2YXIgc24gPSAoc2NoaWNodE5hbWVbZS5zY2hpY2h0TGV0 dGVyXSB8fCBlLnNjaGljaHRMZXR0ZXIpICsgJ3NjaGljaHQnOwogICAgICAgIHZhciBzdHVmZVRl eHQgPSBlLnN0dWZlID09PSAxID8gJzEuIFZlcmFudHdvcnR1bmcnIDogJzIuIFZlcmFudHdvcnR1 bmcnOwogICAgICAgIGlmIChlLmFydCA9PT0gJ2F1ZicpIHsKICAgICAgICAgICAgcmV0dXJuICfi gKIgJyArIF9wZXJzb25BbnplaWdlKGUucGVyc29uKSArICcgcsO8Y2t0IGluIGRpZSAnICsgc3R1 ZmVUZXh0ICsgJyBkZXIgJyArIHNuICsgJyBuYWNoJyArCiAgICAgICAgICAgICAgICAgICAoZS5n ZWdlbiA/ICcgKGbDvHIgJyArIF9wZXJzb25BbnplaWdlKGUuZ2VnZW4pICsgJyknIDogJycpICsg Jy4nOwogICAgICAgIH0KICAgICAgICByZXR1cm4gJ+KAoiAnICsgX3BlcnNvbkFuemVpZ2UoZS5w ZXJzb24pICsgJyBpc3QgYXVzIGRlciAnICsgc3R1ZmVUZXh0ICsgJyBkZXIgJyArIHNuICsKICAg ICAgICAgICAgICAgJyBoZXJhdXMgdW5kIHBsYW50IGFiIGpldHp0IGZsZXhpYmxlcicgKwogICAg ICAgICAgICAgICAoZS5nZWdlbiA/ICcgKMO8YmVybm9tbWVuIGhhdCAnICsgX3BlcnNvbkFuemVp Z2UoZS5nZWdlbikgKyAnKScgOiAnJykgKyAnLic7CiAgICB9KTsKfQoKZXhwb3J0IGZ1bmN0aW9u IHZlcmFudHdvcnR1bmdzV2VjaHNlbERpYWxvZ1plaWdlbih3ZWNoc2VsLCBvbkZlcnRpZykgewog ICAgdmFyIGZlcnRpZyA9IGZ1bmN0aW9uKCkgeyBpZiAodHlwZW9mIG9uRmVydGlnID09PSAnZnVu Y3Rpb24nKSBvbkZlcnRpZygpOyB9OwogICAgaWYgKCF3ZWNoc2VsIHx8ICF3ZWNoc2VsLmVtcGZh ZW5nZXIgfHwgIXdlY2hzZWwuZW1wZmFlbmdlci5sZW5ndGgpIHsgZmVydGlnKCk7IHJldHVybjsg fQoKICAgIHZhciB6ZWlsZW4gPSB3ZWNoc2VsVGV4dFplaWxlbih3ZWNoc2VsKTsKICAgIHZhciBu YW1lbiA9IHdlY2hzZWwuZW1wZmFlbmdlci5tYXAoZnVuY3Rpb24oZSkgeyByZXR1cm4gX3BlcnNv bkFuemVpZ2UoZS5wZXJzb24pOyB9KTsKICAgIHZhciBpbmZvID0gJ0R1cmNoIGRlaW5lIFBsYW51 bmdzw6RuZGVydW5nIGFtICcgKyBkYXR1bUZvcm1hdERFKHdlY2hzZWwuZGF0dW0pICsKICAgICAg ICAnIMOkbmRlcnQgc2ljaCBkaWUgRsO8aHJ1bmdzLVZlcmFudHdvcnR1bmc6XG5cbicgKyB6ZWls ZW4uam9pbignXG4nKSArICdcblxuJyArCiAgICAgICAgJ0VzIHdpcmQgRUlORSBFLU1haWwgYW4g YWxsZSBCZXRyb2ZmZW5lbiBnZcO2ZmZuZXQ6XG4nICsgbmFtZW4uam9pbignLCAnKSArICcuJzsK ICAgIHZhciBrb2VycGVyID0gJzxkaXYgc3R5bGU9IndoaXRlLXNwYWNlOnByZS1saW5lO2xpbmUt aGVpZ2h0OjEuNTtwYWRkaW5nOjhweCAwIj4nICsgZXNjYXBlSFRNTChpbmZvKSArICc8L2Rpdj4n OwogICAgdmFyIGZ1c3MgPSAnPGJ1dHRvbiBjbGFzcz0iYnRuIiBpZD0idnctbmVpbiIgdHlwZT0i YnV0dG9uIj5OaWNodCBiZW5hY2hyaWNodGlnZW48L2J1dHRvbj4nICsKICAgICAgICAgICAgICAg JzxidXR0b24gY2xhc3M9ImJ0biBidG4tcHJpbWFlciIgaWQ9InZ3LWphIiB0eXBlPSJidXR0b24i PkUtTWFpbCDDtmZmbmVuPC9idXR0b24+JzsKICAgIG1vZGFsWmVpZ2VuKCdWZXJhbnR3b3J0dW5n c3dlY2hzZWwg4oCUICcgKyB3ZWNoc2VsLmVtcGZhZW5nZXIubGVuZ3RoICsgJyBQZXJzb24oZW4p IGluZm9ybWllcmVuJywKICAgICAgICBrb2VycGVyLCBmdXNzLCBudWxsLCBudWxsLCB7IHJlaW5l ckRpYWxvZzogdHJ1ZSB9KTsKICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd2dy1uZWluJyku YWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbigpIHsgbW9kYWxTY2hsaWVzc2VuKCk7 IGZlcnRpZygpOyB9KTsKICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd2dy1qYScpLmFkZEV2 ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oKSB7CiAgICAgICAgdmVyYW50d29ydHVuZ3NX ZWNoc2VsRW1haWxPZWZmbmVuKHdlY2hzZWwpOwogICAgICAgIG1vZGFsU2NobGllc3NlbigpOyBm ZXJ0aWcoKTsKICAgIH0pOwp9CgpleHBvcnQgZnVuY3Rpb24gdmVyYW50d29ydHVuZ3NXZWNoc2Vs RW1haWxPZWZmbmVuKHdlY2hzZWwpIHsKICAgIGlmICghZWRpdG9ySG9va3MuZW1haWxWb3JsYWdl bkhvbGVuIHx8ICFlZGl0b3JIb29rcy5lbWFpbFZvcmxhZ2VCZWZ1ZWxsZW4pIHJldHVybjsKICAg IGlmICghd2VjaHNlbCB8fCAhd2VjaHNlbC5lbXBmYWVuZ2VyIHx8ICF3ZWNoc2VsLmVtcGZhZW5n ZXIubGVuZ3RoKSByZXR1cm47CiAgICB2YXIgdm9ybGFnZSA9IGVkaXRvckhvb2tzLmVtYWlsVm9y bGFnZW5Ib2xlbigpLnZlcmFudHdvcnR1bmdzVWViZXJnYW5nOwogICAgaWYgKCF2b3JsYWdlKSBy ZXR1cm47CgogICAgLy8gQW4tRmVsZDogYWxsZSBCZXRyb2ZmZW5lbiBtaXQgRS1NYWlsIChkZWR1 cGUsIGxvd2VyY2FzZS1WZXJnbGVpY2gpCiAgICB2YXIgdG9MaXN0ZSA9IFtdOwogICAgdmFyIHNl ZW4gPSB7fTsKICAgIHdlY2hzZWwuZW1wZmFlbmdlci5mb3JFYWNoKGZ1bmN0aW9uKGUpIHsKICAg ICAgICB2YXIgbWFpbCA9IChlLmVtYWlsIHx8ICcnKS50b0xvd2VyQ2FzZSgpOwogICAgICAgIGlm IChtYWlsICYmICFzZWVuW21haWxdKSB7IHNlZW5bbWFpbF0gPSB0cnVlOyB0b0xpc3RlLnB1c2go ZS5lbWFpbCk7IH0KICAgIH0pOwogICAgaWYgKCF0b0xpc3RlLmxlbmd0aCkgewogICAgICAgIHRv YXN0KCdGw7xyIGRpZSBiZXRyb2ZmZW5lbiBQZXJzb25lbiBpc3Qga2VpbmUgRS1NYWlsLUFkcmVz c2UgaGludGVybGVndCDigJQgYml0dGUgenVlcnN0IHBmbGVnZW4uJywgJ3dhcm51bmcnKTsKICAg ICAgICByZXR1cm47CiAgICB9CgogICAgdmFyIHNjaGljaHROYW1lID0geyBGOiAnRnLDvGgnLCBT OiAnU3DDpHQnLCBOOiAnTmFjaHQnIH1bd2VjaHNlbC5wcmltYWVyU2NoaWNodF0gfHwgd2VjaHNl bC5wcmltYWVyU2NoaWNodDsKICAgIHZhciBjdHggPSB7CiAgICAgICAgZGF0dW06ICAgICAgICAg ZGF0dW1Gb3JtYXRERSh3ZWNoc2VsLmRhdHVtKSwKICAgICAgICB3b2NoZW50YWc6ICAgICBbJ1Nv bm50YWcnLCdNb250YWcnLCdEaWVuc3RhZycsJ01pdHR3b2NoJywnRG9ubmVyc3RhZycsJ0ZyZWl0 YWcnLCdTYW1zdGFnJ11bbmV3IERhdGUod2VjaHNlbC5kYXR1bSArICdUMDA6MDA6MDAnKS5nZXRE YXkoKV0sCiAgICAgICAgc2NoaWNodDogICAgICAgc2NoaWNodE5hbWUsCiAgICAgICAgc2NoaWNo dF9rdXJ6OiAgd2VjaHNlbC5wcmltYWVyU2NoaWNodCwKICAgICAgICB3ZWNoc2VsX2Jsb2NrOiB3 ZWNoc2VsVGV4dFplaWxlbih3ZWNoc2VsKS5qb2luKCdcbicpLAogICAgICAgIGFic2VuZGVyX25h bWU6IGFic2VuZGVyTmFtZUVybWl0dGVsbigpCiAgICB9OwogICAgdmFyIGJldHJlZmYgPSBlZGl0 b3JIb29rcy5lbWFpbFZvcmxhZ2VCZWZ1ZWxsZW4odm9ybGFnZS5iZXRyZWZmLCBjdHgpOwogICAg dmFyIHRleHQgICAgPSBlZGl0b3JIb29rcy5lbWFpbFZvcmxhZ2VCZWZ1ZWxsZW4odm9ybGFnZS50 ZXh0LCBjdHgpOwoKICAgIC8vIENDOiB6d2VpdGUgRnVlaHJ1bmdza3JhZnQgKG9wdGlvbmFsKSAr IEF1c2xvZXNlciAob3B0aW9uYWwpLiBOaWUgZG9wcGVsdAogICAgLy8genUgamVtYW5kZW0sIGRl ciBzY2hvbiBpbSBBbi1GZWxkIHN0ZWh0LgogICAgdmFyIGNjID0gW107IHZhciBjY1NlZW4gPSB7 fTsKICAgIGZ1bmN0aW9uIGNjQWRkKG1haWwpIHsKICAgICAgICBpZiAoIW1haWwpIHJldHVybjsK ICAgICAgICB2YXIgbSA9IG1haWwudG9Mb3dlckNhc2UoKTsKICAgICAgICBpZiAoc2VlblttXSB8 fCBjY1NlZW5bbV0pIHJldHVybjsKICAgICAgICBjY1NlZW5bbV0gPSB0cnVlOyBjYy5wdXNoKG1h aWwpOwogICAgfQogICAgaWYgKHZvcmxhZ2UuY2NBbmRlcmVyRGdsKSAod2VjaHNlbC5jY1BhcnRu ZXJFbWFpbHMgfHwgW10pLmZvckVhY2goY2NBZGQpOwogICAgaWYgKHZvcmxhZ2UuY2NBdXNsb2Vz ZXIpIGNjQWRkKGF1c2xvZXNlckVtYWlsRXJtaXR0ZWxuKCkpOwoKICAgIHZhciB1cmwgPSAnbWFp bHRvOicgKyBlbmNvZGVVUklDb21wb25lbnQodG9MaXN0ZS5qb2luKCcsJykpICsKICAgICAgICAg ICAgICAnP3N1YmplY3Q9JyArIGVuY29kZVVSSUNvbXBvbmVudChiZXRyZWZmKSArCiAgICAgICAg ICAgICAgJyZib2R5PScgICAgKyBlbmNvZGVVUklDb21wb25lbnQodGV4dCk7CiAgICBpZiAoY2Mu bGVuZ3RoKSB1cmwgKz0gJyZjYz0nICsgZW5jb2RlVVJJQ29tcG9uZW50KGNjLmpvaW4oJywnKSk7 CiAgICBpZiAodm9ybGFnZS5iY2NHZXNhbXR2ZXJhbnR3b3J0bGljaCkgewogICAgICAgIHZhciBn dkVtYWlsID0gZ2VzYW10dmVyYW50d29ydGxpY2hFbWFpbCgpOwogICAgICAgIGlmIChndkVtYWls KSB1cmwgKz0gJyZiY2M9JyArIGVuY29kZVVSSUNvbXBvbmVudChndkVtYWlsKTsKICAgIH0KICAg IHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gdXJsOwp9CgovLyA9PT09PSBVbnRlcmJlc2V0enVuZ3Mt UHJ1ZWZ1bmcgKHZvciBkZW0gU3BlaWNoZXJuKSA9PT09PQoKLy8gUHLDvGZ0IG9iIGRpZSBnZXBs YW50ZSDDhG5kZXJ1bmcgZWluZSBVbnRlcmJlc2V0enVuZyBhdXNsb2VzdC4KLy8gUnVlY2tnYWJl OiAnRicvJ1MnLydOJyB3ZW5uIGphLCBzb25zdCBudWxsLgpleHBvcnQgZnVuY3Rpb24gZnVlaHJ1 bmdzVW50ZXJiZXNldHp1bmdQcnVlZmVuKGRhdHVtLCBhbHRlcldlcnQsIG5ldWVyV2VydCkgewog ICAgaWYgKCFkYXR1bUluVmVyYmluZGxpY2hrZWl0KGRhdHVtKSkgcmV0dXJuIG51bGw7CiAgICB2 YXIgYWx0ZVNjaGljaHQgPSBmdWVocnVuZ3NTY2hpY2h0KGFsdGVyV2VydCk7CiAgICB2YXIgbmV1 ZVNjaGljaHQgPSBmdWVocnVuZ3NTY2hpY2h0KG5ldWVyV2VydCk7CiAgICBpZiAoIWFsdGVTY2hp Y2h0KSByZXR1cm4gbnVsbDsgICAgICAgICAgICAgICAgIC8vIHdhciBuaWUgRnVlaHJ1bmdzc2No aWNodAogICAgaWYgKGFsdGVTY2hpY2h0ID09PSBuZXVlU2NoaWNodCkgcmV0dXJuIG51bGw7ICAv LyBTY2hpY2h0IGJsZWlidCwgbnVyIFJvbGxlIGFuZGVycyAoRi1ER0wgLT4gRi1XREYpCiAgICAv LyBEaWUgYWx0ZVNjaGljaHQgdmVybGllcnQgZHVyY2ggZGllc2UgQWVuZGVydW5nIGVpbmUgRnVl aHJ1bmdza3JhZnQuCiAgICB2YXIgYWt0dWVsbCA9IGZ1ZWhydW5nc1phZWhsZW4oZGF0dW0sIGFs dGVTY2hpY2h0KTsKICAgIGlmIChha3R1ZWxsIC0gMSA8IDIpIHJldHVybiBhbHRlU2NoaWNodDsK ICAgIHJldHVybiBudWxsOwp9CgovLyA9PT09PSBaZWxsLUVkaXRvciA9PT09PQoKLy8gTW9kdWwt cHJpdmF0ZSBFZGl0b3ItU3RhdGUtVmFyLiBadWdyaWZmIGF1cyBpbnRlcmFjdGlvbi5qcyAoZmFs bHMgbm9ldGlnKQovLyB1ZWJlciBlZGl0b3JBa3RpdigpLUdldHRlciAoc2llaGUgdW50ZW4pLgp2 YXIgZWRpdG9yID0geyBha3RpdjogZmFsc2UsIGRhdHVtOiAnJywgcGVyc29uSWQ6ICcnIH07Cgpl eHBvcnQgZnVuY3Rpb24gZWRpdG9yQWt0aXYoKSB7IHJldHVybiBlZGl0b3IuYWt0aXY7IH0KZXhw b3J0IGZ1bmN0aW9uIGVkaXRvckRhdHVtKCkgeyByZXR1cm4gZWRpdG9yLmRhdHVtOyB9CmV4cG9y dCBmdW5jdGlvbiBlZGl0b3JQZXJzb25JZCgpIHsgcmV0dXJuIGVkaXRvci5wZXJzb25JZDsgfQoK Ly8gUmVuZGVydCBkaWUgS29tbWVudGFyLVZlcmxhdWZzbGlzdGUgaW0gRWRpdG9yIChvYmVyaGFs YiBkZXMgRWluZ2FiZWZlbGRzKS4KLy8gUmVpaGVuZm9sZ2U6IG5ldWVzdGUgb2Jlbi4gUHJvIEVp bnRyYWcgZWluZSBUZXh0LVplbGxlICsgTWV0YS1aZWlsZSAoQXV0b3IgKwovLyBaZWl0c3RlbXBl bCk7IGZ1ZXIgQmVyZWNodGlndGUgKFNVL0dlc2FtdHZlcmFudHdvcnRsaWNoKSB6dXNhZXR6bGlj aCBlaW4KLy8gTG9lc2NoLUljb24uIFdpcmQgbmFjaCBFZGl0b3ItT3BlbiwgSGluenVmdWVnZW4g dW5kIExvZXNjaGVuIGF1ZmdlcnVmZW4sCi8vIGRhbWl0IGRpZSBBbnplaWdlIGxpdmUgbWl0d2Fu ZGVydC4KZXhwb3J0IGZ1bmN0aW9uIGVkaXRvcktvbW1lbnRhclZlcmxhdWZSZW5kZXJuKCkgewog ICAgdmFyIGVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2VkaXRvci1rb21tZW50YXItdmVy bGF1ZicpOwogICAgaWYgKCFlbCkgcmV0dXJuOwogICAgaWYgKCFlZGl0b3IuYWt0aXYpIHsgZWwu aW5uZXJIVE1MID0gJyc7IHJldHVybjsgfQogICAgdmFyIGxpc3RlID0ga29tbWVudGFyTGlzdGUo a29tbWVudGFyRWludHJhZyhlZGl0b3IuZGF0dW0sIGVkaXRvci5wZXJzb25JZCkpOwogICAgaWYg KGxpc3RlLmxlbmd0aCA9PT0gMCkgewogICAgICAgIGVsLmlubmVySFRNTCA9ICc8ZGl2IGNsYXNz PSJla3YtbGVlciI+Tm9jaCBrZWluZSBLb21tZW50YXJlPC9kaXY+JzsKICAgICAgICByZXR1cm47 CiAgICB9CiAgICB2YXIgZGFyZkxvZXNjaGVuID0gZGFyZktvbW1lbnRhckxvZXNjaGVuKCk7CiAg ICAvLyBOZXVlc3RlIG9iZW4g4oCUIFNlcnZlciBzcGVpY2hlcnQgY2hyb25vbG9naXNjaCAoYWx0 IC0+IG5ldSksIHdpciBkcmVoZW4KICAgIC8vIGZ1ZXIgZGllIEFuemVpZ2UgdW0uIEl0ZXJhdGlv biBydWVja3dhZXJ0cyBvaG5lIHJldmVyc2UoKSwgZGFtaXQgZGFzCiAgICAvLyBPcmlnaW5hbC1B cnJheSBuaWNodCBtdXRpZXJ0IHdpcmQuCiAgICB2YXIgaHRtbCA9ICcnOwogICAgZm9yICh2YXIg aSA9IGxpc3RlLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7CiAgICAgICAgdmFyIGsgPSBsaXN0 ZVtpXTsKICAgICAgICB2YXIgdGV4dCA9IGVzY2FwZUhUTUwoay50ZXh0IHx8ICcnKS5yZXBsYWNl KC9cbi9nLCAnPGJyPicpOwogICAgICAgIHZhciBkdCA9ICcnOwogICAgICAgIGlmIChrLmdlYWVu ZGVydEFtKSB7CiAgICAgICAgICAgIHZhciBkID0gbmV3IERhdGUoay5nZWFlbmRlcnRBbSk7CiAg ICAgICAgICAgIGlmICghaXNOYU4oZC5nZXRUaW1lKCkpKSB7CiAgICAgICAgICAgICAgICB2YXIg cGFkID0gZnVuY3Rpb24obikgeyByZXR1cm4gKG4gPCAxMCA/ICcwJyA6ICcnKSArIG47IH07CiAg ICAgICAgICAgICAgICBkdCA9IHBhZChkLmdldERhdGUoKSkgKyAnLicgKyBwYWQoZC5nZXRNb250 aCgpICsgMSkgKyAnLicgKyBkLmdldEZ1bGxZZWFyKCkgKwogICAgICAgICAgICAgICAgICAgICAn ICcgKyBwYWQoZC5nZXRIb3VycygpKSArICc6JyArIHBhZChkLmdldE1pbnV0ZXMoKSk7CiAgICAg ICAgICAgIH0KICAgICAgICB9CiAgICAgICAgdmFyIHJvaCA9IGsuZ2VhZW5kZXJ0Vm9uIHx8ICcn OwogICAgICAgIHZhciBuYW1lID0gcm9oID8gYW56ZWlnZU5hbWVGdWVyS2VubnVuZyhyb2gpIDog Jyc7CiAgICAgICAgdmFyIHZlcmZhc3NlciA9IG5hbWUgJiYgbmFtZS50b0xvd2VyQ2FzZSgpICE9 PSByb2gudG9Mb3dlckNhc2UoKS5zcGxpdCgnXFwnKS5wb3AoKSA/IG5hbWUgOiByb2g7CiAgICAg ICAgdmFyIGxvZXNjaEJ0biA9IGRhcmZMb2VzY2hlbiAmJiBrLmlkICYmIGsuaWQuaW5kZXhPZign a19sZWdhY3knKSAhPT0gMAogICAgICAgICAgICA/ICc8YnV0dG9uIGNsYXNzPSJla3YtbG9lc2No ZW4iIHRpdGxlPSJEaWVzZW4gS29tbWVudGFyIGzDtnNjaGVuIiBkYXRhLWlkPSInICsgZXNjYXBl QXR0cihrLmlkKSArICciPuKclTwvYnV0dG9uPicKICAgICAgICAgICAgOiAnJzsKICAgICAgICBo dG1sICs9ICc8ZGl2IGNsYXNzPSJla3YtZWludHJhZyI+JyArCiAgICAgICAgICAgICAgICAgICAg JzxkaXYgY2xhc3M9ImVrdi10ZXh0Ij4nICsgdGV4dCArICc8L2Rpdj4nICsKICAgICAgICAgICAg ICAgICAgICAnPGRpdiBjbGFzcz0iZWt2LW1ldGEiPicgKwogICAgICAgICAgICAgICAgICAgICAg ICAodmVyZmFzc2VyID8gJzxzcGFuIGNsYXNzPSJla3YtbWV0YS1hdXRvciI+JyArIGVzY2FwZUhU TUwodmVyZmFzc2VyKSArICc8L3NwYW4+JyA6ICcnKSArCiAgICAgICAgICAgICAgICAgICAgICAg ICh2ZXJmYXNzZXIgJiYgZHQgPyAnIMK3ICcgOiAnJykgKwogICAgICAgICAgICAgICAgICAgICAg ICAoZHQgPyAnPHNwYW4gY2xhc3M9ImVrdi1tZXRhLXplaXQiPicgKyBlc2NhcGVIVE1MKGR0KSAr ICc8L3NwYW4+JyA6ICcnKSArCiAgICAgICAgICAgICAgICAgICAgICAgIGxvZXNjaEJ0biArCiAg ICAgICAgICAgICAgICAgICAgJzwvZGl2PicgKwogICAgICAgICAgICAgICAgJzwvZGl2Pic7CiAg ICB9CiAgICBlbC5pbm5lckhUTUwgPSBodG1sOwp9CgoKLy8gUnVoZXplaXRlbi1IZWxwZXIKCmV4 cG9ydCBmdW5jdGlvbiBuYWNoYmFyRGF0dW0oZFN0ciwgb2Zmc2V0KSB7CiAgICB2YXIgZCA9IG5l dyBEYXRlKGRTdHIgKyAnVDEyOjAwOjAwJyk7CiAgICBkLnNldERhdGUoZC5nZXREYXRlKCkgKyBv ZmZzZXQpOwogICAgcmV0dXJuIGRhdHVtU3RyKGQpOwp9CgpleHBvcnQgZnVuY3Rpb24gc2NoaWNo dFR5cCh3ZXJ0KSB7CiAgICBpZiAoIXdlcnQpIHJldHVybiBudWxsOwogICAgdmFyIGMgPSB3ZXJ0 LmNoYXJBdCgwKTsKICAgIGlmIChjID09PSAnRicgfHwgYyA9PT0gJ1MnIHx8IGMgPT09ICdOJykg ewogICAgICAgIGlmICh3ZXJ0LmluZGV4T2YoJ0RHTCcpICE9PSAtMSB8fCB3ZXJ0LmluZGV4T2Yo J1dERicpICE9PSAtMSB8fCB3ZXJ0LmluZGV4T2YoJ0ZCUCcpICE9PSAtMSkgcmV0dXJuIGM7CiAg ICB9CiAgICByZXR1cm4gbnVsbDsKfQoKLy8gSGlsZnNmb3JtYXR0ZXI6IFN0dW5kZW4tWmFobCBp biBISDpNTS4gJSAyNCBmdWVyIE5hY2h0c2NoaWNodGVuLAovLyBkZXJlbiBlbmRlID4gMjQgKHou Qi4gMDYgKyAyNCA9IDMwIGZ1ZXIgImVuZGV0IGFtIEZvbGdldGFnIDA2OjAwIikuCmZ1bmN0aW9u IF9oaG1tKGgpIHsKICAgIHZhciBuID0gKChoICUgMjQpICsgMjQpICUgMjQ7CiAgICB2YXIgaGgg PSBNYXRoLmZsb29yKG4pOwogICAgdmFyIG1tID0gTWF0aC5yb3VuZCgobiAtIGhoKSAqIDYwKTsK ICAgIHJldHVybiAoaGggPCAxMCA/ICcwJyA6ICcnKSArIGhoICsgJzonICsgKG1tIDwgMTAgPyAn MCcgOiAnJykgKyBtbTsKfQoKZXhwb3J0IGZ1bmN0aW9uIHJ1aGV6ZWl0UHJ1ZWZlbihkYXR1bSwg cGlkLCBuZXVlcldlcnQpIHsKICAgIHZhciBuZXVlclR5cCA9IHNjaGljaHRUeXAobmV1ZXJXZXJ0 KTsKICAgIGlmICghbmV1ZXJUeXApIHJldHVybiBudWxsOwogICAgdmFyIG5ldWVaZWl0ID0gc2No aWNodFplaXRlbltuZXVlclR5cF07CiAgICB2YXIgd2FybnVuZ2VuID0gW107CgogICAgLy8gVm9y dGFnIHByw7xmZW46IEVuZGUgVm9ydGFnIOKGkiBTdGFydCBuZXVlciBTY2hpY2h0CiAgICAvLyBV WC1BdWRpdCBTcHJpbnQgMi43ICgyMDI2LTA1LTI5KTogV2FybnVuZyBlbnRoYWVsdCBqZXR6dCBk aWUga29ua3JldGVuCiAgICAvLyBVaHJ6ZWl0ZW4gKEVuZHplaXQgVm9ydGFnICsgU3RhcnR6ZWl0 IGFrdHVlbGxlIFNjaGljaHQpLCBkYW1pdCBkZXIgVXNlcgogICAgLy8gZGlyZWt0IHZlcnN0ZWh0 IFdPIGRhcyBEZWZpeml0IGxpZWd0IOKAlCBuaWNodCBudXIgZGllIFN0dW5kZW4tWmFobC4KICAg IHZhciB2b3J0YWcgPSBuYWNoYmFyRGF0dW0oZGF0dW0sIC0xKTsKICAgIHZhciB2b3JXZXJ0ID0g KChaLnBsYW51bmcuZWludHJhZWdlIHx8IHt9KVt2b3J0YWddIHx8IHt9KVtwaWRdIHx8ICcnOwog ICAgdmFyIHZvclR5cCA9IHNjaGljaHRUeXAodm9yV2VydCk7CiAgICBpZiAodm9yVHlwKSB7CiAg ICAgICAgdmFyIHZvclplaXQgPSBzY2hpY2h0WmVpdGVuW3ZvclR5cF07CiAgICAgICAgdmFyIHJ1 aGUgPSAobmV1ZVplaXQuc3RhcnQgKyAyNCkgLSB2b3JaZWl0LmVuZGU7CiAgICAgICAgaWYgKHJ1 aGUgPCAxMSkgewogICAgICAgICAgICB3YXJudW5nZW4ucHVzaCgnTnVyICcgKyBydWhlICsgJ2gg UnVoZXplaXQ6ICcgKyB2b3JXZXJ0ICsgJyBlbmRldCAnICsgX2hobW0odm9yWmVpdC5lbmRlKSAr CiAgICAgICAgICAgICAgICAgICAgICAgICAgICcg4oaSIG5ldWUgU2NoaWNodCBzdGFydGV0ICcg KyBfaGhtbShuZXVlWmVpdC5zdGFydCkgKyAnIChtaW4uIDExaCknKTsKICAgICAgICB9CiAgICB9 CgogICAgLy8gRm9sZ2V0YWcgcHLDvGZlbjogRW5kZSBuZXVlIFNjaGljaHQg4oaSIFN0YXJ0IEZv bGdldGFnCiAgICB2YXIgZm9sZ2V0YWcgPSBuYWNoYmFyRGF0dW0oZGF0dW0sIDEpOwogICAgdmFy IGZvbGdlV2VydCA9ICgoWi5wbGFudW5nLmVpbnRyYWVnZSB8fCB7fSlbZm9sZ2V0YWddIHx8IHt9 KVtwaWRdIHx8ICcnOwogICAgdmFyIGZvbGdlVHlwID0gc2NoaWNodFR5cChmb2xnZVdlcnQpOwog ICAgaWYgKGZvbGdlVHlwKSB7CiAgICAgICAgdmFyIGZvbGdlWmVpdCA9IHNjaGljaHRaZWl0ZW5b Zm9sZ2VUeXBdOwogICAgICAgIHZhciBydWhlRm9sZ2UgPSAoZm9sZ2VaZWl0LnN0YXJ0ICsgMjQp IC0gbmV1ZVplaXQuZW5kZTsKICAgICAgICBpZiAocnVoZUZvbGdlIDwgMTEpIHsKICAgICAgICAg ICAgd2FybnVuZ2VuLnB1c2goJ051ciAnICsgcnVoZUZvbGdlICsgJ2ggUnVoZXplaXQ6IG5ldWUg U2NoaWNodCBlbmRldCAnICsgX2hobW0obmV1ZVplaXQuZW5kZSkgKwogICAgICAgICAgICAgICAg ICAgICAgICAgICAnIOKGkiAnICsgZm9sZ2VXZXJ0ICsgJyBhbSBGb2xnZXRhZyBzdGFydGV0ICcg KyBfaGhtbShmb2xnZVplaXQuc3RhcnQpICsgJyAobWluLiAxMWgpJyk7CiAgICAgICAgfQogICAg fQoKICAgIHJldHVybiB3YXJudW5nZW4ubGVuZ3RoID4gMCA/IHdhcm51bmdlbiA6IG51bGw7Cn0K CmV4cG9ydCBmdW5jdGlvbiBlZGl0b3JPZWZmbmVuKHplbGxlLCBzb25kZXJPaywgZnJlbWRPaykg ewogICAgdmFyIGRhdHVtID0gemVsbGUuZ2V0QXR0cmlidXRlKCdkYXRhLWRhdHVtJyk7CiAgICB2 YXIgcGlkID0gemVsbGUuZ2V0QXR0cmlidXRlKCdkYXRhLXBlcnNvbicpOwogICAgaWYgKCFkYXR1 bSB8fCAhcGlkKSByZXR1cm47CgogICAgLy8gU2Nob24gb2ZmZW4gZnVlciBnZW5hdSBkaWVzZSBa ZWxsZT8gTmljaHRzIHR1biAoRG9wcGVsLUFjcXVpcmUgdmVybWVpZGVuKS4KICAgIGlmIChlZGl0 b3IuYWt0aXYgJiYgZWRpdG9yLmRhdHVtID09PSBkYXR1bSAmJiBTdHJpbmcoZWRpdG9yLnBlcnNv bklkKSA9PT0gU3RyaW5nKHBpZCkpIHJldHVybjsKICAgIC8vIEVkaXRvciBmdWVyIGVpbmUgQU5E RVJFIFplbGxlIG9mZmVuPyBFcnN0IHNhdWJlciBzY2hsaWVzc2VuICsgYWx0ZW4gTG9jawogICAg Ly8gZnJlaWdlYmVuLCBCRVZPUiB3aXIgZGllIG5ldWUgWmVsbGUgc3BlcnJlbi4gU29uc3Qgd2ly ZCBaLnplbGxMb2NrLnRva2VuCiAgICAvLyB1ZWJlcnNjaHJpZWJlbiB1bmQgZGVyIGFsdGUgU2Vy dmVyLUxvY2sgYmxlaWJ0IGFscyBHZWlzdGVyLVNwZXJyZSBoYWVuZ2VuCiAgICAvLyAoZGVyIEhh dXB0Z3J1bmQgZnVlciAiU2FiaW5lIHNhaCA1IGdlc3BlcnJ0ZSBaZWxsZW4sIGRpZSBuaWUgZnJl aWdlZ2ViZW4KICAgIC8vIHd1cmRlbiIpLiBOdXIgYmVpIHNvbmRlck9rL2ZyZW1kT2stUmVrdXJz aW9uIGlzdCBkZXIgRWRpdG9yIG9obmVoaW4genUuCiAgICBpZiAoZWRpdG9yLmFrdGl2KSBlZGl0 b3JTY2hsaWVzc2VuKCk7CgogICAgLy8gVW1nZXNldHp0ZSBQZXJzb25lbiBzaW5kIG51ciB6dXIg UmVjaGVyY2hlIGVpbmdlYmxlbmRldCDigJQgbmljaHQgZWRpdGllcmVuCiAgICB2YXIgemVsbGVw ZXJzb24gPSAoWi5wbGFudW5nLnBlcnNvbmVuIHx8IFtdKS5maW5kKGZ1bmN0aW9uKHApIHsgcmV0 dXJuIFN0cmluZyhwLmlkKSA9PT0gU3RyaW5nKHBpZCk7IH0pOwogICAgaWYgKHplbGxlcGVyc29u ICYmICF6ZWxsZXBlcnNvbi5ha3RpdikgewogICAgICAgIHRvYXN0KCdVbWdlc2V0enRlIFBlcnNv biDigJQgbnVyIHp1ciBSZWNoZXJjaGUsIG5pY2h0IGVkaXRpZXJiYXInLCAnd2FybnVuZycpOwog ICAgICAgIHJldHVybjsKICAgIH0KCiAgICAvLyBSZWNodGUtUHJ1ZWZ1bmc6IGVpZ2VuZSBaZWls ZSArIGtvbmZpZ3VyaWVydGUgUmVjaHRlLCBTdXBlclVzZXIgaW1tZXIuCiAgICAvLyBHZXNwZXJy dGUgWmVsbGVuIHNpbmQgaW0gR3JpZCBzY2hvbiB2aXN1ZWxsIG1hcmtpZXJ0IChncmlkLXplbGxl LWdlc3BlcnJ0KS4KICAgIGlmICghZGFyZlplbGxlRWRpdGllcmVuKHBpZCkpIHsKICAgICAgICB0 b2FzdCgnS2VpbmUgQmVyZWNodGlndW5nLCBkaWVzZSBaZWxsZSB6dSBiZWFyYmVpdGVuJywgJ3dh cm51bmcnKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgLy8gU29uZGVydGVybWluLVdhcm5o aW53ZWlzIHZvciBQbGFudW5nCiAgICBpZiAoIXNvbmRlck9rICYmIGVkaXRvckhvb2tzLnNvbmRl ckZ1ZXJEYXR1bSAmJiBlZGl0b3JIb29rcy5zb25kZXJXYXJuTW9kYWxaZWlnZW4pIHsKICAgICAg ICB2YXIgc29uZGVyID0gZWRpdG9ySG9va3Muc29uZGVyRnVlckRhdHVtKGRhdHVtKTsKICAgICAg ICBpZiAoc29uZGVyICYmIChzb25kZXIud2Fybk1vZHVzIHx8ICdpbW1lcicpICE9PSAnYXVzJykg ewogICAgICAgICAgICB2YXIgd20gPSBzb25kZXIud2Fybk1vZHVzIHx8ICdpbW1lcic7CiAgICAg ICAgICAgIC8vIEVpbm1hbGlnOiBwcm8gVGVybWluLUlEIChaZWl0cmF1bS1UZXJtaW4gbmljaHQg amVkZW4gVGFnIGVybmV1dCB3YXJuZW4pCiAgICAgICAgICAgIHZhciBrZXkgPSAnc29uZGVyX3Nl ZW5fJyArIChzb25kZXIuaWQgfHwgc29uZGVyLmRhdHVtKSArICdfJyArIChaLmJlbnV0emVyIHx8 ICcnKTsKICAgICAgICAgICAgdmFyIGVpbm1hbEdlc2VoZW4gPSB3bSA9PT0gJ2Vpbm1hbGlnJyAm JiBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShrZXkpOwogICAgICAgICAgICBpZiAoIWVpbm1hbEdlc2Vo ZW4pIHsKICAgICAgICAgICAgICAgIGVkaXRvckhvb2tzLnNvbmRlcldhcm5Nb2RhbFplaWdlbihz b25kZXIsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIGlmICh3bSA9PT0gJ2Vpbm1h bGlnJykgbG9jYWxTdG9yYWdlLnNldEl0ZW0oa2V5LCAnMScpOwogICAgICAgICAgICAgICAgICAg IGVkaXRvck9lZmZuZW4oemVsbGUsIHRydWUsIGZyZW1kT2spOwogICAgICAgICAgICAgICAgfSk7 CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9Cgog ICAgLy8gV2FybnVuZyB3ZW5uIG1hbiBkaWUgU2NoaWNodCBlaW5lciBhbmRlcmVuIFBlcnNvbiDD pG5kZXJ0CiAgICBpZiAoIWZyZW1kT2sgJiYgZWRpdG9ySG9va3MuZmVhdHVyZUlzdEFrdGl2ICYm IGVkaXRvckhvb2tzLmZlYXR1cmVJc3RBa3RpdignZnJlbWRBZW5kZXJ1bmdXYXJudW5nJykgJiYg Wi5tZWluZVBlcnNvbklkICYmIHBpZCAhPT0gWi5tZWluZVBlcnNvbklkKSB7CiAgICAgICAgdmFy IHBlcnNvbiA9IFoucGVyc29uZW4uZmluZChmdW5jdGlvbihwKSB7IHJldHVybiBTdHJpbmcocC5p ZCkgPT09IHBpZDsgfSk7CiAgICAgICAgdmFyIGFuemVpZ2VOYW1lID0gcGVyc29uID8gKChwZXJz b24udm9ybmFtZSA/IHBlcnNvbi52b3JuYW1lICsgJyAnIDogJycpICsgcGVyc29uLm5hbWUpIDog J1BlcnNvbiAnICsgcGlkOwogICAgICAgIGJlc3RhZXRpZ2VuKCdEdSDDpG5kZXJzdCBnZXJhZGUg ZGllIFNjaGljaHQgdm9uICcgKyBhbnplaWdlTmFtZSArICcuXG5CaXN0IGR1IGRpciBzaWNoZXI/ JywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGVkaXRvck9lZmZuZW4oemVsbGUsIHRydWUsIHRy dWUpOwogICAgICAgIH0sIHsgdGl0ZWw6ICdGcmVtZC3DhG5kZXJ1bmcnLCBqYVRleHQ6ICdUcm90 emRlbSDDpG5kZXJuJyB9KTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgLy8gUGVzc2ltaXN0 aWMgTG9jayBhbmZvcmRlcm4sIGJldm9yIGRlciBFZGl0b3Igc2ljaHRiYXIgd2lyZC4KICAgIC8v IDIwMCAtPiBUb2tlbiBtZXJrZW4sIEhlYXJ0YmVhdCBzdGFydGVuLCB3ZWl0ZXIgdW50ZW4gb2Vm Zm5lbi4KICAgIC8vIDQyMyArIG5pY2h0LWthbm5Gb3JjZSAtPiBFZGl0b3IgYmxlaWJ0IHp1LCBU b2FzdC4KICAgIC8vIDQyMyArIGthbm5Gb3JjZSAtPiBCZXN0YWV0aWd1bmdzLU1vZGFsICJFZGl0 LUxvY2sgdWViZXJuZWhtZW4/Ii4KICAgIGxvY2taZWxsZUFjcXVpcmUoZGF0dW0sIHBpZCkudGhl bihmdW5jdGlvbihyZXMpIHsKICAgICAgICBpZiAocmVzLnN0YXR1cyA9PT0gMjAwICYmIHJlcy5i b2R5ICYmIHJlcy5ib2R5LnRva2VuKSB7CiAgICAgICAgICAgIFouemVsbExvY2sudG9rZW4gPSBy ZXMuYm9keS50b2tlbjsKICAgICAgICAgICAgWi56ZWxsTG9jay5kYXR1bSA9IGRhdHVtOwogICAg ICAgICAgICBaLnplbGxMb2NrLnBlcnNvbklkID0gcGlkOwogICAgICAgICAgICBsb2NrSGVhcnRi ZWF0U3RhcnRlbihyZXMuYm9keS50b2tlbik7CiAgICAgICAgICAgIGVkaXRvclZpc3VlbGxPZWZm bmVuKHplbGxlLCBkYXR1bSwgcGlkKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAg ICAgICBpZiAocmVzLnN0YXR1cyA9PT0gNDIzICYmIHJlcy5ib2R5KSB7CiAgICAgICAgICAgIHZh ciBiID0gcmVzLmJvZHk7CiAgICAgICAgICAgIGlmIChiLmthbm5Gb3JjZSkgewogICAgICAgICAg ICAgICAgYmVzdGFldGlnZW4oCiAgICAgICAgICAgICAgICAgICAgKGIuc3BlcnJlciB8fCAnSmVt YW5kJykgKyAnIGJlYXJiZWl0ZXQgZGllc2UgWmVsbGUgZ2VyYWRlLlxuRWRpdC1Mb2NrIHVlYmVy bmVobWVuPycsCiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAg ICAgICAgICAgIGxvY2taZWxsZUZvcmNlKGRhdHVtLCBwaWQpLnRoZW4oZnVuY3Rpb24ocjIpIHsK ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyMi5zdGF0dXMgPT09IDIwMCAmJiByMi5i b2R5ICYmIHIyLmJvZHkudG9rZW4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBa LnplbGxMb2NrLnRva2VuID0gcjIuYm9keS50b2tlbjsKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBaLnplbGxMb2NrLmRhdHVtID0gZGF0dW07CiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgWi56ZWxsTG9jay5wZXJzb25JZCA9IHBpZDsKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBsb2NrSGVhcnRiZWF0U3RhcnRlbihyMi5ib2R5LnRva2VuKTsKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBlZGl0b3JWaXN1ZWxsT2VmZm5lbih6ZWxsZSwgZGF0dW0s IHBpZCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHRvYXN0KCdGb3JjZS1Mb2NrIGZlaGxnZXNjaGxhZ2VuLicsICdm ZWhsZXInKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAg ICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICB7IHRp dGVsOiAnRWRpdC1Mb2NrIHVlYmVybmVobWVuJywgamFUZXh0OiAnw5xiZXJuZWhtZW4nIH0KICAg ICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICB0b2Fz dChiLm1lbGR1bmcgfHwgJ1dpcmQgZ2VyYWRlIGJlYXJiZWl0ZXQuJywgJ3dhcm51bmcnKTsKICAg ICAgICAgICAgfQogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIHRvYXN0KCdM b2NrLUFuZm9yZGVydW5nIGZlaGxnZXNjaGxhZ2VuLicsICdmZWhsZXInKTsKICAgIH0pOwp9Cgov LyBFaWdlbnRsaWNoZXMgdmlzdWVsbGVzIE9lZmZuZW4g4oCUIGdldHJlbm50IHZvbiBlZGl0b3JP ZWZmbmVuLCBkYW1pdCBkZXIKLy8gTG9jay1BY3F1aXJlLUZsb3cgb2JlbiBkZW4gcmVzdGxpY2hl biBDb2RlIGxhenkgYXVmcnVmZW4ga2Fubi4KZnVuY3Rpb24gZWRpdG9yVmlzdWVsbE9lZmZuZW4o emVsbGUsIGRhdHVtLCBwaWQpIHsKICAgIGVkaXRvci5ha3RpdiA9IHRydWU7IGVkaXRvci5kYXR1 bSA9IGRhdHVtOyBlZGl0b3IucGVyc29uSWQgPSBwaWQ7CgogICAgdmFyIGVsID0gZG9jdW1lbnQu Z2V0RWxlbWVudEJ5SWQoJ3plbGwtZWRpdG9yJyk7CiAgICB2YXIgc2VsID0gZG9jdW1lbnQuZ2V0 RWxlbWVudEJ5SWQoJ2VkaXRvci1hdXN3YWhsJyk7CiAgICAvLyBJc3QtV2VydCBhdXMgZGVtIFN0 YXRlIGxlc2VuLCBOSUNIVCBhdXMgemVsbGUudGl0bGU6IGRlciBUaXRlbCBrYW5uIGVpbgogICAg Ly8gQW56ZWlnZS1TdWZmaXggdHJhZ2VuICh6LkIuICIgW1ZFUkFOVFdPUlRMSUNIXSIgYmVpbSAx LiB2ZXJhbnR3b3J0bGljaGVuCiAgICAvLyBER0wpLCB3b2R1cmNoIGtlaW4gPG9wdGlvbj4gbWF0 Y2h0ZSB1bmQgZGFzIERyb3Bkb3duIGZhZWxzY2hsaWNoIGF1ZgogICAgLy8gIihsZWVyKSIgc3Rh bmQg4oCUIGdlbmF1IGJlaSBkZXIgaGFldWZpZ3N0ZW4gREdMLVplbGxlLgogICAgdmFyIGFrdFdl cnQgPSAoWi5wbGFudW5nICYmIFoucGxhbnVuZy5laW50cmFlZ2UgJiYgWi5wbGFudW5nLmVpbnRy YWVnZVtkYXR1bV0gJiYgWi5wbGFudW5nLmVpbnRyYWVnZVtkYXR1bV1bcGlkXSkgfHwgJyc7Cgog ICAgdmFyIGh0bWwgPSAnPG9wdGlvbiB2YWx1ZT0iIj4obGVlcik8L29wdGlvbj4nOwogICAgLy8g TnVyIGFrdGl2ZSBDb2RlcyB6dXIgTmV1LUVpbmdhYmUgYW5iaWV0ZW4uIERlciBha3R1ZWxsIGdl c2V0enRlIFdlcnQKICAgIC8vIHdpcmQgYXVjaCBkYW5uIGdlemVpZ3Qgd2VubiBzZWluIENvZGUg aW56d2lzY2hlbiBkZWFrdGl2aWVydCB3dXJkZQogICAgLy8gKHNvbnN0IGdpbmdlIGRpZSBJbmZv IGluIGRlciBaZWxsZSB2ZXJsb3JlbikuCiAgICAoWi5hZG1pbi5zY2hpY2h0Y29kZXMgfHwgW10p LmZvckVhY2goZnVuY3Rpb24oc2MpIHsKICAgICAgICB2YXIgYWt0aXYgPSAhZWRpdG9ySG9va3Mu aXN0Q29kZUFrdGl2IHx8IGVkaXRvckhvb2tzLmlzdENvZGVBa3RpdihzYyk7CiAgICAgICAgaWYg KCFha3RpdiAmJiBzYy5jb2RlICE9PSBha3RXZXJ0KSByZXR1cm47CiAgICAgICAgdmFyIHMgPSBh a3RXZXJ0ID09PSBzYy5jb2RlID8gJyBzZWxlY3RlZCcgOiAnJzsKICAgICAgICB2YXIgc3VmZml4 ID0gIWFrdGl2ID8gJyAoaW5ha3RpdiknIDogJyc7CiAgICAgICAgaHRtbCArPSAnPG9wdGlvbiB2 YWx1ZT0iJyArIGVzY2FwZUF0dHIoc2MuY29kZSkgKyAnIicgKyBzICsgJz4nICsgZXNjYXBlSFRN TChzYy5jb2RlKSArICcg4oCUICcgKyBlc2NhcGVIVE1MKHNjLmJlemVpY2hudW5nKSArIHN1ZmZp eCArICc8L29wdGlvbj4nOwogICAgfSk7CiAgICBzZWwuaW5uZXJIVE1MID0gaHRtbDsKCiAgICAv LyBLb21tZW50YXItVmVybGF1ZiByZW5kZXJuLCBFaW5nYWJlZmVsZCBpbW1lciBsZWVyIChqZWRl IEVpbmdhYmUgaGFlbmd0CiAgICAvLyBlaW5lbiBuZXVlbiBLb21tZW50YXIgYW4gZGllIExpc3Rl IGFuIHN0YXR0IHp1IHVlYmVyc2NocmVpYmVuKS4KICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk KCdlZGl0b3Ita29tbWVudGFyLWlucHV0JykudmFsdWUgPSAnJzsKICAgIGVkaXRvcktvbW1lbnRh clZlcmxhdWZSZW5kZXJuKCk7CgogICAgLy8gRXhjZWwtYWVobmxpY2ggZGlyZWt0IFJFQ0hUUyBu ZWJlbiBkZXIgWmVsbGUsIG9iZW4gYnVlbmRpZy4gI3plbGwtZWRpdG9yCiAgICAvLyBpc3QgcG9z aXRpb246Zml4ZWQgLT4gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCktVmlld3BvcnQtS29vcmRpbmF0 ZW4gcGFzc2VuCiAgICAvLyAxOjEgKGZydWVoZXIgcG9zaXRpb246YWJzb2x1dGUgLT4gZGVyIE9m ZnNldC1QYXJlbnQgdW50ZXIgZGVyIEtvcGZsZWlzdGUKICAgIC8vIHNjaG9iIGRlbiBFZGl0b3Ig fjIgWmVsbGVuIHp1IHRpZWYpLiBHcm9iZSBFZGl0b3ItTWFzc2UgZnVlciBkYXMKICAgIC8vIFZp ZXdwb3J0LUNsYW1waW5nOyB3ZW5uIHJlY2h0cyBrZWluIFBsYXR6IGlzdCwgbmFjaCBsaW5rcyBr bGFwcGVuLgogICAgdmFyIEVXID0gMjUwLCBFSCA9IDMyMDsKICAgIHZhciByZWN0ID0gemVsbGUu Z2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CiAgICB2YXIgbGVmdCA9IHJlY3QucmlnaHQgKyAyOwog ICAgaWYgKGxlZnQgKyBFVyA+IHdpbmRvdy5pbm5lcldpZHRoIC0gNCkgbGVmdCA9IE1hdGgubWF4 KDQsIHJlY3QubGVmdCAtIEVXIC0gMik7CiAgICB2YXIgdG9wID0gcmVjdC50b3A7CiAgICBpZiAo dG9wICsgRUggPiB3aW5kb3cuaW5uZXJIZWlnaHQgLSA0KSB0b3AgPSBNYXRoLm1heCg0LCB3aW5k b3cuaW5uZXJIZWlnaHQgLSBFSCAtIDQpOwogICAgZWwuc3R5bGUubGVmdCA9IGxlZnQgKyAncHgn OwogICAgZWwuc3R5bGUudG9wID0gdG9wICsgJ3B4JzsKICAgIGVsLmNsYXNzTGlzdC5yZW1vdmUo J3ZlcnN0ZWNrdCcpOwogICAgc2VsLmZvY3VzKCk7Cn0KCmV4cG9ydCBmdW5jdGlvbiBlZGl0b3JT Y2hsaWVzc2VuKG9obmVSZWxlYXNlKSB7CiAgICBlZGl0b3IuYWt0aXYgPSBmYWxzZTsKICAgIGRv Y3VtZW50LmdldEVsZW1lbnRCeUlkKCd6ZWxsLWVkaXRvcicpLmNsYXNzTGlzdC5hZGQoJ3ZlcnN0 ZWNrdCcpOwogICAgbG9ja0hlYXJ0YmVhdFN0b3BwZW4oKTsKICAgIC8vIG9obmVSZWxlYXNlPXRy dWUgd2VubiBkZXIgU2VydmVyIHVucyBtaXRnZXRlaWx0IGhhdCwgZGFzcyB1bnNlciBMb2NrCiAg ICAvLyBzY2hvbiB3ZWcgaXN0ICh6LkIuIEZhY2hhdWZzaWNodCBoYXQgcGVyIEZvcmNlIHVlYmVy bm9tbWVuKS4KICAgIGlmICghb2huZVJlbGVhc2UgJiYgWi56ZWxsTG9jayAmJiBaLnplbGxMb2Nr LnRva2VuKSB7CiAgICAgICAgbG9ja1plbGxlUmVsZWFzZShaLnplbGxMb2NrLnRva2VuKTsKICAg IH0KICAgIFouemVsbExvY2sudG9rZW4gPSBudWxsOwogICAgWi56ZWxsTG9jay5kYXR1bSA9ICcn OwogICAgWi56ZWxsTG9jay5wZXJzb25JZCA9ICcnOwp9CgpleHBvcnQgZnVuY3Rpb24gZWRpdG9y QXVzd2FobCh3ZXJ0KSB7CiAgICBpZiAoIWVkaXRvci5ha3RpdikgcmV0dXJuOwogICAgdmFyIGRh dHVtID0gZWRpdG9yLmRhdHVtLCBwaWQgPSBlZGl0b3IucGVyc29uSWQ7CiAgICAvLyBRdWl0dGll cnRlIEZ1ZWhydW5nc2tyYWZ0LVVudGVyYmVzZXR6dW5nIHdpcmQgYmVpbSBTcGVpY2hlcm4gc2Vy dmVyc2VpdGlnIG1pdHByb3Rva29sbGllcnQKICAgIHZhciB1bnRlcmJlc2V0enVuZ1NjaGljaHQg PSBudWxsOwoKICAgIGZ1bmN0aW9uIGZvcnRzZXR6ZW4oKSB7CiAgICAgICAgZWRpdG9yU2NobGll c3NlbigpOwoKICAgICAgICBpZiAoIVoucGxhbnVuZy5laW50cmFlZ2UpIFoucGxhbnVuZy5laW50 cmFlZ2UgPSB7fTsKICAgICAgICBpZiAoIVoucGxhbnVuZy5laW50cmFlZ2VbZGF0dW1dKSBaLnBs YW51bmcuZWludHJhZWdlW2RhdHVtXSA9IHt9OwogICAgICAgIC8vIFdlcnQgbWVya2VuIGRlbiBk ZXIgQ2xpZW50IGFscyAiYWx0IiBhbm5pbW10IOKAlCBmdWVyIE9wdGltaXN0aWMtQ29uY3VycmVu Y3kKICAgICAgICB2YXIgZXJ3YXJ0ZXQgPSBaLnBsYW51bmcuZWludHJhZWdlW2RhdHVtXVtwaWRd IHx8ICcnOwoKICAgICAgICAvLyBTbmFwc2hvdCBkZXIgYWt0aXZlbiBGdWVocnVuZyAoVG9wLTIg REdMcykgcHJvIGJldHJvZmZlbmVyIFNjaGljaHQKICAgICAgICAvLyBWT1IgZGVyIG9wdGltaXN0 aXNjaGVuIFVlYmVyc2NocmVpYnVuZy4gTmFjaCBlcmZvbGdyZWljaGVtIFNwZWljaGVybgogICAg ICAgIC8vIHZlcmdsZWljaGVuIHdpciwgd2VyIG5ldSBpbiBkaWUgVG9wLTIgYXVmcnVlY2t0IOKA lCBwcm8gQXVmcnVlY2tlcgogICAgICAgIC8vIGdyZWlmdCBkZXIgVmVyYW50d29ydHVuZ3MtVWVi ZXJnYW5nLURpYWxvZyAoMTQtVGFnZS1GZW5zdGVyKS4KICAgICAgICB2YXIgc0FsdCA9IGZ1ZWhy dW5nc1NjaGljaHQoZXJ3YXJ0ZXQpOwogICAgICAgIHZhciBzTmV1ID0gZnVlaHJ1bmdzU2NoaWNo dCh3ZXJ0KTsKICAgICAgICB2YXIgZnVlaHJ1bmdWb3JoZXIgPSB7fTsKICAgICAgICBpZiAoc0Fs dCkgICAgICAgICAgICAgICAgICBmdWVocnVuZ1ZvcmhlcltzQWx0XSA9IGFrdGl2ZUZ1ZWhydW5n KGRhdHVtLCBzQWx0KTsKICAgICAgICBpZiAoc05ldSAmJiBzTmV1ICE9PSBzQWx0KSBmdWVocnVu Z1ZvcmhlcltzTmV1XSA9IGFrdGl2ZUZ1ZWhydW5nKGRhdHVtLCBzTmV1KTsKCiAgICAgICAgaWYg KHdlcnQpIFoucGxhbnVuZy5laW50cmFlZ2VbZGF0dW1dW3BpZF0gPSB3ZXJ0OwogICAgICAgIGVs c2UgZGVsZXRlIFoucGxhbnVuZy5laW50cmFlZ2VbZGF0dW1dW3BpZF07CgogICAgICAgIHplbGxl VmlzdWVsbEFrdHVhbGlzaWVyZW4oZGF0dW0sIHBpZCwgd2VydCk7CgogICAgICAgIC8vIE9wdGlt aXN0aXNjaCBzb2ZvcnQgZGVuIEZ1ZWxsLUdyaWZmIGFuemVpZ2VuIOKAlCBuaWNodCBlcnN0IG5h Y2gKICAgICAgICAvLyBTZXJ2ZXItQW50d29ydC4gQXVmIGxhbmdzYW1lbiBOZXR6d2Vyay1TaGFy ZXMgc3BhcnQgZGFzIHNwdWVyYmFyCiAgICAgICAgLy8gd2Focmdlbm9tbWVuZSBMYXRlbnouIEJl aSBTZXJ2ZXItRmVobGVyL0tvbmZsaWt0IGJsZW5kZW4gd2lyIGRlbgogICAgICAgIC8vIEdyaWZm IGluIGRlbiBqZXdlaWxpZ2VuIFp3ZWlnIHdpZWRlciBhdXMgKHNpZWhlIHVudGVuKS4KICAgICAg ICBmdWVsbEhhbmRsZVplaWdlbih7IGRhdHVtOiBkYXR1bSwgcGlkOiBwaWQsIHdlcnQ6IHdlcnQg fSk7CgogICAgICAgIC8vIFZPUlpJRUhFTiB2b3IgZGFzIGZldGNoOiBWZXJhbnR3b3J0dW5ncy1V ZWJlcmdhbmctTW9kYWwgc29mb3J0CiAgICAgICAgLy8gemVpZ2VuLCBzb2JhbGQgZGllIG9wdGlt aXN0aXNjaGUgQWVuZGVydW5nIGluIFoucGxhbnVuZy5laW50cmFlZ2UKICAgICAgICAvLyBzdGVo dC4gQXVmIGRlbSBCZWhvZXJkZW4tUEMgKGk1LTg1MDAsIE9mZmljZSBpbSBIaW50ZXJncnVuZCkK ICAgICAgICAvLyBzaW5kIGRpZSAxMDAtNTAwIG1zIFNlcnZlci1Sb3VuZHRyaXAgZGVyIGdyb2Vz c3RlIHZlcmJsZWliZW5kZQogICAgICAgIC8vIExhZy1GYWt0b3Ig4oCUIGRlciBVc2VyIHNvbGwg ZGllIEtvbnNlcXVlbnogc2VpbmVyIEFrdGlvbiBkaXJla3QKICAgICAgICAvLyBzZWhlbiwgbmlj aHQgZXJzdCBuYWNoIGRlbSBOZXR6d2Vyay1Ib3AuIEJlaSA0MDkvRXJyb3Igcm9sbGVuCiAgICAg ICAgLy8gd2lyIGRlbiBNb2RhbCB1bnRlbiB6dXNhbW1lbiBtaXQgZGVyIEFlbmRlcnVuZyB6dXJ1 ZWNrLgogICAgICAgIHZhciBvcHRpbWlzdGlzY2hlck1vZGFsR2V6ZWlndCA9IGZhbHNlOwogICAg ICAgIC8vICJFaW5nZXNwcnVuZ2VuIi1TdGF0aXN0aWstRXZlbnRzIHdlcmRlbiBoaWVyIG51ciBH RVNBTU1FTFQgdW5kIGVyc3QKICAgICAgICAvLyBpbSBFcmZvbGdzLVp3ZWlnIGRlcyBaZWxsLVBl cnNpc3RzIGFiZ2VzZXR6dC4gRnJ1ZWhlciBmZXVlcnRlbiBzaWUKICAgICAgICAvLyBWT1IgZGVt IGZldGNoIOKAlCBiZWkgZWluZW0gNDA5IChLb25mbGlrdC9VbnRlcmJlc2V0enVuZykgd3VyZGUg ZGllCiAgICAgICAgLy8gWmVsbGUgenVydWVja2dlcm9sbHQsIGRhcyBMb2didWNoLUV2ZW50ICJh dWZnZXJ1ZWNrdCIgYmxpZWIgYWJlcgogICAgICAgIC8vIHN0ZWhlbiB1bmQgZGllIFN0YXRpc3Rp ayB6YWVobHRlIGVpbmVuIEVpbnNwcmluZ2VyLCBkZW4gZXMgbmllIGdhYi4KICAgICAgICB2YXIg YXVmcnVlY2tlckV2ZW50cyA9IFtdOwogICAgICAgIC8vIFZlcmFudHdvcnR1bmdzLUJlbmFjaHJp Y2h0aWd1bmdlbiB3ZXJkZW4genUgRUlORVIgU2FtbWVsLU1haWwKICAgICAgICAvLyBnZWJ1ZW5k ZWx0OiBlaW4gRGlhbG9nLCBlaW5lIE1haWwgYW4gQUxMRSBCZXRyb2ZmZW5lbiAoQXVmcnVlY2tl cgogICAgICAgIC8vIGF1c3NlciBTZWxic3RwbGFuZXIgKyBWZXJkcmFlbmd0ZSkuIEZydWVoZXI6 IHBybyBQZXJzb24gZWluIGVpZ2VuZXIKICAgICAgICAvLyBEaWFsb2cgKyBlaW5lIGVpZ2VuZSBN YWlsIC0+IHp1IHZpZWxlIFNjaHJpdHRlLCBkZXIgVXNlciBzdGllZyBhdXMuCiAgICAgICAgdmFy IHdlY2hzZWwgPSB7IGRhdHVtOiBkYXR1bSwgcHJpbWFlclNjaGljaHQ6IG51bGwsIGVpbnRyYWVn ZTogW10sIGVtcGZhZW5nZXI6IFtdLCBjY1BhcnRuZXJFbWFpbHM6IFtdIH07CiAgICAgICAgdmFy IGVtcGZTZWVuID0ge307CiAgICAgICAgZnVuY3Rpb24gd2VjaHNlbEVtcGZhZW5nZXIocGVyc29u KSB7CiAgICAgICAgICAgIGlmICghcGVyc29uKSByZXR1cm47CiAgICAgICAgICAgIHZhciBtID0g KHBlcnNvbi5lbWFpbCB8fCAnJykudG9Mb3dlckNhc2UoKTsKICAgICAgICAgICAgLy8gT2huZSBF LU1haWwtQWRyZXNzZSBrZWluIEFuLUVtcGZhZW5nZXIgKGltIEJsb2NrIGVyc2NoZWludCBkaWUK ICAgICAgICAgICAgLy8gUGVyc29uIHRyb3R6ZGVtLCBudXIgYWxzIEtvbnRleHQgZnVlciBkaWUg YW5kZXJlbikuCiAgICAgICAgICAgIGlmICghbSB8fCBlbXBmU2VlblttXSkgcmV0dXJuOwogICAg ICAgICAgICBlbXBmU2VlblttXSA9IHRydWU7CiAgICAgICAgICAgIHdlY2hzZWwuZW1wZmFlbmdl ci5wdXNoKHsgZW1haWw6IHBlcnNvbi5lbWFpbCwgcGVyc29uOiBwZXJzb24gfSk7CiAgICAgICAg fQogICAgICAgIGlmIChkYXR1bUluVmVyYmluZGxpY2hrZWl0KGRhdHVtKSkgewogICAgICAgICAg ICBPYmplY3Qua2V5cyhmdWVocnVuZ1ZvcmhlcikuZm9yRWFjaChmdW5jdGlvbihzKSB7CiAgICAg ICAgICAgICAgICB2YXIgdm9yaGVyICA9IGZ1ZWhydW5nVm9yaGVyW3NdOwogICAgICAgICAgICAg ICAgdmFyIG5hY2hoZXIgPSBha3RpdmVGdWVocnVuZyhkYXR1bSwgcyk7CiAgICAgICAgICAgICAg ICB2YXIgdm9yaGVySWRzICA9IHZvcmhlci5tYXAoZnVuY3Rpb24ocCkgeyByZXR1cm4gcC5pZDsg fSk7CiAgICAgICAgICAgICAgICB2YXIgbmFjaGhlcklkcyA9IG5hY2hoZXIubWFwKGZ1bmN0aW9u KHApIHsgcmV0dXJuIHAuaWQ7IH0pOwogICAgICAgICAgICAgICAgdmFyIGF1ZnJ1ZWNrZXIgPSBu YWNoaGVyLmZpbHRlcihmdW5jdGlvbihwKSB7IHJldHVybiB2b3JoZXJJZHMuaW5kZXhPZihwLmlk KSA8IDA7IH0pOwogICAgICAgICAgICAgICAgdmFyIGF1c2dlc2NoaWVkZW4gPSB2b3JoZXIuZmls dGVyKGZ1bmN0aW9uKHApIHsgcmV0dXJuIG5hY2hoZXJJZHMuaW5kZXhPZihwLmlkKSA8IDA7IH0p OwogICAgICAgICAgICAgICAgaWYgKChhdWZydWVja2VyLmxlbmd0aCB8fCBhdXNnZXNjaGllZGVu Lmxlbmd0aCkgJiYgIXdlY2hzZWwucHJpbWFlclNjaGljaHQpIHdlY2hzZWwucHJpbWFlclNjaGlj aHQgPSBzOwogICAgICAgICAgICAgICAgYXVmcnVlY2tlci5mb3JFYWNoKGZ1bmN0aW9uKG5ldWVy KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHN0dWZlID0gKG5hY2hoZXJbMF0gJiYgbmFjaGhl clswXS5pZCA9PT0gbmV1ZXIuaWQpID8gMSA6IDI7CiAgICAgICAgICAgICAgICAgICAgdmFyIHBh cnRuZXIgPSBuYWNoaGVyLmZpbmQoZnVuY3Rpb24ocCkgeyByZXR1cm4gcC5pZCAhPT0gbmV1ZXIu aWQ7IH0pIHx8IG51bGw7CiAgICAgICAgICAgICAgICAgICAgdmFyIGFsdGVyICAgPSBhdXNnZXNj aGllZGVuWzBdIHx8IG51bGw7CiAgICAgICAgICAgICAgICAgICAgLy8gQXVmcnVlY2stQmV3ZWd1 bmcgc3RlaHQgSU1NRVIgaW0gQmxvY2sgKGF1Y2ggYmVpIFNlbGJzdC0KICAgICAgICAgICAgICAg ICAgICAvLyBwbGFudW5nKSDigJQgZGFtaXQgUGFydG5lci9WZXJkcmFlbmd0ZSBzZWhlbiwgd2Vy IHVlYmVybmltbXQuCiAgICAgICAgICAgICAgICAgICAgd2VjaHNlbC5laW50cmFlZ2UucHVzaCh7 IGFydDogJ2F1ZicsIHNjaGljaHRMZXR0ZXI6IHMsIHBlcnNvbjogbmV1ZXIsIHN0dWZlOiBzdHVm ZSwgZ2VnZW46IGFsdGVyIH0pOwogICAgICAgICAgICAgICAgICAgIC8vIFNlbGJzdHBsYW51bmc6 IHBsYW50IHNpY2ggZGVyIGVpbmdlbG9nZ3RlIE51dHplciBTRUxCU1QgaW4KICAgICAgICAgICAg ICAgICAgICAvLyBkaWUgVmVyYW50d29ydHVuZywgYmVrb21tdCBlciBLRUlORSBNYWlsIGFuIHNp Y2ggc2VsYnN0IOKAlAogICAgICAgICAgICAgICAgICAgIC8vIGVyIGhhdCBlcyBqYSBnZXJhZGUg Z2V0YW4uIFZlcmRyYWVuZ3RlIHdlcmRlbiAodW50ZW4pIGltbWVyCiAgICAgICAgICAgICAgICAg ICAgLy8gaW5mb3JtaWVydC4KICAgICAgICAgICAgICAgICAgICB2YXIgc2VsYnN0Z2VwbGFudCA9 IChaLm1laW5lUGVyc29uSWQgIT0gbnVsbCAmJiBTdHJpbmcobmV1ZXIuaWQpID09PSBTdHJpbmco Wi5tZWluZVBlcnNvbklkKSk7CiAgICAgICAgICAgICAgICAgICAgaWYgKCFzZWxic3RnZXBsYW50 KSB3ZWNoc2VsRW1wZmFlbmdlcihuZXVlcik7CiAgICAgICAgICAgICAgICAgICAgaWYgKHBhcnRu ZXIgJiYgcGFydG5lci5lbWFpbCAmJiB3ZWNoc2VsLmNjUGFydG5lckVtYWlscy5pbmRleE9mKHBh cnRuZXIuZW1haWwpIDwgMCkgewogICAgICAgICAgICAgICAgICAgICAgICB3ZWNoc2VsLmNjUGFy dG5lckVtYWlscy5wdXNoKHBhcnRuZXIuZW1haWwpOwogICAgICAgICAgICAgICAgICAgIH0KICAg ICAgICAgICAgICAgICAgICAvLyBTdGF0aXN0aWstQ2FwdHVyZSAoU2NoaWNodHZlcnRlaWx1bmcg LT4gIkVpbmdlc3BydW5nZW4iKToKICAgICAgICAgICAgICAgICAgICAvLyBKZWRlciBBdWZydWVj a2VyIGluIGRlciBWZXJiaW5kbGljaGtlaXQgaXN0IGVpbiAiRWluLQogICAgICAgICAgICAgICAg ICAgIC8vIHNwcmluZ2VyIi4gUGVyc2lzdGllcmVuIHdpciBhc3luY2hyb24gaW0gTG9nYnVjaCwg ZGFtaXQKICAgICAgICAgICAgICAgICAgICAvLyBkZXIgU2VydmVyLUFnZ3JlZ2F0IGRpZSBaYWhs IHBybyBQZXJzb24gemFlaGxlbiBrYW5uLgogICAgICAgICAgICAgICAgICAgIHZhciB2b3JXZXJ0 ID0gKG5ldWVyLmlkID09PSBwaWQpID8gZXJ3YXJ0ZXQgOiAoCiAgICAgICAgICAgICAgICAgICAg ICAgICgoWi5wbGFudW5nLmVpbnRyYWVnZSB8fCB7fSlbZGF0dW1dIHx8IHt9KVtTdHJpbmcobmV1 ZXIuaWQpXSB8fCAnJwogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAg YXVmcnVlY2tlckV2ZW50cy5wdXNoKHsKICAgICAgICAgICAgICAgICAgICAgICAgcGVyc29uSWQ6 IG5ldWVyLmlkLAogICAgICAgICAgICAgICAgICAgICAgICBkYXR1bTogZGF0dW0sCiAgICAgICAg ICAgICAgICAgICAgICAgIHNjaGljaHQ6IHMsCiAgICAgICAgICAgICAgICAgICAgICAgIHN0dWZl OiBzdHVmZSwKICAgICAgICAgICAgICAgICAgICAgICAgdm9yaGVyV2VydDogdm9yV2VydCwKICAg ICAgICAgICAgICAgICAgICAgICAgYXVzbG9lc2VyUGVyc29uSWQ6IHBpZAogICAgICAgICAgICAg ICAgICAgIH0pOwogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAvLyBWZXJkcmFl bmd0ZSAoYXVzIGRlciBUb3AtMiBnZWZhbGxlbikgd2VyZGVuIGZsZXhpYmxlciAtPiBpbW1lcgog ICAgICAgICAgICAgICAgLy8gbWl0IGluIGRpZSBTYW1tZWwtTWFpbC4gbmFjaGZvbGdlciA9IHdl ciBkaWUgVmVyYW50d29ydHVuZwogICAgICAgICAgICAgICAgLy8gdWViZXJub21tZW4gaGF0IChB dWZydWVja2VyLCBzb25zdCBuZXVlIE5yLiAxKS4KICAgICAgICAgICAgICAgIGF1c2dlc2NoaWVk ZW4uZm9yRWFjaChmdW5jdGlvbih3ZWcpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgc3R1ZmVX ZWcgPSAodm9yaGVyWzBdICYmIHZvcmhlclswXS5pZCA9PT0gd2VnLmlkKSA/IDEgOiAyOwogICAg ICAgICAgICAgICAgICAgIHZhciBuYWNoZm9sZ2VyID0gYXVmcnVlY2tlclswXSB8fCBuYWNoaGVy WzBdIHx8IG51bGw7CiAgICAgICAgICAgICAgICAgICAgd2VjaHNlbC5laW50cmFlZ2UucHVzaCh7 IGFydDogJ2ZyZWknLCBzY2hpY2h0TGV0dGVyOiBzLCBwZXJzb246IHdlZywgc3R1ZmU6IHN0dWZl V2VnLCBnZWdlbjogbmFjaGZvbGdlciB9KTsKICAgICAgICAgICAgICAgICAgICB3ZWNoc2VsRW1w ZmFlbmdlcih3ZWcpOwogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIH0pOwogICAgICAg IH0KICAgICAgICBpZiAoIXdlY2hzZWwucHJpbWFlclNjaGljaHQpIHdlY2hzZWwucHJpbWFlclNj aGljaHQgPSAnRic7CiAgICAgICAgb3B0aW1pc3Rpc2NoZXJNb2RhbEdlemVpZ3QgPSB3ZWNoc2Vs LmVtcGZhZW5nZXIubGVuZ3RoID4gMDsKICAgICAgICBpZiAob3B0aW1pc3Rpc2NoZXJNb2RhbEdl emVpZ3QpIHZlcmFudHdvcnR1bmdzV2VjaHNlbERpYWxvZ1plaWdlbih3ZWNoc2VsKTsKCiAgICAg ICAgLy8gTmljaHQgYXBpUG9zdCBiZW51dHplbiDigJQgd2lyIG11ZXNzZW4gNDA5IHNlcGFyYXQg YmVoYW5kZWxuCiAgICAgICAgZmV0Y2goJy9hcGkvcGxhbnVuZy96ZWxsZScsIHsKICAgICAgICAg ICAgbWV0aG9kOiAnUE9TVCcsCiAgICAgICAgICAgIGhlYWRlcnM6IHsgJ0NvbnRlbnQtVHlwZSc6 ICdhcHBsaWNhdGlvbi9qc29uJyB9LAogICAgICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7 CiAgICAgICAgICAgICAgICBkYXR1bTogZGF0dW0sIHBlcnNvbklkOiBwaWQsIHdlcnQ6IHdlcnQs IGVyd2FydGV0ZXJBbHRlcldlcnQ6IGVyd2FydGV0LAogICAgICAgICAgICAgICAgdW50ZXJiZXNl dHp1bmdTY2hpY2h0OiB1bnRlcmJlc2V0enVuZ1NjaGljaHQKICAgICAgICAgICAgfSkKICAgICAg ICB9KS50aGVuKGZ1bmN0aW9uKHIpIHsKICAgICAgICAgICAgcmV0dXJuIHIuanNvbigpLnRoZW4o ZnVuY3Rpb24oYm9keSkgeyByZXR1cm4geyBzdGF0dXM6IHIuc3RhdHVzLCBib2R5OiBib2R5IH07 IH0pOwogICAgICAgIH0pLnRoZW4oZnVuY3Rpb24ocmVzKSB7CiAgICAgICAgICAgIGlmIChyZXMu c3RhdHVzID09PSA0MDkgJiYgcmVzLmJvZHkgJiYgcmVzLmJvZHkua29uZmxpa3RUeXAgPT09ICd1 bnRlcmJlc2V0enVuZycpIHsKICAgICAgICAgICAgICAgIC8vIFNlcnZlciBoYXQgZWluZSBGdWVo cnVuZ3MtVW50ZXJiZXNldHp1bmcgYW5oYW5kIGRlcyBBS1RVRUxMRU4KICAgICAgICAgICAgICAg IC8vIHBsYW51bmcuanNvbi1TdGFuZHMgZXJrYW5udCwgb2J3b2hsIGRlciBDbGllbnQgc2llIG5p Y2h0IGdld2FybnQKICAgICAgICAgICAgICAgIC8vIGhhdCAodHlwaXNjaDogZWluIGFuZGVyZXIg VXNlciBoYXQgemVpdGdsZWljaCBnZXNwZWljaGVydCkuCiAgICAgICAgICAgICAgICAvLyBMb2th bGUgQWVuZGVydW5nIHp1cnVlY2tyb2xsZW4gdW5kIEJlc3RhZXRpZ3VuZ3MtRGlhbG9nIHplaWdl bi4KICAgICAgICAgICAgICAgIHZhciBzTGV0dGVyID0gcmVzLmJvZHkuc2NoaWNodDsKICAgICAg ICAgICAgICAgIHZhciBzTmFtZSA9IHsgRjogJ0Zyw7xoc2NoaWNodCcsIFM6ICdTcMOkdHNjaGlj aHQnLCBOOiAnTmFjaHRzY2hpY2h0JyB9W3NMZXR0ZXJdIHx8IHNMZXR0ZXI7CiAgICAgICAgICAg ICAgICB2YXIgYWt0dWVsbENvdW50ID0gcmVzLmJvZHkuYWt0dWVsbENvdW50IHx8IDA7CiAgICAg ICAgICAgICAgICAvLyBMb2thbGUgb3B0aW1pc3Rpc2NoZSBBZW5kZXJ1bmcgcnVlY2tnYWVuZ2ln IOKAlCB3aXIgemVpZ2VuIHdpZWRlciBkZW4gQXVzZ2FuZ3N6dXN0YW5kCiAgICAgICAgICAgICAg ICBpZiAoZXJ3YXJ0ZXQpIFoucGxhbnVuZy5laW50cmFlZ2VbZGF0dW1dW3BpZF0gPSBlcndhcnRl dDsKICAgICAgICAgICAgICAgIGVsc2UgZGVsZXRlIFoucGxhbnVuZy5laW50cmFlZ2VbZGF0dW1d W3BpZF07CiAgICAgICAgICAgICAgICB6ZWxsZVZpc3VlbGxBa3R1YWxpc2llcmVuKGRhdHVtLCBw aWQsIGVyd2FydGV0KTsKICAgICAgICAgICAgICAgIGZ1ZWxsSGFuZGxlVmVyc3RlY2tlbigpOwog ICAgICAgICAgICAgICAgLy8gT3B0aW1pc3Rpc2NoIGdlemVpZ3RlbiBWZXJhbnR3b3J0dW5ncy1N b2RhbCBzY2hsaWVzc2VuLAogICAgICAgICAgICAgICAgLy8gYmV2b3Igd2lyIGRlbiBVbnRlcmJl c2V0enVuZ3MtQ29uZmlybS1EaWFsb2cgc3RhY2tlbgogICAgICAgICAgICAgICAgaWYgKG9wdGlt aXN0aXNjaGVyTW9kYWxHZXplaWd0KSB7IG1vZGFsU2NobGllc3Nlbih0cnVlKTsgfQogICAgICAg ICAgICAgICAgdmFyIHR4dCA9ICdMYXV0IGFrdHVlbGxlbSBTZXJ2ZXItU3RhbmQgc2luZCBudXIg bm9jaCAnICsgYWt0dWVsbENvdW50ICsKICAgICAgICAgICAgICAgICAgICAgICAgICAnIEbDvGhy dW5nc2tyw6RmdGUgZsO8ciBkaWUgJyArIHNOYW1lICsgJyBhbSAnICsgZGF0dW1Gb3JtYXRERShk YXR1bSkgKwogICAgICAgICAgICAgICAgICAgICAgICAgICcgZWluZ2VwbGFudCAoamVtYW5kIGFu ZGVyZXMgaGF0IHp3aXNjaGVuemVpdGxpY2ggZ2VzcGVpY2hlcnQpLlxuJyArCiAgICAgICAgICAg ICAgICAgICAgICAgICAgJ05hY2ggZGllc2VyIMOEbmRlcnVuZyBhdWYgIicgKyAod2VydCB8fCAn ZnJlaScpICsKICAgICAgICAgICAgICAgICAgICAgICAgICAnIiBibGVpYmVuIG51ciBub2NoICcg KyAoYWt0dWVsbENvdW50IC0gMSkgKyAnIOKAlCBNaW5kZXN0YmVzZXR6dW5nIHNpbmQgMi5cblxu JyArCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ1Ryb3R6ZGVtIHNwZWljaGVybj8nOwogICAg ICAgICAgICAgICAgYmVzdGFldGlnZW4odHh0LCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAg ICAgICB1bnRlcmJlc2V0enVuZ1NjaGljaHQgPSBzTGV0dGVyOwogICAgICAgICAgICAgICAgICAg IGZvcnRzZXR6ZW4oKTsgLy8gcmV0cnkgbWl0IGdlc2V0enRlbSBGbGFnIC0+IFNlcnZlciB1ZWJl cnNwcmluZ3QgZGVuIENoZWNrCiAgICAgICAgICAgICAgICB9LCB7IHRpdGVsOiAnVW50ZXJiZXNl dHp1bmcgYmVzdMOkdGlnZW4nLCBqYVRleHQ6ICdUcm90emRlbSBzcGVpY2hlcm4nIH0pOwogICAg ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChyZXMuc3Rh dHVzID09PSA0MDkpIHsKICAgICAgICAgICAgICAgIC8vIEtsYXNzaXNjaGVyIE9wdGltaXN0aWMt Q29uY3VycmVuY3ktS29uZmxpa3QKICAgICAgICAgICAgICAgIHZhciBha3R1ZWxsID0gcmVzLmJv ZHkuYWt0dWVsbGVyV2VydCB8fCAnJzsKICAgICAgICAgICAgICAgIGlmIChha3R1ZWxsKSBaLnBs YW51bmcuZWludHJhZWdlW2RhdHVtXVtwaWRdID0gYWt0dWVsbDsKICAgICAgICAgICAgICAgIGVs c2UgZGVsZXRlIFoucGxhbnVuZy5laW50cmFlZ2VbZGF0dW1dW3BpZF07CiAgICAgICAgICAgICAg ICB6ZWxsZVZpc3VlbGxBa3R1YWxpc2llcmVuKGRhdHVtLCBwaWQsIGFrdHVlbGwpOwogICAgICAg ICAgICAgICAgZnVlbGxIYW5kbGVWZXJzdGVja2VuKCk7CiAgICAgICAgICAgICAgICBpZiAob3B0 aW1pc3Rpc2NoZXJNb2RhbEdlemVpZ3QpIHsgbW9kYWxTY2hsaWVzc2VuKHRydWUpOyB9CiAgICAg ICAgICAgICAgICB0b2FzdCgnS29uZmxpa3Q6IERpZXNlIFplbGxlIHd1cmRlIGluendpc2NoZW4g dm9uIGplbWFuZCBhbmRlcmVtIGF1ZiAiJyArIChha3R1ZWxsIHx8ICdsZWVyJykgKyAnIiBnZXNl dHp0LiBEZWluZSDDhG5kZXJ1bmcgd3VyZGUgbmljaHQgw7xiZXJub21tZW4uJywgJ3dhcm51bmcn KTsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAo cmVzLnN0YXR1cyA+PSA0MDApIHsKICAgICAgICAgICAgICAgIGZ1ZWxsSGFuZGxlVmVyc3RlY2tl bigpOwogICAgICAgICAgICAgICAgaWYgKG9wdGltaXN0aXNjaGVyTW9kYWxHZXplaWd0KSB7IG1v ZGFsU2NobGllc3Nlbih0cnVlKTsgfQogICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKHJl cy5ib2R5LmZlaGxlciB8fCAoJ0hUVFAgJyArIHJlcy5zdGF0dXMpKTsKICAgICAgICAgICAgfQog ICAgICAgICAgICB0b2FzdCgnR2VzcGVpY2hlcnQnLCAnZXJmb2xnJyk7CiAgICAgICAgICAgIC8v IEZ1ZWxsLUdyaWZmIGJlcmVpdHMgb3B0aW1pc3Rpc2NoIGVpbmdlYmxlbmRldCDigJQgaGllciBu aWNodHMgbWVociB6dSB0dW4uCiAgICAgICAgICAgIC8vIFZlcmFudHdvcnR1bmdzLU1vZGFsIHd1 cmRlIGJlcmVpdHMgVk9SIGRlbSBmZXRjaCBvcHRpbWlzdGlzY2gKICAgICAgICAgICAgLy8gZ2V6 ZWlndCAoc2llaGUgb2Jlbikg4oCUIGtlaW4gUmUtWmVpZ2VuIGhpZXIgbm9ldGlnLgoKICAgICAg ICAgICAgLy8gSkVUWlQgKG5hY2ggZXJmb2xncmVpY2hlbSBQZXJzaXN0KSBkaWUgIkVpbmdlc3By dW5nZW4iLUV2ZW50cyBpbnMKICAgICAgICAgICAgLy8gTG9nYnVjaC9TdGF0aXN0aWsgc2NocmVp YmVuIOKAlCBuaWUgYmVpIDQwOS9GZWhsZXIgKGtlaW4gUGhhbnRvbSkuCiAgICAgICAgICAgIGF1 ZnJ1ZWNrZXJFdmVudHMuZm9yRWFjaChmdW5jdGlvbihldikgewogICAgICAgICAgICAgICAgYXBp UG9zdCgnL2FwaS92ZXJhbnR3b3J0dW5nL2F1ZmdlcnVlY2t0JywgZXYpLmNhdGNoKGZ1bmN0aW9u KCkgeyAvKiBzaWxlbnQgKi8gfSk7CiAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgLy8gRm9s Z2UtQWt0aW9uZW4gKFRvYXN0cywgS3JhbmttZWxkdW5ncy1UcmlnZ2VyLCBMaXZlLVJlcmVuZGVy IGRlcgogICAgICAgICAgICAvLyBCZXNldHp1bmdza29udHJvbGxlKSBkZWZlcnJlbiB3aXIgaW4g ZGVuIG5hZWNoc3RlbiBUaWNrLiBEYW1pdAogICAgICAgICAgICAvLyBoYXQgZGVyIEJyb3dzZXIg WmVpdCwgZGVuIFZlcmFudHdvcnR1bmdzLU1vZGFsIHp1IHJlbmRlcm4sIGJldm9yCiAgICAgICAg ICAgIC8vIHRldXJlIEJlcmVjaG51bmdlbiBkZW4gSlMtVGhyZWFkIGJsb2NraWVyZW4uCiAgICAg ICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAvLyBLcmFua21l bGR1bmcgKGtyL0t1cikgZXJ6ZXVndCBzZWl0IFBoYXNlIDQgKDIwMjYtMDUtMjApIGVpbmVuCiAg ICAgICAgICAgICAgICAvLyBTZXJ2ZXItc2VpdGlnZW4gSW4tQXBwLUhpbndlaXMgc3RhdHQgZWlu ZXMgbWFpbHRvLVBvcHVwcy4gRGVyCiAgICAgICAgICAgICAgICAvLyBDbGllbnQgbXVzcyBuaWNo dHMgbWVociB0dW4g4oCUIEJhbm5lcitCYWRnZSBlcnNjaGVpbmVuIGJlaW0KICAgICAgICAgICAg ICAgIC8vIG5hZWNoc3RlbiBTeW5jLVdvcmtlci1UaWNrIGZ1ZXIgU1UgKyBHZXNhbXR2ZXJhbnR3 b3J0bGljaGUuCgogICAgICAgICAgICAgICAgdmFyIHN0ID0gc3RhZXJrZUJlcmVjaG5lbihkYXR1 bSk7CiAgICAgICAgICAgICAgICBpZiAoIXN0Lm9rKSB7CiAgICAgICAgICAgICAgICAgICAgdmFy IGRlZml6aXQgPSBbXTsKICAgICAgICAgICAgICAgICAgICBpZiAoc3QuZiA8IDIpIGRlZml6aXQu cHVzaCgnRnLDvGggKCcgKyBzdC5mICsgJy8yKScpOwogICAgICAgICAgICAgICAgICAgIGlmIChz dC5zIDwgMikgZGVmaXppdC5wdXNoKCdTcMOkdCAoJyArIHN0LnMgKyAnLzIpJyk7CiAgICAgICAg ICAgICAgICAgICAgaWYgKHN0Lm4gPCAyKSBkZWZpeml0LnB1c2goJ05hY2h0ICgnICsgc3QubiAr ICcvMiknKTsKICAgICAgICAgICAgICAgICAgICB0b2FzdCgnVW50ZXJiZXNldHp0IGFtICcgKyBk YXR1bUZvcm1hdERFKGRhdHVtKSArICc6ICcgKyBkZWZpeml0LmpvaW4oJywgJyksICd3YXJudW5n Jyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAvLyBMaXZlLVJlZnJlc2ggZGVy IEJlc2V0enVuZ3Nrb250cm9sbGUsIGZhbGxzIHNpY2h0YmFyLiBTb25zdAogICAgICAgICAgICAg ICAgLy8gcmVhZ2llcnQgZGllIEFuemVpZ2UgZXJzdCBiZWltIG5hZWNoc3RlbiBUYWItV2VjaHNl bC4KICAgICAgICAgICAgICAgIC8vIERlbHRhLVVwZGF0ZSBzdGF0dCB2b2xsZXIgUmVuZGVyOiBu dXIgZGllIEVJTkUgYmV0cm9mZmVuZQogICAgICAgICAgICAgICAgLy8gS2FsZW5kZXItS2FjaGVs ICsgZGllIDMgS1BJLVphaGxlbiB3ZXJkZW4gZ2VwYXRjaHQg4oCUIHNwYXJ0CiAgICAgICAgICAg ICAgICAvLyAzMC0xMDAgbXMgcHJvIEVkaXQgYXVmIGRlbSBCZWhvZXJkZW4tUEMuCiAgICAgICAg ICAgICAgICB2YXIgYmtFbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhbnNpY2h0LWJlc2V0 enVuZycpOwogICAgICAgICAgICAgICAgaWYgKGJrRWwgJiYgIWJrRWwuY2xhc3NMaXN0LmNvbnRh aW5zKCd2ZXJzdGVja3QnKSAmJiBaLnJlY2h0ZSAmJiBaLnJlY2h0ZS5pc3RHZXNhbXR2ZXJhbnR3 b3J0bGljaCkgewogICAgICAgICAgICAgICAgICAgIGlmIChlZGl0b3JIb29rcy5iZXNldHp1bmdz a29udHJvbGxlVGFnVXBkYXRlbikgZWRpdG9ySG9va3MuYmVzZXR6dW5nc2tvbnRyb2xsZVRhZ1Vw ZGF0ZW4oZGF0dW0pOwogICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGVkaXRvckhvb2tzLmJl c2V0enVuZ3Nrb250cm9sbGVSZW5kZXJuKSBlZGl0b3JIb29rcy5iZXNldHp1bmdza29udHJvbGxl UmVuZGVybigpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCAwKTsKICAgICAgICB9 KS5jYXRjaChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIGZ1ZWxsSGFuZGxlVmVyc3RlY2tlbigp OwogICAgICAgICAgICBpZiAob3B0aW1pc3Rpc2NoZXJNb2RhbEdlemVpZ3QpIHsgbW9kYWxTY2hs aWVzc2VuKHRydWUpOyB9CiAgICAgICAgICAgIHRvYXN0KCdGZWhsZXI6ICcgKyBlLm1lc3NhZ2Us ICdmZWhsZXInKTsKICAgICAgICB9KTsKICAgIH0KCiAgICAvLyBSdWhlemVpdGVuLVByw7xmdW5n IFZPUiBkZW0gU3BlaWNoZXJuCiAgICBpZiAod2VydCAmJiBlZGl0b3JIb29rcy5mZWF0dXJlSXN0 QWt0aXYgJiYgZWRpdG9ySG9va3MuZmVhdHVyZUlzdEFrdGl2KCdydWhlemVpdFBydWVmdW5nJykp IHsKICAgICAgICB2YXIgcnVoZVdhcm4gPSBydWhlemVpdFBydWVmZW4oZGF0dW0sIHBpZCwgd2Vy dCk7CiAgICAgICAgaWYgKHJ1aGVXYXJuKSB7CiAgICAgICAgICAgIHZhciBwZXJzb24gPSBaLnBl cnNvbmVuLmZpbmQoZnVuY3Rpb24ocCkgeyByZXR1cm4gU3RyaW5nKHAuaWQpID09PSBwaWQ7IH0p OwogICAgICAgICAgICB2YXIgbmFtZSA9IHBlcnNvbiA/IHBlcnNvbi5uYW1lIDogJ1BlcnNvbiAn ICsgcGlkOwogICAgICAgICAgICBiZXN0YWV0aWdlbignUnVoZXplaXQtV2FybnVuZyBmw7xyICcg KyBuYW1lICsgJzpcblxuJyArIHJ1aGVXYXJuLmpvaW4oJ1xuJykgKyAnXG5cblRyb3R6ZGVtIHp1 d2Vpc2VuPycsIHBydWVmZUZ1ZWhydW5nc1VuZFNwZWljaGVybiwgeyB0aXRlbDogJ1J1aGV6ZWl0 LVdhcm51bmcnLCBqYVRleHQ6ICdUcm90emRlbSB6dXdlaXNlbicgfSk7CiAgICAgICAgICAgIHJl dHVybjsKICAgICAgICB9CiAgICB9CgogICAgcHJ1ZWZlRnVlaHJ1bmdzVW5kU3BlaWNoZXJuKCk7 CgogICAgZnVuY3Rpb24gcHJ1ZWZlRnVlaHJ1bmdzVW5kU3BlaWNoZXJuKCkgewogICAgICAgIC8v IEZ1ZWhydW5nc2tyYWZ0LVVudGVyYmVzZXR6dW5nIHBydWVmZW4KICAgICAgICB2YXIgYWx0ZXJX ZXJ0ID0gKChaLnBsYW51bmcuZWludHJhZWdlIHx8IHt9KVtkYXR1bV0gfHwge30pW3BpZF0gfHwg Jyc7CiAgICAgICAgdmFyIHNjaGljaHQgPSBmdWVocnVuZ3NVbnRlcmJlc2V0enVuZ1BydWVmZW4o ZGF0dW0sIGFsdGVyV2VydCwgd2VydCk7CiAgICAgICAgaWYgKCFzY2hpY2h0KSB7IGZvcnRzZXR6 ZW4oKTsgcmV0dXJuOyB9CgogICAgICAgIHZhciBzY2hpY2h0TmFtZSA9IHsgRjogJ0Zyw7xoc2No aWNodCcsIFM6ICdTcMOkdHNjaGljaHQnLCBOOiAnTmFjaHRzY2hpY2h0JyB9W3NjaGljaHRdOwog ICAgICAgIHZhciBha3R1ZWxsID0gZnVlaHJ1bmdzWmFlaGxlbihkYXR1bSwgc2NoaWNodCk7CiAg ICAgICAgdmFyIGRhbmFjaCA9IGFrdHVlbGwgLSAxOwogICAgICAgIHZhciBuZXVlcldlcnRUeHQg PSB3ZXJ0IHx8ICdmcmVpJzsKICAgICAgICB2YXIgdHh0ID0gJ0FrdHVlbGwgc2luZCAnICsgYWt0 dWVsbCArICcgRsO8aHJ1bmdza3LDpGZ0ZSBmw7xyIGRpZSAnICsgc2NoaWNodE5hbWUgKwogICAg ICAgICAgICAgICAgICAnIGFtICcgKyBkYXR1bUZvcm1hdERFKGRhdHVtKSArICcgZWluZ2VwbGFu dC5cbicgKwogICAgICAgICAgICAgICAgICAnTmFjaCBkaWVzZXIgw4RuZGVydW5nIGF1ZiAiJyAr IG5ldWVyV2VydFR4dCArICciIGJsZWliZW4gbnVyIG5vY2ggJyArIGRhbmFjaCArICcg4oCUICcg KwogICAgICAgICAgICAgICAgICAnTWluZGVzdGJlc2V0enVuZyBzaW5kIDIuXG5cbicgKwogICAg ICAgICAgICAgICAgICAnVHJvdHpkZW0gc3BlaWNoZXJuPyc7CiAgICAgICAgdW50ZXJiZXNldHp1 bmdTY2hpY2h0ID0gc2NoaWNodDsKICAgICAgICBiZXN0YWV0aWdlbih0eHQsIGZvcnRzZXR6ZW4s IHsgdGl0ZWw6ICdVbnRlcmJlc2V0enVuZyBiZXN0w6R0aWdlbicsIGphVGV4dDogJ1Ryb3R6ZGVt IHNwZWljaGVybicgfSk7CiAgICB9Cn0KCi8vIEJyaWRnZTogaW50ZXJhY3Rpb24uanMgYnJhdWNo dCBmdWVocnVuZ3NaYWVobGVuLCBrYW5uIGVzIGFiZXIgd2VnZW4KLy8gWnlrbHVzIG5pY2h0IGRp cmVrdCBpbXBvcnRpZXJlbi4gV2lyIHNldHplbiBlcyBhbHMgSG9vay4KaW50ZXJhY3Rpb25Ib29r cy5mdWVocnVuZ3NaYWVobGVuID0gZnVlaHJ1bmdzWmFlaGxlbjsK ### FILE: js/grid_interaction.js | 35893 Ly8gPT09IGdyaWQvaW50ZXJhY3Rpb24uanMgPT09Ci8vIEtvbW1lbnRhcmUgKExlc2VuL1NjaHJl aWJlbi9BbnplaWdlbiBpbSBHcmlkKSwgVW50ZXJiZXNldHp1bmdzLUFuYWx5c2UgKwovLyBXYXJu dW5nLCAienVtIERhdHVtIHNjcm9sbGVuIi4gVkkzIGhhdCBrZWluZSBGTEQtU2VsZWt0aW9uL0tv bnRleHRtZW51LwovLyBEcmFnJkRyb3AtTG9naWsg4oCUIGRhaGVyIHNjaGxhbmtlciBhbHMgZGVy IEZMRC1QZW5kYW50LgoKaW1wb3J0IHsgWiB9IGZyb20gJy4vY29yZV9zdGF0ZS5qcyc7CmltcG9y dCB7IGRhdHVtU3RyLCBkYXR1bUZvcm1hdERFLCBlc2NhcGVIVE1MLCBhbnplaWdlTmFtZUZ1ZXJL ZW5udW5nIH0gZnJvbSAnLi9jb3JlX3V0aWwuanMnOwppbXBvcnQgeyB0b2FzdCB9IGZyb20gJy4v dWlfZGlhbG9nLmpzJzsKaW1wb3J0IHsgYXBpLCBhcGlQb3N0IH0gZnJvbSAnLi9jb3JlX2FwaS5q cyc7CmltcG9ydCB7IGRhcmZaZWxsZUVkaXRpZXJlbiB9IGZyb20gJy4vY29yZV9wZXJtaXNzaW9u cy5qcyc7CmltcG9ydCB7IGRhdGVuR3JpZFJlbmRlcm4sIGtvcGZSZW5kZXJuLCB6ZWxsZVZpc3Vl bGxBa3R1YWxpc2llcmVuIH0gZnJvbSAnLi9ncmlkX3JlbmRlci5qcyc7CgovLyA9PT09PSBIb29r cyA9PT09PQoKZXhwb3J0IHZhciBpbnRlcmFjdGlvbkhvb2tzID0gewogICAgZmVhdHVyZUlzdEFr dGl2OiBudWxsLAogICAgZnVlaHJ1bmdzWmFlaGxlbjogbnVsbCAgIC8vIHdpcmQgdm9uIGdyaWQv ZWRpdG9yLmpzIGJlZGllbnQgKHppcmt1bGFlcmUgVmVybWVpZHVuZykKfTsKCi8vID09PT09IEtv bnN0YW50ZW4gPT09PT0KCmV4cG9ydCB2YXIgQktfSE9SSVpPTlRfVEFHRSA9IDI4OwoKLy8gPT09 PT0gV2FjaGxlaXR1bmctSWRlbnRpdGFldCA9PT09PQoKLy8gSXN0IGRlciBha3R1ZWxsZSBVc2Vy IFdhY2hsZWl0dW5nPyBXYWNobGVpdHVuZyA9IEdydXBwZSBXTCBpbiBkZW4gUGVyc29uZW4tRGF0 ZW4KLy8gdW5kIGluIGFkbWluLmpzb24uZ3J1cHBlbi4gZnVlaHJ1bmdzWmFlaGxlbigpIHBydWVm dCBkaWUgZ2xlaWNoZSBLb252ZW50aW9uLgpleHBvcnQgZnVuY3Rpb24gaXN0V2FjaGxlaXR1bmdB a3R1ZWxsZXJVc2VyKCkgewogICAgaWYgKCFaLm1laW5lUGVyc29uSWQpIHJldHVybiBmYWxzZTsK ICAgIHZhciBwID0gbnVsbDsKICAgIChaLnBsYW51bmcucGVyc29uZW4gfHwgW10pLmZvckVhY2go ZnVuY3Rpb24ocHApIHsKICAgICAgICBpZiAoU3RyaW5nKHBwLmlkKSA9PT0gU3RyaW5nKFoubWVp bmVQZXJzb25JZCkpIHAgPSBwcDsKICAgIH0pOwogICAgcmV0dXJuICEhKHAgJiYgcC5ncnVwcGUg PT09ICdXTCcpOwp9CgovLyA9PT09PSBVbnRlcmJlc2V0enVuZ3MtQW5hbHlzZSA9PT09PQoKLy8g RHVyY2hzdWNodCBkaWUga29tbWVuZGVuIE4gVGFnZSBhYiBoZXV0ZSBuYWNoIEZ1ZWhydW5ncy1V bnRlcmJlc2V0enVuZy4KLy8gVkkzLVJlZ2VsOiBwcm8gU2NoaWNodCAoRi9TL04pIG1pbmRlc3Rl bnMgMiBGdWVocnVuZ3NrcmFlZnRlIChER0wvV0RGL0ZCUCwKLy8gb2huZSBHcnVwcGUgTC9XTCku Ci8vIFJ1ZWNrZ2FiZTogc29ydGllcnRlIExpc3RlIHZvbiB7IGRhdHVtLCBmZWhsdDogJ0YgMS8y LCBTIDAvMicgfS4KZXhwb3J0IGZ1bmN0aW9uIHVudGVyYmVzZXR6dW5nQW5hbHlzZVZpMyh0YWdl SG9yaXpvbnQpIHsKICAgIGlmICghaW50ZXJhY3Rpb25Ib29rcy5mdWVocnVuZ3NaYWVobGVuKSBy ZXR1cm4gW107CiAgICB2YXIgaGV1dGUgPSBuZXcgRGF0ZSgpOyBoZXV0ZS5zZXRIb3VycygwLDAs MCwwKTsKICAgIHZhciBwcm9ibGVtZSA9IFtdOwogICAgKFoudGFnZSB8fCBbXSkuZm9yRWFjaChm dW5jdGlvbihkKSB7CiAgICAgICAgaWYgKGQgPCBoZXV0ZSkgcmV0dXJuOwogICAgICAgIHZhciBk aWZmID0gTWF0aC5mbG9vcigoZCAtIGhldXRlKSAvIDg2NDAwMDAwKTsKICAgICAgICBpZiAoZGlm ZiA+PSB0YWdlSG9yaXpvbnQpIHJldHVybjsKICAgICAgICB2YXIgZFN0ciA9IGRhdHVtU3RyKGQp OwogICAgICAgIHZhciBmRiA9IGludGVyYWN0aW9uSG9va3MuZnVlaHJ1bmdzWmFlaGxlbihkU3Ry LCAnRicpOwogICAgICAgIHZhciBmUyA9IGludGVyYWN0aW9uSG9va3MuZnVlaHJ1bmdzWmFlaGxl bihkU3RyLCAnUycpOwogICAgICAgIHZhciBmTiA9IGludGVyYWN0aW9uSG9va3MuZnVlaHJ1bmdz WmFlaGxlbihkU3RyLCAnTicpOwogICAgICAgIHZhciBmZWhsdCA9IFtdOwogICAgICAgIGlmIChm RiA8IDIpIGZlaGx0LnB1c2goJ0YgJyArIGZGICsgJy8yJyk7CiAgICAgICAgaWYgKGZTIDwgMikg ZmVobHQucHVzaCgnUyAnICsgZlMgKyAnLzInKTsKICAgICAgICBpZiAoZk4gPCAyKSBmZWhsdC5w dXNoKCdOICcgKyBmTiArICcvMicpOwogICAgICAgIGlmIChmZWhsdC5sZW5ndGggPiAwKSBwcm9i bGVtZS5wdXNoKHsgZGF0dW06IGRTdHIsIGZlaGx0OiBmZWhsdC5qb2luKCcsICcpIH0pOwogICAg fSk7CiAgICByZXR1cm4gcHJvYmxlbWU7Cn0KCmV4cG9ydCBmdW5jdGlvbiB6dURhdHVtU2Nyb2xs ZW4oZFN0cikgewogICAgdmFyIHplbGxlID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2RhdHVt LXplaWxlLXRhZyAua2QtemVsbGVbZGF0YS1kYXR1bT0iJyArIGRTdHIgKyAnIl0nKTsKICAgIHZh ciBjID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2dyaWQtc2Nyb2xsLWNvbnRhaW5lcicpOwog ICAgaWYgKCF6ZWxsZSB8fCAhYykgcmV0dXJuOwogICAgdmFyIHIgPSB6ZWxsZS5nZXRCb3VuZGlu Z0NsaWVudFJlY3QoKSwgY3IgPSBjLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOwogICAgLy8gU21v b3RoLVNjcm9sbCBzdGF0dCBhYnJ1cHRlbSBTcHJ1bmcgKFF1aWNrLVdpbiAyMDI2LTA1LTI5KS4g QXVmIGdyb3NzZW4KICAgIC8vIEdyaWRzIGZ1ZWhsdCBzaWNoIGRpZSBhbmltaWVydGUgQmV3ZWd1 bmcgZGV1dGxpY2ggd2VuaWdlciBydWNrZWxuZCBhbgogICAgLy8gdW5kIGRlciBVc2VyIGJlaGFl bHQgZGllIE9yaWVudGllcnVuZyBiZWltIFNwYWx0ZW4tU3BydW5nLgogICAgdmFyIHppZWxMZWZ0 ID0gYy5zY3JvbGxMZWZ0ICsgKHIubGVmdCAtIGNyLmxlZnQgLSBjci53aWR0aCAvIDMpOwogICAg aWYgKHR5cGVvZiBjLnNjcm9sbFRvID09PSAnZnVuY3Rpb24nKSB7CiAgICAgICAgYy5zY3JvbGxU byh7IGxlZnQ6IHppZWxMZWZ0LCBiZWhhdmlvcjogJ3Ntb290aCcgfSk7CiAgICB9IGVsc2Ugewog ICAgICAgIGMuc2Nyb2xsTGVmdCA9IHppZWxMZWZ0OwogICAgfQp9CgpleHBvcnQgZnVuY3Rpb24g dW50ZXJiZXNldHp1bmdXYXJudW5nWmVpZ2VuKCkgewogICAgaWYgKCFpbnRlcmFjdGlvbkhvb2tz LmZlYXR1cmVJc3RBa3RpdiB8fCAhaW50ZXJhY3Rpb25Ib29rcy5mZWF0dXJlSXN0QWt0aXYoJ3Vu dGVyYmVzZXR6dW5nV2FybnVuZycpKSByZXR1cm47CiAgICAvLyBXYXJudW5nIGdpbHQgZnVlciBl Y2h0ZSBXYWNobGVpdHVuZyAoR3J1cHBlIEwpIG9kZXIgU3VwZXJVc2VyIGltIFRlc3QtS29udGV4 dC4KICAgIC8vIEZhY2hhdWZzaWNodC1HZXNhbXR2ZXJhbnR3b3J0bGljaGUgYmVrb21tZW4gc3Rh dHRkZXNzZW4gZGVuIEhlYWRlci1UYWIKICAgIC8vICJCZXNldHp1bmdza29udHJvbGxlIiBtaXQg ZGF1ZXJoYWZ0ZXIgVWViZXJzaWNodC4KICAgIGlmICghaXN0V2FjaGxlaXR1bmdBa3R1ZWxsZXJV c2VyKCkgJiYgIVoucmVjaHRlLmlzdFN1cGVyVXNlcikgcmV0dXJuOwogICAgdmFyIHByb2JsZW1l ID0gdW50ZXJiZXNldHp1bmdBbmFseXNlVmkzKDI4KTsKICAgIGlmIChwcm9ibGVtZS5sZW5ndGgg PT09IDApIHJldHVybjsKICAgIHZhciBlcnN0ZXIgPSBwcm9ibGVtZVswXTsKICAgIHZhciB0eHQg PSBwcm9ibGVtZS5sZW5ndGggKyAocHJvYmxlbWUubGVuZ3RoID09PSAxID8gJyBUYWcnIDogJyBU YWdlJykgKwogICAgICAgICAgICAgICcgbWl0IEbDvGhydW5ncy1VbnRlcmJlc2V0enVuZyBpbiBk ZW4gbsOkY2hzdGVuIDQgV29jaGVuLiBFcnN0ZXI6ICcgKwogICAgICAgICAgICAgIGRhdHVtRm9y bWF0REUoZXJzdGVyLmRhdHVtKSArICcgKCcgKyBlcnN0ZXIuZmVobHQgKyAnKS4gS2xpY2sgZsO8 ciBTcHJ1bmcgenVtIFRhZy4nOwogICAgdG9hc3QodHh0LCAnd2FybnVuZycsIHsKICAgICAgICBk YXVlcjogMTAwMDAsCiAgICAgICAgb25DbGljazogZnVuY3Rpb24oKSB7IHp1RGF0dW1TY3JvbGxl bihlcnN0ZXIuZGF0dW0pOyB9CiAgICB9KTsKfQoKLy8gPT09PT0gS29tbWVudGFyZSA9PT09PQov LwovLyBTcGVpY2hlcmZvcm1hdCBpbiBwbGFudW5nLmtvbW1lbnRhcmVbZGF0dW1dW3BlcnNvbklk XTogYWIgMjAyNi0wNCBhbHMKLy8gT2JqZWt0IHsgdGV4dCwgZ2VhZW5kZXJ0QW0gKElTTyksIGdl YWVuZGVydFZvbiB9LiBBbHRlIERhdGVuIGFscyByZWluZQovLyBTdHJpbmdzIHdlcmRlbiB3ZWl0 ZXJoaW4gYWt6ZXB0aWVydDsgYmVpbSBuYWVjaHN0ZW4gU3BlaWNoZXJuIHdpcmQKLy8gYXV0b21h dGlzY2ggYXVmIGRhcyBuZXVlIFNjaGVtYSBtaWdyaWVydC4KCmV4cG9ydCBmdW5jdGlvbiBrb21t ZW50YXJFaW50cmFnKGRhdHVtLCBwZXJzb25JZCkgewogICAgcmV0dXJuICgoWi5wbGFudW5nLmtv bW1lbnRhcmUgfHwge30pW2RhdHVtXSB8fCB7fSlbU3RyaW5nKHBlcnNvbklkKV07Cn0KCi8vIExv ZXNjaC1SZWNodCBpbSBDbGllbnQgKHp1ciBVSS1TdGV1ZXJ1bmcg4oCUIGRpZSBmaW5hbGUgUHJ1 ZWZ1bmcgcGFzc2llcnQKLy8gaW0gU2VydmVyKS4gU3VwZXJVc2VyIHVuZCBGYWNoYXVmc2ljaHQg bWl0IEdlc2FtdHZlcmFudHdvcnRsaWNoLUZsYWcuCmV4cG9ydCBmdW5jdGlvbiBkYXJmS29tbWVu dGFyTG9lc2NoZW4oKSB7CiAgICB2YXIgciA9IFoucmVjaHRlIHx8IHt9OwogICAgcmV0dXJuICEh KHIuaXN0U3VwZXJVc2VyIHx8IHIuaXN0R2VzYW10dmVyYW50d29ydGxpY2gpOwp9CgovLyBMaWVm ZXJ0IElNTUVSIGVpbiBBcnJheSB2b24geyBpZCwgdGV4dCwgZ2VhZW5kZXJ0QW0sIGdlYWVuZGVy dFZvbiB9IOKAlAovLyBtaWdyaWVydCBkaWUgZHJlaSBBbHQtRm9ybWF0ZSB0cmFuc3BhcmVudDoK Ly8gICBzdHJpbmcgICAgICAgICAgICAgICAgICAgICAgIC0+IFt7IGlkOiAna19sZWdhY3lfKics IHRleHQsIHRzOm51bGwgfV0KLy8gICB7IHRleHQsIGdlYWVuZGVydEFtLCAuLi4gfSAgIC0+IFtl aW4gRWxlbWVudF0KLy8gICBbey4uLn0sey4uLn1dICAgICAgICAgICAgICAgIC0+IGRpcmVrdCB6 dXJ1ZWNrCi8vIFJlaWhlbmZvbGdlIGlzdCBjaHJvbm9sb2dpc2NoIChhZWx0ZXN0ZSB6dWVyc3Qp LCBzbyB3aWUgZGVyIFNlcnZlciBzcGVpY2hlcnQuCi8vIERlZmVuc2l2ZS1IaW53ZWlzIChTcHJp bnQgNyDigJQgMjAyNi0wNS0yOSwgRmluZGluZyAxNCk6Ci8vIE1hc3MtTWlncmF0aW9uIChzY3Jp cHRzL21pZ3JhdGVfa29tbWVudGFyZS5weSkgaGF0IGFsbGUgQmVzdGFlbmRlIGlucwovLyBBcnJh eS1TY2hlbWEgdWViZXJmdWVocnQuIEFsdC1Gb3JtYXRlIChTdHJpbmcsIFNpbmdsZS1PYmplY3Qt b2huZS1BcnJheSkKLy8gU09MTFRFTiBuaWNodCBtZWhyIGltIExpdmUtU3lzdGVtIGF1ZnRhdWNo ZW4uIFdlbm4gZG9jaCAoei5CLiBuYWNoIFJlc3RvcmUKLy8gYXVzIGFsdGVtIEJhY2t1cCk6IHdp cmQgZWlubWFsaWcgcHJvIFNlc3Npb24gdmlhIGNvbnNvbGUud2FybiBwcm90b2tvbGxpZXJ0Lgov LyBEaWUgQnJhbmNoZXMgYmxlaWJlbiBha3RpdiwgZGFtaXQgZWluIFJlc3RvcmUgZGllIEFuemVp Z2UgbmljaHQgemVyc3RvZXJ0IOKAlAovLyBhYmVyIGRlciBXYXJuLUxvZyBtYWNodCBrbGFyLCBk YXNzIG5hY2gtbWlncmllcnQgd2VyZGVuIHNvbGx0ZS4KdmFyIF9MRUdBQ1lfV0FSTl9HRVNFSEVO ID0gZmFsc2U7CmZ1bmN0aW9uIF9sZWdhY3lXYXJuKHR5cCkgewogICAgaWYgKF9MRUdBQ1lfV0FS Tl9HRVNFSEVOKSByZXR1cm47CiAgICBfTEVHQUNZX1dBUk5fR0VTRUhFTiA9IHRydWU7CiAgICBp ZiAodHlwZW9mIGNvbnNvbGUgIT09ICd1bmRlZmluZWQnICYmIGNvbnNvbGUud2FybikgewogICAg ICAgIGNvbnNvbGUud2FybignW1ZJM10gS29tbWVudGFyIGltIEFsdC1Gb3JtYXQgZ2VmdW5kZW4g KCcgKyB0eXAgKyAnKS4gJyArCiAgICAgICAgICAgICdXYWhyc2NoZWlubGljaCBhdXMgYWx0ZW0g QmFja3VwLVJlc3RvcmUuIEJpdHRlIGVpbm1hbGlnICcgKwogICAgICAgICAgICAnc2NyaXB0cy9t aWdyYXRlX2tvbW1lbnRhcmUucHkgbGF1ZmVuIGxhc3Nlbi4nKTsKICAgIH0KfQoKZXhwb3J0IGZ1 bmN0aW9uIGtvbW1lbnRhckxpc3RlKGspIHsKICAgIGlmICghaykgcmV0dXJuIFtdOwogICAgaWYg KHR5cGVvZiBrID09PSAnc3RyaW5nJykgewogICAgICAgIGlmICghay50cmltKCkpIHJldHVybiBb XTsKICAgICAgICBfbGVnYWN5V2FybignU3RyaW5nJyk7CiAgICAgICAgcmV0dXJuIFt7IGlkOiAn a19sZWdhY3knLCB0ZXh0OiBrLCBnZWFlbmRlcnRBbTogbnVsbCwgZ2VhZW5kZXJ0Vm9uOiBudWxs IH1dOwogICAgfQogICAgaWYgKEFycmF5LmlzQXJyYXkoaykpIHsKICAgICAgICByZXR1cm4gay5m aWx0ZXIoZnVuY3Rpb24oZSkgeyByZXR1cm4gZSAmJiAoZS50ZXh0IHx8ICcnKS50b1N0cmluZygp LnRyaW0oKTsgfSk7CiAgICB9CiAgICBpZiAoay50ZXh0KSB7CiAgICAgICAgX2xlZ2FjeVdhcm4o J1NpbmdsZS1PYmplY3QnKTsKICAgICAgICByZXR1cm4gW3sKICAgICAgICAgICAgaWQ6ICAgICAg ICAgICBrLmlkIHx8ICdrX2xlZ2FjeScsCiAgICAgICAgICAgIHRleHQ6ICAgICAgICAgay50ZXh0 LAogICAgICAgICAgICBnZWFlbmRlcnRBbTogIGsuZ2VhZW5kZXJ0QW0gfHwgbnVsbCwKICAgICAg ICAgICAgZ2VhZW5kZXJ0Vm9uOiBrLmdlYWVuZGVydFZvbiB8fCBudWxsCiAgICAgICAgfV07CiAg ICB9CiAgICByZXR1cm4gW107Cn0KCmV4cG9ydCBmdW5jdGlvbiBrb21tZW50YXJBbnphaGwoaykg ewogICAgcmV0dXJuIGtvbW1lbnRhckxpc3RlKGspLmxlbmd0aDsKfQoKLy8gQmFja3dhcmRzLUNv bXBhdDogbGllZmVydCBkZW4gVEVYVCBkZXMganVlbmdzdGVuIEtvbW1lbnRhcnMgKG9kZXIgbGVl cikuCi8vIEJlc3RlaGVuZGUgQXVmcnVmZXIgKFdvY2hlbnBsYW4sIEJlc2V0enVuZykgYmVrb21t ZW4gZGFtaXQgd2VpdGVyaGluIGRlbgovLyAiYWt0dWVsbGVuIiBLb21tZW50YXIg4oCUIGZ1ZXIg ZGllIExpc3RlIGdpYnQgZXMga29tbWVudGFyTGlzdGUoKS4KZXhwb3J0IGZ1bmN0aW9uIGtvbW1l bnRhclRleHQoaykgewogICAgdmFyIGxpc3RlID0ga29tbWVudGFyTGlzdGUoayk7CiAgICBpZiAo bGlzdGUubGVuZ3RoID09PSAwKSByZXR1cm4gJyc7CiAgICByZXR1cm4gbGlzdGVbbGlzdGUubGVu Z3RoIC0gMV0udGV4dCB8fCAnJzsKfQoKLy8gQmFja3dhcmRzLUNvbXBhdDogTWV0YSBkZXMganVl bmdzdGVuIEtvbW1lbnRhcnMuCmV4cG9ydCBmdW5jdGlvbiBrb21tZW50YXJNZXRhKGspIHsKICAg IHZhciBsaXN0ZSA9IGtvbW1lbnRhckxpc3RlKGspOwogICAgaWYgKGxpc3RlLmxlbmd0aCA9PT0g MCkgcmV0dXJuIHsgdGV4dDogJycsIGdlYWVuZGVydEFtOiBudWxsLCBnZWFlbmRlcnRWb246IG51 bGwgfTsKICAgIHZhciBsZXR6dGVyID0gbGlzdGVbbGlzdGUubGVuZ3RoIC0gMV07CiAgICByZXR1 cm4gewogICAgICAgIHRleHQ6ICAgICAgICAgbGV0enRlci50ZXh0IHx8ICcnLAogICAgICAgIGdl YWVuZGVydEFtOiAgbGV0enRlci5nZWFlbmRlcnRBbSB8fCBudWxsLAogICAgICAgIGdlYWVuZGVy dFZvbjogbGV0enRlci5nZWFlbmRlcnRWb24gfHwgbnVsbAogICAgfTsKfQoKLy8gS29tcGFrdGUg TWV0YS1aZWlsZSBmdWVyIGRlbiBFZGl0b3I6ICJadWxldHp0IGdlYWVuZGVydDogMjIuMDQuMjAy NiAxOTo0MyDCtyBOVzEyMzQ1NiIKLy8gTGVlcmVyIFN0cmluZywgd2VubiBrZWluIERhdHVtc3N0 ZW1wZWwgdm9ybGllZ3QgKHouQi4gTWlncmF0aW9uIGF1cyBhbHRlbQovLyBTdHJpbmctRm9ybWF0 LCBkb3J0IGdpYnQgZXMga2VpbmUgSGlzdG9yaWUpLgpleHBvcnQgZnVuY3Rpb24ga29tbWVudGFy TWV0YVRleHQoaykgewogICAgaWYgKCFrIHx8IHR5cGVvZiBrID09PSAnc3RyaW5nJykgcmV0dXJu ICcnOwogICAgdmFyIG0gPSBrb21tZW50YXJNZXRhKGspOwogICAgaWYgKCFtLmdlYWVuZGVydEFt KSByZXR1cm4gJyc7CiAgICB2YXIgZCA9IG5ldyBEYXRlKG0uZ2VhZW5kZXJ0QW0pOwogICAgaWYg KGlzTmFOKGQuZ2V0VGltZSgpKSkgcmV0dXJuICcnOwogICAgdmFyIHBhZCA9IGZ1bmN0aW9uKG4p IHsgcmV0dXJuIChuIDwgMTAgPyAnMCcgOiAnJykgKyBuOyB9OwogICAgdmFyIGR0ID0gcGFkKGQu Z2V0RGF0ZSgpKSArICcuJyArIHBhZChkLmdldE1vbnRoKCkgKyAxKSArICcuJyArIGQuZ2V0RnVs bFllYXIoKSArCiAgICAgICAgICAgICAnICcgKyBwYWQoZC5nZXRIb3VycygpKSArICc6JyArIHBh ZChkLmdldE1pbnV0ZXMoKSk7CiAgICB2YXIgcyA9ICdadWxldHp0IGdlw6RuZGVydDogJyArIGR0 OwogICAgaWYgKG0uZ2VhZW5kZXJ0Vm9uKSBzICs9ICcgwrcgJyArIG0uZ2VhZW5kZXJ0Vm9uOwog ICAgcmV0dXJuIHM7Cn0KCi8vIExpZWZlcnQgZGVuIFRvb2x0aXAtU3VmZml4IGlua2wuIERhdHVt c3N0ZW1wZWwsIGZhbGxzIHZvcmhhbmRlbi4KLy8gV2lyZCBoZXV0ZSBudXIgbm9jaCB2b20gV29j aGVucGxhbi9Mb2didWNoIGdlbnV0enQg4oCUIGltIEhhdXB0LUdyaWQga29tbXQKLy8gZGFzIEhU TUwtUG9wb3ZlciAoa29tbWVudGFyUG9wb3ZlclplaWdlbikgenVtIEVpbnNhdHosIGRhcyBkZW4g VGV4dAovLyBzdHJ1a3R1cmllcnQgcmVuZGVydCBzdGF0dCBpaG4gaW4gZGFzIHRpdGxlLUF0dHJp YnV0IHp1IGtsYXRzY2hlbi4KZXhwb3J0IGZ1bmN0aW9uIGtvbW1lbnRhclRvb2x0aXAoaykgewog ICAgaWYgKCFrKSByZXR1cm4gJyc7CiAgICB2YXIgbSA9IGtvbW1lbnRhck1ldGEoayk7CiAgICBp ZiAoIW0udGV4dCkgcmV0dXJuICcnOwogICAgdmFyIHN1ZmZpeCA9ICcnOwogICAgaWYgKG0uZ2Vh ZW5kZXJ0QW0pIHsKICAgICAgICAvLyBJU08gLT4gIjIyLjA0LjIwMjYgMTk6NDMiIChsb2thbGUg RGFyc3RlbGx1bmcgb2huZSBTZWt1bmRlbikKICAgICAgICB2YXIgZCA9IG5ldyBEYXRlKG0uZ2Vh ZW5kZXJ0QW0pOwogICAgICAgIGlmICghaXNOYU4oZC5nZXRUaW1lKCkpKSB7CiAgICAgICAgICAg IHZhciBwYWQgPSBmdW5jdGlvbihuKSB7IHJldHVybiAobiA8IDEwID8gJzAnIDogJycpICsgbjsg fTsKICAgICAgICAgICAgdmFyIGR0ID0gcGFkKGQuZ2V0RGF0ZSgpKSArICcuJyArIHBhZChkLmdl dE1vbnRoKCkgKyAxKSArICcuJyArIGQuZ2V0RnVsbFllYXIoKSArCiAgICAgICAgICAgICAgICAg ICAgICcgJyArIHBhZChkLmdldEhvdXJzKCkpICsgJzonICsgcGFkKGQuZ2V0TWludXRlcygpKTsK ICAgICAgICAgICAgc3VmZml4ID0gJyAoenVsZXR6dCBnZcOkbmRlcnQgYW0gJyArIGR0OwogICAg ICAgICAgICBpZiAobS5nZWFlbmRlcnRWb24pIHN1ZmZpeCArPSAnIGR1cmNoICcgKyBtLmdlYWVu ZGVydFZvbjsKICAgICAgICAgICAgc3VmZml4ICs9ICcpJzsKICAgICAgICB9CiAgICB9CiAgICBy ZXR1cm4gJ0tvbW1lbnRhcjogJyArIG0udGV4dCArIHN1ZmZpeDsKfQoKLy8gLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQovLyBLb21tZW50YXItUG9wb3ZlciAoSFRNTC1WYXJpYW50ZSBkZXMgZnJ1ZWhlcmVu IG5hdGl2ZSB0aXRsZS1TdWZmaXhlcykKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQovLyBTdHJ1a3R1 cmllcnRlcyBQb3BvdmVyIHN0YXR0IGVpbnplaWxpZ2VyIEJyb3dzZXItVG9vbHRpcC4gSG92ZXIg b2VmZm5ldAovLyBuYWNoIDI1MCBtcywgTW91c2UtTGVhdmUgc2NobGllc3N0IG5hY2ggMTUwIG1z IChnaWJ0IGRlbSBVc2VyIFplaXQsIHVlYmVyCi8vIGRhcyBQb3BvdmVyIHp1IGJld2VnZW4pLiBD b250YWluZXIgbGllZ3QgZmVzdCBpbiBpbmRleC5odG1sICgjdmkzLQovLyBrb21tZW50YXItcG9w b3ZlciksIHdpcmQgaGllciBudXIgYmVmdWVsbHQgKyBwb3NpdGlvbmllcnQuCi8vCi8vIFZlcmZh c3NlciB3aXJkIHVlYmVyIGFuemVpZ2VOYW1lRnVlcktlbm51bmcoKSBhdXMgY29yZV91dGlsIHp1 IGVpbmVtCi8vIGxlc2JhcmVuIE5hbWVuIGF1ZmdlbG9lc3QuIEJsZWlidCBkaWUgQXVmbG9lc3Vu ZyBsZWVyICh6LkIuIEV4Y2VsLUltcG9ydC0KLy8gTWFya2VyIHN0YXR0IE5XLUtlbm51bmcpLCB6 ZWlnZW4gd2lyIGRlbiBSb2h3ZXJ0LgoKdmFyIGtwX3plaWdlVGltZXIgPSBudWxsOwp2YXIga3Bf dmVyc3RlY2tUaW1lciA9IG51bGw7CgpmdW5jdGlvbiBrcF9mb3JtYXREYXR1bVplaXQoaXNvKSB7 CiAgICBpZiAoIWlzbykgcmV0dXJuICcnOwogICAgdmFyIGQgPSBuZXcgRGF0ZShpc28pOwogICAg aWYgKGlzTmFOKGQuZ2V0VGltZSgpKSkgcmV0dXJuICcnOwogICAgdmFyIHBhZCA9IGZ1bmN0aW9u KG4pIHsgcmV0dXJuIChuIDwgMTAgPyAnMCcgOiAnJykgKyBuOyB9OwogICAgcmV0dXJuIHBhZChk LmdldERhdGUoKSkgKyAnLicgKyBwYWQoZC5nZXRNb250aCgpICsgMSkgKyAnLicgKyBkLmdldEZ1 bGxZZWFyKCkgKwogICAgICAgICAgICcgwrcgJyArIHBhZChkLmdldEhvdXJzKCkpICsgJzonICsg cGFkKGQuZ2V0TWludXRlcygpKTsKfQoKZnVuY3Rpb24ga3BfZWludHJhZ0h0bWwoZWludHJhZykg ewogICAgaWYgKCFlaW50cmFnKSByZXR1cm4gJyc7CiAgICB2YXIgdGV4dCA9IGVzY2FwZUhUTUwo ZWludHJhZy50ZXh0IHx8ICcnKS5yZXBsYWNlKC9cbi9nLCAnPGJyPicpOwogICAgdmFyIGR0ID0g a3BfZm9ybWF0RGF0dW1aZWl0KGVpbnRyYWcuZ2VhZW5kZXJ0QW0pOwogICAgdmFyIHJvaFZlcmZh c3NlciA9IGVpbnRyYWcuZ2VhZW5kZXJ0Vm9uIHx8ICcnOwogICAgdmFyIG5hbWVBdWZnZWxvZXN0 ID0gcm9oVmVyZmFzc2VyID8gYW56ZWlnZU5hbWVGdWVyS2VubnVuZyhyb2hWZXJmYXNzZXIpIDog Jyc7CiAgICAvLyBXZW5uIEF1ZmxvZXN1bmcgPT0gUm9od2VydCAoa0t1cnotRmFsbGJhY2spLCBu aWNodCBkb3BwZWx0IHplaWdlbi4KICAgIHZhciB2ZXJmYXNzZXJBbnogPSBuYW1lQXVmZ2Vsb2Vz dCAmJiBuYW1lQXVmZ2Vsb2VzdC50b0xvd2VyQ2FzZSgpICE9PSByb2hWZXJmYXNzZXIudG9Mb3dl ckNhc2UoKS5zcGxpdCgnXFwnKS5wb3AoKQogICAgICAgID8gbmFtZUF1ZmdlbG9lc3QKICAgICAg ICA6IHJvaFZlcmZhc3NlcjsKICAgIHZhciBtZXRhID0gJyc7CiAgICBpZiAodmVyZmFzc2VyQW56 IHx8IGR0KSB7CiAgICAgICAgbWV0YSA9ICc8ZGl2IGNsYXNzPSJrcC1laW50cmFnLW1ldGEiPicg KwogICAgICAgICAgICAgICAgICAgICh2ZXJmYXNzZXJBbnogPyAnPHNwYW4gY2xhc3M9ImtwLWVp bnRyYWctYXV0b3IiIHRpdGxlPSInICsgZXNjYXBlSFRNTChyb2hWZXJmYXNzZXIpICsgJyI+JyAr IGVzY2FwZUhUTUwodmVyZmFzc2VyQW56KSArICc8L3NwYW4+JyA6ICcnKSArCiAgICAgICAgICAg ICAgICAgICAgKHZlcmZhc3NlckFueiAmJiBkdCA/ICc8c3BhbiBjbGFzcz0ia3AtZWludHJhZy10 cmVubmVyIj7Ctzwvc3Bhbj4nIDogJycpICsKICAgICAgICAgICAgICAgICAgICAoZHQgPyAnPHNw YW4gY2xhc3M9ImtwLWVpbnRyYWctemVpdCI+JyArIGVzY2FwZUhUTUwoZHQpICsgJzwvc3Bhbj4n IDogJycpICsKICAgICAgICAgICAgICAgICc8L2Rpdj4nOwogICAgfQogICAgcmV0dXJuICc8ZGl2 IGNsYXNzPSJrcC1laW50cmFnIj4nICsKICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJrcC1l aW50cmFnLXRleHQiPicgKyB0ZXh0ICsgJzwvZGl2PicgKwogICAgICAgICAgICAgICAgbWV0YSAr CiAgICAgICAgICAgICc8L2Rpdj4nOwp9CgpmdW5jdGlvbiBrcF9odG1sKGRhdHVtLCBrKSB7CiAg ICB2YXIgbGlzdGUgPSBrb21tZW50YXJMaXN0ZShrKTsKICAgIGlmIChsaXN0ZS5sZW5ndGggPT09 IDApIHJldHVybiAnJzsKICAgIHZhciBkRGUgPSBkYXR1bUZvcm1hdERFKGRhdHVtKTsKICAgIHZh ciBuID0gbGlzdGUubGVuZ3RoOwogICAgdmFyIHRpdGVsID0gbiA9PT0gMSA/ICdLb21tZW50YXIn IDogJ0tvbW1lbnRhcmUgKCcgKyBuICsgJyknOwogICAgLy8gTmV1ZXN0ZSB6dWVyc3Qg4oCUIFNl cnZlciBzcGVpY2hlcnQgY2hyb25vbG9naXNjaCAoYWx0IC0+IG5ldSkuCiAgICB2YXIgYm9keSA9 ICcnOwogICAgZm9yICh2YXIgaSA9IGxpc3RlLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7CiAg ICAgICAgYm9keSArPSBrcF9laW50cmFnSHRtbChsaXN0ZVtpXSk7CiAgICB9CiAgICByZXR1cm4g JzxkaXYgY2xhc3M9ImtwLWtvcGYiPicgKwogICAgICAgICAgICAgICAgJzxzcGFuIGNsYXNzPSJr cC1rb3BmLXRpdGVsIj4nICsgZXNjYXBlSFRNTCh0aXRlbCkgKyAnPC9zcGFuPicgKwogICAgICAg ICAgICAgICAgJzxzcGFuIGNsYXNzPSJrcC1rb3BmLWRhdHVtIj4nICsgZXNjYXBlSFRNTChkRGUp ICsgJzwvc3Bhbj4nICsKICAgICAgICAgICAgJzwvZGl2PicgKwogICAgICAgICAgICAnPGRpdiBj bGFzcz0ia3AtYm9keSBrcC1ib2R5LXN0YWNrIj4nICsgYm9keSArICc8L2Rpdj4nOwp9CgpmdW5j dGlvbiBrcF9wb3NpdGlvbmllcmVuKHBvcCwgYW5rZXIpIHsKICAgIHZhciBhciA9IGFua2VyLmdl dEJvdW5kaW5nQ2xpZW50UmVjdCgpOwogICAgdmFyIHZ3ID0gd2luZG93LmlubmVyV2lkdGg7CiAg ICB2YXIgdmggPSB3aW5kb3cuaW5uZXJIZWlnaHQ7CiAgICBwb3AuY2xhc3NMaXN0LnJlbW92ZSgn dmVyc3RlY2t0Jyk7CiAgICBwb3Auc3R5bGUudmlzaWJpbGl0eSA9ICdoaWRkZW4nOwogICAgdmFy IHB3ID0gcG9wLm9mZnNldFdpZHRoOwogICAgdmFyIHBoID0gcG9wLm9mZnNldEhlaWdodDsKICAg IHZhciByYW5kID0gNjsKICAgIC8vIEJldm9yenVndCB1bnRlciBkZXIgWmVsbGUsIHNvbnN0IGRh cnVlYmVyLgogICAgdmFyIHRvcCA9IGFyLmJvdHRvbSArIHJhbmQ7CiAgICBpZiAodG9wICsgcGgg PiB2aCAtIDYpIHRvcCA9IGFyLnRvcCAtIHBoIC0gcmFuZDsKICAgIGlmICh0b3AgPCA2KSB0b3Ag PSA2OwogICAgLy8gSG9yaXpvbnRhbCBhbiBkZXIgbGlua2VuIFplbGxrYW50ZSBhdXNyaWNodGVu LCBhYmVyIG5pY2h0IHVlYmVyIGRlbgogICAgLy8gVmlld3BvcnQtUmFuZCByYWdlbiBsYXNzZW4u CiAgICB2YXIgbGVmdCA9IGFyLmxlZnQ7CiAgICBpZiAobGVmdCArIHB3ID4gdncgLSA2KSBsZWZ0 ID0gdncgLSBwdyAtIDY7CiAgICBpZiAobGVmdCA8IDYpIGxlZnQgPSA2OwogICAgcG9wLnN0eWxl LmxlZnQgPSBNYXRoLnJvdW5kKGxlZnQpICsgJ3B4JzsKICAgIHBvcC5zdHlsZS50b3AgID0gTWF0 aC5yb3VuZCh0b3ApICArICdweCc7CiAgICBwb3Auc3R5bGUudmlzaWJpbGl0eSA9ICcnOwp9Cgpl eHBvcnQgZnVuY3Rpb24ga29tbWVudGFyUG9wb3ZlclplaWdlbih6ZWxsZSkgewogICAgaWYgKCF6 ZWxsZSB8fCAhemVsbGUuY2xhc3NMaXN0IHx8ICF6ZWxsZS5jbGFzc0xpc3QuY29udGFpbnMoJ2hh dC1rb21tZW50YXInKSkgcmV0dXJuOwogICAgaWYgKGtwX3ZlcnN0ZWNrVGltZXIpIHsgY2xlYXJU aW1lb3V0KGtwX3ZlcnN0ZWNrVGltZXIpOyBrcF92ZXJzdGVja1RpbWVyID0gbnVsbDsgfQogICAg aWYgKGtwX3plaWdlVGltZXIpICAgIHsgY2xlYXJUaW1lb3V0KGtwX3plaWdlVGltZXIpOyBrcF96 ZWlnZVRpbWVyID0gbnVsbDsgfQogICAga3BfemVpZ2VUaW1lciA9IHNldFRpbWVvdXQoZnVuY3Rp b24oKSB7CiAgICAgICAga3BfemVpZ2VUaW1lciA9IG51bGw7CiAgICAgICAgdmFyIGRhdHVtID0g emVsbGUuZ2V0QXR0cmlidXRlKCdkYXRhLWRhdHVtJyk7CiAgICAgICAgdmFyIHBpZCAgID0gemVs bGUuZ2V0QXR0cmlidXRlKCdkYXRhLXBlcnNvbicpOwogICAgICAgIGlmICghZGF0dW0gfHwgIXBp ZCkgcmV0dXJuOwogICAgICAgIHZhciBrID0ga29tbWVudGFyRWludHJhZyhkYXR1bSwgcGlkKTsK ICAgICAgICBpZiAoIWsgfHwgIWtvbW1lbnRhclRleHQoaykpIHJldHVybjsKICAgICAgICB2YXIg cG9wID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3ZpMy1rb21tZW50YXItcG9wb3ZlcicpOwog ICAgICAgIGlmICghcG9wKSByZXR1cm47CiAgICAgICAgcG9wLmlubmVySFRNTCA9IGtwX2h0bWwo ZGF0dW0sIGspOwogICAgICAgIHBvcC5zZXRBdHRyaWJ1dGUoJ2FyaWEtaGlkZGVuJywgJ2ZhbHNl Jyk7CiAgICAgICAga3BfcG9zaXRpb25pZXJlbihwb3AsIHplbGxlKTsKICAgIH0sIDI1MCk7Cn0K CmV4cG9ydCBmdW5jdGlvbiBrb21tZW50YXJQb3BvdmVyVmVyc3RlY2tlbigpIHsKICAgIGlmIChr cF96ZWlnZVRpbWVyKSAgICB7IGNsZWFyVGltZW91dChrcF96ZWlnZVRpbWVyKTsga3BfemVpZ2VU aW1lciA9IG51bGw7IH0KICAgIGlmIChrcF92ZXJzdGVja1RpbWVyKSBjbGVhclRpbWVvdXQoa3Bf dmVyc3RlY2tUaW1lcik7CiAgICBrcF92ZXJzdGVja1RpbWVyID0gc2V0VGltZW91dChmdW5jdGlv bigpIHsKICAgICAgICB2YXIgcG9wID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3ZpMy1rb21t ZW50YXItcG9wb3ZlcicpOwogICAgICAgIGlmIChwb3ApIHsKICAgICAgICAgICAgcG9wLmNsYXNz TGlzdC5hZGQoJ3ZlcnN0ZWNrdCcpOwogICAgICAgICAgICBwb3Auc2V0QXR0cmlidXRlKCdhcmlh LWhpZGRlbicsICd0cnVlJyk7CiAgICAgICAgfQogICAgfSwgMTUwKTsKfQoKLy8gV2lyZCB2b20g UG9wb3ZlciBzZWxic3QgKG1vdXNlZW50ZXIpIGdlcnVmZW4sIGRhbWl0IGVzIG9mZmVuIGJsZWli dAovLyBzb2xhbmdlIGRlciBVc2VyIG1pdCBkZXIgTWF1cyBkcnVlYmVyIGlzdC4KZXhwb3J0IGZ1 bmN0aW9uIGtvbW1lbnRhclBvcG92ZXJGZXN0aGFsdGVuKCkgewogICAgaWYgKGtwX3ZlcnN0ZWNr VGltZXIpIHsgY2xlYXJUaW1lb3V0KGtwX3ZlcnN0ZWNrVGltZXIpOyBrcF92ZXJzdGVja1RpbWVy ID0gbnVsbDsgfQp9CgpleHBvcnQgZnVuY3Rpb24ga29tbWVudGFyTGFkZW4oZGF0dW0sIHBlcnNv bklkKSB7CiAgICByZXR1cm4ga29tbWVudGFyVGV4dChrb21tZW50YXJFaW50cmFnKGRhdHVtLCBw ZXJzb25JZCkpOwp9CgovLyBIYWVuZ3QgZWluZW4gbmV1ZW4gS29tbWVudGFyIGFuLiBFcnNhdHog ZnVlciBkYXMgZnJ1ZWhlciB1ZWJlcnNjaHJlaWJlbmRlCi8vIGtvbW1lbnRhclNwZWljaGVybigp IOKAlCBhbHRlIEF1ZnJ1ZmVyLCBkaWUgZWluZW4gbGVlcmVuIFRleHQgdWViZXJnZWJlbiwKLy8g ZXJoYWx0ZW4gamV0enQgbnVyIGVpbiBuby1vcCAoTG9lc2NoZW4gZ2VodCB1ZWJlciBrb21tZW50 YXJMb2VzY2hlbikuCi8vIENhbGxiYWNrIGVyaGFlbHQgZGllIG5ldSB2ZXJnZWJlbmUgS29tbWVu dGFyLUlELCBzb2JhbGQgZGVyIFNlcnZlciBiZXN0YWV0aWd0LgpleHBvcnQgZnVuY3Rpb24ga29t bWVudGFySGluenVmdWVnZW4oZGF0dW0sIHBlcnNvbklkLCB0ZXh0LCBvbkZlcnRpZykgewogICAg dGV4dCA9ICh0ZXh0IHx8ICcnKS50cmltKCk7CiAgICBpZiAoIXRleHQpIHsKICAgICAgICBpZiAo dHlwZW9mIG9uRmVydGlnID09PSAnZnVuY3Rpb24nKSBvbkZlcnRpZyhudWxsKTsKICAgICAgICBy ZXR1cm47CiAgICB9CiAgICBpZiAoIVoucGxhbnVuZy5rb21tZW50YXJlKSBaLnBsYW51bmcua29t bWVudGFyZSA9IHt9OwogICAgaWYgKCFaLnBsYW51bmcua29tbWVudGFyZVtkYXR1bV0pIFoucGxh bnVuZy5rb21tZW50YXJlW2RhdHVtXSA9IHt9OwogICAgdmFyIHBpZFN0ciA9IFN0cmluZyhwZXJz b25JZCk7CiAgICAvLyBPcHRpbWlzdGlzY2ggbG9rYWwgYW5oYWVuZ2VuIOKAlCB0ZW1wb3JhZXJl IElELCB3aXJkIGR1cmNoIFNlcnZlci1JRCBlcnNldHp0LgogICAgdmFyIHRlbXBJZCA9ICdrX2xv a2FsXycgKyBEYXRlLm5vdygpICsgJ18nICsgTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogOTk5 OTkpOwogICAgdmFyIGxpc3RlID0ga29tbWVudGFyTGlzdGUoWi5wbGFudW5nLmtvbW1lbnRhcmVb ZGF0dW1dW3BpZFN0cl0pLnNsaWNlKCk7CiAgICBsaXN0ZS5wdXNoKHsKICAgICAgICBpZDogICAg ICAgICAgIHRlbXBJZCwKICAgICAgICB0ZXh0OiAgICAgICAgIHRleHQsCiAgICAgICAgZ2VhZW5k ZXJ0QW06ICBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksCiAgICAgICAgZ2VhZW5kZXJ0Vm9uOiBa LmJlbnV0emVyIHx8ICcnCiAgICB9KTsKICAgIFoucGxhbnVuZy5rb21tZW50YXJlW2RhdHVtXVtw aWRTdHJdID0gbGlzdGU7CiAgICB2YXIgeiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5ncmlk LXplbGxlW2RhdGEtZGF0dW09IicgKyBkYXR1bSArICciXVtkYXRhLXBlcnNvbj0iJyArIHBpZFN0 ciArICciXScpOwogICAgaWYgKHopIHouY2xhc3NMaXN0LmFkZCgnaGF0LWtvbW1lbnRhcicpOwoK ICAgIGFwaVBvc3QoJy9hcGkvcGxhbnVuZy9rb21tZW50YXInLCB7IGRhdHVtOiBkYXR1bSwgcGVy c29uSWQ6IHBlcnNvbklkLCB0ZXh0OiB0ZXh0IH0pCiAgICAgICAgLnRoZW4oZnVuY3Rpb24ocmVz KSB7CiAgICAgICAgICAgIGlmIChyZXMgJiYgcmVzLmtvbW1lbnRhcklkKSB7CiAgICAgICAgICAg ICAgICAvLyBTZXJ2ZXItU3RhbmQgdWViZXJuZWhtZW46IElEICsgU2VydmVyLVplaXRzdGVtcGVs IGVyc2V0emVuCiAgICAgICAgICAgICAgICAvLyBkZW4gb3B0aW1pc3Rpc2NoZW4gRWludHJhZyAo Z2xlaWNoZXIgVGV4dCwgbmV1ZXJlIFdlcnRlKS4KICAgICAgICAgICAgICAgIHZhciBha3R1ZWxs ID0ga29tbWVudGFyTGlzdGUoWi5wbGFudW5nLmtvbW1lbnRhcmVbZGF0dW1dW3BpZFN0cl0pLnNs aWNlKCk7CiAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gYWt0dWVsbC5sZW5ndGggLSAxOyBp ID49IDA7IGktLSkgewogICAgICAgICAgICAgICAgICAgIGlmIChha3R1ZWxsW2ldLmlkID09PSB0 ZW1wSWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgYWt0dWVsbFtpXSA9IHsKICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGlkOiAgICAgICAgICAgcmVzLmtvbW1lbnRhcklkLAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgdGV4dDogICAgICAgICB0ZXh0LAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgZ2VhZW5kZXJ0QW06ICByZXMuZ2VhZW5kZXJ0QW0gfHwgYWt0dWVsbFtpXS5n ZWFlbmRlcnRBbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlYWVuZGVydFZvbjogcmVz LmdlYWVuZGVydFZvbiB8fCBha3R1ZWxsW2ldLmdlYWVuZGVydFZvbgogICAgICAgICAgICAgICAg ICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAg ICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBaLnBsYW51bmcua29tbWVu dGFyZVtkYXR1bV1bcGlkU3RyXSA9IGFrdHVlbGw7CiAgICAgICAgICAgIH0KICAgICAgICAgICAg dG9hc3QoJ0tvbW1lbnRhciBoaW56dWdlZsO8Z3QnLCAnZXJmb2xnJyk7CiAgICAgICAgICAgIGlm ICh0eXBlb2Ygb25GZXJ0aWcgPT09ICdmdW5jdGlvbicpIG9uRmVydGlnKHJlcyAmJiByZXMua29t bWVudGFySWQgfHwgbnVsbCk7CiAgICAgICAgfSkKICAgICAgICAuY2F0Y2goZnVuY3Rpb24oZSkg ewogICAgICAgICAgICAvLyBPcHRpbWlzdGlzY2hlbiBFaW50cmFnIHp1cnVlY2tuZWhtZW4sIGRh bWl0IGxva2FsZXIgU3RhbmQgbmljaHQKICAgICAgICAgICAgLy8gZGF1ZXJoYWZ0IG1pdCBlaW5l bSBuaWNodC1wZXJzaXN0aWVydGVuIEtvbW1lbnRhciBsZWJ0LgogICAgICAgICAgICB2YXIgYWt0 dWVsbCA9IGtvbW1lbnRhckxpc3RlKFoucGxhbnVuZy5rb21tZW50YXJlW2RhdHVtXVtwaWRTdHJd KQogICAgICAgICAgICAgICAgLmZpbHRlcihmdW5jdGlvbihrKSB7IHJldHVybiBrLmlkICE9PSB0 ZW1wSWQ7IH0pOwogICAgICAgICAgICBpZiAoYWt0dWVsbC5sZW5ndGgpIHsKICAgICAgICAgICAg ICAgIFoucGxhbnVuZy5rb21tZW50YXJlW2RhdHVtXVtwaWRTdHJdID0gYWt0dWVsbDsKICAgICAg ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGRlbGV0ZSBaLnBsYW51bmcua29tbWVudGFy ZVtkYXR1bV1bcGlkU3RyXTsKICAgICAgICAgICAgICAgIGlmICh6KSB6LmNsYXNzTGlzdC5yZW1v dmUoJ2hhdC1rb21tZW50YXInKTsKICAgICAgICAgICAgfQogICAgICAgICAgICB0b2FzdCgnRmVo bGVyOiAnICsgZS5tZXNzYWdlLCAnZmVobGVyJyk7CiAgICAgICAgICAgIGlmICh0eXBlb2Ygb25G ZXJ0aWcgPT09ICdmdW5jdGlvbicpIG9uRmVydGlnKG51bGwpOwogICAgICAgIH0pOwp9CgovLyBM b2VzY2h0IGVpbmVuIGVpbnplbG5lbiBLb21tZW50YXIgYXVzIGRlciBMaXN0ZS4gQmVyZWNodGln dW5nIHdpcmQKLy8gc2VydmVyc2VpdGlnIGdlZ2VuIGlzdFN1cGVyVXNlciArIGlzdEdlc2FtdHZl cmFudHdvcnRsaWNoIGdlcHJ1ZWZ0IOKAlAovLyBoaWVyIG51ciBvcHRpbWlzdGlzY2hlIGxva2Fs ZSBFbnRmZXJudW5nIG1pdCBSb2xsYmFjayBiZWkgRmVobGVyLgpleHBvcnQgZnVuY3Rpb24ga29t bWVudGFyTG9lc2NoZW4oZGF0dW0sIHBlcnNvbklkLCBrb21tZW50YXJJZCwgb25GZXJ0aWcpIHsK ICAgIHZhciBwaWRTdHIgPSBTdHJpbmcocGVyc29uSWQpOwogICAgdmFyIHZvcmggPSBaLnBsYW51 bmcua29tbWVudGFyZSAmJiBaLnBsYW51bmcua29tbWVudGFyZVtkYXR1bV0gJiYgWi5wbGFudW5n LmtvbW1lbnRhcmVbZGF0dW1dW3BpZFN0cl07CiAgICB2YXIgbGlzdGVWb3JoZXIgPSBrb21tZW50 YXJMaXN0ZSh2b3JoKTsKICAgIHZhciBsaXN0ZU5hY2hoZXIgPSBsaXN0ZVZvcmhlci5maWx0ZXIo ZnVuY3Rpb24oaykgeyByZXR1cm4gay5pZCAhPT0ga29tbWVudGFySWQ7IH0pOwogICAgaWYgKGxp c3RlTmFjaGhlci5sZW5ndGggPT09IGxpc3RlVm9yaGVyLmxlbmd0aCkgewogICAgICAgIHRvYXN0 KCdLb21tZW50YXIgbG9rYWwgbmljaHQgZ2VmdW5kZW4nLCAnd2FybnVuZycpOwogICAgICAgIGlm ICh0eXBlb2Ygb25GZXJ0aWcgPT09ICdmdW5jdGlvbicpIG9uRmVydGlnKGZhbHNlKTsKICAgICAg ICByZXR1cm47CiAgICB9CiAgICAvLyBPcHRpbWlzdGlzY2ggbG9rYWwgZW50ZmVybmVuCiAgICBp ZiAobGlzdGVOYWNoaGVyLmxlbmd0aCkgewogICAgICAgIFoucGxhbnVuZy5rb21tZW50YXJlW2Rh dHVtXVtwaWRTdHJdID0gbGlzdGVOYWNoaGVyOwogICAgfSBlbHNlIHsKICAgICAgICBkZWxldGUg Wi5wbGFudW5nLmtvbW1lbnRhcmVbZGF0dW1dW3BpZFN0cl07CiAgICAgICAgdmFyIHogPSBkb2N1 bWVudC5xdWVyeVNlbGVjdG9yKCcuZ3JpZC16ZWxsZVtkYXRhLWRhdHVtPSInICsgZGF0dW0gKyAn Il1bZGF0YS1wZXJzb249IicgKyBwaWRTdHIgKyAnIl0nKTsKICAgICAgICBpZiAoeikgei5jbGFz c0xpc3QucmVtb3ZlKCdoYXQta29tbWVudGFyJyk7CiAgICB9CiAgICAvLyBERUxFVEUgbWl0IEJv ZHkg4oCUIGFwaURlbGV0ZSBpbSBjb3JlX2FwaSBoYXQga2VpbmVuIEJvZHktUGFyYW1ldGVyLAog ICAgLy8gZGFoZXIgZGlyZWt0ZXIgYXBpKCktQXVmcnVmLgogICAgYXBpKCcvYXBpL3BsYW51bmcv a29tbWVudGFyJywgewogICAgICAgIG1ldGhvZDogICdERUxFVEUnLAogICAgICAgIGhlYWRlcnM6 IHsgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyB9LAogICAgICAgIGJvZHk6ICAg IEpTT04uc3RyaW5naWZ5KHsgZGF0dW06IGRhdHVtLCBwZXJzb25JZDogcGVyc29uSWQsIGtvbW1l bnRhcklkOiBrb21tZW50YXJJZCB9KQogICAgfSkKICAgICAgICAudGhlbihmdW5jdGlvbigpIHsK ICAgICAgICAgICAgdG9hc3QoJ0tvbW1lbnRhciBnZWzDtnNjaHQnLCAnZXJmb2xnJyk7CiAgICAg ICAgICAgIGlmICh0eXBlb2Ygb25GZXJ0aWcgPT09ICdmdW5jdGlvbicpIG9uRmVydGlnKHRydWUp OwogICAgICAgIH0pCiAgICAgICAgLmNhdGNoKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgLy8g Um9sbGJhY2sKICAgICAgICAgICAgWi5wbGFudW5nLmtvbW1lbnRhcmVbZGF0dW1dID0gWi5wbGFu dW5nLmtvbW1lbnRhcmVbZGF0dW1dIHx8IHt9OwogICAgICAgICAgICBaLnBsYW51bmcua29tbWVu dGFyZVtkYXR1bV1bcGlkU3RyXSA9IGxpc3RlVm9yaGVyOwogICAgICAgICAgICB2YXIgejIgPSBk b2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuZ3JpZC16ZWxsZVtkYXRhLWRhdHVtPSInICsgZGF0dW0g KyAnIl1bZGF0YS1wZXJzb249IicgKyBwaWRTdHIgKyAnIl0nKTsKICAgICAgICAgICAgaWYgKHoy KSB6Mi5jbGFzc0xpc3QuYWRkKCdoYXQta29tbWVudGFyJyk7CiAgICAgICAgICAgIHRvYXN0KCdM w7ZzY2hlbiBmZWhsZ2VzY2hsYWdlbjogJyArIGUubWVzc2FnZSwgJ2ZlaGxlcicpOwogICAgICAg ICAgICBpZiAodHlwZW9mIG9uRmVydGlnID09PSAnZnVuY3Rpb24nKSBvbkZlcnRpZyhmYWxzZSk7 CiAgICAgICAgfSk7Cn0KCi8vIExlZ2FjeS1XcmFwcGVyOiBmYWVsbHQgYXVmIEhpbnp1ZnVlZ2Vu IC8gTG9lc2NoZW4tYWxsZXIgenVydWVjay4gTnVyIGZ1ZXIKLy8gQXVmcnVmZXIsIGRpZSBub2No IG5pY2h0IGF1ZiBkaWUgbmV1ZW4gRnVua3Rpb25lbiB1bWdlc3RlbGx0IHNpbmQgKHouQi4KLy8g YWx0ZSBCdWxrLU9wZXJhdGlvbmVuKS4gTmV1ZXIgQ29kZSBudXR6dCBrb21tZW50YXJIaW56dWZ1 ZWdlbiBkaXJla3QuCmV4cG9ydCBmdW5jdGlvbiBrb21tZW50YXJTcGVpY2hlcm4oZGF0dW0sIHBl cnNvbklkLCB0ZXh0KSB7CiAgICB0ZXh0ID0gKHRleHQgfHwgJycpLnRyaW0oKTsKICAgIGlmICh0 ZXh0KSB7CiAgICAgICAga29tbWVudGFySGluenVmdWVnZW4oZGF0dW0sIHBlcnNvbklkLCB0ZXh0 KTsKICAgIH0gZWxzZSB7CiAgICAgICAgLy8gTGVlcmVyIFRleHQgdm9tIExlZ2FjeS1FZGl0b3Ig aGVpc3N0OiBhbGxlcyBsb2VzY2hlbi4gV2lyIGxvZXNjaGVuCiAgICAgICAgLy8gZGVuIGp1ZW5n c3RlbiBLb21tZW50YXIgKGRpZSBBdXN3aXJrdW5nIGlzdCBkaWUgZ2xlaWNoZSB3aWUgZnJ1ZWhl ciwKICAgICAgICAvLyB3ZW5uIG51ciBlaW5lciBleGlzdGllcnQ7IGJlaSBtZWhyZXJlbiBibGVp YnQgZGVyIFZlcmxhdWYgZXJoYWx0ZW4pLgogICAgICAgIHZhciBsaXN0ZSA9IGtvbW1lbnRhckxp c3RlKGtvbW1lbnRhckVpbnRyYWcoZGF0dW0sIHBlcnNvbklkKSk7CiAgICAgICAgaWYgKGxpc3Rl Lmxlbmd0aCA9PT0gMCkgcmV0dXJuOwogICAgICAgIGtvbW1lbnRhckxvZXNjaGVuKGRhdHVtLCBw ZXJzb25JZCwgbGlzdGVbbGlzdGUubGVuZ3RoIC0gMV0uaWQpOwogICAgfQp9CgpleHBvcnQgZnVu Y3Rpb24ga29tbWVudGFyZUltR3JpZEFuemVpZ2VuKCkgewogICAgdmFyIGtvbW1lbnRhcmUgPSBa LnBsYW51bmcua29tbWVudGFyZSB8fCB7fTsKICAgIE9iamVjdC5rZXlzKGtvbW1lbnRhcmUpLmZv ckVhY2goZnVuY3Rpb24oZGF0dW0pIHsKICAgICAgICB2YXIgdGFnS29tbSA9IGtvbW1lbnRhcmVb ZGF0dW1dOwogICAgICAgIE9iamVjdC5rZXlzKHRhZ0tvbW0pLmZvckVhY2goZnVuY3Rpb24ocGlk KSB7CiAgICAgICAgICAgIHZhciBhbnphaGwgPSBrb21tZW50YXJBbnphaGwodGFnS29tbVtwaWRd KTsKICAgICAgICAgICAgaWYgKGFuemFobCA9PT0gMCkgcmV0dXJuOwogICAgICAgICAgICB2YXIg eiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5ncmlkLXplbGxlW2RhdGEtZGF0dW09IicgKyBk YXR1bSArICciXVtkYXRhLXBlcnNvbj0iJyArIHBpZCArICciXScpOwogICAgICAgICAgICBpZiAo IXopIHJldHVybjsKICAgICAgICAgICAgei5jbGFzc0xpc3QuYWRkKCdoYXQta29tbWVudGFyJyk7 CiAgICAgICAgICAgIC8vIENvdW50ZXItQXR0cmlidXQgc3RldWVydCBkZW4gTXVsdGktS29tbWVu dGFyLUluZGlrYXRvciBpbSBDU1MKICAgICAgICAgICAgLy8gKGRhdGEta29tbWVudGFyLWFuemFo bD0yLi5OIC0+IHp1c2FldHpsaWNoZXMgQmFkZ2UgbWl0IFphaGwpLgogICAgICAgICAgICAvLyBC ZWkgMSBLb21tZW50YXIgYmxlaWJ0IG51ciBkZXIgc2NobGljaHRlIEVjay1EcmVpZWNrLU1hcmtl ci4KICAgICAgICAgICAgaWYgKGFuemFobCA+IDEpIHsKICAgICAgICAgICAgICAgIHouc2V0QXR0 cmlidXRlKCdkYXRhLWtvbW1lbnRhci1hbnphaGwnLCBTdHJpbmcoYW56YWhsKSk7CiAgICAgICAg ICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICB6LnJlbW92ZUF0dHJpYnV0ZSgnZGF0YS1rb21t ZW50YXItYW56YWhsJyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgLy8gS2VpbiB0aXRsZS1T dWZmaXggbWVociDigJQgZGFzIEhUTUwtUG9wb3ZlciAoa29tbWVudGFyUG9wb3ZlclplaWdlbikK ICAgICAgICAgICAgLy8gcmVuZGVydCBiZWltIEhvdmVyIGRlbiB2b2xsc3RhZW5kaWdlbiBJbmhh bHQuIE5hdGl2ZSB0aXRsZSBibGVpYnQKICAgICAgICAgICAgLy8gZGFtaXQgZnVlciBTY2hpY2h0 Y29kZS9Mb2NrL1ZlcmZ1ZWdiYXJrZWl0IHJlc2VydmllcnQuCiAgICAgICAgfSk7CiAgICB9KTsK fQoKLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQovLyBGSUxMLUhBTkRMRSAoRXhjZWwtYWVobmxpY2hl ciBGdWVsbC1HcmlmZiBmdWVyIFBsYW5ndW5ncy1aZWxsZW4pCi8vCi8vIE5hY2ggZGVtIFNwZWlj aGVybiBlaW5lcyBTY2hpY2h0d2VydHMgZXJzY2hlaW50IHVudGVuIHJlY2h0cyBhbiBkZXIKLy8g UXVlbGwtWmVsbGUgZWluIGtsZWluZXMgYmxhdWVzIFF1YWRyYXQuIE1pdCBnZWRydWVja3RlciBN YXVzdGFzdGUgbmFjaAovLyByZWNodHMgb2RlciBsaW5rcyB6aWVoZW4gLT4gZGVyIFdlcnQgd2ly ZCBhdWYgZGllIHVlYmVyc3RyaWNoZW5lbiBUYWdlCi8vIGRlcnNlbGJlbiBQZXJzb24gdWViZXJ0 cmFnZW4gKGdlbmF1IHdpZSBkYXMgRXhjZWwtRnVlbGxrYWVzdGNoZW4pLgovLwovLyBQZXJtaXNz aW9uLUNoZWNrIGplIFppZWwtWmVsbGUgdWViZXIgZGFyZlplbGxlRWRpdGllcmVuIC0tIGdlc3Bl cnJ0ZQovLyBaZWxsZW4gd2VyZGVuIHVlYmVyc3BydW5nZW4sIG5pY2h0IGdlZnVlbGx0LiBEaWUg ZWlnZW50bGljaGUgU2NocmVpYi0KLy8gb3BlcmF0aW9uIGxhZXVmdCBhbHMgZWluIGVpbnppZ2Vy IEJ1bGstUE9TVCBhbiAvYXBpL3BsYW51bmcvemVsbGVuLWJ1bGsKLy8gLS0gZWluIEhUVFAtUm91 bmR0cmlwICsgZWluIERhdGVpLVNjaHJlaWJ2b3JnYW5nIGZ1ZXIgZGVuIGdhbnplbiBEcmFnLgov LyBPcHRpbWlzdGlzY2hlcyBsb2thbGVzIFVwZGF0ZSArIFJvbGxiYWNrIGJlaSBTZXJ2ZXItRmVo bGVyIG9kZXIgcGVyLQovLyBaZWxsZS1QZXJtaXNzaW9uLUFibGVobnVuZy4KLy8gPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQoKdmFyIGZ1ZWxsID0geyBxdWVsbGU6IG51bGwsIGFrdGl2OiBmYWxzZSwgemll bGU6IFtdIH07CgovLyBTcHJpbnQgRC0xICgyMDI2LTA1LTI5KTogRWlubWFsaWdlciBEaXNjb3Zl cnktSGludCBmdWVyIGRlbiBGaWxsLUhhbmRsZS4KLy8gVXNlciB3aXNzZW4gb2Z0IG5pY2h0LCBk YXNzIGRhcyBrbGVpbmUgUXVhZHJhdCB1bnRlbiByZWNodHMgaW4gZGVyIGFrdGl2ZW4KLy8gWmVs bGUgRXhjZWwtYWVobmxpY2hlIERyYWctRmlsbC1GdW5rdGlvbmFsaXRhZXQgYmlldGV0LiBCZWlt IGVyc3RlbiBNYWwKLy8gemVpZ2VuIHdpciBlaW5lbiBUaXBwLVRvYXN0LCBkYW5hY2ggbmllIHdp ZWRlciAobG9jYWxTdG9yYWdlLUZsYWcpLgovLyAudjI6IFRpcHAtVGV4dCB3dXJkZSBrb3JyaWdp ZXJ0IChudXIgbGlua3MvcmVjaHRzKSDigJQgS2V5IGdlYnVtcHQsIGRhbWl0IGRlcgovLyBuZXVl IEhpbndlaXMgYXVjaCBOdXR6ZXJuLCBkaWUgZGVuIGFsdGVuIGdlc2VoZW4gaGFiZW4sIGVpbm1h bGlnIGVyc2NoZWludC4KdmFyIEZJTExfSElOVF9MU19LRVkgPSAndmkzLmZpbGxIYW5kbGVIaW50 R2VzZWhlbi52Mic7CmZ1bmN0aW9uIGZ1ZWxsSGludEVpbm1hbGlnWmVpZ2VuKCkgewogICAgdHJ5 IHsKICAgICAgICBpZiAobG9jYWxTdG9yYWdlLmdldEl0ZW0oRklMTF9ISU5UX0xTX0tFWSkgPT09 ICcxJykgcmV0dXJuOwogICAgICAgIHRvYXN0KCdUaXBwOiBEYXMga2xlaW5lIFF1YWRyYXQgdW50 ZW4gcmVjaHRzIGluIGRlciBaZWxsZSBrYW5uc3QgZHUgbmFjaCBsaW5rcyBvZGVyIHJlY2h0cyB6 aWVoZW4g4oCUIGRlciBXZXJ0IHdpcmQgYXVmIGFsbGUgWmVsbGVuIGluIGRlcnNlbGJlbiBaZWls ZSB1ZWJlcnRyYWdlbi4gKE51ciBpbm5lcmhhbGIgZGVyIGVpZ2VuZW4gWmVpbGUsIGtlaW4gQXVz ZnVlbGxlbiBuYWNoIG9iZW4vdW50ZW4uKScsICdpbmZvJywgeyBkYXVlcjogMTAwMDAgfSk7CiAg ICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oRklMTF9ISU5UX0xTX0tFWSwgJzEnKTsKICAgIH0g Y2F0Y2ggKF8pIHsgLyogbG9jYWxTdG9yYWdlIGthbm4gYmxvY2tpZXJ0IHNlaW4sIGRhbm4gZWJl biBrZWluIEhpbnQgKi8gfQp9CgpleHBvcnQgZnVuY3Rpb24gZnVlbGxIYW5kbGVaZWlnZW4ocXVl bGxlKSB7CiAgICAvLyBxdWVsbGUgPSB7IGRhdHVtLCBwaWQsIHdlcnQgfQogICAgZnVlbGxIYW5k bGVWZXJzdGVja2VuKCk7CiAgICBmdWVsbC5xdWVsbGUgPSBxdWVsbGU7CiAgICBmdWVsbEhpbnRF aW5tYWxpZ1plaWdlbigpOwogICAgLy8gSGF1cHQtU2VsZWt0b3IgKHplaWxlLWdlYnVuZGVuKSAr IEZhbGxiYWNrICh6ZWxsZSBkaXJla3QpIOKAlCBaZWxsZW4KICAgIC8vIHRyYWdlbiBzb3dvaGwg ZGF0YS1kYXR1bSBhbHMgYXVjaCBkYXRhLXBlcnNvbiwgZGVyIEZhbGxiYWNrIGdyZWlmdAogICAg Ly8gZmFsbHMgZGllIGdyaWQtemVpbGUtV3JhcHBlci1TdHJ1a3R1ciBzaWNoIGFlbmRlcnQuCiAg ICB2YXIgcXVlbGxaZWxsZSA9CiAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2dyaWQt ZGF0ZW4gLmdyaWQtemVpbGVbZGF0YS1wZXJzb24taWQ9IicgKyBxdWVsbGUucGlkICsKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICciXSAuZ3JpZC16ZWxsZVtkYXRhLWRhdHVtPSInICsg cXVlbGxlLmRhdHVtICsgJyJdJykgfHwKICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcu Z3JpZC16ZWxsZVtkYXRhLWRhdHVtPSInICsgcXVlbGxlLmRhdHVtICsKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICciXVtkYXRhLXBlcnNvbj0iJyArIHF1ZWxsZS5waWQgKyAnIl0nKTsK ICAgIGlmICghcXVlbGxaZWxsZSkgcmV0dXJuOwogICAgcXVlbGxaZWxsZS5jbGFzc0xpc3QuYWRk KCdncmlkLXplbGxlLWZpbGwtc291cmNlJyk7CiAgICB2YXIgaCA9IGRvY3VtZW50LmdldEVsZW1l bnRCeUlkKCdmaWxsLWhhbmRsZScpOwogICAgaWYgKCFoKSB7CiAgICAgICAgaCA9IGRvY3VtZW50 LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogICAgICAgIGguaWQgPSAnZmlsbC1oYW5kbGUnOwogICAg ICAgIGgudGl0bGUgPSAnWmllaGVuLCB1bSBkZW4gV2VydCBhdWYgd2VpdGVyZSBUYWdlIGluIGRp ZXNlciBaZWlsZSB6dSDDvGJlcnRyYWdlbic7CiAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRD aGlsZChoKTsKICAgICAgICBoLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIGZ1ZWxsU3Rh cnQpOwogICAgfQogICAgLy8gSGFuZGxlIHZvbGxzdGFlbmRpZyBJTk5FUkhBTEIgZGVyIFplbGxl IGluIGRlciB1bnRlcmVuIHJlY2h0ZW4gRWNrZQogICAgLy8gcGxhdHppZXJlbiAoOHg4cHggSWNv biArIDFweCBSYW5kIHp1bSBaZWxscmFuZCkuIFdlcnRlIG11ZXNzZW4gbWl0CiAgICAvLyBDU1Mt R3JvZXNzZSAjZmlsbC1oYW5kbGUgaW4gc3R5bGUuY3NzIHp1c2FtbWVucGFzc2VuLgogICAgdmFy IHIgPSBxdWVsbFplbGxlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOwogICAgaC5zdHlsZS5sZWZ0 ID0gKHIucmlnaHQgLSA5KSArICdweCc7CiAgICBoLnN0eWxlLnRvcCAgPSAoci5ib3R0b20gLSA5 KSArICdweCc7CiAgICBoLnN0eWxlLmRpc3BsYXkgPSAnJzsKfQoKLy8gQW5rZXJwdW5rdCBmdWVy IGRlbiBTaW5nbGUtQ2xpY2sgYXVmIGVpbmUgWmVsbGU6IGxpZXN0IGRhdHVtL3BpZC93ZXJ0Ci8v IGRpcmVrdCBhdXMgZGVtIERPTS1FbGVtZW50IHVuZCBwb3NpdGlvbmllcnQgZGFzIEhhbmRsZSBk b3J0LiBTbwovLyBlcnNjaGVpbnQgZGFzIFF1YWRyYXQgZGF1ZXJoYWZ0IGFuIGRlciB6dWxldHp0 IGFrdGl2aWVydGVuIFplbGxlIOKAlAovLyBhbmFsb2cgenVyICJha3RpdmVuIFplbGxlIiBpbiBF eGNlbC4KZXhwb3J0IGZ1bmN0aW9uIGZ1ZWxsSGFuZGxlQW5aZWxsZSh6ZWxsZSkgewogICAgaWYg KCF6ZWxsZSB8fCAhemVsbGUuY2xhc3NMaXN0IHx8ICF6ZWxsZS5jbGFzc0xpc3QuY29udGFpbnMo J2dyaWQtemVsbGUnKSkgcmV0dXJuOwogICAgdmFyIGRhdHVtID0gemVsbGUuZ2V0QXR0cmlidXRl KCdkYXRhLWRhdHVtJyk7CiAgICB2YXIgcGlkID0gemVsbGUuZ2V0QXR0cmlidXRlKCdkYXRhLXBl cnNvbicpOwogICAgaWYgKCFkYXR1bSB8fCAhcGlkKSByZXR1cm47CiAgICB2YXIgd2VydCA9ICgo Wi5wbGFudW5nLmVpbnRyYWVnZSB8fCB7fSlbZGF0dW1dIHx8IHt9KVtwaWRdIHx8ICcnOwogICAg ZnVlbGxIYW5kbGVaZWlnZW4oeyBkYXR1bTogZGF0dW0sIHBpZDogcGlkLCB3ZXJ0OiB3ZXJ0IH0p Owp9CgpleHBvcnQgZnVuY3Rpb24gZnVlbGxIYW5kbGVWZXJzdGVja2VuKCkgewogICAgdmFyIGgg PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZmlsbC1oYW5kbGUnKTsKICAgIGlmIChoKSBoLnN0 eWxlLmRpc3BsYXkgPSAnbm9uZSc7CiAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuZ3Jp ZC16ZWxsZS1maWxsLXRhcmdldCwuZ3JpZC16ZWxsZS1maWxsLXNvdXJjZScpCiAgICAgICAgLmZv ckVhY2goZnVuY3Rpb24oZWwpIHsgZWwuY2xhc3NMaXN0LnJlbW92ZSgnZ3JpZC16ZWxsZS1maWxs LXRhcmdldCcsJ2dyaWQtemVsbGUtZmlsbC1zb3VyY2UnKTsgfSk7CiAgICBmdWVsbC5xdWVsbGUg PSBudWxsOwogICAgZnVlbGwuYWt0aXYgPSBmYWxzZTsKICAgIGZ1ZWxsLnppZWxlID0gW107Cn0K Ci8vIEV4dGVybmVyIExlc2UtSGVscGVyOiBsYWV1ZnQgZ2VyYWRlIGVpbiBEcmFnLVZvcmdhbmc/ IFdpcmQgdm9tIEhvdmVyLQovLyBIYW5kbGVyIGluIGFwcC5qcyBnZXBydWVmdCwgZGFtaXQgZGFz IFZlcmxhc3NlbiBkZXMgR3JpZCB3YWVocmVuZCBlaW5lcwovLyBEcmFncyBuaWNodCBkYXMgSGFu ZGxlIHZlcnN0ZWNrdCB1bmQgZGVuIERyYWcgYWJicmljaHQuCmV4cG9ydCBmdW5jdGlvbiBmdWVs bElzdEFrdGl2KCkgeyByZXR1cm4gZnVlbGwuYWt0aXY7IH0KCmZ1bmN0aW9uIGZ1ZWxsU3RhcnQo ZSkgewogICAgaWYgKCFmdWVsbC5xdWVsbGUpIHJldHVybjsKICAgIGUucHJldmVudERlZmF1bHQo KTsKICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7CiAgICBmdWVsbC5ha3RpdiA9IHRydWU7CiAgICBm dWVsbC56aWVsZSA9IFtdOwogICAgLy8gV2FlaHJlbmQgZGVzIERyYWdzIEhhbmRsZSBkdXJjaGts aWNrYmFyIG1hY2hlbiDigJQgc29uc3QgbGllZmVydAogICAgLy8gZWxlbWVudEZyb21Qb2ludCBk YXMgSGFuZGxlIHN0YXR0IGRpZSBaZWxsZSBkYXJ1bnRlciwgdW5kIGRlciBEcmFnCiAgICAvLyB2 ZXJmZWhsdCBkYXMgWmllbC4KICAgIHZhciBoID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Zp bGwtaGFuZGxlJyk7CiAgICBpZiAoaCkgaC5zdHlsZS5wb2ludGVyRXZlbnRzID0gJ25vbmUnOwog ICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgZnVlbGxNb3ZlKTsKICAg IGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCBmdWVsbEVuZCk7CiAgICBkb2N1 bWVudC5ib2R5LnN0eWxlLmN1cnNvciA9ICdjcm9zc2hhaXInOwp9CgpmdW5jdGlvbiBmdWVsbE1v dmUoZSkgewogICAgaWYgKCFmdWVsbC5ha3RpdikgcmV0dXJuOwogICAgdmFyIHppZWwgPSBkb2N1 bWVudC5lbGVtZW50RnJvbVBvaW50KGUuY2xpZW50WCwgZS5jbGllbnRZKTsKICAgIGlmICghemll bCkgcmV0dXJuOwogICAgLy8gRGVmZW5zaXZlOiBmYWxscyBhdXMgaXJnZW5kZWluZW0gR3J1bmQg ZGFzIEhhbmRsZSBkb2NoIGltIFdlZyBpc3QKICAgIGlmICh6aWVsLmlkID09PSAnZmlsbC1oYW5k bGUnKSByZXR1cm47CiAgICB2YXIgemVsbGUgPSB6aWVsLmNsb3Nlc3QgJiYgemllbC5jbG9zZXN0 KCcuZ3JpZC16ZWxsZScpOwogICAgaWYgKCF6ZWxsZSkgcmV0dXJuOwogICAgLy8gTlVSIGhvcml6 b250YWwgaW4gZGVyIEVJR0VORU4gWmVpbGU6IGRlciBDdXJzb3IgYmVzdGltbXQgYWxsZWluIGRp ZQogICAgLy8gU1BBTFRFIChEYXR1bSk7IGRpZSBaZWlsZSAoUGVyc29uKSBibGVpYnQgSU1NRVIg ZGllIFF1ZWxsLVplaWxlLiBEYW1pdAogICAgLy8gZ2lidCBlcyBrZWluIEVyd2VpdGVybiBuYWNo IG9iZW4vdW50ZW4g4oCUIGF1Y2ggd2VubiBkZXIgQ3Vyc29yIHZlcnRpa2FsCiAgICAvLyBhYmRy aWZ0ZXQsIGZvbGd0IGRlciBGaWxsIG51ciBkZXIgU3BhbHRlIGluIGRlciBBdXNnYW5nc3plaWxl ICh3aWUgZGVyCiAgICAvLyBFeGNlbC1GaWxsLUdyaWZmLCBoaWVyIGJld3Vzc3QgYXVmIGRpZSBl aW5lIFplaWxlIGJlc2NocmFlbmt0KS4KICAgIHZhciBkYXR1bSA9IHplbGxlLmdldEF0dHJpYnV0 ZSgnZGF0YS1kYXR1bScpOwogICAgaWYgKCFkYXR1bSkgcmV0dXJuOwogICAgdmFyIGlTdGFydCA9 IC0xLCBpRW5kID0gLTE7CiAgICBmb3IgKHZhciBpID0gMDsgaSA8IFoudGFnZS5sZW5ndGg7IGkr KykgewogICAgICAgIHZhciBkcyA9IGRhdHVtU3RyKFoudGFnZVtpXSk7CiAgICAgICAgaWYgKGRz ID09PSBmdWVsbC5xdWVsbGUuZGF0dW0pIGlTdGFydCA9IGk7CiAgICAgICAgaWYgKGRzID09PSBk YXR1bSkgaUVuZCA9IGk7CiAgICB9CiAgICBpZiAoaVN0YXJ0IDwgMCB8fCBpRW5kIDwgMCkgcmV0 dXJuOwogICAgdmFyIGxvID0gTWF0aC5taW4oaVN0YXJ0LCBpRW5kKSwgaGkgPSBNYXRoLm1heChp U3RhcnQsIGlFbmQpOwogICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmdyaWQtemVsbGUt ZmlsbC10YXJnZXQnKQogICAgICAgIC5mb3JFYWNoKGZ1bmN0aW9uKGVsKSB7IGVsLmNsYXNzTGlz dC5yZW1vdmUoJ2dyaWQtemVsbGUtZmlsbC10YXJnZXQnKTsgfSk7CiAgICB2YXIgemllbGUgPSBb XTsKICAgIGlmIChkYXJmWmVsbGVFZGl0aWVyZW4oZnVlbGwucXVlbGxlLnBpZCkpIHsKICAgICAg ICBmb3IgKHZhciBqID0gbG87IGogPD0gaGk7IGorKykgewogICAgICAgICAgICB2YXIgZFN0ciA9 IGRhdHVtU3RyKFoudGFnZVtqXSk7CiAgICAgICAgICAgIGlmIChkU3RyID09PSBmdWVsbC5xdWVs bGUuZGF0dW0pIGNvbnRpbnVlOwogICAgICAgICAgICB2YXIgeiA9IGRvY3VtZW50LnF1ZXJ5U2Vs ZWN0b3IoCiAgICAgICAgICAgICAgICAnI2dyaWQtZGF0ZW4gLmdyaWQtemVpbGVbZGF0YS1wZXJz b24taWQ9IicgKyBmdWVsbC5xdWVsbGUucGlkICsKICAgICAgICAgICAgICAgICciXSAuZ3JpZC16 ZWxsZVtkYXRhLWRhdHVtPSInICsgZFN0ciArICciXScKICAgICAgICAgICAgKTsKICAgICAgICAg ICAgaWYgKCF6KSBjb250aW51ZTsKICAgICAgICAgICAgei5jbGFzc0xpc3QuYWRkKCdncmlkLXpl bGxlLWZpbGwtdGFyZ2V0Jyk7CiAgICAgICAgICAgIHppZWxlLnB1c2goZFN0cik7CiAgICAgICAg fQogICAgfQogICAgZnVlbGwuemllbGUgPSB6aWVsZTsKfQoKZnVuY3Rpb24gZnVlbGxFbmQoKSB7 CiAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCBmdWVsbE1vdmUp OwogICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIGZ1ZWxsRW5kKTsK ICAgIGRvY3VtZW50LmJvZHkuc3R5bGUuY3Vyc29yID0gJyc7CiAgICB2YXIgaCA9IGRvY3VtZW50 LmdldEVsZW1lbnRCeUlkKCdmaWxsLWhhbmRsZScpOwogICAgaWYgKGgpIGguc3R5bGUucG9pbnRl ckV2ZW50cyA9ICcnOwogICAgaWYgKCFmdWVsbC5ha3RpdikgcmV0dXJuOwogICAgZnVlbGwuYWt0 aXYgPSBmYWxzZTsKICAgIHZhciB6aWVsZSA9IGZ1ZWxsLnppZWxlLnNsaWNlKCk7CiAgICB2YXIg cXVlbGxlID0gZnVlbGwucXVlbGxlOwogICAgaWYgKCFxdWVsbGUgfHwgIXppZWxlLmxlbmd0aCkg ewogICAgICAgIGZ1ZWxsSGFuZGxlVmVyc3RlY2tlbigpOwogICAgICAgIHJldHVybjsKICAgIH0K ICAgIHZhciB3ZXJ0ID0gcXVlbGxlLndlcnQ7CiAgICB2YXIgcGlkID0gcXVlbGxlLnBpZDsKICAg IGZ1ZWxsSGFuZGxlVmVyc3RlY2tlbigpOwogICAgaWYgKCFaLnBsYW51bmcuZWludHJhZWdlKSBa LnBsYW51bmcuZWludHJhZWdlID0ge307CgogICAgLy8gT3B0aW1pc3Rpc2NoZXMgbG9rYWxlcyBV cGRhdGUg4oCUIFVJIHJlYWdpZXJ0IHNvZm9ydCwgb2huZSBhdWYgZGVuCiAgICAvLyBTZXJ2ZXIg enUgd2FydGVuLiBCYWNrdXAgZGVyIHZvcmlnZW4gV2VydGUgZnVlciBSb2xsYmFjayBiZWkgRmVo bGVyLgogICAgdmFyIHJvbGxiYWNrID0ge307CiAgICB2YXIgcGF5bG9hZCA9IHppZWxlLm1hcChm dW5jdGlvbihkU3RyKSB7CiAgICAgICAgaWYgKCFaLnBsYW51bmcuZWludHJhZWdlW2RTdHJdKSBa LnBsYW51bmcuZWludHJhZWdlW2RTdHJdID0ge307CiAgICAgICAgcm9sbGJhY2tbZFN0cl0gPSBa LnBsYW51bmcuZWludHJhZWdlW2RTdHJdW3BpZF0gfHwgJyc7CiAgICAgICAgaWYgKHdlcnQpIFou cGxhbnVuZy5laW50cmFlZ2VbZFN0cl1bcGlkXSA9IHdlcnQ7CiAgICAgICAgZWxzZSBkZWxldGUg Wi5wbGFudW5nLmVpbnRyYWVnZVtkU3RyXVtwaWRdOwogICAgICAgIHJldHVybiB7IGRhdHVtOiBk U3RyLCBwZXJzb25JZDogcGlkLCB3ZXJ0OiB3ZXJ0IH07CiAgICB9KTsKICAgIC8vIElua3JlbWVu dGVsbCBzdGF0dCBWb2xsLVJlbmRlcjogbnVyIGRpZSBOIGdlZnVlbGx0ZW4gWmVsbGVuIHBhdGNo ZW4KICAgIC8vICh6ZWxsZVZpc3VlbGxBa3R1YWxpc2llcmVuIGFrdHVhbGlzaWVydCBwcm8gVGFn IGF1Y2ggREdMLVNjaHJhZmZ1ciArCiAgICAvLyBTdGFlcmtlLVplbGxlKS4gU3BhcnQgYXVmIGRl bSBCZWhvZXJkZW4tUEMgZGVuIH4xOC4wMDAtS25vdGVuLVJlYnVpbGQKICAgIC8vIG5hY2ggamVk ZW0gRHJhZyDigJQgZGVyIGZydWVoZXIgZGVyIGdyb2Vzc3RlIHNwdWVyYmFyZSBSdWNrbGVyIHdh ci4gRGllCiAgICAvLyBzZWx0ZW5lbiBSZWplY3QtL0ZlaGxlci1ad2VpZ2UgdW50ZW4gcmVuZGVy biBiZXd1c3N0IHdlaXRlcmhpbiB2b2xsCiAgICAvLyAoZWluZmFjaGVyICsgc2ljaGVyZXIgUm9s bGJhY2sgYmVpIFBlcm1pc3Npb24tL05ldHp3ZXJrLUZlaGxlcm4pLgogICAgcGF5bG9hZC5mb3JF YWNoKGZ1bmN0aW9uKHApIHsgemVsbGVWaXN1ZWxsQWt0dWFsaXNpZXJlbihwLmRhdHVtLCBwLnBl cnNvbklkLCBwLndlcnQpOyB9KTsKCiAgICAvLyBFaW4gZWluemlnZXIgSFRUUC1Sb3VuZHRyaXAg 4oCUIGRlciBTZXJ2ZXIgc2NocmVpYnQgZGllIERhdGVpIG51cgogICAgLy8gZWlubWFsLCBzdGF0 dCBOLW1hbCBzZXF1ZW56aWVsbC4KICAgIGFwaVBvc3QoJy9hcGkvcGxhbnVuZy96ZWxsZW4tYnVs aycsIHsgZWludHJhZWdlOiBwYXlsb2FkIH0pLnRoZW4oZnVuY3Rpb24ocmVzKSB7CiAgICAgICAg dmFyIG9rID0gKHJlcyAmJiByZXMub2sgIT0gbnVsbCkgPyByZXMub2sgOiBwYXlsb2FkLmxlbmd0 aDsKICAgICAgICB2YXIgYWJnZWxlaG50ID0gKHJlcyAmJiByZXMuYWJnZWxlaG50KSB8fCBbXTsK ICAgICAgICBpZiAoYWJnZWxlaG50Lmxlbmd0aCkgewogICAgICAgICAgICAvLyBTZXJ2ZXIgaGF0 IFBlcm1pc3Npb24tQ2hlY2sgamUgWmVsbGUuIFdhcyBhYmdlbGVobnQgd3VyZGUsCiAgICAgICAg ICAgIC8vIHJvbGxlbiB3aXIgbG9rYWwgc29mb3J0IHp1cnVlY2sg4oCUIHNvbnN0IHdlaWNodCBV SSB2b24gREIgYWIuCiAgICAgICAgICAgIGFiZ2VsZWhudC5mb3JFYWNoKGZ1bmN0aW9uKGQpIHsK ICAgICAgICAgICAgICAgIHZhciBhbHQgPSByb2xsYmFja1tkLmRhdHVtXTsKICAgICAgICAgICAg ICAgIGlmICghWi5wbGFudW5nLmVpbnRyYWVnZVtkLmRhdHVtXSkgWi5wbGFudW5nLmVpbnRyYWVn ZVtkLmRhdHVtXSA9IHt9OwogICAgICAgICAgICAgICAgaWYgKGFsdCkgWi5wbGFudW5nLmVpbnRy YWVnZVtkLmRhdHVtXVtwaWRdID0gYWx0OwogICAgICAgICAgICAgICAgZWxzZSBkZWxldGUgWi5w bGFudW5nLmVpbnRyYWVnZVtkLmRhdHVtXVtwaWRdOwogICAgICAgICAgICB9KTsKICAgICAgICAg ICAgZGF0ZW5HcmlkUmVuZGVybigpOwogICAgICAgICAgICBrb3BmUmVuZGVybigpOwogICAgICAg ICAgICB0b2FzdCgnV2VydCBpbiAnICsgb2sgKyAnIFRhZycgKyAob2sgIT09IDEgPyAnZW4nIDog JycpICsgJyDDvGJlcnRyYWdlbiwgJyArCiAgICAgICAgICAgICAgICAgIGFiZ2VsZWhudC5sZW5n dGggKyAnIGFiZ2VsZWhudCAoa2VpbmUgQmVyZWNodGlndW5nKScsICd3YXJudW5nJyk7CiAgICAg ICAgICAgIC8vIFJlc3luYyAoU3ByaW50IDIg4oCUIERhdGVubW9kZWxsLUtvbnNpc3RlbnogMjAy Ni0wNS0yOCk6CiAgICAgICAgICAgIC8vIExva2FsZXIgUm9sbGJhY2sgbnV0enQgZGVuIFpXSVND SEVOR0VTUEVJQ0hFUlRFTiBXZXJ0IHZvbiB2b3IKICAgICAgICAgICAgLy8gZGVtIEJ1bGstU2No cmVpYi4gV2VubiB3YWVocmVuZGRlc3NlbiBqZW1hbmQgYW5kZXJlcyB2aWEgU3luYwogICAgICAg ICAgICAvLyBkaWVzZSBaZWxsZSB2ZXJhZW5kZXJ0IGhhdCAob2RlciBkZXIgU2VydmVyLVBlcm1p c3Npb24tV2VjaHNlbAogICAgICAgICAgICAvLyBGYWt0IHdhciksIHplaWd0IGRlciBSb2xsYmFj ayBlaW5lbiB2ZXJhbHRldGVuIFN0YW5kLiBXaXIgaG9sZW4KICAgICAgICAgICAgLy8gZGllIFNl cnZlci1XYWhyaGVpdCBuYWNoIHVuZCBtZXJnZW4gTlVSIGRpZSBhYmdlbGVobnRlbiBEYXR1bXMt CiAgICAgICAgICAgIC8vIEJ1Y2tldHMsIGRhbWl0IGFuZGVyZSBsb2thbGUgQWVuZGVydW5nZW4g dW5hbmdldGFzdGV0IGJsZWliZW4uCiAgICAgICAgICAgIGFwaSgnL2FwaS9wbGFudW5nJykudGhl bihmdW5jdGlvbihzZXJ2ZXJTdGFuZCkgewogICAgICAgICAgICAgICAgaWYgKCFzZXJ2ZXJTdGFu ZCB8fCAhc2VydmVyU3RhbmQuZWludHJhZWdlKSByZXR1cm47CiAgICAgICAgICAgICAgICB2YXIg YWVuZGVydW5nZW4gPSAwOwogICAgICAgICAgICAgICAgYWJnZWxlaG50LmZvckVhY2goZnVuY3Rp b24oZCkgewogICAgICAgICAgICAgICAgICAgIHZhciBzZXJ2ZXJXZXJ0ID0gKHNlcnZlclN0YW5k LmVpbnRyYWVnZVtkLmRhdHVtXSB8fCB7fSlbcGlkXTsKICAgICAgICAgICAgICAgICAgICB2YXIg bG9rYWxXZXJ0ICA9IChaLnBsYW51bmcuZWludHJhZWdlW2QuZGF0dW1dIHx8IHt9KVtwaWRdOwog ICAgICAgICAgICAgICAgICAgIGlmIChzZXJ2ZXJXZXJ0ICE9PSBsb2thbFdlcnQpIHsKICAgICAg ICAgICAgICAgICAgICAgICAgaWYgKCFaLnBsYW51bmcuZWludHJhZWdlW2QuZGF0dW1dKSBaLnBs YW51bmcuZWludHJhZWdlW2QuZGF0dW1dID0ge307CiAgICAgICAgICAgICAgICAgICAgICAgIGlm IChzZXJ2ZXJXZXJ0KSBaLnBsYW51bmcuZWludHJhZWdlW2QuZGF0dW1dW3BpZF0gPSBzZXJ2ZXJX ZXJ0OwogICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGRlbGV0ZSBaLnBsYW51bmcuZWludHJh ZWdlW2QuZGF0dW1dW3BpZF07CiAgICAgICAgICAgICAgICAgICAgICAgIGFlbmRlcnVuZ2VuKys7 CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAg ICBpZiAoYWVuZGVydW5nZW4pIHsgZGF0ZW5HcmlkUmVuZGVybigpOyBrb3BmUmVuZGVybigpOyB9 CiAgICAgICAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uKCkgeyAvKiBzdGlsbGVyIEZlaGxlciDigJQg U3luYy1Xb3JrZXIgZmFlbmd0J3MgYmVpbSBuYWVjaHN0ZW4gVGljayAqLyB9KTsKICAgICAgICB9 IGVsc2UgewogICAgICAgICAgICB0b2FzdCh3ZXJ0CiAgICAgICAgICAgICAgICA/ICdXZXJ0IOKA nicgKyB3ZXJ0ICsgJyIgaW4gJyArIG9rICsgJyBUYWcnICsgKG9rICE9PSAxID8gJ2VuJyA6ICcn KSArICcgw7xiZXJ0cmFnZW4nCiAgICAgICAgICAgICAgICA6ICdXZXJ0IGluICcgKyBvayArICcg VGFnJyArIChvayAhPT0gMSA/ICdlbicgOiAnJykgKyAnIGdlbGVlcnQnLAogICAgICAgICAgICAg ICAgJ2VyZm9sZycpOwogICAgICAgIH0KICAgIH0pLmNhdGNoKGZ1bmN0aW9uKGVycikgewogICAg ICAgIC8vIEJlaSBOZXR6d2Vyay0vU2VydmVyLUZlaGxlciBrb21wbGV0dCB6dXJ1ZWNrc2V0emVu LgogICAgICAgIHppZWxlLmZvckVhY2goZnVuY3Rpb24oZFN0cikgewogICAgICAgICAgICB2YXIg YWx0ID0gcm9sbGJhY2tbZFN0cl07CiAgICAgICAgICAgIGlmICghWi5wbGFudW5nLmVpbnRyYWVn ZVtkU3RyXSkgWi5wbGFudW5nLmVpbnRyYWVnZVtkU3RyXSA9IHt9OwogICAgICAgICAgICBpZiAo YWx0KSBaLnBsYW51bmcuZWludHJhZWdlW2RTdHJdW3BpZF0gPSBhbHQ7CiAgICAgICAgICAgIGVs c2UgZGVsZXRlIFoucGxhbnVuZy5laW50cmFlZ2VbZFN0cl1bcGlkXTsKICAgICAgICB9KTsKICAg ICAgICBkYXRlbkdyaWRSZW5kZXJuKCk7CiAgICAgICAga29wZlJlbmRlcm4oKTsKICAgICAgICB0 b2FzdCgnQnVsay1GZWhsZXI6ICcgKyBlcnIubWVzc2FnZSArICcg4oCUIEFlbmRlcnVuZ2VuIHp1 cnVlY2tnZW5vbW1lbicsICdmZWhsZXInKTsKICAgIH0pOwp9CgovLyBHbG9iYWxlIExpc3RlbmVy IOKAlCBlaW5tYWwgYmVpbSBBcHAtSW5pdCBhdWZydWZlbi4KLy8gS2xpY2sgYXVzc2VyaGFsYiB2 b24gR3JpZCArIEVkaXRvciArIEhhbmRsZSBibGVuZGV0IGRlbiBHcmlmZiBhdXMsCi8vIFNjcm9s bGVuIGViZW5zbyAoUG9zaXRpb24gd2FlcmUgc29uc3QgZmFsc2NoKS4KZXhwb3J0IGZ1bmN0aW9u IGZ1ZWxsSW5pdCgpIHsKICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVu Y3Rpb24oZSkgewogICAgICAgIGlmIChlLnRhcmdldC5pZCA9PT0gJ2ZpbGwtaGFuZGxlJykgcmV0 dXJuOwogICAgICAgIGlmIChlLnRhcmdldC5jbG9zZXN0ICYmIGUudGFyZ2V0LmNsb3Nlc3QoJyNn cmlkLWRhdGVuJykpIHJldHVybjsKICAgICAgICBpZiAoZS50YXJnZXQuY2xvc2VzdCAmJiBlLnRh cmdldC5jbG9zZXN0KCcjemVsbC1lZGl0b3InKSkgcmV0dXJuOwogICAgICAgIGZ1ZWxsSGFuZGxl VmVyc3RlY2tlbigpOwogICAgfSk7CiAgICB2YXIgZ3JpZFNjcm9sbCA9IGRvY3VtZW50LmdldEVs ZW1lbnRCeUlkKCdncmlkLXNjcm9sbC1jb250YWluZXInKTsKICAgIGlmIChncmlkU2Nyb2xsKSB7 CiAgICAgICAgZ3JpZFNjcm9sbC5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBmdW5jdGlvbigp IHsKICAgICAgICAgICAgaWYgKGZ1ZWxsLnF1ZWxsZSAmJiAhZnVlbGwuYWt0aXYpIGZ1ZWxsSGFu ZGxlVmVyc3RlY2tlbigpOwogICAgICAgIH0pOwogICAgfQogICAgLy8gRVNDIGJyaWNodCBlaW5l biBsYXVmZW5kZW4gRHJhZyBhYi4KICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRv d24nLCBmdW5jdGlvbihlKSB7CiAgICAgICAgaWYgKGUua2V5ID09PSAnRXNjYXBlJyAmJiBmdWVs bC5ha3RpdikgewogICAgICAgICAgICBmdWVsbC5ha3RpdiA9IGZhbHNlOwogICAgICAgICAgICBk b2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCBmdWVsbE1vdmUpOwogICAg ICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgZnVlbGxFbmQp OwogICAgICAgICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLmN1cnNvciA9ICcnOwogICAgICAgICAg ICB2YXIgaCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdmaWxsLWhhbmRsZScpOwogICAgICAg ICAgICBpZiAoaCkgaC5zdHlsZS5wb2ludGVyRXZlbnRzID0gJyc7CiAgICAgICAgICAgIGZ1ZWxs SGFuZGxlVmVyc3RlY2tlbigpOwogICAgICAgIH0KICAgIH0pOwp9Cg== ### FILE: js/grid_render.js | 37064 Ly8gPT09IGdyaWQvcmVuZGVyLmpzID09PQovLyBTdGFuZDogMjAyNi0wNS0xNAovLyBHcmlkLUF1 ZmJhdSwgSGVhZGVyIChEYXR1bS9Xb2NoZW50YWcvQW5sYXNzL0V2ZW50cy9TdMOkcmtlL1NjaGlj aHRmb2xnZSksCi8vIFNjaHJhZmZ1cmVuLCBTdMOkcmtlLUJlcmVjaG51bmcsIE5hdmlnYXRpb24v QW5zaWNodHMtV2VjaHNlbCwgU2Nyb2xsLVN5bmMuCi8vCi8vIEhvb2tzOiBlaW5pZ2UgQXVmcnVm ZSBnZWhlbiBhdWYgRnVua3Rpb25lbiwgZGllIG5vY2ggaW4gYXBwLmpzIGxpZWdlbgovLyBvZGVy IGVyc3QgaW4gc3BhZXRlcmVuIFBoYXNlbiBleHRyYWhpZXJ0IHdlcmRlbiAoZmVhdHVyZUlzdEFr dGl2LAovLyBiZXosIHNvbmRlclRpdGVsQXVzVGV4dCwga29tbWVudGFyZUltR3JpZEFuemVpZ2Vu LCBiZXNldHp1bmdzLS9hZG1pbi0vCi8vIHN0YXRzLS93b2NoZW5wbGFuLS9wZXJzcGxhbi0vbG9n YnVjaC1SZW5kZXJlcikuIERpZXNlIHdlcmRlbiB1ZWJlcgovLyByZW5kZXJIb29rcyByZWluZ2Vo YWVuZ3QuCgppbXBvcnQgeyBaIH0gZnJvbSAnLi9jb3JlX3N0YXRlLmpzJzsKaW1wb3J0IHsKICAg IGVzY2FwZUhUTUwsIGVzY2FwZUF0dHIsCiAgICBkYXR1bVN0ciwgZGF0dW1Gb3JtYXRERSwgZGF0 dW1LdXJ6REUsIHdvY2hlbnRhZ0t1cnosIGlzdFdvY2hlbmVuZGUsCiAgICBhdmF0YXJLcmVpc0h0 bWwsIHJlbmRlckVycm9yQm94Cn0gZnJvbSAnLi9jb3JlX3V0aWwuanMnOwppbXBvcnQgewogICAg ZGFyZkFkbWluVGFiLCBkYXJmU3RhdGlzdGlrLCBkYXJmTG9nYnVjaCwgZGFyZlplbGxlRWRpdGll cmVuCn0gZnJvbSAnLi9jb3JlX3Blcm1pc3Npb25zLmpzJzsKaW1wb3J0IHsgdG9hc3QgfSBmcm9t ICcuL3VpX2RpYWxvZy5qcyc7CmltcG9ydCB7IGhldXRlQmxvY2tBa3R1YWxpc2llcmVuIH0gZnJv bSAnLi9jb3JlX2RhdGVuTGFkZW4uanMnOwoKLy8gPT09PT0gSG9va3MgPT09PT0KCmV4cG9ydCB2 YXIgcmVuZGVySG9va3MgPSB7CiAgICBmZWF0dXJlSXN0QWt0aXY6IG51bGwsCiAgICBzb25kZXJU aXRlbEF1c1RleHQ6IG51bGwsCiAgICBiZXNldHp1bmdzVGFiRmFyYmVBa3R1YWxpc2llcmVuOiBu dWxsLAogICAga29tbWVudGFyZUltR3JpZEFuemVpZ2VuOiBudWxsLAogICAgYmV6OiBudWxsLAog ICAgd3BSZW5kZXJuOiBudWxsLAogICAgcHBSZW5kZXJuOiBudWxsLAogICAgbG9nYnVjaExhZGVu OiBudWxsLAogICAgc3RhdGlzdGlrTGFkZW46IG51bGwsCiAgICBhZG1pblJlbmRlcm46IG51bGws CiAgICBiZXNldHp1bmdza29udHJvbGxlUmVuZGVybjogbnVsbAp9OwoKLy8gPT09PT0gUGVyZm9y bWFuY2UtTWVzc3VuZyAoU3ByaW50IDZiIDIwMjYtMDUtMjksIEZpbmRpbmcgMjApID09PT09Ci8v Ci8vIE9wdC1JbiB1ZWJlciBgd2luZG93LlZJM19QRVJGID0gdHJ1ZWAuIFNhbW1lbHQgcHJvIFJl bmRlci1BdWZydWYKLy8gRGF1ZXIgKyBGdW5rdGlvbnNuYW1lIGluIGVpbmVtIFJpbmctQnVmZmVy IChtYXggMTAwIEVpbnRyYWVnZSkuCi8vIEF1c3dlcnR1bmcgaW0gQnJvd3NlciB2aWEgYHdpbmRv dy5WSTNfUEVSRl9SRVBPUlQoKWAgLT4gY29uc29sZS50YWJsZQovLyBtaXQgQWdncmVnYXQgcHJv IEZ1bmt0aW9uIChBbnphaGwsIE1pbi9NYXgvQXZnLW1zKS4KLy8KLy8gV2VubiBkaWUgRmxhZyBu aWNodCBha3RpdiBpc3Q6IGBwZXJmTWFyaygpYC9gcGVyZk1lYXN1cmUoKWAgc2luZCBuby1vcHMu Ci8vIERhbWl0IGtlaW4gRGVmYXVsdC1PdmVyaGVhZCBpbSBQcm9kdWt0aXYtQmV0cmllYiAoUG9s aXplaS1QQ3MpLgovLwovLyBBdWRpdC1CZWZ1bmQtMjAtSGludGVyZ3J1bmQ6IEJlZnVuZCB3YXIg bWFudWVsbGUgU2NoYWV0enVuZyBvaG5lCi8vIGluc3RydW1lbnRpZXJ0ZSBNZXNzdW5nLiBWb3Ig d2VpdGVyZW4gUmVuZGVyLVJlZmFjdG9ycyBicmF1Y2hlbiB3aXIKLy8gZWNodGUgWmFobGVuLCBk YW1pdCB3aXIgbmljaHQgZGVuIGZhbHNjaGVuIFBmYWQgb3B0aW1pZXJlbi4KCnZhciBfUEVSRl9Q VUZGRVIgPSBbXTsKdmFyIF9QRVJGX01BWCA9IDEwMDsKCmZ1bmN0aW9uIHBlcmZBa3RpdigpIHsK ICAgIHJldHVybiB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB3aW5kb3cuVkkzX1BF UkYgPT09IHRydWU7Cn0KCmZ1bmN0aW9uIHBlcmZNYXJrKG5hbWUpIHsKICAgIGlmICghcGVyZkFr dGl2KCkpIHJldHVybiBudWxsOwogICAgdHJ5IHsgcGVyZm9ybWFuY2UubWFyayhuYW1lICsgJzpz dGFydCcpOyB9IGNhdGNoIChlKSB7fQogICAgcmV0dXJuIG5hbWU7Cn0KCmZ1bmN0aW9uIHBlcmZN ZWFzdXJlKG5hbWUsIHN0YXJ0VHMpIHsKICAgIGlmICghcGVyZkFrdGl2KCkgfHwgIW5hbWUpIHJl dHVybjsKICAgIHRyeSB7CiAgICAgICAgcGVyZm9ybWFuY2UubWFyayhuYW1lICsgJzplbmQnKTsK ICAgICAgICBwZXJmb3JtYW5jZS5tZWFzdXJlKG5hbWUsIG5hbWUgKyAnOnN0YXJ0JywgbmFtZSAr ICc6ZW5kJyk7CiAgICAgICAgdmFyIGVudHJpZXMgPSBwZXJmb3JtYW5jZS5nZXRFbnRyaWVzQnlO YW1lKG5hbWUsICdtZWFzdXJlJyk7CiAgICAgICAgdmFyIGxldHp0ZSA9IGVudHJpZXNbZW50cmll cy5sZW5ndGggLSAxXTsKICAgICAgICBpZiAobGV0enRlKSB7CiAgICAgICAgICAgIF9QRVJGX1BV RkZFUi5wdXNoKHsgbmFtZTogbmFtZSwgbXM6IE1hdGgucm91bmQobGV0enRlLmR1cmF0aW9uICog MTAwKSAvIDEwMCwgdHM6IERhdGUubm93KCkgfSk7CiAgICAgICAgICAgIGlmIChfUEVSRl9QVUZG RVIubGVuZ3RoID4gX1BFUkZfTUFYKSBfUEVSRl9QVUZGRVIuc2hpZnQoKTsKICAgICAgICB9CiAg ICAgICAgLy8gTWFya3MgYXVmcmFldW1lbiwgc29uc3QgZnJpc3N0IGVzIFNwZWljaGVyCiAgICAg ICAgcGVyZm9ybWFuY2UuY2xlYXJNYXJrcyhuYW1lICsgJzpzdGFydCcpOwogICAgICAgIHBlcmZv cm1hbmNlLmNsZWFyTWFya3MobmFtZSArICc6ZW5kJyk7CiAgICAgICAgcGVyZm9ybWFuY2UuY2xl YXJNZWFzdXJlcyhuYW1lKTsKICAgIH0gY2F0Y2ggKGUpIHt9Cn0KCi8vIFdpcmQgdmlhIE1vZHVs LUluaXQgYW0gd2luZG93LU9iamVrdCByZWdpc3RyaWVydCAoc2llaGUgdW50ZW4pLgpmdW5jdGlv biBwZXJmUmVwb3J0KCkgewogICAgaWYgKF9QRVJGX1BVRkZFUi5sZW5ndGggPT09IDApIHsKICAg ICAgICBjb25zb2xlLmxvZygnVkkzX1BFUkY6IGtlaW5lIE1lc3NkYXRlbiDigJQgdm9yaGVyIHdp bmRvdy5WSTNfUEVSRiA9IHRydWUgc2V0emVuIHVuZCBkaWUgQXBwIGJlbnV0emVuLicpOwogICAg ICAgIHJldHVybjsKICAgIH0KICAgIHZhciBuYWNoTmFtZSA9IHt9OwogICAgX1BFUkZfUFVGRkVS LmZvckVhY2goZnVuY3Rpb24oZSkgewogICAgICAgIGlmICghbmFjaE5hbWVbZS5uYW1lXSkgbmFj aE5hbWVbZS5uYW1lXSA9IFtdOwogICAgICAgIG5hY2hOYW1lW2UubmFtZV0ucHVzaChlLm1zKTsK ICAgIH0pOwogICAgdmFyIHJvd3MgPSBPYmplY3Qua2V5cyhuYWNoTmFtZSkubWFwKGZ1bmN0aW9u KG5hbWUpIHsKICAgICAgICB2YXIgbCA9IG5hY2hOYW1lW25hbWVdOwogICAgICAgIHZhciBzdW0g PSBsLnJlZHVjZShmdW5jdGlvbihhLCBiKSB7IHJldHVybiBhICsgYjsgfSwgMCk7CiAgICAgICAg cmV0dXJuIHsKICAgICAgICAgICAgRnVua3Rpb246IG5hbWUsCiAgICAgICAgICAgIEF1ZnJ1ZmU6 ICBsLmxlbmd0aCwKICAgICAgICAgICAgJ01pbiBtcyc6IE1hdGgubWluLmFwcGx5KG51bGwsIGwp LAogICAgICAgICAgICAnTWF4IG1zJzogTWF0aC5tYXguYXBwbHkobnVsbCwgbCksCiAgICAgICAg ICAgICdBdmcgbXMnOiBNYXRoLnJvdW5kKChzdW0gLyBsLmxlbmd0aCkgKiAxMDApIC8gMTAwLAog ICAgICAgICAgICAnU3VtIG1zJzogTWF0aC5yb3VuZChzdW0gKiAxMDApIC8gMTAwCiAgICAgICAg fTsKICAgIH0pOwogICAgY29uc29sZS50YWJsZShyb3dzKTsKfQoKaWYgKHR5cGVvZiB3aW5kb3cg IT09ICd1bmRlZmluZWQnKSB7CiAgICB3aW5kb3cuVkkzX1BFUkZfUkVQT1JUID0gcGVyZlJlcG9y dDsKICAgIHdpbmRvdy5WSTNfUEVSRl9SRVNFVCA9IGZ1bmN0aW9uKCkgeyBfUEVSRl9QVUZGRVIu bGVuZ3RoID0gMDsgfTsKfQoKLy8gRGVmYXVsdC1JY29ucyBwcm8gRmVpZXJ0YWdzLUthdGVnb3Jp ZS4gV2lyZCBnZXpvZ2VuLCB3ZW5uIGRlciBlaW56ZWxuZQovLyBFaW50cmFnIGtlaW4gZWlnZW5l cyBpY29uLUZlbGQgc2V0enQuIFBybyBFaW50cmFnIHVlYmVyc2NocmVpYmJhciBpbQovLyBBZG1p biAtPiBGZWllcnRhZ2UgKFBpY2tlciBhbmFsb2cgenUgU29uZGVydGVybWluZW4pLgpleHBvcnQg dmFyIEtBVEVHT1JJRV9JQ09OX0RFRkFVTFQgPSB7CiAgICBnZXNldHpsaWNoOiAn8J+Pm++4jycs CiAgICBqdWVkaXNjaDogJ+KcoScsCiAgICBtdXNsaW1pc2NoOiAn4piqJywKICAgIHR1ZXJraXNj aDogJ/Cfh7nwn4e3Jwp9OwoKLy8gPT09PT0gVGFnZS1BdWZiYXUgJiBUYWctSW5mb3MgPT09PT0K CmV4cG9ydCBmdW5jdGlvbiB0YWdlRXJ6ZXVnZW4oKSB7CiAgICB2YXIgamFociA9IFouYWRtaW4u amFociB8fCBuZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKCk7CiAgICBaLnRhZ2UgPSBbXTsKICAgIC8v IFBsYW51bmdzYmVyZWljaDogMS4gSmFudWFyIGRlcyBQbGFudW5nc2phaHJlcyBiaXMgZWluc2No bGllc3NsaWNoIDMxLiBKYW51YXIgZGVzIEZvbGdlamFocmVzLgogICAgLy8gRGVyIEJ1ZmZlci1N b25hdCBlcmxhdWJ0IFZvcnBsYW51bmcgZGVzIEZvbGdlamFocmVzIGJpcyB6dW0gSmFocmVzd2Vj aHNlbC1Lbm9wZi4KICAgIHZhciBkID0gbmV3IERhdGUoamFociwgMCwgMSk7CiAgICB2YXIgZW5k ZSA9IG5ldyBEYXRlKGphaHIgKyAxLCAxLCAxKTsgLy8gMS4gRmVicnVhciBGb2xnZWphaHIgPSBl eGtsdXNpdmUgT2JlcmdyZW56ZQogICAgd2hpbGUgKGQgPCBlbmRlKSB7IFoudGFnZS5wdXNoKG5l dyBEYXRlKGQpKTsgZC5zZXREYXRlKGQuZ2V0RGF0ZSgpICsgMSk7IH0KfQoKLy8gTGV0enRlciBT b25udGFnIGVpbmVzIE1vbmF0cyDigJQgQmVyZWNobnVuZyBkZXIgRFNULVdlY2hzZWx0YWdlIGlu IGRlciBFVQovLyAoTWFlcno6IFZvcndhZXJ0cyArMWgsIE9rdG9iZXI6IFJ1ZWNrd2FlcnRzIC0x aCwgamV3ZWlscyBsZXR6dGVyIFNvbm50YWcpLgovLyBtb25hdCBpc3QgMC1pbmRleGVkICgyID0g TWFlcnosIDkgPSBPa3RvYmVyKS4KZnVuY3Rpb24gX2xldHp0ZXJTb25udGFnSW1Nb25hdChqYWhy LCBtb25hdCkgewogICAgdmFyIGQgPSBuZXcgRGF0ZShqYWhyLCBtb25hdCArIDEsIDApOyAgLy8g bGV0enRlciBUYWcgZGVzIE1vbmF0cwogICAgdmFyIHRhZyA9IGQuZ2V0RGF5KCk7CiAgICBpZiAo dGFnICE9PSAwKSBkLnNldERhdGUoZC5nZXREYXRlKCkgLSB0YWcpOwogICAgcmV0dXJuIGRhdHVt U3RyKGQpOwp9CgpleHBvcnQgZnVuY3Rpb24gdGFnSW5mb3NCZXJlY2huZW4oKSB7CiAgICBaLnRh Z0luZm9zID0ge307CiAgICAvLyBTb25kZXJ0ZXJtaW5lIGdnZi4gbWl0IElEIG5hY2hyw7xzdGVu IChCQyBmw7xyIEFsdGRhdGVuKSB1bmQgYXVmIGFsbGUgVGFnZSBkZXMgWmVpdHJhdW1zIG1hcHBl bgogICAgdmFyIHNvbmRlck1hcCA9IHt9OwogICAgKFouYWRtaW4uc29uZGVydGVybWluZSB8fCBb XSkuZm9yRWFjaChmdW5jdGlvbihzKSB7CiAgICAgICAgaWYgKCFzLmlkKSBzLmlkID0gJ3N0Xycg KyAocy5kYXR1bSB8fCAneCcpICsgJ18nICsgTWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc3Vi c3RyKDIsIDYpOwogICAgICAgIHZhciB2b24gPSBzLmRhdHVtLCBiaXMgPSBzLmRhdHVtQmlzIHx8 IHMuZGF0dW07CiAgICAgICAgaWYgKCF2b24pIHJldHVybjsKICAgICAgICB2YXIgZCA9IG5ldyBE YXRlKHZvbiArICdUMDA6MDA6MDAnKSwgYiA9IG5ldyBEYXRlKGJpcyArICdUMDA6MDA6MDAnKTsK ICAgICAgICBpZiAoaXNOYU4oZC5nZXRUaW1lKCkpIHx8IGlzTmFOKGIuZ2V0VGltZSgpKSB8fCBi IDwgZCkgeyBzb25kZXJNYXBbdm9uXSA9IHM7IHJldHVybjsgfQogICAgICAgIHdoaWxlIChkIDw9 IGIpIHsgc29uZGVyTWFwW2RhdHVtU3RyKGQpXSA9IHM7IGQuc2V0RGF0ZShkLmdldERhdGUoKSAr IDEpOyB9CiAgICB9KTsKCiAgICBaLnRhZ2UuZm9yRWFjaChmdW5jdGlvbihkKSB7CiAgICAgICAg dmFyIGtleSA9IGRhdHVtU3RyKGQpOwogICAgICAgIFoudGFnSW5mb3Nba2V5XSA9IHsgdHlwOiAn bm9ybWFsJywgbmFtZTogJycsIGdlYnVydHN0YWdlOiBbXSB9OwogICAgICAgIGlmIChpc3RXb2No ZW5lbmRlKGQpKSBaLnRhZ0luZm9zW2tleV0udHlwID0gJ3dvY2hlbmVuZGUnOwogICAgfSk7Cgog ICAgKFouYWRtaW4uZmVyaWVuIHx8IFtdKS5mb3JFYWNoKGZ1bmN0aW9uKGYpIHsKICAgICAgICB2 YXIgZCA9IG5ldyBEYXRlKGYudm9uICsgJ1QwMDowMDowMCcpOwogICAgICAgIHZhciBiaXMgPSBu ZXcgRGF0ZShmLmJpcyArICdUMDA6MDA6MDAnKTsKICAgICAgICB3aGlsZSAoZCA8PSBiaXMpIHsK ICAgICAgICAgICAgdmFyIGtleSA9IGRhdHVtU3RyKGQpOwogICAgICAgICAgICBpZiAoWi50YWdJ bmZvc1trZXldICYmIFoudGFnSW5mb3Nba2V5XS50eXAgPT09ICdub3JtYWwnKSB7CiAgICAgICAg ICAgICAgICBaLnRhZ0luZm9zW2tleV0udHlwID0gJ2Zlcmllbic7CiAgICAgICAgICAgICAgICBa LnRhZ0luZm9zW2tleV0ubmFtZSA9IGYubmFtZTsKICAgICAgICAgICAgfQogICAgICAgICAgICBk LnNldERhdGUoZC5nZXREYXRlKCkgKyAxKTsKICAgICAgICB9CiAgICB9KTsKCiAgICAoWi5hZG1p bi5mZWllcnRhZ2UgfHwgW10pLmZvckVhY2goZnVuY3Rpb24oZikgewogICAgICAgIC8vIGFrdGl2 ID09PSBmYWxzZSB1ZWJlcnNwcmluZ2VuOyBmZWhsZW5kZXMgRmVsZCA9IGFrdGl2IChCYWNrd2Fy ZHMtQ29tcGF0CiAgICAgICAgLy8gbWl0IGFsdGVtIFNjaGVtYSB7ZGF0dW0sIG5hbWUsIHdpY2h0 aWd9IG9obmUgYWt0aXYva2F0ZWdvcmllKS4KICAgICAgICBpZiAoZi5ha3RpdiA9PT0gZmFsc2Up IHJldHVybjsKICAgICAgICBpZiAoWi50YWdJbmZvc1tmLmRhdHVtXSkgewogICAgICAgICAgICBa LnRhZ0luZm9zW2YuZGF0dW1dLnR5cCA9ICdmZWllcnRhZyc7CiAgICAgICAgICAgIFoudGFnSW5m b3NbZi5kYXR1bV0ubmFtZSA9IGYuYmV6ZWljaG51bmcgfHwgZi5uYW1lIHx8ICcnOwogICAgICAg ICAgICBaLnRhZ0luZm9zW2YuZGF0dW1dLndpY2h0aWcgPSAhIWYud2ljaHRpZzsKICAgICAgICAg ICAgWi50YWdJbmZvc1tmLmRhdHVtXS5rYXRlZ29yaWUgPSBmLmthdGVnb3JpZSB8fCAnZ2VzZXR6 bGljaCc7CiAgICAgICAgICAgIFoudGFnSW5mb3NbZi5kYXR1bV0uaWNvbiA9IGYuaWNvbiB8fCAn JzsKICAgICAgICAgICAgWi50YWdJbmZvc1tmLmRhdHVtXS5rdXJ6YmVzY2hyZWlidW5nID0gZi5r dXJ6YmVzY2hyZWlidW5nIHx8ICcnOwogICAgICAgICAgICBaLnRhZ0luZm9zW2YuZGF0dW1dLmlu Zm9VcmwgPSBmLmluZm9VcmwgfHwgJyc7CiAgICAgICAgfQogICAgfSk7CgogICAgLy8gR2VidXJ0 c3RhZ2UgcHJvIFRhZyAoYXVmIE1vbmF0LVRhZyBkZXMgUGxhbnVuZ3NqYWhyZXMgKyBCdWZmZXIt SmFudWFyIGRlcyBGb2xnZWphaHJlcyBtYXBwZW4pCiAgICB2YXIgcGxhbkphaHIgPSBaLmFkbWlu LmphaHIgfHwgbmV3IERhdGUoKS5nZXRGdWxsWWVhcigpOwogICAgKFoucGxhbnVuZy5wZXJzb25l biB8fCBbXSkuZm9yRWFjaChmdW5jdGlvbihwKSB7CiAgICAgICAgaWYgKCFwLmdlYnVydHNkYXR1 bSB8fCAhcC5ha3RpdikgcmV0dXJuOwogICAgICAgIHZhciB0ZWlsZSA9IHAuZ2VidXJ0c2RhdHVt LnNwbGl0KCctJyk7CiAgICAgICAgaWYgKHRlaWxlLmxlbmd0aCAhPT0gMykgcmV0dXJuOwogICAg ICAgIHZhciBuYW1lID0gKHAudm9ybmFtZSA/IHAudm9ybmFtZSArICcgJyA6ICcnKSArIHAubmFt ZTsKICAgICAgICB2YXIgamFockFsdCA9IHBhcnNlSW50KHRlaWxlWzBdLCAxMCkgfHwgbnVsbDsK ICAgICAgICBbcGxhbkphaHIsIHBsYW5KYWhyICsgMV0uZm9yRWFjaChmdW5jdGlvbihqKSB7CiAg ICAgICAgICAgIHZhciBrZXkgPSBqICsgJy0nICsgdGVpbGVbMV0gKyAnLScgKyB0ZWlsZVsyXTsK ICAgICAgICAgICAgaWYgKFoudGFnSW5mb3Nba2V5XSkgewogICAgICAgICAgICAgICAgWi50YWdJ bmZvc1trZXldLmdlYnVydHN0YWdlLnB1c2goeyBpZDogcC5pZCwgbmFtZTogbmFtZSwgamFocjog amFockFsdCB9KTsKICAgICAgICAgICAgfQogICAgICAgIH0pOwogICAgfSk7CgogICAgT2JqZWN0 LmtleXMoc29uZGVyTWFwKS5mb3JFYWNoKGZ1bmN0aW9uKGQpIHsKICAgICAgICBpZiAoWi50YWdJ bmZvc1tkXSkgewogICAgICAgICAgICBaLnRhZ0luZm9zW2RdLnNvbmRlciA9IHNvbmRlck1hcFtk XTsKICAgICAgICB9CiAgICB9KTsKCiAgICAvLyBEU1QtTWFya2llcnVuZyAoUGFrZXQtQiBRdWlj ay1XaW4sIDIwMjYtMDUtMjkpOiBsZXR6dGVyIFNvbm50YWcgaW0KICAgIC8vIE1hZXJ6ID0gVm9y d2FlcnRzLVdlY2hzZWwgKDAyOjAwIC0+IDAzOjAwKSwgbGV0enRlciBTb25udGFnIGltIE9rdG9i ZXIKICAgIC8vID0gUnVlY2t3YWVydHMtV2VjaHNlbCAoMDM6MDAgLT4gMDI6MDApLiBGdWVyIGFs bGUgSmFocmUgZGllIGluCiAgICAvLyBaLnRhZ0luZm9zIHZvcmtvbW1lbiBrb2VubmVuIOKAlCB0 eXBpc2NoIFBsYW4tSmFociArIEZvbGdlamFoci4KICAgIFtwbGFuSmFociwgcGxhbkphaHIgKyAx XS5mb3JFYWNoKGZ1bmN0aW9uKGopIHsKICAgICAgICB2YXIgZHN0RnJ1ZWggID0gX2xldHp0ZXJT b25udGFnSW1Nb25hdChqLCAyKTsKICAgICAgICB2YXIgZHN0SGVyYnN0ID0gX2xldHp0ZXJTb25u dGFnSW1Nb25hdChqLCA5KTsKICAgICAgICBpZiAoWi50YWdJbmZvc1tkc3RGcnVlaF0pICBaLnRh Z0luZm9zW2RzdEZydWVoXS5kc3QgPSAndm9yJzsKICAgICAgICBpZiAoWi50YWdJbmZvc1tkc3RI ZXJic3RdKSBaLnRhZ0luZm9zW2RzdEhlcmJzdF0uZHN0ID0gJ3p1cnVlY2snOwogICAgfSk7Cn0K Ci8vID09PT09IFN0w6Rya2UgJiBTY2hyYWZmdXIgPT09PT0KCmV4cG9ydCBmdW5jdGlvbiBzdGFl cmtlQmVyZWNobmVuKGRTdHIpIHsKICAgIHZhciBlID0gKFoucGxhbnVuZy5laW50cmFlZ2UgfHwg e30pW2RTdHJdIHx8IHt9OwogICAgdmFyIGYgPSAwLCBzID0gMCwgbiA9IDA7CiAgICBaLnBlcnNv bmVuLmZvckVhY2goZnVuY3Rpb24ocCkgewogICAgICAgIGlmICghcC5ha3RpdikgcmV0dXJuOyAv LyBVbWdlc2V0enRlIHrDpGhsZW4gbmljaHQgenVyIFN0w6Rya2UKICAgICAgICB2YXIgdyA9IGVb U3RyaW5nKHAuaWQpXSB8fCAnJzsKICAgICAgICBpZiAody5zdWJzdHJpbmcoMCwgNSkgPT09ICdG LURHTCcpIGYrKzsKICAgICAgICBpZiAody5zdWJzdHJpbmcoMCwgNSkgPT09ICdTLURHTCcpIHMr KzsKICAgICAgICBpZiAody5zdWJzdHJpbmcoMCwgNSkgPT09ICdOLURHTCcpIG4rKzsKICAgIH0p OwogICAgcmV0dXJuIHsgZjogZiwgczogcywgbjogbiwgb2s6IGYgPj0gMiAmJiBzID49IDIgJiYg biA+PSAyLCB0ZXh0OiBmICsgJ3wnICsgcyArICd8JyArIG4gfTsKfQoKZXhwb3J0IGZ1bmN0aW9u IHNjaHJhZmZ1ckJlcmVjaG5lbihkU3RyKSB7CiAgICB2YXIgZSA9IChaLnBsYW51bmcuZWludHJh ZWdlIHx8IHt9KVtkU3RyXSB8fCB7fTsKICAgIHZhciBzY2hpY2h0ZW4gPSB7IEY6IFtdLCBTOiBb XSwgTjogW10gfTsKICAgIFoucGVyc29uZW4uZm9yRWFjaChmdW5jdGlvbihwKSB7CiAgICAgICAg aWYgKCFwLmFrdGl2KSByZXR1cm47IC8vIFVtZ2VzZXR6dGUgbmljaHQgYWxzIFZlcmFudHdvcnRs aWNoZSBtYXJraWVyZW4KICAgICAgICB2YXIgdyA9IGVbU3RyaW5nKHAuaWQpXSB8fCAnJzsKICAg ICAgICBpZiAody5pbmRleE9mKCdER0wnKSA9PT0gLTEpIHJldHVybjsKICAgICAgICB2YXIgcHJl Zml4ID0gdy5jaGFyQXQoMCk7CiAgICAgICAgaWYgKHNjaGljaHRlbltwcmVmaXhdKSBzY2hpY2h0 ZW5bcHJlZml4XS5wdXNoKHsgaWQ6IHAuaWQsIHBvczogcC5wb3NpdGlvbiB8fCA5OTkgfSk7CiAg ICB9KTsKICAgIHZhciBlcmcgPSB7fTsKICAgIFsnRicsJ1MnLCdOJ10uZm9yRWFjaChmdW5jdGlv bihwcikgewogICAgICAgIHZhciBsID0gc2NoaWNodGVuW3ByXS5zb3J0KGZ1bmN0aW9uKGEsIGIp IHsgcmV0dXJuIGEucG9zIC0gYi5wb3M7IH0pOwogICAgICAgIGlmIChsLmxlbmd0aCA+IDApIGVy Z1tsWzBdLmlkXSA9IHByICsgJzEnOwogICAgICAgIGlmIChsLmxlbmd0aCA+IDEpIGVyZ1tsWzFd LmlkXSA9IHByICsgJzInOwogICAgfSk7CiAgICByZXR1cm4gZXJnOwp9CgovLyA9PT09PSBQbGFu dW5nIHJlbmRlcm4gPT09PT0KCmV4cG9ydCBmdW5jdGlvbiBncmlkUmVuZGVybigpIHsKICAgIC8v IFVYLUF1ZGl0IFNwcmludCAxLjI6IFRyeS1DYXRjaC1Iw7xsbGUsIGRhbWl0IGVpbiBSZW5kZXIt RmVobGVyIG5pY2h0CiAgICAvLyBkaWUgZ2FuemUgUGxhbnVuZ3NhbnNpY2h0IGJsYW5rIGzDpHNz dC4gQmVpIEV4Y2VwdGlvbiB3aXJkIGVpbmUKICAgIC8vIEZlaGxlcmJveCBpbiBkZW4gQW5zaWNo dC1Db250YWluZXIgZ2VyZW5kZXJ0LgogICAgdHJ5IHsKICAgICAgICBkb2N1bWVudC5nZXRFbGVt ZW50QnlJZCgnYW56ZWlnZS1qYWhyJykudGV4dENvbnRlbnQgPSBaLmFkbWluLmphaHIgfHwgJyc7 CiAgICAgICAgaGV1dGVCbG9ja0FrdHVhbGlzaWVyZW4oKTsKCiAgICAgICAgLy8gSGVhZGVyLUJh ZGdlOiBlY2h0ZW4gTmFtZW4gYXVzIHBsYW51bmcucGVyc29uZW4gYW56ZWlnZW4gKHBlciBud0tl bm51bmcgZ2VtYXRjaGVkKSwKICAgICAgICAvLyBzb25zdCBGYWxsYmFjayBhdWYgZGllIE5XLUtl bm51bmcuIFRvb2x0aXAgemVpZ3QgYmVpZGVzLgogICAgICAgIHZhciBiYWRnZSA9IGRvY3VtZW50 LmdldEVsZW1lbnRCeUlkKCdiZW51dHplci1hbnplaWdlJyk7CiAgICAgICAgdmFyIGFuemVpZ2Ug PSBaLmJlbnV0emVyOwogICAgICAgIGlmIChaLm1laW5lUGVyc29uSWQpIHsKICAgICAgICAgICAg dmFyIHAgPSBaLnBlcnNvbmVuLmZpbmQoZnVuY3Rpb24oeCkgeyByZXR1cm4gU3RyaW5nKHguaWQp ID09PSBTdHJpbmcoWi5tZWluZVBlcnNvbklkKTsgfSk7CiAgICAgICAgICAgIGlmIChwKSB7CiAg ICAgICAgICAgICAgICBhbnplaWdlID0gKChwLnZvcm5hbWUgPyBwLnZvcm5hbWUgKyAnICcgOiAn JykgKyAocC5uYW1lIHx8ICcnKSkudHJpbSgpIHx8IFouYmVudXR6ZXI7CiAgICAgICAgICAgIH0K ICAgICAgICB9CiAgICAgICAgYmFkZ2UudGV4dENvbnRlbnQgPSBhbnplaWdlOwogICAgICAgIGJh ZGdlLnRpdGxlID0gWi5iZW51dHplciArIChaLm1laW5lUGVyc29uSWQgPyAnIOKAlCBlcmthbm50 IGFscyAiJyArIGFuemVpZ2UgKyAnIicgOiAnIOKAlCBrZWluZSB6dWdlb3JkbmV0ZSBQZXJzb24n KTsKCiAgICAgICAga29wZlJlbmRlcm4oKTsKICAgICAgICBuYW1lblJlbmRlcm4oKTsKICAgICAg ICBkYXRlbkdyaWRSZW5kZXJuKCk7CiAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgcmVuZGVyRXJy b3JCb3goZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Fuc2ljaHQtcGxhbnVuZycpLCBlLCAnUGxh bnVuZycpOwogICAgfQp9CgovLyA9PT09PSBLb3BmYmVyZWljaCAoRGF0dW0sIFdvY2hlbnRhZywg RmVyaWVuLCBTdMOkcmtlLCBTY2hpY2h0Zm9sZ2UpID09PT09CgpleHBvcnQgZnVuY3Rpb24ga29w ZlJlbmRlcm4oKSB7CiAgICB2YXIgX3BlcmZUYWcgPSBwZXJmTWFyaygna29wZlJlbmRlcm4nKTsK ICAgIHZhciBzdGFuZG9ydGUgPSAoWi5hZG1pbi5zdGFuZG9ydGUgfHwgW10pOwogICAgLy8gRmVh dHVyZS1DaGVja3MgKyBTdGFtbS1XZXJ0ZSBlaW5tYWwgdm9yIGRlciBUYWdlcy1TY2hsZWlmZSwg c3RhdHQKICAgIC8vIHNpZSBwcm8gVGFnIGluIGRlciBmb3JFYWNoIGVybmV1dCBhdWZ6dWxvZXNl biAoMzY1eCBmZWF0dXJlSXN0QWt0aXYKICAgIC8vIGlzdCB0ZXVlcjsgcmVuZGVySG9va3MtUHJv cGVydHktTG9va3VwIGF1Y2gpLgogICAgdmFyIGZpYSA9IHJlbmRlckhvb2tzLmZlYXR1cmVJc3RB a3RpdjsKICAgIHZhciBzZkFrdGl2ICAgICAgICAgPSAhIShmaWEgJiYgZmlhKCdzY2hpY2h0Zm9s Z2VuJykpOwogICAgdmFyIHN0YWVya2VBa3RpdiAgICA9ICEhKGZpYSAmJiBmaWEoJ3N0YWVya2VB bnplaWdlJykpOwogICAgdmFyIHdpY2h0aWdVSSAgICAgICA9ICEhKGZpYSAmJiBmaWEoJ3NvbmRl cnRlcm1pbmVXaWNodGlnJykpOwogICAgdmFyIGZlaWVydGFnQmV0b25lbiA9ICFmaWEgPyB0cnVl IDogISFmaWEoJ2ZlaWVydGFnZVdpY2h0aWdCZXRvbmVuJyk7CiAgICB2YXIgYWt0SmFociAgICAg ICAgID0gWi5hZG1pbi5qYWhyIHx8IG5ldyBEYXRlKCkuZ2V0RnVsbFllYXIoKTsKICAgIHZhciBp c3RTVSAgICAgICAgICAgPSAhIShaLnJlY2h0ZSAmJiBaLnJlY2h0ZS5pc3RTdXBlclVzZXIpOwog ICAgdmFyIHNvbmRlclRpdGVsSG9vayA9IHJlbmRlckhvb2tzLnNvbmRlclRpdGVsQXVzVGV4dDsK CiAgICAvLyBMaW5rZSBTZWl0ZTogU2NoaWNodGZvbGdlLUxhYmVscwogICAgdmFyIHNmTGlua3NI dG1sID0gJyc7CiAgICBpZiAoc2ZBa3RpdiAmJiBzdGFuZG9ydGUubGVuZ3RoID4gMCkgewogICAg ICAgIHN0YW5kb3J0ZS5mb3JFYWNoKGZ1bmN0aW9uKHNvLCBpZHgpIHsKICAgICAgICAgICAgdmFy IGxhYmVsTCA9ICcnLCBsYWJlbFIgPSBzby5uYW1lIHx8ICcnOwogICAgICAgICAgICBpZiAoaWR4 ID09PSAwKSB7IGxhYmVsTCA9ICdTY2hpY2h0JzsgfQogICAgICAgICAgICBlbHNlIGlmIChpZHgg PT09IDEpIHsgbGFiZWxMID0gJ2ZvbGdlJzsgfQogICAgICAgICAgICBzZkxpbmtzSHRtbCArPSAn PGRpdiBjbGFzcz0ia29wZi16ZWlsZSBrei1zY2hpY2h0Zm9sZ2UnICsgKGlkeCA9PT0gMCA/ICcg a3otc2YtZXJzdGUnIDogJycpICsgJyI+JyArCiAgICAgICAgICAgICAgICAnPHNwYW4gY2xhc3M9 ImtsLWxhYmVsIj4nICsgZXNjYXBlSFRNTChsYWJlbEwpICsgJzwvc3Bhbj4nICsKICAgICAgICAg ICAgICAgICc8c3BhbiBjbGFzcz0ia2wtd2VydCI+JyArIGVzY2FwZUhUTUwobGFiZWxSKSArICc8 L3NwYW4+PC9kaXY+JzsKICAgICAgICB9KTsKICAgIH0KICAgIGRvY3VtZW50LmdldEVsZW1lbnRC eUlkKCdzY2hpY2h0Zm9sZ2UtbGlua3MnKS5pbm5lckhUTUwgPSBzZkxpbmtzSHRtbDsKCiAgICAv LyBSZWNodGUgU2VpdGU6IERhdHVtc3plaWxlbgogICAgdmFyIHRhZ0h0bWwgPSAnJywgd3RIdG1s ID0gJycsIGFubGFzc0h0bWwgPSAnJywgc3RhZXJrZUh0bWwgPSAnJzsKICAgIHZhciBzZlplaWxl biA9IFtdOwogICAgc3RhbmRvcnRlLmZvckVhY2goZnVuY3Rpb24oKSB7IHNmWmVpbGVuLnB1c2go JycpOyB9KTsKCiAgICBaLnRhZ2UuZm9yRWFjaChmdW5jdGlvbihkKSB7CiAgICAgICAgdmFyIGRT dHIgPSBkYXR1bVN0cihkKTsKICAgICAgICB2YXIgaW5mbyA9IFoudGFnSW5mb3NbZFN0cl0gfHwg eyB0eXA6ICdub3JtYWwnLCBnZWJ1cnRzdGFnZTogW10gfTsKICAgICAgICB2YXIgaXN0SGV1dGUg PSBkU3RyID09PSBaLmhldXRlU3RyOwogICAgICAgIHZhciB3ZSA9IGlzdFdvY2hlbmVuZGUoZCk7 CgogICAgICAgIC8vIFJlaWNoaGFsdGlnZXIgVG9vbHRpcDogRmVpZXJ0YWcsIEZlcmllbiwgU29u ZGVydGVybWluLCBHZWJ1cnRzdGFnZQogICAgICAgIHZhciB0aXRsZVRlaWxlID0gW107CiAgICAg ICAgaWYgKGluZm8ubmFtZSkgdGl0bGVUZWlsZS5wdXNoKGluZm8udHlwID09PSAnZmVpZXJ0YWcn ID8gJ/CfjokgJyArIGluZm8ubmFtZSA6IGluZm8ubmFtZSk7CiAgICAgICAgaWYgKGluZm8uc29u ZGVyKSB7CiAgICAgICAgICAgIHZhciBzVGl0ZWwgPSBpbmZvLnNvbmRlci50aXRlbCB8fCAoc29u ZGVyVGl0ZWxIb29rICYmIHNvbmRlclRpdGVsSG9vayhpbmZvLnNvbmRlci50ZXh0KSkgfHwgJyc7 CiAgICAgICAgICAgIHRpdGxlVGVpbGUucHVzaCgoaW5mby5zb25kZXIudHlwID09PSAnd2FybnVu ZycgPyAn4pqgICcgOiAn4oS5ICcpICsgc1RpdGVsKTsKICAgICAgICB9CiAgICAgICAgaWYgKGlu Zm8uZ2VidXJ0c3RhZ2UgJiYgaW5mby5nZWJ1cnRzdGFnZS5sZW5ndGgpIHsKICAgICAgICAgICAg dmFyIGdiID0gaW5mby5nZWJ1cnRzdGFnZS5tYXAoZnVuY3Rpb24oZykgewogICAgICAgICAgICAg ICAgdmFyIGFsdGVyID0gZy5qYWhyID8gJyAoJyArIChha3RKYWhyIC0gZy5qYWhyKSArICcpJyA6 ICcnOwogICAgICAgICAgICAgICAgcmV0dXJuIGcubmFtZSArIGFsdGVyOwogICAgICAgICAgICB9 KS5qb2luKCcsICcpOwogICAgICAgICAgICB0aXRsZVRlaWxlLnB1c2goJ/CfjoIgR2VidXJ0c3Rh ZzogJyArIGdiKTsKICAgICAgICB9CiAgICAgICAgdmFyIHRpdGxlID0gdGl0bGVUZWlsZS5qb2lu KCdcbicpOwoKICAgICAgICAvLyBUYWdlc3R5cC1LbGFzc2UgZsO8ciBLb3BmCiAgICAgICAgdmFy IGtvcGZDbHMgPSAnJzsKICAgICAgICBpZiAoaXN0SGV1dGUpIGtvcGZDbHMgPSAnIGtkLWhldXRl JzsKICAgICAgICBlbHNlIGlmIChpbmZvLnR5cCA9PT0gJ2ZlaWVydGFnJykga29wZkNscyA9ICcg a2QtZmVpZXJ0YWctYmcnICsgKChpbmZvLndpY2h0aWcgJiYgZmVpZXJ0YWdCZXRvbmVuKSA/ICcg a2QtZmVpZXJ0YWctd2ljaHRpZycgOiAnJyk7CiAgICAgICAgZWxzZSBpZiAod2UpIGtvcGZDbHMg PSAnIGtkLXdvY2hlbmVuZGUnOwogICAgICAgIGlmIChpbmZvLnNvbmRlcikga29wZkNscyArPSAn IGtkLXNvbmRlcnRhZy0nICsgKGluZm8uc29uZGVyLnR5cCB8fCAnaGlud2VpcycpOwoKICAgICAg ICAvLyBaZWlsZSAxOiBEYXR1bSAoZGQubW0uKSDigJQgQmFkZ2VzIHNpbmQgamV0enQgaW4gZGVu IHNlcGFyYXRlbgogICAgICAgIC8vIEFubGFzcy0gdW5kIEV2ZW50cy1aZWlsZW4gKEZpbmRpbmdz IEMuMTIvQy4xMykuIERhdHVtcy1aZWxsZQogICAgICAgIC8vIGJsZWlidCBzY2hsYW5rLgogICAg ICAgIHRhZ0h0bWwgKz0gJzxkaXYgY2xhc3M9ImtkLXplbGxlJyArIGtvcGZDbHMgKyAnIiB0aXRs ZT0iJyArIGVzY2FwZUF0dHIodGl0bGUpICsgJyIgZGF0YS1kYXR1bT0iJyArIGRTdHIgKyAnIj4n ICsKICAgICAgICAgICAgZGF0dW1LdXJ6REUoZCkgKyAnPC9kaXY+JzsKCiAgICAgICAgLy8gWmVp bGUgMjogV29jaGVudGFnCiAgICAgICAgd3RIdG1sICs9ICc8ZGl2IGNsYXNzPSJrZC16ZWxsZScg KyBrb3BmQ2xzICsgJyI+JyArIHdvY2hlbnRhZ0t1cnooZCkgKyAnPC9kaXY+JzsKCiAgICAgICAg Ly8gWmVpbGUgMzogS29tYmluaWVydGUgSWNvbi1aZWlsZSDigJQgRmVpZXJ0YWctSWNvbiArIFNv bmRlcnRlcm1pbi1JY29uCiAgICAgICAgLy8gKyBHZWJ1cnRzdGFncy1JY29uIG5lYmVuZWluYW5k ZXIgaW4gZWluZXIgWmVsbGUuIEtsaWNrIGF1ZiBkYXMKICAgICAgICAvLyBGZWllcnRhZy1JY29u IG9lZmZuZXQgZGFzIERldGFpbC1Nb2RhbCAoQmV6ZWljaG51bmcgKyBCZXNjaHJlaWJ1bmcgKwog ICAgICAgIC8vIFdpa2lwZWRpYS1MaW5rKTsgS2xpY2sgYXVmIGRhcyBTb25kZXJ0ZXJtaW4tSWNv biBvZWZmbmV0IGRhcwogICAgICAgIC8vIEhpbndlaXMtTW9kYWwuIEZlcmllbiB3ZXJkZW4gbmFj aCBkZXIgTG9vcCBhbHMgaG9yaXpvbnRhbGUgUmFuZ2UtQmFyCiAgICAgICAgLy8gZGFydWViZXIg Z2VsZWd0IOKAlCBkaWUgQmFyIGJsZWlidCBmdWVyIG1laHJ0YWVnaWdlIFNpY2h0YmFya2VpdC4K ICAgICAgICB2YXIgYW5sYXNzQ2xzID0gJycsIGFubGFzc1RpdGxlID0gJyc7CiAgICAgICAgdmFy IGljb25zSW5uZXIgPSAnJzsKICAgICAgICB2YXIgZXZlbnRzVGl0bGVUZWlsZSA9IFtdOwogICAg ICAgIGlmIChpbmZvLnR5cCA9PT0gJ2ZlaWVydGFnJykgewogICAgICAgICAgICB2YXIgZnRJY29u ID0gaW5mby5pY29uIHx8IEtBVEVHT1JJRV9JQ09OX0RFRkFVTFRbaW5mby5rYXRlZ29yaWVdIHx8 IEtBVEVHT1JJRV9JQ09OX0RFRkFVTFQuZ2VzZXR6bGljaDsKICAgICAgICAgICAgYW5sYXNzQ2xz ID0gJyBrZC1hbmxhc3MtZmVpZXJ0YWcga2QtYW5sYXNzLWZlaWVydGFnLScgKyAoaW5mby5rYXRl Z29yaWUgfHwgJ2dlc2V0emxpY2gnKSArCiAgICAgICAgICAgICAgICAgICAgICAgICgoaW5mby53 aWNodGlnICYmIGZlaWVydGFnQmV0b25lbikgPyAnIGtkLWZlaWVydGFnLXdpY2h0aWcnIDogJycp OwogICAgICAgICAgICBhbmxhc3NUaXRsZSA9IGluZm8ubmFtZSB8fCAnJzsKICAgICAgICAgICAg aWNvbnNJbm5lciArPSAnPHNwYW4gY2xhc3M9ImtkLWFubGFzcy1pY29uIiB0aXRsZT0iJyArIGVz Y2FwZUF0dHIoaW5mby5uYW1lIHx8ICcnKSArICciPicgKyBlc2NhcGVIVE1MKGZ0SWNvbikgKyAn PC9zcGFuPic7CiAgICAgICAgfSBlbHNlIGlmIChpbmZvLnR5cCA9PT0gJ2ZlcmllbicpIHsKICAg ICAgICAgICAgYW5sYXNzQ2xzID0gJyBrZC1hbmxhc3MtZmVyaWVuJzsKICAgICAgICAgICAgYW5s YXNzVGl0bGUgPSBpbmZvLm5hbWUgfHwgJyc7CiAgICAgICAgfQogICAgICAgIGlmIChpbmZvLnNv bmRlcikgewogICAgICAgICAgICB2YXIgc0ljb24gPSBpbmZvLnNvbmRlci5pY29uIHx8IChpbmZv LnNvbmRlci50eXAgPT09ICd3YXJudW5nJyA/ICfimqAnIDogJ+KEuScpOwogICAgICAgICAgICB2 YXIgc1RpdGVsVGV4dCA9IGluZm8uc29uZGVyLnRpdGVsIHx8IChzb25kZXJUaXRlbEhvb2sgJiYg c29uZGVyVGl0ZWxIb29rKGluZm8uc29uZGVyLnRleHQpKSB8fCAnJzsKICAgICAgICAgICAgLy8g IndpY2h0aWciLUZsYWcgKENoZXJyeS1QaWNrIDg0ZmIwZjcpOiBleHBsaXppdCB1ZWJlciBkYXMg bmV1ZQogICAgICAgICAgICAvLyBgd2ljaHRpZ2AtUHJvcGVydHkgZ2VzZXR6dCwgb2RlciBiYWNr d2FyZHMtY29tcGF0IHVlYmVyIGRhcyBhbHRlCiAgICAgICAgICAgIC8vIGB0eXA6J3dhcm51bmcn YC4gQ1NTLUtsYXNzZSB3aXJkIG51ciBhbmdlaGFlbmd0LCB3ZW5uIGRlciBUb2dnbGUKICAgICAg ICAgICAgLy8gYGZlYXR1cmVzLnNvbmRlcnRlcm1pbmVXaWNodGlnYCBha3RpdiBpc3Qg4oCUIHNv IGJsZWlidCBkYXMKICAgICAgICAgICAgLy8gU3RhbmRhcmQtVmVyaGFsdGVuIHVudmVyYWVuZGVy dCwgc29sYW5nZSBBZG1pbiBkZW4gU2NoYWx0ZXIgbmljaHQKICAgICAgICAgICAgLy8gdW1sZWd0 LgogICAgICAgICAgICB2YXIgaXN0V2ljaHRpZyA9ICEhaW5mby5zb25kZXIud2ljaHRpZyB8fCBp bmZvLnNvbmRlci50eXAgPT09ICd3YXJudW5nJzsKICAgICAgICAgICAgdmFyIHdpY2h0aWdDbHMg PSAoaXN0V2ljaHRpZyAmJiB3aWNodGlnVUkpID8gJyBrZC1ldmVudC13aWNodGlnJyA6ICcnOwog ICAgICAgICAgICB2YXIgc0NscyA9ICdrZC1ldmVudC1pY29uIGtkLWV2ZW50LXNvbmRlciBrZC1l dmVudC0nICsgKGluZm8uc29uZGVyLnR5cCB8fCAnaGlud2VpcycpICsgd2ljaHRpZ0NsczsKICAg ICAgICAgICAgaWNvbnNJbm5lciArPSAnPHNwYW4gY2xhc3M9IicgKyBzQ2xzICsgJyIgZGF0YS1z b25kZXItZGF0dW09IicgKyBlc2NhcGVBdHRyKGluZm8uc29uZGVyLmRhdHVtKSArICciIHRpdGxl PSInICsgZXNjYXBlQXR0cihzVGl0ZWxUZXh0KSArICciPicgKyBlc2NhcGVIVE1MKHNJY29uKSAr ICc8L3NwYW4+JzsKICAgICAgICAgICAgZXZlbnRzVGl0bGVUZWlsZS5wdXNoKHNUaXRlbFRleHQp OwogICAgICAgIH0KICAgICAgICBpZiAoaW5mby5nZWJ1cnRzdGFnZSAmJiBpbmZvLmdlYnVydHN0 YWdlLmxlbmd0aCkgewogICAgICAgICAgICB2YXIgZ2JOYW1lbiA9IGluZm8uZ2VidXJ0c3RhZ2Uu bWFwKGZ1bmN0aW9uKGcpIHsKICAgICAgICAgICAgICAgIHZhciBhbHRlciA9IGcuamFociA/ICcg KCcgKyAoYWt0SmFociAtIGcuamFocikgKyAnKScgOiAnJzsKICAgICAgICAgICAgICAgIHJldHVy biBnLm5hbWUgKyBhbHRlcjsKICAgICAgICAgICAgfSkuam9pbignLCAnKTsKICAgICAgICAgICAg aWNvbnNJbm5lciArPSAnPHNwYW4gY2xhc3M9ImtkLWV2ZW50LWljb24ga2QtZXZlbnQtZ2VidXJ0 c3RhZyIgdGl0bGU9IvCfjoIgR2VidXJ0c3RhZzogJyArIGVzY2FwZUF0dHIoZ2JOYW1lbikgKyAn Ij7wn46CPC9zcGFuPic7CiAgICAgICAgICAgIGV2ZW50c1RpdGxlVGVpbGUucHVzaCgnR2VidXJ0 c3RhZzogJyArIGdiTmFtZW4pOwogICAgICAgIH0KICAgICAgICBpZiAoaW5mby5kc3QpIHsKICAg ICAgICAgICAgLy8gWmVpdHVtc3RlbGx1bmc6IGtsZWluZXMgSWNvbiBtaXQgZXJrbGFlcmVuZGVt IFRvb2x0aXAuIFVzZXIgd2lyZAogICAgICAgICAgICAvLyBzbyBpbSBWb3JhdXMgYXVmIFNjaGlj aHRlbiBtaXQgdmVyYWVuZGVydGVyIERhdWVyIGF1Zm1lcmtzYW0uCiAgICAgICAgICAgIHZhciBk c3RUaXRlbCA9IGluZm8uZHN0ID09PSAndm9yJwogICAgICAgICAgICAgICAgPyAnWmVpdHVtc3Rl bGx1bmc6IFNvbW1lcnplaXQgYmVnaW5udCDigJQgVWhyIHdpcmQgdW0gMDI6MDAgYXVmIDAzOjAw IHZvcmdlc3RlbGx0IChTY2hpY2h0ZW4gMWgga3VlcnplciknCiAgICAgICAgICAgICAgICA6ICda ZWl0dW1zdGVsbHVuZzogV2ludGVyemVpdCBiZWdpbm50IOKAlCBVaHIgd2lyZCB1bSAwMzowMCBh dWYgMDI6MDAgenVydWVja2dlc3RlbGx0IChTY2hpY2h0ZW4gMWggbGFlbmdlciknOwogICAgICAg ICAgICBpY29uc0lubmVyICs9ICc8c3BhbiBjbGFzcz0ia2QtZXZlbnQtaWNvbiBrZC1ldmVudC1k c3QiIHRpdGxlPSInICsgZXNjYXBlQXR0cihkc3RUaXRlbCkgKyAnIj7wn5WQPC9zcGFuPic7CiAg ICAgICAgICAgIGV2ZW50c1RpdGxlVGVpbGUucHVzaChkc3RUaXRlbCk7CiAgICAgICAgfQogICAg ICAgIHZhciB6ZWxsZVRpdGxlID0gYW5sYXNzVGl0bGUgPyBhbmxhc3NUaXRsZSArIChldmVudHNU aXRsZVRlaWxlLmxlbmd0aCA/ICdcbicgKyBldmVudHNUaXRsZVRlaWxlLmpvaW4oJ1xuJykgOiAn JykgOiBldmVudHNUaXRsZVRlaWxlLmpvaW4oJ1xuJyk7CiAgICAgICAgdmFyIHplbGxlQ2xzRXh0 cmEgPSAoaW5mby5zb25kZXIgfHwgaXN0U1UgPyAnIGtkLWV2ZW50cy1rbGlja2JhcicgOiAnJyk7 CiAgICAgICAgYW5sYXNzSHRtbCArPSAnPGRpdiBjbGFzcz0ia2QtemVsbGUnICsgYW5sYXNzQ2xz ICsgemVsbGVDbHNFeHRyYSArICciIHRpdGxlPSInICsgZXNjYXBlQXR0cih6ZWxsZVRpdGxlKSAr ICciIGRhdGEtZGF0dW09IicgKyBkU3RyICsgJyI+JyArIGljb25zSW5uZXIgKyAnPC9kaXY+JzsK CiAgICAgICAgLy8gWmVpbGUgNDogU3TDpHJrZSAobnVyIHdlbm4gRmVhdHVyZS1Ub2dnbGUgc3Rh ZXJrZUFuemVpZ2UgYWt0aXYg4oCUIEZpbmRpbmcgQy4xNSkKICAgICAgICBpZiAoc3RhZXJrZUFr dGl2KSB7CiAgICAgICAgICAgIHZhciBzdCA9IHN0YWVya2VCZXJlY2huZW4oZFN0cik7CiAgICAg ICAgICAgIHN0YWVya2VIdG1sICs9ICc8ZGl2IGNsYXNzPSJrZC16ZWxsZSAnICsgKHN0Lm9rID8g J3N0YWVya2Utb2snIDogJ3N0YWVya2Utd2FybnVuZycpICsgJyIgdGl0bGU9IkY6JyArIHN0LmYg KyAnIFM6JyArIHN0LnMgKyAnIE46JyArIHN0Lm4gKyAnIj4nICsgc3QudGV4dCArICc8L2Rpdj4n OwogICAgICAgIH0KCiAgICAgICAgLy8gU2NoaWNodGZvbGdlLVplaWxlbgogICAgICAgIHN0YW5k b3J0ZS5mb3JFYWNoKGZ1bmN0aW9uKHNvLCBpZHgpIHsKICAgICAgICAgICAgdmFyIHNmOwogICAg ICAgICAgICBpZiAoc28uaXN0UG9vbCkgc2YgPSAnUG9vbCc7CiAgICAgICAgICAgIGVsc2Ugc2Yg PSAoc28uc2NoaWNodGZvbGdlIHx8IHt9KVtkU3RyXSB8fCAnJzsKICAgICAgICAgICAgdmFyIHNm Q2xzID0gJyc7CiAgICAgICAgICAgIGlmIChpbmZvLnR5cCA9PT0gJ2ZlaWVydGFnJykgc2ZDbHMg PSAnIGtkLWZlaWVydGFnLWJnJzsKICAgICAgICAgICAgZWxzZSBpZiAod2UpIHNmQ2xzID0gJyBr ZC13b2NoZW5lbmRlJzsKICAgICAgICAgICAgaWYgKHNmICYmICFzby5pc3RQb29sKSBzZkNscyAr PSAnIHNmLScgKyBzZi50b0xvd2VyQ2FzZSgpOwogICAgICAgICAgICBpZiAoc28uaXN0UG9vbCkg c2ZDbHMgKz0gJyBzZi1wb29sJzsKICAgICAgICAgICAgc2ZaZWlsZW5baWR4XSArPSAnPGRpdiBj bGFzcz0ia2QtemVsbGUnICsgc2ZDbHMgKyAnIj4nICsgZXNjYXBlSFRNTChzZikgKyAnPC9kaXY+ JzsKICAgICAgICB9KTsKICAgIH0pOwoKICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkYXR1 bS16ZWlsZS10YWcnKS5pbm5lckhUTUwgPSB0YWdIdG1sOwogICAgZG9jdW1lbnQuZ2V0RWxlbWVu dEJ5SWQoJ2RhdHVtLXplaWxlLXdvY2hlbnRhZycpLmlubmVySFRNTCA9IHd0SHRtbDsKICAgIC8v IEZlcmllbi1SYW5nZS1PdmVybGF5OiB6dXNhbW1lbmhhZW5nZW5kZSBGZXJpZW4tVGFnZSBpbiBa LnRhZ2UKICAgIC8vIHdlcmRlbiBhbHMgaG9yaXpvbnRhbGUgQmFyIGdlcmVuZGVydCwgYWJzb2x1 dCBwb3NpdGlvbmllcnQgdWViZXIKICAgIC8vIGRlbiBwZXItVGFnLVplbGxlbi4gU3RhcnQgPSBJ bmRleCBkZXMgZXJzdGVuIEZlcmllbi1UYWdlcywKICAgIC8vIEJyZWl0ZSA9IEFuemFobF9UYWdl ICogWmVsbGVuLUJyZWl0ZS4gTmFtZSB3aXJkIGVpbm1hbCB6ZW50cmllcnQuCiAgICB2YXIgZmVy aWVuQmFyc0h0bWwgPSAnJzsKICAgIHZhciB6ZWxsZUJyZWl0ZVB4ID0gcGFyc2VJbnQoZ2V0Q29t cHV0ZWRTdHlsZShkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpLmdldFByb3BlcnR5VmFsdWUoJy0t emVsbGUtYnJlaXRlJyksIDEwKSB8fCA2MjsKICAgIHZhciByYW5nZVN0YXJ0ID0gLTEsIHJhbmdl TmFtZSA9ICcnOwogICAgZm9yICh2YXIgaSA9IDA7IGkgPD0gWi50YWdlLmxlbmd0aDsgaSsrKSB7 CiAgICAgICAgdmFyIGRLZXkgPSAoaSA8IFoudGFnZS5sZW5ndGgpID8gZGF0dW1TdHIoWi50YWdl W2ldKSA6IG51bGw7CiAgICAgICAgdmFyIGluZm8yID0gZEtleSA/IChaLnRhZ0luZm9zW2RLZXld IHx8IHt9KSA6IHt9OwogICAgICAgIHZhciBpc3RGZXJpZW4gPSBpbmZvMi50eXAgPT09ICdmZXJp ZW4nOwogICAgICAgIHZhciBuYW1lID0gaXN0RmVyaWVuID8gKGluZm8yLm5hbWUgfHwgJycpIDog Jyc7CiAgICAgICAgaWYgKGlzdEZlcmllbiAmJiByYW5nZVN0YXJ0IDwgMCkgewogICAgICAgICAg ICAvLyBuZXVlIFJhbmdlIHN0YXJ0ZXQKICAgICAgICAgICAgcmFuZ2VTdGFydCA9IGk7IHJhbmdl TmFtZSA9IG5hbWU7CiAgICAgICAgfSBlbHNlIGlmIChyYW5nZVN0YXJ0ID49IDAgJiYgKCFpc3RG ZXJpZW4gfHwgbmFtZSAhPT0gcmFuZ2VOYW1lKSkgewogICAgICAgICAgICAvLyBSYW5nZSBlbmRl dCBoaWVyIChvZGVyIE5hbWUgd2VjaHNlbHQpCiAgICAgICAgICAgIHZhciBsYWVuZ2UgPSBpIC0g cmFuZ2VTdGFydDsKICAgICAgICAgICAgdmFyIGxlZnRQeCA9IHJhbmdlU3RhcnQgKiB6ZWxsZUJy ZWl0ZVB4OwogICAgICAgICAgICB2YXIgd2lkdGhQeCA9IGxhZW5nZSAqIHplbGxlQnJlaXRlUHg7 CiAgICAgICAgICAgIC8vIFBybyBXb2NoZW5lbmQtVGFnIGlubmVyaGFsYiBkZXIgUmFuZ2UgZWlu ZW4gZGV6ZW50ZW4gTWFya2VyCiAgICAgICAgICAgIC8vIGVpbnNldHplbiwgZGFtaXQgU2EvU28g aW4gZGVyIEZlcmllbi1CYXIgd2VpdGVyaGluIGVya2VubmJhcgogICAgICAgICAgICAvLyBibGVp YmVuIChzb25zdCB3ZXJkZW4gc2llIHZvbiBkZXIgQmFyIHVlYmVybWFsdCkuCiAgICAgICAgICAg IHZhciB3ZU1hcmtlcnMgPSAnJzsKICAgICAgICAgICAgZm9yICh2YXIgdyA9IHJhbmdlU3RhcnQ7 IHcgPCByYW5nZVN0YXJ0ICsgbGFlbmdlOyB3KyspIHsKICAgICAgICAgICAgICAgIGlmIChpc3RX b2NoZW5lbmRlKFoudGFnZVt3XSkpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgd2VMZWZ0ID0g KHcgLSByYW5nZVN0YXJ0KSAqIHplbGxlQnJlaXRlUHg7CiAgICAgICAgICAgICAgICAgICAgd2VN YXJrZXJzICs9ICc8c3BhbiBjbGFzcz0ia2QtZmVyaWVuLWJhci13ZSIgc3R5bGU9ImxlZnQ6JyAr IHdlTGVmdCArICdweDt3aWR0aDonICsgemVsbGVCcmVpdGVQeCArICdweCI+PC9zcGFuPic7CiAg ICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZmVyaWVuQmFyc0h0bWwg Kz0gJzxkaXYgY2xhc3M9ImtkLWZlcmllbi1iYXIiIHN0eWxlPSJsZWZ0OicgKyBsZWZ0UHggKyAn cHg7d2lkdGg6JyArIHdpZHRoUHggKyAncHgiIHRpdGxlPSInICsgZXNjYXBlQXR0cihyYW5nZU5h bWUpICsgJyI+JyArCiAgICAgICAgICAgICAgICB3ZU1hcmtlcnMgKwogICAgICAgICAgICAgICAg JzxzcGFuIGNsYXNzPSJrZC1mZXJpZW4tYmFyLXRleHQiPicgKyBlc2NhcGVIVE1MKHJhbmdlTmFt ZSkgKyAnPC9zcGFuPicgKwogICAgICAgICAgICAnPC9kaXY+JzsKICAgICAgICAgICAgcmFuZ2VT dGFydCA9IGlzdEZlcmllbiA/IGkgOiAtMTsKICAgICAgICAgICAgcmFuZ2VOYW1lID0gaXN0RmVy aWVuID8gbmFtZSA6ICcnOwogICAgICAgIH0KICAgIH0KICAgIGRvY3VtZW50LmdldEVsZW1lbnRC eUlkKCdkYXR1bS16ZWlsZS1hbmxhc3MnKS5pbm5lckhUTUwgPSBhbmxhc3NIdG1sICsgZmVyaWVu QmFyc0h0bWw7CiAgICB2YXIgc3RhZXJrZUVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3N0 YWVya2UtemVpbGUnKTsKICAgIHN0YWVya2VFbC5pbm5lckhUTUwgPSBzdGFlcmtlSHRtbDsKICAg IC8vIENvbnRhaW5lciBhdXNibGVuZGVuIHdlbm4gVG9nZ2xlIGF1cywgZGFtaXQgYXVjaCBIb2Vo ZSB3ZWdmYWVsbHQKICAgIHN0YWVya2VFbC5zdHlsZS5kaXNwbGF5ID0gc3RhZXJrZUFrdGl2ID8g JycgOiAnbm9uZSc7CgogICAgdmFyIHNmUmVjaHRzSHRtbCA9ICcnOwogICAgaWYgKHNmQWt0aXYp IHsKICAgICAgICBzZlplaWxlbi5mb3JFYWNoKGZ1bmN0aW9uKHopIHsKICAgICAgICAgICAgc2ZS ZWNodHNIdG1sICs9ICc8ZGl2IGNsYXNzPSJrb3BmLWRhdGVuLXplaWxlIj4nICsgeiArICc8L2Rp dj4nOwogICAgICAgIH0pOwogICAgfQogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NjaGlj aHRmb2xnZS1yZWNodHMnKS5pbm5lckhUTUwgPSBzZlJlY2h0c0h0bWw7CiAgICAvLyBUYWItRmFl cmJ1bmcgUHJ1ZWZ1bmcgbmFjaCBqZWRlbSBIZWFkZXItUmUtUmVuZGVyIGFrdHVhbGlzaWVyZW4g 4oCUCiAgICAvLyBqZWRlIFNjaGljaHQtQWVuZGVydW5nIHRyaWdnZXJ0IGtvcGZSZW5kZXJuLCBh bHNvIGJsZWlidCBkaWUgRmFlcmJ1bmcKICAgIC8vIGltbWVyIGF1ZiBkZW0gU3RhbmQgZGVyIGFr dHVlbGxlbiBEYXRlbi4KICAgIGlmIChyZW5kZXJIb29rcy5iZXNldHp1bmdzVGFiRmFyYmVBa3R1 YWxpc2llcmVuKSByZW5kZXJIb29rcy5iZXNldHp1bmdzVGFiRmFyYmVBa3R1YWxpc2llcmVuKCk7 CiAgICBwZXJmTWVhc3VyZShfcGVyZlRhZyk7Cn0KCi8vID09PT09IE5hbWVuc3NwYWx0ZSA9PT09 PQoKZXhwb3J0IGZ1bmN0aW9uIG5hbWVuUmVuZGVybigpIHsKICAgIHZhciBfcGVyZlRhZyA9IHBl cmZNYXJrKCduYW1lblJlbmRlcm4nKTsKICAgIHZhciBodG1sID0gJyc7CiAgICB2YXIgbGV0enRl R3J1cHBlID0gbnVsbDsKCiAgICBaLnBlcnNvbmVuLmZvckVhY2goZnVuY3Rpb24ocCkgewogICAg ICAgIHZhciBnID0gcC5ncnVwcGUgfHwgJz8nOwoKICAgICAgICAvLyBHcnVwcGVudHJlbm56ZWls ZSBlaW5mw7xnZW4KICAgICAgICBpZiAoZyAhPT0gbGV0enRlR3J1cHBlKSB7CiAgICAgICAgICAg IGlmIChsZXR6dGVHcnVwcGUgIT09IG51bGwpIHsKICAgICAgICAgICAgICAgIHZhciBnTGFiZWwg PSAoWi5ncnVwcGVuTWFwW2ddICYmIFouZ3J1cHBlbk1hcFtnXS5iZXplaWNobnVuZykgfHwgZzsK ICAgICAgICAgICAgICAgIGh0bWwgKz0gJzxkaXYgY2xhc3M9Im5hbWVuLXRyZW5uZXIiPi0tLSAn ICsgZXNjYXBlSFRNTChnTGFiZWwpICsgJyAtLS08L2Rpdj4nOwogICAgICAgICAgICB9CiAgICAg ICAgICAgIGxldHp0ZUdydXBwZSA9IGc7CiAgICAgICAgfQoKICAgICAgICB2YXIgZ3JDbHMgPSAn Z3ItJyArIGcuY2hhckF0KDApOwogICAgICAgIHZhciB1bWdDbHMgPSAhcC5ha3RpdiA/ICcgbmFt ZW4temVpbGUtdW1nZXNldHp0JyA6ICcnOwogICAgICAgIHZhciBuYW1lQW56ZWlnZSA9IChwLmRp ZW5zdGdyYWQgPyBwLmRpZW5zdGdyYWQgKyAnICcgOiAnJykgKyBwLm5hbWU7CiAgICAgICAgaHRt bCArPSAnPGRpdiBjbGFzcz0ibmFtZW4temVpbGUnICsgdW1nQ2xzICsgJyIgZGF0YS1wZXJzb24t aWQ9IicgKyBwLmlkICsgJyIgdGl0bGU9IicgKwogICAgICAgICAgICAocC5ha3RpdiA/ICcnIDog J1VtZ2VzZXR6dCDigJQgbnVyIHp1ciBSZWNoZXJjaGUgZWluZ2VibGVuZGV0JykgKyAnIj4nICsK ICAgICAgICAgICAgJzxkaXYgY2xhc3M9Im56LW5hbWUiPicgKwogICAgICAgICAgICAgICAgYXZh dGFyS3JlaXNIdG1sKHAsIDIwKSArCiAgICAgICAgICAgICAgICAnPHNwYW4gY2xhc3M9Im56LW5h bWUtdGV4dCI+JyArIGVzY2FwZUhUTUwobmFtZUFuemVpZ2UpICsgKHAuYWt0aXYgPyAnJyA6ICcg 4oCgJykgKyAnPC9zcGFuPicgKwogICAgICAgICAgICAnPC9kaXY+JyArCiAgICAgICAgICAgICc8 ZGl2IGNsYXNzPSJuei1vZSI+JyArIGVzY2FwZUhUTUwocC5vZSB8fCAnJykgKyAnPC9kaXY+JyAr CiAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJuei1ncnVwcGUgJyArIGdyQ2xzICsgJyI+JyArIGVz Y2FwZUhUTUwoZykgKyAnPC9kaXY+JyArCiAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJuei1kbnIi IHRpdGxlPSJUZWxlZm9uIj4nICsgZXNjYXBlSFRNTChwLnRlbGVmb24gfHwgJycpICsgJzwvZGl2 PicgKwogICAgICAgICAgICAnPGRpdiBjbGFzcz0ibnotcmFuZyIgdGl0bGU9IkRpZW5zdHJhbmci PicgKyAocC5wb3NpdGlvbiAhPSBudWxsID8gcC5wb3NpdGlvbiA6ICcnKSArICc8L2Rpdj4nICsK ICAgICAgICAnPC9kaXY+JzsKICAgIH0pOwogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ25h bWVuLWxpc3RlJykuaW5uZXJIVE1MID0gaHRtbDsKICAgIHBlcmZNZWFzdXJlKF9wZXJmVGFnKTsK fQoKLy8gPT09PT0gRGF0ZW5ncmlkID09PT09CgovLyBNYXBwdCBlaW5lbiBTY2hyYWZmdXItQ29k ZSB3aWUgIkYxIi8iUzIiLyJOMSIgYXVmIGRpZSB6dWdlaG9lcmlnZSBDU1MtS2xhc3NlLgpmdW5j dGlvbiBzY2hyYWZmdXJLbGFzc2UobSkgewogICAgaWYgKCFtKSByZXR1cm4gJyc7CiAgICB2YXIg cHIgPSBtLmNoYXJBdCgwKSwgcmcgPSBtLmNoYXJBdCgxKTsKICAgIGlmIChwciA9PT0gJ0YnKSBy ZXR1cm4gcmcgPT09ICcxJyA/ICdzY2hyYWZmdXItZnJ1ZWgnIDogJ3NjaHJhZmZ1ci1mcnVlaC0y JzsKICAgIGlmIChwciA9PT0gJ1MnKSByZXR1cm4gcmcgPT09ICcxJyA/ICdzY2hyYWZmdXItc3Bh ZXQnIDogJ3NjaHJhZmZ1ci1zcGFldC0yJzsKICAgIGlmIChwciA9PT0gJ04nKSByZXR1cm4gcmcg PT09ICcxJyA/ICdzY2hyYWZmdXItbmFjaHQnIDogJ3NjaHJhZmZ1ci1uYWNodC0yJzsKICAgIHJl dHVybiAnJzsKfQoKZXhwb3J0IGZ1bmN0aW9uIGRhdGVuR3JpZFJlbmRlcm4oKSB7CiAgICB2YXIg X3BlcmZUYWcgPSBwZXJmTWFyaygnZGF0ZW5HcmlkUmVuZGVybicpOwogICAgLy8gU2NocmFmZnVy ZW4gdm9yYWIgcHJvIFRhZyBiZXJlY2huZW4sIGRhbWl0IHNpZSBpbmxpbmUgaW4gZGVuIEhUTUwt U3RyaW5nCiAgICAvLyBrb2VubmVuIOKAlCBzcGFydCBoaW50ZXJoZXIgfjIyMDAgRE9NLVF1ZXJp ZXMgKHNpZWhlIHNjaHJhZmZ1ckJlcmVjaG5lbgogICAgLy8gKyBIb3QtUGF0aC1BdWRpdCkuIE1h cDogeyAiZGF0dW18cGlkIjogIkYxIiB8ICJTMiIgfCDigKYgfQogICAgdmFyIHNjaHJNYXAgPSB7 fTsKICAgIFoudGFnZS5mb3JFYWNoKGZ1bmN0aW9uKGQpIHsKICAgICAgICB2YXIgZFN0ciA9IGRh dHVtU3RyKGQpOwogICAgICAgIHZhciBzY2hyID0gc2NocmFmZnVyQmVyZWNobmVuKGRTdHIpOwog ICAgICAgIE9iamVjdC5rZXlzKHNjaHIpLmZvckVhY2goZnVuY3Rpb24ocGlkKSB7CiAgICAgICAg ICAgIHNjaHJNYXBbZFN0ciArICd8JyArIHBpZF0gPSBzY2hyW3BpZF07CiAgICAgICAgfSk7CiAg ICB9KTsKCiAgICB2YXIgaHRtbCA9ICcnOwogICAgdmFyIGxldHp0ZUdydXBwZSA9IG51bGw7CiAg ICAvLyBWb2xsZSBHcmlkLUJyZWl0ZSAoYWxsZSBUYWdlKS4gRGVyIFRyZW5uZXIgaXN0IGVpbiBs ZWVyZXMgRmxleC1LaW5kIHVuZAogICAgLy8gYmVrYW0gbWl0ICJtaW4td2lkdGg6MTAwJSIgbnVy IGRpZSBTSUNIVEJBUkUgQnJlaXRlIGRlcyBTY3JvbGwtQ29udGFpbmVycwogICAgLy8g4oCUIGJl aW0gUmF1c3Njcm9sbGVuIGJsaWViIGVyIHN0ZWhlbiwgZGllIERhdGVuemVpbGVuIGxpZWZlbiBh YmVyIHdlaXRlcgogICAgLy8gKHdlaXNzZXIgU3RyZWlmZW4gcmVjaHRzIG5lYmVuIGRlbSBHcnVw cGVuLUxhYmVsKS4gQm9yZGVyLWJveCAtPiBqZWRlCiAgICAvLyBaZWxsZSBpc3QgZXhha3QgLS16 ZWxsZS1icmVpdGUgYnJlaXQsIGFsc28gR2VzYW10YnJlaXRlID0gYnJlaXRlICogVGFnZS4KICAg IHZhciBncmlkQnJlaXRlQ3NzID0gJ2NhbGModmFyKC0temVsbGUtYnJlaXRlKSAqICcgKyAoWi50 YWdlLmxlbmd0aCB8fCAwKSArICcpJzsKCiAgICBaLnBlcnNvbmVuLmZvckVhY2goZnVuY3Rpb24o cCkgewogICAgICAgIHZhciBnID0gcC5ncnVwcGUgfHwgJz8nOwoKICAgICAgICAvLyBHcnVwcGVu dHJlbm56ZWlsZSBpbSBHcmlkCiAgICAgICAgaWYgKGcgIT09IGxldHp0ZUdydXBwZSkgewogICAg ICAgICAgICBpZiAobGV0enRlR3J1cHBlICE9PSBudWxsKSB7CiAgICAgICAgICAgICAgICAvLyBJ bmxpbmUtU3R5bGUsIGRhbWl0IEJyb3dzZXItQ2FjaGUgb2RlciBDU1MtT3ZlcnJpZGUgZWdhbCBz aW5kLgogICAgICAgICAgICAgICAgaHRtbCArPSAnPGRpdiBjbGFzcz0iZ3JpZC10cmVubmVyIiBz dHlsZT0iYmFja2dyb3VuZDp2YXIoLS1iZy1wcmltYXJ5KTt3aWR0aDonICsgZ3JpZEJyZWl0ZUNz cyArICc7bWluLXdpZHRoOjEwMCUiPjwvZGl2Pic7CiAgICAgICAgICAgIH0KICAgICAgICAgICAg bGV0enRlR3J1cHBlID0gZzsKICAgICAgICB9CgogICAgICAgIHZhciB6ZWlsZUNscyA9ICdncmlk LXplaWxlJyArICghcC5ha3RpdiA/ICcgZ3JpZC16ZWlsZS11bWdlc2V0enQnIDogJycpOwogICAg ICAgIGh0bWwgKz0gJzxkaXYgY2xhc3M9IicgKyB6ZWlsZUNscyArICciIGRhdGEtcGVyc29uLWlk PSInICsgcC5pZCArICciPic7CiAgICAgICAgdmFyIHBpZFN0ciA9IFN0cmluZyhwLmlkKTsKICAg ICAgICB2YXIgZGFyZkVkaXQgPSBkYXJmWmVsbGVFZGl0aWVyZW4ocC5pZCk7CiAgICAgICAgWi50 YWdlLmZvckVhY2goZnVuY3Rpb24oZCkgewogICAgICAgICAgICB2YXIgZFN0ciA9IGRhdHVtU3Ry KGQpOwogICAgICAgICAgICB2YXIgZSA9IChaLnBsYW51bmcuZWludHJhZWdlIHx8IHt9KVtkU3Ry XSB8fCB7fTsKICAgICAgICAgICAgdmFyIHdlcnQgPSBlW3BpZFN0cl0gfHwgJyc7CiAgICAgICAg ICAgIHZhciBmYXJiZW4gPSBaLmNvZGVNYXBbd2VydF0gfHwge307CiAgICAgICAgICAgIHZhciBp bmZvID0gWi50YWdJbmZvc1tkU3RyXSB8fCB7IHR5cDogJ25vcm1hbCcgfTsKICAgICAgICAgICAg dmFyIHN0eWxlID0gJycsIGtsYXNzZW4gPSAnZ3JpZC16ZWxsZSc7CiAgICAgICAgICAgIHZhciBh bnplaWdlID0gd2VydDsKICAgICAgICAgICAgdmFyIHRpdGVsID0gd2VydDsKCiAgICAgICAgICAg IGlmICh3ZXJ0ICYmIGZhcmJlbi5oaW50ZXJncnVuZCkgewogICAgICAgICAgICAgICAgc3R5bGUg PSAnYmFja2dyb3VuZC1jb2xvcjonICsgZXNjYXBlQXR0cihmYXJiZW4uaGludGVyZ3J1bmQpICsg Jztjb2xvcjonICsgZXNjYXBlQXR0cihmYXJiZW4uc2NocmlmdCB8fCAnIzAwMCcpOwogICAgICAg ICAgICAgICAgYW56ZWlnZSA9IGZhcmJlbi5rdWVyemVsIHx8IHdlcnQ7CiAgICAgICAgICAgIH0g ZWxzZSBpZiAoaW5mby50eXAgPT09ICd3b2NoZW5lbmRlJykga2xhc3NlbiArPSAnIHNwYWx0ZS13 b2NoZW5lbmRlJzsKICAgICAgICAgICAgZWxzZSBpZiAoaW5mby50eXAgPT09ICdmZWllcnRhZycp IGtsYXNzZW4gKz0gJyBzcGFsdGUtZmVpZXJ0YWcnOwogICAgICAgICAgICBlbHNlIGlmIChpbmZv LnR5cCA9PT0gJ2ZlcmllbicpIGtsYXNzZW4gKz0gJyBzcGFsdGUtZmVyaWVuJzsKICAgICAgICAg ICAgaWYgKGRTdHIgPT09IFouaGV1dGVTdHIpIGtsYXNzZW4gKz0gJyBzcGFsdGUtaGV1dGUnOwoK ICAgICAgICAgICAgLy8gT2huZSBFZGl0LVJlY2h0IHdpcmQgZGllIFplbGxlIHZpc3VlbGwgYWxz IGdlc3BlcnJ0IG1hcmtpZXJ0LgogICAgICAgICAgICBpZiAoIWRhcmZFZGl0KSBrbGFzc2VuICs9 ICcgZ3JpZC16ZWxsZS1nZXNwZXJydCc7CgogICAgICAgICAgICAvLyBTY2hyYWZmdXIgaW5saW5l IGF1cyBkZXIgdm9yYWIgYmVyZWNobmV0ZW4gTWFwLgogICAgICAgICAgICB2YXIgbSA9IHNjaHJN YXBbZFN0ciArICd8JyArIHBpZFN0cl07CiAgICAgICAgICAgIGlmIChtKSB7CiAgICAgICAgICAg ICAgICB2YXIgY2wgPSBzY2hyYWZmdXJLbGFzc2UobSk7CiAgICAgICAgICAgICAgICBpZiAoY2wp IGtsYXNzZW4gKz0gJyAnICsgY2w7CiAgICAgICAgICAgICAgICBpZiAobS5jaGFyQXQoMSkgPT09 ICcxJykgewogICAgICAgICAgICAgICAgICAgIGtsYXNzZW4gKz0gJyB2ZXJhbnR3b3J0bGljaCc7 CiAgICAgICAgICAgICAgICAgICAgdGl0ZWwgKz0gJyBbVkVSQU5UV09SVExJQ0hdJzsKICAgICAg ICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgaHRtbCArPSAnPGRpdiBjbGFz cz0iJyArIGtsYXNzZW4gKyAnIiBkYXRhLWRhdHVtPSInICsgZFN0ciArICciIGRhdGEtcGVyc29u PSInICsgcGlkU3RyICsgJyIgc3R5bGU9IicgKyBzdHlsZSArICciIHRpdGxlPSInICsgZXNjYXBl QXR0cih0aXRlbCkgKyAnIj4nICsgZXNjYXBlSFRNTChhbnplaWdlKSArICc8L2Rpdj4nOwogICAg ICAgIH0pOwogICAgICAgIGh0bWwgKz0gJzwvZGl2Pic7CiAgICB9KTsKICAgIGRvY3VtZW50Lmdl dEVsZW1lbnRCeUlkKCdncmlkLWRhdGVuJykuaW5uZXJIVE1MID0gaHRtbDsKICAgIC8vIChEZXIg ZnJ1ZWhlcmUgZGVmZW5zaXZlIHF1ZXJ5U2VsZWN0b3JBbGwoJy5ncmlkLXRyZW5uZXInKS1TdHls ZS1Mb29wIGlzdAogICAgLy8gZW50ZmVybnQ6IGRpZSBUcmVubmVyIHRyYWdlbiBpaHJlIElubGlu ZS1TdHlsZXMgYmVyZWl0cyBpbSBIVE1MLVN0cmluZwogICAgLy8g4oCUIGBzdHlsZT0iYmFja2dy b3VuZDp2YXIoLS1iZy1wcmltYXJ5KTt3aWR0aDrigKY7bWluLXdpZHRoOjEwMCUiYCDigJQgdW5k CiAgICAvLyBDU1MtVmFyaWFibGVuIGluIElubGluZS1TdHlsZXMgbG9lc2VuIGF1ZiBkZW4gQ2hy b21pdW0tQnJvd3Nlcm4genV2ZXItCiAgICAvLyBsYWVzc2lnIGF1Zi4gRGVyIExvb3AgdmVydXJz YWNodGUgcHJvIFZvbGwtUmVuZGVyIGVpbmVuIGdldENvbXB1dGVkU3R5bGUtCiAgICAvLyBSZWZs b3cgKyBET00tUXVlcnkgKyBTdHlsZS1Xcml0ZXMgb2huZSBNZWhyd2VydC4pCiAgICBpZiAocmVu ZGVySG9va3Mua29tbWVudGFyZUltR3JpZEFuemVpZ2VuKSByZW5kZXJIb29rcy5rb21tZW50YXJl SW1HcmlkQW56ZWlnZW4oKTsKICAgIHBlcmZNZWFzdXJlKF9wZXJmVGFnKTsKfQoKLy8gPT09PT0g WmVsbGUgYWt0dWFsaXNpZXJlbiAobmFjaCDDhG5kZXJ1bmcpID09PT09CgpleHBvcnQgZnVuY3Rp b24gemVsbGVWaXN1ZWxsQWt0dWFsaXNpZXJlbihkU3RyLCBwaWQsIHdlcnQpIHsKICAgIHZhciBf cGVyZlRhZyA9IHBlcmZNYXJrKCd6ZWxsZVZpc3VlbGxBa3R1YWxpc2llcmVuJyk7CiAgICB2YXIg eiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5ncmlkLXplbGxlW2RhdGEtZGF0dW09IicgKyBk U3RyICsgJyJdW2RhdGEtcGVyc29uPSInICsgcGlkICsgJyJdJyk7CiAgICBpZiAoIXopIHsgcGVy Zk1lYXN1cmUoX3BlcmZUYWcpOyByZXR1cm47IH0KICAgIC8vIEFsdGVyIFdlcnQgYXVzIGRlbSB0 aXRsZS1BdHRyaWJ1dCBkZXIgWmVsbGU6IGdlc2V0enQgYmVpbSBsZXR6dGVuIFJlbmRlcgogICAg Ly8gYnp3LiB2b20gbGV0enRlbiB6ZWxsZVZpc3VlbGxBa3R1YWxpc2llcmVuIOKAlCBaLnBsYW51 bmcuZWludHJhZWdlIHd1cmRlCiAgICAvLyB2b20gQXVmcnVmZXIgc2Nob24gdWViZXJzY2hyaWVi ZW4uCiAgICB2YXIgYWx0ZXJUaXRlbCA9IHoudGl0bGUgfHwgJyc7CiAgICB2YXIgZGdsQmV0cm9m ZmVuID0gYWx0ZXJUaXRlbC5pbmRleE9mKCdER0wnKSA+PSAwIHx8ICh3ZXJ0IHx8ICcnKS5pbmRl eE9mKCdER0wnKSA+PSAwOwoKICAgIHZhciBmYXJiZW4gPSBaLmNvZGVNYXBbd2VydF0gfHwge307 CiAgICB2YXIgaW5mbyA9IFoudGFnSW5mb3NbZFN0cl0gfHwgeyB0eXA6ICdub3JtYWwnIH07CiAg ICB6LmNsYXNzTmFtZSA9ICdncmlkLXplbGxlJzsKICAgIHouc3R5bGUuY3NzVGV4dCA9ICcnOwog ICAgei50aXRsZSA9IHdlcnQgfHwgJyc7CiAgICBpZiAod2VydCAmJiBmYXJiZW4uaGludGVyZ3J1 bmQpIHsKICAgICAgICB6LnN0eWxlLmJhY2tncm91bmRDb2xvciA9IGZhcmJlbi5oaW50ZXJncnVu ZDsKICAgICAgICB6LnN0eWxlLmNvbG9yID0gZmFyYmVuLnNjaHJpZnQgfHwgJyMwMDAnOwogICAg ICAgIHoudGV4dENvbnRlbnQgPSBmYXJiZW4ua3VlcnplbCB8fCB3ZXJ0OwogICAgfSBlbHNlIHsK ICAgICAgICB6LnRleHRDb250ZW50ID0gd2VydDsKICAgICAgICBpZiAoaW5mby50eXAgPT09ICd3 b2NoZW5lbmRlJykgei5jbGFzc0xpc3QuYWRkKCdzcGFsdGUtd29jaGVuZW5kZScpOwogICAgICAg IGVsc2UgaWYgKGluZm8udHlwID09PSAnZmVpZXJ0YWcnKSB6LmNsYXNzTGlzdC5hZGQoJ3NwYWx0 ZS1mZWllcnRhZycpOwogICAgICAgIGVsc2UgaWYgKGluZm8udHlwID09PSAnZmVyaWVuJykgei5j bGFzc0xpc3QuYWRkKCdzcGFsdGUtZmVyaWVuJyk7CiAgICB9CiAgICBpZiAoZFN0ciA9PT0gWi5o ZXV0ZVN0cikgei5jbGFzc0xpc3QuYWRkKCdzcGFsdGUtaGV1dGUnKTsKCiAgICAvLyBjbGFzc05h bWUgd3VyZGUgb2JlbiBrb21wbGV0dCB6dXJ1ZWNrZ2VzZXR6dCDigJQgZGllIFNwZXJyLU1hcmtp ZXJ1bmcgZnVlcgogICAgLy8gbmljaHQtZWRpdGllcmJhcmUgWmVsbGVuIChmcmVtZGUgR3J1cHBl L1BlcnNvbikgbXVzcyBkYWhlciB3aWVkZXIgZ2VzZXR6dAogICAgLy8gd2VyZGVuLCBzb25zdCBz aWVodCBlaW5lIHJlYWQtb25seS1aZWxsZSBuYWNoIGVpbmVtIExpdmUtU3luYy1VcGRhdGUKICAg IC8vIHBsb2V0emxpY2ggZWRpdGllcmJhciBhdXMgKEJ1ZzogQ29udGVkZHUgc2FoIGZyZW1kZSBT LVdERi9TLURHTCBmYXJiaWcpLgogICAgaWYgKCFkYXJmWmVsbGVFZGl0aWVyZW4ocGlkKSkgei5j bGFzc0xpc3QuYWRkKCdncmlkLXplbGxlLWdlc3BlcnJ0Jyk7CgogICAgLy8gU3TDpHJrZSArIFNj aHJhZmZ1ciBzaW5kIGJlaWRlIERHTC1hYmhhZW5naWcg4oCUIHdlbm4gd2VkZXIgYWx0ZXIgbm9j aAogICAgLy8gbmV1ZXIgV2VydCAiREdMIiBlbnRoaWVsdCAoVXJsL2tyL2Rmci9TZW0vZXRjLiks IGFlbmRlcnQgc2ljaCBkYXJhbgogICAgLy8gbmljaHRzLiBTa2lwIHNwYXJ0IHBybyBFZGl0IGRl biA0Ni1QZXJzb25lbi1SZWNhbGMgKyB+NTAgRE9NLVF1ZXJpZXMKICAgIC8vIChBdWRpdC1QaGFz ZSBCLjEsIDIwMjYtMDUtMjEpLgogICAgaWYgKCFkZ2xCZXRyb2ZmZW4pIHJldHVybjsKCiAgICAv LyBTdMOkcmtlIGbDvHIgZGllc2VuIFRhZyBha3R1YWxpc2llcmVuCiAgICBzdGFlcmtlWmVsbGVB a3R1YWxpc2llcmVuKGRTdHIpOwoKICAgIHZhciBhbGxlID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rv ckFsbCgnLmdyaWQtemVsbGVbZGF0YS1kYXR1bT0iJyArIGRTdHIgKyAnIl0nKTsKICAgIGFsbGUu Zm9yRWFjaChmdW5jdGlvbihhKSB7CiAgICAgICAgYS5jbGFzc0xpc3QucmVtb3ZlKCdzY2hyYWZm dXItZnJ1ZWgnLCdzY2hyYWZmdXItc3BhZXQnLCdzY2hyYWZmdXItbmFjaHQnLCdzY2hyYWZmdXIt ZnJ1ZWgtMicsJ3NjaHJhZmZ1ci1zcGFldC0yJywnc2NocmFmZnVyLW5hY2h0LTInLCd2ZXJhbnR3 b3J0bGljaCcpOwogICAgfSk7CiAgICB2YXIgc2NociA9IHNjaHJhZmZ1ckJlcmVjaG5lbihkU3Ry KTsKICAgIE9iamVjdC5rZXlzKHNjaHIpLmZvckVhY2goZnVuY3Rpb24ocCkgewogICAgICAgIHZh ciBtID0gc2NocltwXSwgenogPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuZ3JpZC16ZWxsZVtk YXRhLWRhdHVtPSInICsgZFN0ciArICciXVtkYXRhLXBlcnNvbj0iJyArIHAgKyAnIl0nKTsKICAg ICAgICBpZiAoIXp6KSByZXR1cm47CiAgICAgICAgdmFyIGNsID0gc2NocmFmZnVyS2xhc3NlKG0p OwogICAgICAgIGlmIChjbCkgenouY2xhc3NMaXN0LmFkZChjbCk7CiAgICAgICAgaWYgKG0uY2hh ckF0KDEpID09PSAnMScpIHsKICAgICAgICAgICAgenouY2xhc3NMaXN0LmFkZCgndmVyYW50d29y dGxpY2gnKTsKICAgICAgICAgICAgenoudGl0bGUgPSAoenoudGl0bGUgfHwgJycpICsgJyBbVkVS QU5UV09SVExJQ0hdJzsKICAgICAgICB9CiAgICB9KTsKICAgIHBlcmZNZWFzdXJlKF9wZXJmVGFn KTsKfQoKZXhwb3J0IGZ1bmN0aW9uIHN0YWVya2VaZWxsZUFrdHVhbGlzaWVyZW4oZFN0cikgewog ICAgdmFyIHN0WmVpbGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3RhZXJrZS16ZWlsZScp OwogICAgaWYgKCFzdFplaWxlKSByZXR1cm47CiAgICB2YXIgaWR4ID0gWi50YWdlLmZpbmRJbmRl eChmdW5jdGlvbihkKSB7IHJldHVybiBkYXR1bVN0cihkKSA9PT0gZFN0cjsgfSk7CiAgICBpZiAo aWR4IDwgMCB8fCBpZHggPj0gc3RaZWlsZS5jaGlsZHJlbi5sZW5ndGgpIHJldHVybjsKICAgIHZh ciBzdCA9IHN0YWVya2VCZXJlY2huZW4oZFN0cik7CiAgICB2YXIgemVsbGUgPSBzdFplaWxlLmNo aWxkcmVuW2lkeF07CiAgICB6ZWxsZS5jbGFzc05hbWUgPSAna2QtemVsbGUgJyArIChzdC5vayA/ ICdzdGFlcmtlLW9rJyA6ICdzdGFlcmtlLXdhcm51bmcnKTsKICAgIHplbGxlLnRleHRDb250ZW50 ID0gc3QudGV4dDsKICAgIHplbGxlLnRpdGxlID0gJ0Y6JyArIHN0LmYgKyAnIFM6JyArIHN0LnMg KyAnIE46JyArIHN0Lm47Cn0KCi8vID09PT09IFNjcm9sbC1TeW5jaHJvbmlzYXRpb24gPT09PT0K CmV4cG9ydCBmdW5jdGlvbiBzY3JvbGxTeW5jKCkgewogICAgdmFyIGdyaWQgPSBkb2N1bWVudC5n ZXRFbGVtZW50QnlJZCgnZ3JpZC1zY3JvbGwtY29udGFpbmVyJyk7CiAgICB2YXIgbmFtZW4gPSBk b2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbmFtZW4tbGlzdGUnKTsKICAgIHZhciBzcGVycmUgPSBm YWxzZTsKICAgIGdyaWQuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgZnVuY3Rpb24oKSB7CiAg ICAgICAgaWYgKHNwZXJyZSkgcmV0dXJuOwogICAgICAgIHNwZXJyZSA9IHRydWU7CiAgICAgICAg bmFtZW4uc2Nyb2xsVG9wID0gZ3JpZC5zY3JvbGxUb3A7CiAgICAgICAgc3BlcnJlID0gZmFsc2U7 CiAgICB9KTsKICAgIG5hbWVuLmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGZ1bmN0aW9uKCkg ewogICAgICAgIGlmIChzcGVycmUpIHJldHVybjsKICAgICAgICBzcGVycmUgPSB0cnVlOwogICAg ICAgIGdyaWQuc2Nyb2xsVG9wID0gbmFtZW4uc2Nyb2xsVG9wOwogICAgICAgIHNwZXJyZSA9IGZh bHNlOwogICAgfSk7CiAgICAvLyBEYXMgR3JpZCBoYXQgZWluZW4gaG9yaXpvbnRhbGVuIFNjcm9s bGJhbGtlbiB1bnRlbiwgZGVyIFBsYXR6IGZyaXNzdC4KICAgIC8vIERpZSBOYW1lbnNsaXN0ZSBk YW5lYmVuIG5pY2h0IOKAlCBvaG5lIEF1c2dsZWljaCB3YWVyZW4gZGllIGxldHp0ZW4KICAgIC8v IFplaWxlbiB2ZXJzY2hvYmVuLiBQYWRkaW5nIGR5bmFtaXNjaCBhdWYgZGllIHJlYWxlIFNjcm9s bGJhci1Ib2VoZQogICAgLy8gc2V0emVuIChjbGllbnRIZWlnaHQgYmVydWVja3NpY2h0aWd0IGRl biBCYWxrZW4sIG9mZnNldEhlaWdodCBuaWNodCkuCiAgICBmdW5jdGlvbiBzY3JvbGxiYXJBdXNn bGVpY2goKSB7CiAgICAgICAgdmFyIGggPSBncmlkLm9mZnNldEhlaWdodCAtIGdyaWQuY2xpZW50 SGVpZ2h0OwogICAgICAgIGlmIChoIDwgMCkgaCA9IDA7CiAgICAgICAgbmFtZW4uc3R5bGUucGFk ZGluZ0JvdHRvbSA9IGggKyAncHgnOwogICAgfQogICAgc2Nyb2xsYmFyQXVzZ2xlaWNoKCk7CiAg ICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgc2Nyb2xsYmFyQXVzZ2xlaWNoKTsK fQoKZXhwb3J0IGZ1bmN0aW9uIHp1bUhldXRpZ2VuRGF0dW0oKSB7CiAgICAvLyBEb3BwZWx0ZXMg cmVxdWVzdEFuaW1hdGlvbkZyYW1lOiBnYXJhbnRpZXJ0LCBkYXNzIGRlciBCcm93c2VyIHp3ZWkK ICAgIC8vIFJlbmRlci1GcmFtZXMgZHVyY2hsYXVmZW4gaGF0IChMYXlvdXQgKyBQYWludCksIGJl dm9yIHdpciBkaWUKICAgIC8vIFplbGxlbi1Qb3NpdGlvbiBhdXNsZXNlbi4gU29uc3Qga2FubiBu YWNoIExvZ2luIC8gVGFiLVdlY2hzZWwgLwogICAgLy8gSG90LVJlbG9hZCBkaWUgWmVsbGUgbm9j aCBuaWNodCBmaW5hbCBwb3NpdGlvbmllcnQgc2VpbiB1bmQgZGVyCiAgICAvLyBTY3JvbGwgc3By aW5ndCBrbmFwcCBkYW5lYmVuIChDaGVycnktUGljayAxYWVmZTI2KS4KICAgIHJlcXVlc3RBbmlt YXRpb25GcmFtZShmdW5jdGlvbigpIHsKICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZnVu Y3Rpb24oKSB7CiAgICAgICAgICAgIHZhciB6ZWxsZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3Io JyNkYXR1bS16ZWlsZS10YWcgLmtkLXplbGxlW2RhdGEtZGF0dW09IicgKyBaLmhldXRlU3RyICsg JyJdJyk7CiAgICAgICAgICAgIGlmICh6ZWxsZSkgewogICAgICAgICAgICAgICAgdmFyIGMgPSBk b2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZ3JpZC1zY3JvbGwtY29udGFpbmVyJyk7CiAgICAgICAg ICAgICAgICB2YXIgciA9IHplbGxlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLCBjciA9IGMuZ2V0 Qm91bmRpbmdDbGllbnRSZWN0KCk7CiAgICAgICAgICAgICAgICBjLnNjcm9sbExlZnQgKz0gci5s ZWZ0IC0gY3IubGVmdCAtIGNyLndpZHRoIC8gMzsKICAgICAgICAgICAgfQogICAgICAgIH0pOwog ICAgfSk7Cn0KCi8vID09PT09IE5hdmlnYXRpb24gLyBUYWItV2VjaHNlbCA9PT09PQoKZXhwb3J0 IGZ1bmN0aW9uIGFuc2ljaHRXZWNoc2VsbihuYW1lKSB7CiAgICBpZiAobmFtZSA9PT0gJ2FkbWlu JyAmJiAhZGFyZkFkbWluVGFiKCkpIHsKICAgICAgICB0b2FzdCgnQWRtaW5pc3RyYXRpb24gaXN0 IG51ciBmw7xyIFN1cGVyVXNlciB6dWfDpG5nbGljaCcsICd3YXJudW5nJyk7CiAgICAgICAgcmV0 dXJuOwogICAgfQogICAgaWYgKG5hbWUgPT09ICdzdGF0aXN0aWsnICYmICFkYXJmU3RhdGlzdGlr KCkpIHsKICAgICAgICB0b2FzdCgnU3RhdGlzdGlrIGlzdCBmw7xyIGRpY2ggbmljaHQgZnJlaWdl c2NoYWx0ZXQnLCAnd2FybnVuZycpOwogICAgICAgIHJldHVybjsKICAgIH0KICAgIGlmIChuYW1l ID09PSAnbG9nYnVjaCcgJiYgIWRhcmZMb2didWNoKCkpIHsKICAgICAgICB0b2FzdCgnTG9nYnVj aCBpc3QgZsO8ciBkaWNoIG5pY2h0IGZyZWlnZXNjaGFsdGV0JywgJ3dhcm51bmcnKTsKICAgICAg ICByZXR1cm47CiAgICB9CiAgICBpZiAobmFtZSA9PT0gJ2Jlc2V0enVuZycgJiYgIShaLnJlY2h0 ZSAmJiBaLnJlY2h0ZS5pc3RHZXNhbXR2ZXJhbnR3b3J0bGljaCkpIHsKICAgICAgICB2YXIgYmV6 QmVzZXR6dW5nID0gKHJlbmRlckhvb2tzLmJleiAmJiByZW5kZXJIb29rcy5iZXooJ25hdi5iZXNl dHp1bmcnKSkgfHwgJ0Jlc2V0enVuZyc7CiAgICAgICAgdG9hc3QoYmV6QmVzZXR6dW5nICsgJyBp c3QgbnVyIGbDvHIgR2VzYW10dmVyYW50d29ydGxpY2hlIHp1Z8OkbmdsaWNoJywgJ3dhcm51bmcn KTsKICAgICAgICByZXR1cm47CiAgICB9CiAgICBbJ3BsYW51bmcnLCd3b2NoZW5wbGFuJywncGVy c3BsYW4nLCdhZG1pbicsJ3N0YXRpc3RpaycsJ2xvZ2J1Y2gnLCdiZXNldHp1bmcnXS5mb3JFYWNo KGZ1bmN0aW9uKGEpIHsKICAgICAgICB2YXIgZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn YW5zaWNodC0nICsgYSk7CiAgICAgICAgaWYgKGVsKSBlbC5jbGFzc0xpc3QudG9nZ2xlKCd2ZXJz dGVja3QnLCBhICE9PSBuYW1lKTsKICAgIH0pOwogICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFs bCgnLm5hdi1idG4nKS5mb3JFYWNoKGZ1bmN0aW9uKGIpIHsKICAgICAgICBiLmNsYXNzTGlzdC50 b2dnbGUoJ2FrdGl2JywgYi5nZXRBdHRyaWJ1dGUoJ2RhdGEtYW5zaWNodCcpID09PSBuYW1lKTsK ICAgIH0pOwogICAgaWYgKG5hbWUgPT09ICd3b2NoZW5wbGFuJyAmJiByZW5kZXJIb29rcy53cFJl bmRlcm4pIHJlbmRlckhvb2tzLndwUmVuZGVybigpOwogICAgaWYgKG5hbWUgPT09ICdwZXJzcGxh bicgJiYgcmVuZGVySG9va3MucHBSZW5kZXJuKSByZW5kZXJIb29rcy5wcFJlbmRlcm4oKTsKICAg IGlmIChuYW1lID09PSAnbG9nYnVjaCcgJiYgcmVuZGVySG9va3MubG9nYnVjaExhZGVuKSByZW5k ZXJIb29rcy5sb2didWNoTGFkZW4oKTsKICAgIGlmIChuYW1lID09PSAnc3RhdGlzdGlrJyAmJiBy ZW5kZXJIb29rcy5zdGF0aXN0aWtMYWRlbikgcmVuZGVySG9va3Muc3RhdGlzdGlrTGFkZW4oKTsK ICAgIGlmIChuYW1lID09PSAnYWRtaW4nICYmIHJlbmRlckhvb2tzLmFkbWluUmVuZGVybikgcmVu ZGVySG9va3MuYWRtaW5SZW5kZXJuKCk7CiAgICBpZiAobmFtZSA9PT0gJ2Jlc2V0enVuZycgJiYg cmVuZGVySG9va3MuYmVzZXR6dW5nc2tvbnRyb2xsZVJlbmRlcm4pIHJlbmRlckhvb2tzLmJlc2V0 enVuZ3Nrb250cm9sbGVSZW5kZXJuKCk7CgogICAgLy8gQWt0aXZlIEFuc2ljaHQgcGVyc2lzdGll cmVuLCBkYW1pdCBlaW4gQnJvd3Nlci1SZWZyZXNoIChGNSkgbmljaHQgaW4KICAgIC8vIGRpZSBQ bGFudW5nc2Fuc2ljaHQgenVydWVja3NwcmluZ3QuIEJld3Vzc3Qgc2Vzc2lvblN0b3JhZ2Ugc3Rh dHQKICAgIC8vIGxvY2FsU3RvcmFnZTogZWluIG5ldWVyIEJyb3dzZXItU3RhcnQgdWViZXIgZGds LmJhdCAoPSBuZXVlcyBUYWIsCiAgICAvLyBsZWVyZXMgc2Vzc2lvblN0b3JhZ2UpIGZhZW5ndCBk YW1pdCBpbW1lciBhdWYgZGVyIFBsYW51bmdzYW5zaWNodAogICAgLy8gYW4sIHdhZWhyZW5kIGVp biBJbi1UYWItUmVmcmVzaCBkaWUgQW5zaWNodCBoYWVsdC4KICAgIHRyeSB7IHNlc3Npb25TdG9y YWdlLnNldEl0ZW0oJ3ZpMy5ha3RpdmVBbnNpY2h0JywgbmFtZSk7IH0gY2F0Y2ggKGUpIHsgLyog aWdub3JlICovIH0KfQo= ### FILE: js/hinweise.js | 19061 Ly8gPT09IGhpbndlaXNlLmpzID09PQovLyBJbi1BcHAtSGlud2Vpcy1TeXN0ZW0gKEJhbm5lciBv YmVuICsgQmFkZ2UgYW0gVXNlci1OYW1lbiArIE1vZGFsLVNlaXRlKS4KLy8KLy8gRXJzZXR6dCBz ZWl0IDIwMjYtMDUtMjAgYWxsZSBSb3V0aW5lLW1haWx0by1UcmlnZ2VyIChLcmFua21lbGR1bmcs Ci8vIElkZW50aXRhZXRzLUFlbmRlcnVuZywgQmFja3VwLVJlc3RvcmUsIFBsYW51bmctUmVzZXQs IFJvbGxlbi1BZW5kZXJ1bmcKLy8gb2huZSBWZXJhbnR3b3J0dW5ncy1VZWJlcmdhbmcpLiBTaWNo dGJhciBudXIgZnVlciBTdXBlclVzZXIgKyBHZXNhbXQtCi8vIHZlcmFudHdvcnRsaWNoZS4KLy8K Ly8gRGF0ZW4ga29tbWVuIHZvbSBTZXJ2ZXIgKC9hcGkvaGlud2Vpc2UpLiBQcm8tVXNlci1MZXNl c3RhdHVzIGxpZWd0Ci8vIGluIGRhdGEvaGlud2Vpc2UuanNvbiwgQmFubmVyLURpc21pc3MgbGFl dWZ0IGNsaWVudC1zZWl0aWcgcGVyCi8vIHNlc3Npb25TdG9yYWdlIChrb21tdCBiZWkgUmVsb2Fk IG1pdCBuZXVlbSBIaW53ZWlzIHdpZWRlcikuCgppbXBvcnQgeyBaIH0gZnJvbSAnLi9jb3JlX3N0 YXRlLmpzJzsKaW1wb3J0IHsgYXBpLCBhcGlQb3N0IH0gZnJvbSAnLi9jb3JlX2FwaS5qcyc7Cmlt cG9ydCB7IGVzY2FwZUhUTUwsIGVzY2FwZUF0dHIsIGRhdHVtRm9ybWF0REUgfSBmcm9tICcuL2Nv cmVfdXRpbC5qcyc7CmltcG9ydCB7IG1vZGFsWmVpZ2VuLCBtb2RhbFNjaGxpZXNzZW4sIHRvYXN0 LCBiZXN0YWV0aWdlbiB9IGZyb20gJy4vdWlfZGlhbG9nLmpzJzsKaW1wb3J0IHsgdGFnRGV0YWls TW9kYWxaZWlnZW4gfSBmcm9tICcuL2Jlc2V0enVuZy5qcyc7Cgp2YXIgQkFOTkVSX0RJU01JU1Nf S0VZID0gJ2hpbndlaXNfYmFubmVyX2Rpc21pc3NlZF9pZHMnOwoKLy8gTGVzYmFyZSBCZXplaWNo bnVuZ2VuIHBybyBUeXAuIFdpcmQgaW0gQmFubmVyLVRleHQgdW5kIGluIGRlcgovLyBNb2RhbC1U YWJlbGxlIHZlcndlbmRldC4KdmFyIFRZUF9MQUJFTCA9IHsKICAgIGlkZW50aXRhZXRfZ2VhZW5k ZXJ0OiAgICAnSWRlbnRpdMOkdCBnZcOkbmRlcnQnLAogICAgcm9sbGVfZ2VhZW5kZXJ0OiAgICAg ICAgICdSb2xsZSBnZcOkbmRlcnQnLAogICAgYmFja3VwX3dpZWRlcmhlcmdlc3RlbGx0OidCYWNr dXAgd2llZGVyaGVyZ2VzdGVsbHQnLAogICAgcGxhbnVuZ19yZXNldDogICAgICAgICAgICdQbGFu dW5nIHp1csO8Y2tnZXNldHp0JywKICAgIGtyYW5rbWVsZHVuZzogICAgICAgICAgICAnS3Jhbmtt ZWxkdW5nJywKICAgIHBlcnNvbl9uZXU6ICAgICAgICAgICAgICAnUGVyc29uIG5ldSBhbmdlbGVn dCcsCiAgICBwZXJzb25faW5ha3RpdjogICAgICAgICAgJ1BlcnNvbiBpbmFrdGl2IGdlc2V0enQn LAogICAgZ2VidXJ0c3RhZzogICAgICAgICAgICAgICdHZWJ1cnRzdGFnJywKICAgIHNjaGljaHRf ZWRpdF9uYWhlOiAgICAgICAnU2NoaWNodC3DhG5kZXJ1bmcgbmFoZSBhbSBEYXR1bScKfTsKCi8v IExvZXN0IGVpbmUgQXVzbG9lc2VyLUtlbm51bmcgKHouQi4gIlBPTElaRUlcTlcwNTU4MDEiIG9k ZXIgIlBPTElaRUkvTlcwNTU4MDEiKQovLyBhdWYgZWluZW4gbGVzYmFyZW4gUGVyc29uZW5uYW1l biBhdWYuIFN1Y2h0IHVlYmVyIHAubndLZW5udW5nIGluIGRlciB2b2xsZW4KLy8gUGVyc29uZW5s aXN0ZSAoaW5rbC4gaW5ha3RpdmVyKS4gRmFlbGx0IGF1ZiBkaWUgcmVpbmUgS2VubnVuZyAob2hu ZSBEb21hZW5lKQovLyB6dXJ1ZWNrLCB3ZW5uIGtlaW5lIFBlcnNvbiBwYXNzdCDigJQgc28gc3Rl aHQgZGEgbmllIG1laHIgbnVyIFxEb21hZW5lXEtlbm51bmcuCmZ1bmN0aW9uIGF1c2xvZXNlckFu emVpZ2UoYXVzbG9lc2VyKSB7CiAgICBpZiAoIWF1c2xvZXNlcikgcmV0dXJuICcnOwogICAgdmFy IHJvaCA9IFN0cmluZyhhdXNsb2VzZXIpLnRyaW0oKTsKICAgIHZhciBrZW5udW5nID0gcm9oLnJl cGxhY2UoL14uKltcXC9dLywgJycpLnRyaW0oKTsgICAgICAvLyBEb21hZW5lbi1QcmFlZml4IHdl ZwogICAgdmFyIHppZWwgPSAoa2VubnVuZyB8fCByb2gpLnRvVXBwZXJDYXNlKCk7CiAgICB2YXIg cGVyc29uZW4gPSAoWi5wbGFudW5nICYmIFoucGxhbnVuZy5wZXJzb25lbikgfHwgW107CiAgICBm b3IgKHZhciBpID0gMDsgaSA8IHBlcnNvbmVuLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgdmFyIHAg PSBwZXJzb25lbltpXTsKICAgICAgICB2YXIgbmsgPSBTdHJpbmcocC5ud0tlbm51bmcgfHwgJycp LnJlcGxhY2UoL14uKltcXC9dLywgJycpLnRyaW0oKS50b1VwcGVyQ2FzZSgpOwogICAgICAgIGlm IChuayAmJiBuayA9PT0gemllbCkgewogICAgICAgICAgICB2YXIgbmFtZSA9IChwLm5hbWUgfHwg JycpICsgKHAudm9ybmFtZSA/ICgnLCAnICsgcC52b3JuYW1lKSA6ICcnKTsKICAgICAgICAgICAg dmFyIGRnID0gcC5kaWVuc3RncmFkID8gKHAuZGllbnN0Z3JhZCArICcgJykgOiAnJzsKICAgICAg ICAgICAgcmV0dXJuIChkZyArIG5hbWUpLnRyaW0oKSB8fCAoa2VubnVuZyB8fCByb2gpOwogICAg ICAgIH0KICAgIH0KICAgIHJldHVybiBrZW5udW5nIHx8IHJvaDsKfQoKLy8gQWt0dWVsbGVyIFVz ZXIgaXN0IFNVIG9kZXIgR2VzYW10dmVyYW50d29ydGxpY2g/IEhpbndlaXNlIHNpbmQgbnVyCi8v IGZ1ZXIgZGllc2VuIEVtcGZhZW5nZXJrcmVpcyBzaWNodGJhci4KZXhwb3J0IGZ1bmN0aW9uIGhp bndlaXNlU2ljaHRiYXIoKSB7CiAgICB2YXIgciA9IFoucmVjaHRlIHx8IHt9OwogICAgcmV0dXJu ICEhKHIuaXN0U3VwZXJVc2VyIHx8IHIuaXN0R2VzYW10dmVyYW50d29ydGxpY2gpOwp9CgovLyBF aW5lIE1pbmktTG9naWsgZnVlciBkZW4gQmFubmVyLURpc21pc3M6IFVzZXIga2xpY2t0IGRhcyBC YW5uZXIgd2VnLAovLyBtZXJrZW4gd2lyIHVucyBkaWUgYWt0dWVsbCBhbmdlemVpZ3RlbiBJRHMg aW4gc2Vzc2lvblN0b3JhZ2UuIEVyc3QKLy8gd2VubiBlaW4gTkVVRVIgSGlud2VpcyBkYXp1a29t bXQsIHRhdWNodCBkYXMgQmFubmVyIHdpZWRlciBhdWYuCmZ1bmN0aW9uIGRpc21pc3NlZElkc0xl c2VuKCkgewogICAgdHJ5IHsKICAgICAgICB2YXIgcmF3ID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRl bShCQU5ORVJfRElTTUlTU19LRVkpOwogICAgICAgIGlmICghcmF3KSByZXR1cm4gW107CiAgICAg ICAgdmFyIGFyciA9IEpTT04ucGFyc2UocmF3KTsKICAgICAgICByZXR1cm4gQXJyYXkuaXNBcnJh eShhcnIpID8gYXJyIDogW107CiAgICB9IGNhdGNoIChlKSB7IHJldHVybiBbXTsgfQp9CmZ1bmN0 aW9uIGRpc21pc3NlZElkc1NjaHJlaWJlbihpZHMpIHsKICAgIHRyeSB7IHNlc3Npb25TdG9yYWdl LnNldEl0ZW0oQkFOTkVSX0RJU01JU1NfS0VZLCBKU09OLnN0cmluZ2lmeShpZHMpKTsgfSBjYXRj aCAoZSkge30KfQpmdW5jdGlvbiBhbGxlQWt0dWVsbGVuSWRzR2VzZWhlbigpIHsKICAgIHZhciBo aW4gPSBaLmhpbndlaXNlIHx8IFtdOwogICAgaWYgKGhpbi5sZW5ndGggPT09IDApIHJldHVybiB0 cnVlOwogICAgdmFyIGdlcyA9IGRpc21pc3NlZElkc0xlc2VuKCk7CiAgICBmb3IgKHZhciBpID0g MDsgaSA8IGhpbi5sZW5ndGg7IGkrKykgewogICAgICAgIGlmIChnZXMuaW5kZXhPZihoaW5baV0u aWQpIDwgMCkgcmV0dXJuIGZhbHNlOwogICAgfQogICAgcmV0dXJuIHRydWU7Cn0KCi8vIEhvbHQg ZGllIG9mZmVuZW4gSGlud2Vpc2Ugdm9tIFNlcnZlci4gTGllZmVydCBpbW1lciBlaW4gUHJvbWlz ZSwKLy8gZGFtaXQgZGVyIEF1ZnJ1ZmVyIC50aGVuIGFuaGFlbmdlbiBrYW5uLgpleHBvcnQgZnVu Y3Rpb24gaGlud2Vpc2VMYWRlbigpIHsKICAgIGlmICghaGlud2Vpc2VTaWNodGJhcigpKSB7CiAg ICAgICAgWi5oaW53ZWlzZSA9IFtdOwogICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoW10p OwogICAgfQogICAgcmV0dXJuIGFwaSgnL2FwaS9oaW53ZWlzZScpLnRoZW4oZnVuY3Rpb24ocikg ewogICAgICAgIFouaGlud2Vpc2UgPSAociAmJiByLmhpbndlaXNlKSA/IHIuaGlud2Vpc2UgOiBb XTsKICAgICAgICByZXR1cm4gWi5oaW53ZWlzZTsKICAgIH0pLmNhdGNoKGZ1bmN0aW9uKGUpIHsK ICAgICAgICAvLyBCZWkgTmV0endlcmtmZWhsZXIgc3RpbGxzY2h3ZWlnZW5kIGxlZXIgbGFzc2Vu IOKAlCBCYW5uZXIgZGFyZgogICAgICAgIC8vIG5pY2h0IGF1cyBWZXJzZWhlbiAiYWxsZXMgb2th eSIgc3VnZ2VyaWVyZW4sIGRlc2hhbGIgYmVoYWx0ZW4KICAgICAgICAvLyB3aXIgZGVuIHZvcmhl cmlnZW4gU3RhbmQuIENvbnNvbGUuZXJyb3IgZnVlciBEZWJ1Z2dpbmcuCiAgICAgICAgaWYgKHdp bmRvdy5jb25zb2xlKSBjb25zb2xlLmVycm9yKCdoaW53ZWlzZUxhZGVuOicsIGUpOwogICAgICAg IHJldHVybiBaLmhpbndlaXNlIHx8IFtdOwogICAgfSk7Cn0KCi8vIFJlbmRlcnQgQmFubmVyICsg QmFkZ2UuIElkZW1wb3RlbnQ7IGJlaSBqZWRlbSBIaW53ZWlzZS1VcGRhdGUgYXVmcnVmZW4uCmV4 cG9ydCBmdW5jdGlvbiBoaW53ZWlzZUFuemVpZ2VBa3R1YWxpc2llcmVuKCkgewogICAgaGlud2Vp c2VCYWRnZVJlbmRlcm4oKTsKICAgIGhpbndlaXNlQmFubmVyUmVuZGVybigpOwp9CgpleHBvcnQg ZnVuY3Rpb24gaGlud2Vpc2VCYWRnZVJlbmRlcm4oKSB7CiAgICB2YXIgZWwgPSBkb2N1bWVudC5n ZXRFbGVtZW50QnlJZCgnaGlud2Vpcy1iYWRnZScpOwogICAgaWYgKCFlbCkgcmV0dXJuOwogICAg dmFyIGhpbiA9IFouaGlud2Vpc2UgfHwgW107CiAgICBpZiAoIWhpbndlaXNlU2ljaHRiYXIoKSB8 fCBoaW4ubGVuZ3RoID09PSAwKSB7CiAgICAgICAgZWwuY2xhc3NMaXN0LmFkZCgndmVyc3RlY2t0 Jyk7CiAgICAgICAgZWwudGV4dENvbnRlbnQgPSAnJzsKICAgICAgICByZXR1cm47CiAgICB9CiAg ICBlbC5jbGFzc0xpc3QucmVtb3ZlKCd2ZXJzdGVja3QnKTsKICAgIGVsLnRleHRDb250ZW50ID0g U3RyaW5nKGhpbi5sZW5ndGgpOwogICAgZWwudGl0bGUgPSBoaW4ubGVuZ3RoICsgJyBvZmZlbmUg SGlud2VpcycgKyAoaGluLmxlbmd0aCA9PT0gMSA/ICcnIDogJ2UnKSArICcg4oCUIEtsaWNrIHp1 bSBBbnplaWdlbic7Cn0KCmV4cG9ydCBmdW5jdGlvbiBoaW53ZWlzZUJhbm5lclJlbmRlcm4oKSB7 CiAgICB2YXIgZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaGlud2Vpcy1iYW5uZXInKTsK ICAgIGlmICghZWwpIHJldHVybjsKICAgIHZhciBoaW4gPSBaLmhpbndlaXNlIHx8IFtdOwogICAg aWYgKCFoaW53ZWlzZVNpY2h0YmFyKCkgfHwgaGluLmxlbmd0aCA9PT0gMCB8fCBhbGxlQWt0dWVs bGVuSWRzR2VzZWhlbigpKSB7CiAgICAgICAgZWwuY2xhc3NMaXN0LmFkZCgndmVyc3RlY2t0Jyk7 CiAgICAgICAgZWwuaW5uZXJIVE1MID0gJyc7CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgZWwu Y2xhc3NMaXN0LnJlbW92ZSgndmVyc3RlY2t0Jyk7CiAgICB2YXIgdHh0ID0gJ0R1IGhhc3QgJyAr IGhpbi5sZW5ndGggKyAnIG5ldWUgSGlud2VpcycgKyAoaGluLmxlbmd0aCA9PT0gMSA/ICcnIDog J2UnKSArICcuJzsKICAgIGVsLmlubmVySFRNTCA9CiAgICAgICAgJzxzcGFuIGNsYXNzPSJoaW53 ZWlzLWJhbm5lci10ZXh0Ij4nICsgZXNjYXBlSFRNTCh0eHQpICsgJzwvc3Bhbj4nICsKICAgICAg ICAnPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4gYnRuLXByaW1hZXIgYnRuLWtsZWlu IiBpZD0iaGlud2Vpcy1iYW5uZXItYW56ZWlnZW4iPkFuemVpZ2VuPC9idXR0b24+JyArCiAgICAg ICAgJzxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iaGlud2Vpcy1iYW5uZXItc2NobGllc3Nl biIgaWQ9ImhpbndlaXMtYmFubmVyLWRpc21pc3MiIGFyaWEtbGFiZWw9IkJhbm5lciBhdXNibGVu ZGVuIiB0aXRsZT0iQmFubmVyIGJpcyB6dW0gbsOkY2hzdGVuIG5ldWVuIEhpbndlaXMgYXVzYmxl bmRlbiI+w5c8L2J1dHRvbj4nOwogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2hpbndlaXMt YmFubmVyLWFuemVpZ2VuJykuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbigpIHsK ICAgICAgICBoaW53ZWlzZU1vZGFsT2VmZm5lbigpOwogICAgfSk7CiAgICBkb2N1bWVudC5nZXRF bGVtZW50QnlJZCgnaGlud2Vpcy1iYW5uZXItZGlzbWlzcycpLmFkZEV2ZW50TGlzdGVuZXIoJ2Ns aWNrJywgZnVuY3Rpb24oKSB7CiAgICAgICAgdmFyIGlkcyA9IGhpbi5tYXAoZnVuY3Rpb24oaCkg eyByZXR1cm4gaC5pZDsgfSk7CiAgICAgICAgZGlzbWlzc2VkSWRzU2NocmVpYmVuKGlkcyk7CiAg ICAgICAgaGlud2Vpc2VCYW5uZXJSZW5kZXJuKCk7CiAgICB9KTsKfQoKLy8gRm9ybWF0aWVydCBk ZW4gS29udGV4dCBlaW5lcyBIaW53ZWlzZXMgbGVzYmFyIChlaW5lIGt1cnplIGRldXRzY2hlCi8v IEJlc2NocmVpYnVuZykuIFBybyBUeXAgYW5nZXBhc3N0LCBnZW5lcmlzY2hlciBGYWxsYmFjayB6 ZWlndCBrZXk9dmFsdWUuCmZ1bmN0aW9uIGtvbnRleHRGb3JtYXQoZWludHJhZykgewogICAgdmFy IGsgPSBlaW50cmFnLmtvbnRleHQgfHwge307CiAgICB2YXIgdCA9IGVpbnRyYWcudHlwOwogICAg dmFyIHA7CiAgICBpZiAodCA9PT0gJ2lkZW50aXRhZXRfZ2VhZW5kZXJ0JykgewogICAgICAgIHJl dHVybiAnUGVyc29uIDxzdHJvbmc+JyArIGVzY2FwZUhUTUwoay5wZXJzb25fbmFtZSB8fCAoJyMn ICsgay5wZXJzb25faWQpKSArICc8L3N0cm9uZz46IEZlbGQgPGVtPicgKwogICAgICAgICAgICBl c2NhcGVIVE1MKGsuZmVsZCB8fCAnPycpICsgJzwvZW0+ICZuYnNwOzxzcGFuIHN0eWxlPSJjb2xv cjp2YXIoLS10ZXh0LW11dGVkKSI+JyArCiAgICAgICAgICAgIGVzY2FwZUhUTUwoay5hbHRlcl93 ZXJ0IHx8ICcobGVlciknKSArICcgJnJhcnI7ICcgKyBlc2NhcGVIVE1MKGsubmV1ZXJfd2VydCB8 fCAnKGxlZXIpJykgKyAnPC9zcGFuPic7CiAgICB9CiAgICBpZiAodCA9PT0gJ3JvbGxlX2dlYWVu ZGVydCcpIHsKICAgICAgICByZXR1cm4gJ1JvbGxlIDxzdHJvbmc+JyArIGVzY2FwZUhUTUwoay5y b2xsZSB8fCAnPycpICsgJzwvc3Ryb25nPiBiZWkgPHN0cm9uZz4nICsKICAgICAgICAgICAgZXNj YXBlSFRNTChrLnBlcnNvbl9uYW1lIHx8IGsubndLZW5udW5nIHx8ICc/JykgKyAnPC9zdHJvbmc+ OiAnICsKICAgICAgICAgICAgZXNjYXBlSFRNTChrLnJpY2h0dW5nIHx8IChrLmFsdCArICcgJnJh cnI7ICcgKyBrLm5ldSkgfHwgJycpOwogICAgfQogICAgaWYgKHQgPT09ICdiYWNrdXBfd2llZGVy aGVyZ2VzdGVsbHQnKSB7CiAgICAgICAgcmV0dXJuICdCYWNrdXAgPHN0cm9uZz4nICsgZXNjYXBl SFRNTChrLmJhY2t1cCB8fCAnPycpICsgJzwvc3Ryb25nPiB3aWVkZXJoZXJnZXN0ZWxsdC4nOwog ICAgfQogICAgaWYgKHQgPT09ICdwbGFudW5nX3Jlc2V0JykgewogICAgICAgIHJldHVybiAnUGxh bnVuZyB3dXJkZSB6dXLDvGNrZ2VzZXR6dCcgKyAoay5hbnphaGwgPyAnICgnICsgay5hbnphaGwg KyAnIEVpbnRyw6RnZSkuJyA6ICcuJyk7CiAgICB9CiAgICBpZiAodCA9PT0gJ2tyYW5rbWVsZHVu ZycpIHsKICAgICAgICBwID0gZXNjYXBlSFRNTChrLnBlcnNvbl9uYW1lIHx8ICgnIycgKyBrLnBl cnNvbl9pZCkpOwogICAgICAgIHZhciBkID0gay5kYXR1bSA/IGRhdHVtRm9ybWF0REUoay5kYXR1 bSkgOiAnPyc7CiAgICAgICAgdmFyIHNjID0gay5zY2hpY2h0Q29kZSA/ICcgKCcgKyBlc2NhcGVI VE1MKGsuc2NoaWNodENvZGUpICsgJyknIDogJyc7CiAgICAgICAgcmV0dXJuICc8c3Ryb25nPicg KyBwICsgJzwvc3Ryb25nPiBrcmFuayBhbSA8c3Ryb25nPicgKyBlc2NhcGVIVE1MKGQpICsgJzwv c3Ryb25nPicgKyBzYzsKICAgIH0KICAgIGlmICh0ID09PSAncGVyc29uX25ldScpIHsKICAgICAg ICByZXR1cm4gJ05ldWUgUGVyc29uOiA8c3Ryb25nPicgKyBlc2NhcGVIVE1MKGsucGVyc29uX25h bWUgfHwgJz8nKSArICc8L3N0cm9uZz4nOwogICAgfQogICAgaWYgKHQgPT09ICdwZXJzb25faW5h a3RpdicpIHsKICAgICAgICByZXR1cm4gJ1BlcnNvbiA8c3Ryb25nPicgKyBlc2NhcGVIVE1MKGsu cGVyc29uX25hbWUgfHwgJz8nKSArICc8L3N0cm9uZz4gaXN0IG5pY2h0IG1laHIgYWt0aXYuJzsK ICAgIH0KICAgIGlmICh0ID09PSAnZ2VidXJ0c3RhZycpIHsKICAgICAgICByZXR1cm4gJ0dlYnVy dHN0YWc6IDxzdHJvbmc+JyArIGVzY2FwZUhUTUwoay5wZXJzb25fbmFtZSB8fCAnPycpICsgJzwv c3Ryb25nPiBhbSAnICsgZXNjYXBlSFRNTChrLmRhdHVtIHx8ICc/Jyk7CiAgICB9CiAgICBpZiAo dCA9PT0gJ3NjaGljaHRfZWRpdF9uYWhlJykgewogICAgICAgIHJldHVybiAnU2NoaWNodC3DhG5k ZXJ1bmcgYW0gPHN0cm9uZz4nICsgZXNjYXBlSFRNTChrLmRhdHVtIHx8ICc/JykgKyAnPC9zdHJv bmc+IGbDvHIgPHN0cm9uZz4nICsKICAgICAgICAgICAgZXNjYXBlSFRNTChrLnBlcnNvbl9uYW1l IHx8ICgnIycgKyBrLnBlcnNvbl9pZCkpICsgJzwvc3Ryb25nPic7CiAgICB9CiAgICAvLyBHZW5l cmlzY2hlciBGYWxsYmFjawogICAgdmFyIHBhaXJzID0gW107CiAgICBPYmplY3Qua2V5cyhrKS5m b3JFYWNoKGZ1bmN0aW9uKGtleSkgewogICAgICAgIHBhaXJzLnB1c2goZXNjYXBlSFRNTChrZXkp ICsgJz0nICsgZXNjYXBlSFRNTChTdHJpbmcoa1trZXldKSkpOwogICAgfSk7CiAgICByZXR1cm4g cGFpcnMuam9pbignLCAnKSB8fCAnPHNwYW4gc3R5bGU9ImNvbG9yOnZhcigtLXRleHQtbXV0ZWQp Ij4oa2VpbiBLb250ZXh0KTwvc3Bhbj4nOwp9CgpmdW5jdGlvbiB6ZWl0Rm9ybWF0KGlzbykgewog ICAgaWYgKCFpc28pIHJldHVybiAnJzsKICAgIHRyeSB7CiAgICAgICAgdmFyIGQgPSBuZXcgRGF0 ZShpc28pOwogICAgICAgIHZhciBkZCA9IFN0cmluZyhkLmdldERhdGUoKSkucGFkU3RhcnQoMiwg JzAnKTsKICAgICAgICB2YXIgbW0gPSBTdHJpbmcoZC5nZXRNb250aCgpICsgMSkucGFkU3RhcnQo MiwgJzAnKTsKICAgICAgICB2YXIgaGggPSBTdHJpbmcoZC5nZXRIb3VycygpKS5wYWRTdGFydCgy LCAnMCcpOwogICAgICAgIHZhciBtaSA9IFN0cmluZyhkLmdldE1pbnV0ZXMoKSkucGFkU3RhcnQo MiwgJzAnKTsKICAgICAgICByZXR1cm4gZGQgKyAnLicgKyBtbSArICcuICcgKyBoaCArICc6JyAr IG1pOwogICAgfSBjYXRjaCAoZSkgeyByZXR1cm4gaXNvOyB9Cn0KCi8vIE9lZmZuZXQgZWluIE1v ZGFsIG1pdCBkZXIgSGlud2Vpcy1MaXN0ZS4gUHJvIEVpbnRyYWc6IFR5cCwgWmVpdCwKLy8gQXVz bG9lc2VyLCBLb250ZXh0LCAiVmVyc3RhbmRlbiItQnV0dG9uLiBLcmFua21lbGR1bmdlbiBiZWtv bW1lbgovLyB6dXNhZXR6bGljaCBlaW5lbiBCdXR0b24gIkthbmRpZGF0ZW4gYW5zY2hyZWliZW4i IChQaGFzZSA2IHdpcmVkKS4KZXhwb3J0IGZ1bmN0aW9uIGhpbndlaXNlTW9kYWxPZWZmbmVuKCkg ewogICAgaWYgKCFoaW53ZWlzZVNpY2h0YmFyKCkpIHJldHVybjsKICAgIHZhciBoaW4gPSBaLmhp bndlaXNlIHx8IFtdOwogICAgaWYgKGhpbi5sZW5ndGggPT09IDApIHsKICAgICAgICB0b2FzdCgn S2VpbmUgb2ZmZW5lbiBIaW53ZWlzZS4nLCAnaW5mbycpOwogICAgICAgIHJldHVybjsKICAgIH0K ICAgIHZhciByb3dzID0gaGluLm1hcChmdW5jdGlvbihoKSB7CiAgICAgICAgdmFyIHR5cExhYmVs ID0gVFlQX0xBQkVMW2gudHlwXSB8fCBoLnR5cDsKICAgICAgICB2YXIgY3R4ID0ga29udGV4dEZv cm1hdChoKTsKICAgICAgICB2YXIga3JCdG4gPSAnJzsKICAgICAgICBpZiAoaC50eXAgPT09ICdr cmFua21lbGR1bmcnKSB7CiAgICAgICAgICAgIC8vIFBoYXNlIDYgd2lyaW5nOiBkZXJ6ZWl0IG51 ciBlaW4gU3R1Yiwgc2NocmVpYnQgaW4gdG9hc3QuCiAgICAgICAgICAgIGtyQnRuID0gJzxidXR0 b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuIGJ0bi1zZWsgYnRuLWtsZWluIiBkYXRhLWFrdGlv bj0ia2FuZGlkYXRlbiIgZGF0YS1pZD0iJyArIGguaWQgKwogICAgICAgICAgICAgICAgJyIgdGl0 bGU9IkthbmRpZGF0ZW4gZsO8ciBkaWUgYXVzZ2VmYWxsZW5lIFNjaGljaHQgYW5zY2hyZWliZW4i PkthbmRpZGF0ZW4gYW5zY2hyZWliZW48L2J1dHRvbj4nOwogICAgICAgIH0KICAgICAgICByZXR1 cm4gJzx0ciBkYXRhLWhpbndlaXMtaWQ9IicgKyBoLmlkICsgJyI+JyArCiAgICAgICAgICAgICc8 dGQgc3R5bGU9ImZvbnQtc2l6ZToxMXB4O2NvbG9yOnZhcigtLXRleHQtbXV0ZWQpO3doaXRlLXNw YWNlOm5vd3JhcCI+JyArIGVzY2FwZUhUTUwoemVpdEZvcm1hdChoLmVyc3RlbGx0QW0pKSArICc8 L3RkPicgKwogICAgICAgICAgICAnPHRkPjxzdHJvbmc+JyArIGVzY2FwZUhUTUwodHlwTGFiZWwp ICsgJzwvc3Ryb25nPjwvdGQ+JyArCiAgICAgICAgICAgICc8dGQgc3R5bGU9ImZvbnQtc2l6ZTox MXB4O2NvbG9yOnZhcigtLXRleHQtbXV0ZWQpIiB0aXRsZT0iJyArIGVzY2FwZUF0dHIoaC5hdXNs b2VzZXIgfHwgJycpICsgJyI+JyArIGVzY2FwZUhUTUwoYXVzbG9lc2VyQW56ZWlnZShoLmF1c2xv ZXNlcikpICsgJzwvdGQ+JyArCiAgICAgICAgICAgICc8dGQ+JyArIGN0eCArICc8L3RkPicgKwog ICAgICAgICAgICAnPHRkIHN0eWxlPSJ3aGl0ZS1zcGFjZTpub3dyYXAiPjxkaXYgc3R5bGU9ImRp c3BsYXk6ZmxleDtnYXA6NnB4O2p1c3RpZnktY29udGVudDpmbGV4LWVuZCI+JyArCiAgICAgICAg ICAgICAgICBrckJ0biArCiAgICAgICAgICAgICAgICAnPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNs YXNzPSJidG4gYnRuLWVyZm9sZyBidG4ta2xlaW4iIGRhdGEtYWt0aW9uPSJrZW5udG5pcyIgZGF0 YS1pZD0iJyArIGguaWQgKyAnIj5WZXJzdGFuZGVuPC9idXR0b24+JyArCiAgICAgICAgICAgICc8 L2Rpdj48L3RkPicgKwogICAgICAgICc8L3RyPic7CiAgICB9KS5qb2luKCcnKTsKICAgIHZhciBr b2VycGVyID0KICAgICAgICAnPHAgc3R5bGU9Im1hcmdpbjowIDAgMTJweDtjb2xvcjp2YXIoLS10 ZXh0LW11dGVkKSI+T2ZmZW5lIEhpbndlaXNlIGbDvHIgU3VwZXJVc2VyIHVuZCBHZXNhbXR2ZXJh bnR3b3J0bGljaGUuIE1pdCA8ZW0+VmVyc3RhbmRlbjwvZW0+IHZlcnNjaHdpbmRldCBlaW4gZWlu emVsbmVyIEVpbnRyYWcgYXVzIGRlaW5lciBMaXN0ZTsgaW0gTG9nYnVjaCBibGVpYnQgZXIgZXJo YWx0ZW4uPC9wPicgKwogICAgICAgICc8dGFibGUgY2xhc3M9ImFkbWluLXRhYmVsbGUgaGlud2Vp cy1tb2RhbC10YWJlbGxlIj4nICsKICAgICAgICAgICAgJzx0aGVhZD48dHI+JyArCiAgICAgICAg ICAgICAgICAnPHRoIHN0eWxlPSJ3aWR0aDo5MHB4Ij5XYW5uPC90aD4nICsKICAgICAgICAgICAg ICAgICc8dGggc3R5bGU9IndpZHRoOjE2MHB4Ij5UeXA8L3RoPicgKwogICAgICAgICAgICAgICAg Jzx0aCBzdHlsZT0id2lkdGg6MTUwcHgiPkF1c2dlbMO2c3Qgdm9uPC90aD4nICsKICAgICAgICAg ICAgICAgICc8dGg+RGV0YWlsczwvdGg+JyArCiAgICAgICAgICAgICAgICAnPHRoIHN0eWxlPSJ3 aWR0aDoyNDBweDt0ZXh0LWFsaWduOnJpZ2h0Ij5Ba3Rpb248L3RoPicgKwogICAgICAgICAgICAn PC90cj48L3RoZWFkPicgKwogICAgICAgICAgICAnPHRib2R5PicgKyByb3dzICsgJzwvdGJvZHk+ JyArCiAgICAgICAgJzwvdGFibGU+JzsKICAgIC8vIEJlaSBtZWhyZXJlbiBIaW53ZWlzZW4genVz YWV0emxpY2ggZWluIFNhbW1lbC1BYm5pY2tlbiBhbmJpZXRlbiDigJQgZGllCiAgICAvLyBlaW56 ZWxuZSBLZW5udG5pc25haG1lIHBybyBaZWlsZSBibGVpYnQgdW52ZXJhZW5kZXJ0IGVyaGFsdGVu LgogICAgdmFyIGZ1c3MgPQogICAgICAgIChoaW4ubGVuZ3RoID4gMSA/ICc8YnV0dG9uIHR5cGU9 ImJ1dHRvbiIgY2xhc3M9ImJ0biBidG4tZXJmb2xnIiBpZD0iaGlud2Vpcy1hbGxlLWtlbm50bmlz Ij5BbGxlIHp1ciBLZW5udG5pcyBuZWhtZW48L2J1dHRvbj4nIDogJycpICsKICAgICAgICAnPGJ1 dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4gYnRuLXNlayIgaWQ9ImhpbndlaXMtbW9kYWwt c2NobGllc3NlbiI+U2NobGllw59lbjwvYnV0dG9uPic7CiAgICBtb2RhbFplaWdlbignSGlud2Vp c2UgKCcgKyBoaW4ubGVuZ3RoICsgJyknLCBrb2VycGVyLCBmdXNzLCBudWxsLCBudWxsLCB7IHJl aW5lckRpYWxvZzogdHJ1ZSB9KTsKICAgIC8vIFN0YW5kYXJkYnJlaXRlICg2MjAgcHgpIGlzdCBo aWVyIHp1IGVuZyDigJQgVGFiZWxsZSBicmF1Y2h0IGRpZSBncm9zc2UKICAgIC8vIFZhcmlhbnRl IChhbmFsb2cgRS1NYWlsLVZvcmxhZ2VuLU1vZGFsKS4KICAgIHZhciBtaSA9IGRvY3VtZW50LnF1 ZXJ5U2VsZWN0b3IoJyNtb2RhbC1vdmVybGF5IC5tb2RhbC1pbmhhbHQnKTsKICAgIGlmIChtaSkg bWkuY2xhc3NMaXN0LmFkZCgnbW9kYWwtaW5oYWx0LWdyb3NzJyk7CiAgICBkb2N1bWVudC5nZXRF bGVtZW50QnlJZCgnaGlud2Vpcy1tb2RhbC1zY2hsaWVzc2VuJykuYWRkRXZlbnRMaXN0ZW5lcign Y2xpY2snLCBmdW5jdGlvbigpIHsKICAgICAgICBtb2RhbFNjaGxpZXNzZW4odHJ1ZSk7CiAgICB9 KTsKICAgIHZhciBhbGxlQnRuID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2hpbndlaXMtYWxs ZS1rZW5udG5pcycpOwogICAgaWYgKGFsbGVCdG4pIGFsbGVCdG4uYWRkRXZlbnRMaXN0ZW5lcign Y2xpY2snLCBoaW53ZWlzZUFsbGVLZW5udG5pc25laG1lbik7CiAgICAvLyBBY3Rpb24tQnV0dG9u cyBpbiBkZXIgVGFiZWxsZSBkZWxlZ2llcmVuCiAgICB2YXIgdGJvZHkgPSBkb2N1bWVudC5xdWVy eVNlbGVjdG9yKCcuaGlud2Vpcy1tb2RhbC10YWJlbGxlIHRib2R5Jyk7CiAgICBpZiAodGJvZHkp IHRib2R5LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oZSkgewogICAgICAgIHZh ciBidG4gPSBlLnRhcmdldC5jbG9zZXN0KCdidXR0b25bZGF0YS1ha3Rpb25dJyk7CiAgICAgICAg aWYgKCFidG4pIHJldHVybjsKICAgICAgICB2YXIgaWQgPSBwYXJzZUludChidG4uZ2V0QXR0cmli dXRlKCdkYXRhLWlkJyksIDEwKTsKICAgICAgICB2YXIgYWt0aW9uID0gYnRuLmdldEF0dHJpYnV0 ZSgnZGF0YS1ha3Rpb24nKTsKICAgICAgICBpZiAoYWt0aW9uID09PSAna2VubnRuaXMnKSB7CiAg ICAgICAgICAgIGhpbndlaXNLZW5udG5pc25laG1lbihpZCk7CiAgICAgICAgfSBlbHNlIGlmIChh a3Rpb24gPT09ICdrYW5kaWRhdGVuJykgewogICAgICAgICAgICAvLyBQaGFzZSA2ICgyMDI2LTA1 LTIxKTogYXVzIGRlbSBLcmFua21lbGR1bmdzLUhpbndlaXMgZGlyZWt0IGlucwogICAgICAgICAg ICAvLyBUYWctRGV0YWlsLU1vZGFsIHNwcmluZ2VuLiBEZXIgZG9ydCB2b3JoYW5kZW5lIFNjaGlj aHQtQmxvY2sKICAgICAgICAgICAgLy8gKEZydWVoL1NwYWV0L05hY2h0KSB6ZWlndCBhdXRvbWF0 aXNjaCBkZW4gIkthbmRpZGF0ZW4gYW5zY2hyZWliZW4iLQogICAgICAgICAgICAvLyBCdXR0b24g YmVpIDwyIFBlcnNvbmVuLgogICAgICAgICAgICB2YXIgaCA9IChaLmhpbndlaXNlIHx8IFtdKS5m aW5kKGZ1bmN0aW9uKHgpIHsgcmV0dXJuIHguaWQgPT09IGlkOyB9KTsKICAgICAgICAgICAgaWYg KCFoIHx8ICFoLmtvbnRleHQgfHwgIWgua29udGV4dC5kYXR1bSkgewogICAgICAgICAgICAgICAg dG9hc3QoJ0hpbndlaXMgaGF0IGtlaW4gRGF0dW0gaGludGVybGVndC4nLCAnd2FybnVuZycpOwog ICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CiAgICAgICAgICAgIG1vZGFsU2No bGllc3Nlbih0cnVlKTsKICAgICAgICAgICAgdGFnRGV0YWlsTW9kYWxaZWlnZW4oaC5rb250ZXh0 LmRhdHVtKTsKICAgICAgICB9CiAgICB9KTsKfQoKLy8gU1UtSGlud2Vpc2UtUHJvdG9rb2xsIChQ aGFzZSA3LCAyMDI2LTA1LTIxKS4gVGFiZWxsZSBhbGxlciBha3RpdmVuCi8vIEhpbndlaXNlIG1p dCBFbXBmYWVuZ2VyLUxlc2VzdGF0dXMuIE51ciBmdWVyIFN1cGVyVXNlciB6dWdhZW5nbGljaC4K Ly8gRmlsdGVyIG5hY2ggVHlwIHVuZCBEYXR1bXMtUmFuZ2Ugd2VyZGVuIGNsaWVudC1zZWl0aWcg YW5nZXdlbmRldC4KZXhwb3J0IGZ1bmN0aW9uIGhpbndlaXNlUHJvdG9rb2xsUmVuZGVybigpIHsK ICAgIHZhciB0Ym9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdoaW53ZWlzZS1wcm90b2tv bGwtdGJvZHknKTsKICAgIGlmICghdGJvZHkpIHJldHVybjsKICAgIHZhciByZWNodGUgPSBaLnJl Y2h0ZSB8fCB7fTsKICAgIGlmICghcmVjaHRlLmlzdFN1cGVyVXNlcikgewogICAgICAgIHRib2R5 LmlubmVySFRNTCA9ICc8dHI+PHRkIGNvbHNwYW49IjUiIHN0eWxlPSJjb2xvcjp2YXIoLS10ZXh0 LW11dGVkKTt0ZXh0LWFsaWduOmNlbnRlcjtwYWRkaW5nOjE2cHgiPk51ciBmw7xyIFN1cGVyVXNl ciBzaWNodGJhci48L3RkPjwvdHI+JzsKICAgICAgICByZXR1cm47CiAgICB9CiAgICB0Ym9keS5p bm5lckhUTUwgPSAnPHRyPjx0ZCBjb2xzcGFuPSI1IiBzdHlsZT0iY29sb3I6dmFyKC0tdGV4dC1t dXRlZCk7dGV4dC1hbGlnbjpjZW50ZXI7cGFkZGluZzoxNnB4Ij5MYWRlIOKApjwvdGQ+PC90cj4n OwogICAgYXBpKCcvYXBpL2hpbndlaXNlL3VlYmVyc2ljaHQnKS50aGVuKGZ1bmN0aW9uKHIpIHsK ICAgICAgICB2YXIgYWxsZSA9IChyICYmIHIuaGlud2Vpc2UpID8gci5oaW53ZWlzZSA6IFtdOwog ICAgICAgIHZhciBmaWx0ZXJUeXAgPSAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2hwLWZpbHRl ci10eXAnKSB8fCB7fSkudmFsdWUgfHwgJyc7CiAgICAgICAgdmFyIGZpbHRlclZvbiA9IChkb2N1 bWVudC5nZXRFbGVtZW50QnlJZCgnaHAtZmlsdGVyLXZvbicpIHx8IHt9KS52YWx1ZSB8fCAnJzsK ICAgICAgICB2YXIgZmlsdGVyQmlzID0gKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdocC1maWx0 ZXItYmlzJykgfHwge30pLnZhbHVlIHx8ICcnOwogICAgICAgIHZhciBnZWZpbHRlcnQgPSBhbGxl LmZpbHRlcihmdW5jdGlvbihoKSB7CiAgICAgICAgICAgIGlmIChmaWx0ZXJUeXAgJiYgaC50eXAg IT09IGZpbHRlclR5cCkgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICB2YXIgZCA9IChoLmVyc3Rl bGx0QW0gfHwgJycpLnNsaWNlKDAsIDEwKTsKICAgICAgICAgICAgaWYgKGZpbHRlclZvbiAmJiBk IDwgZmlsdGVyVm9uKSByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgIGlmIChmaWx0ZXJCaXMgJiYg ZCA+IGZpbHRlckJpcykgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAg ICAgICB9KTsKICAgICAgICBpZiAoZ2VmaWx0ZXJ0Lmxlbmd0aCA9PT0gMCkgewogICAgICAgICAg ICB0Ym9keS5pbm5lckhUTUwgPSAnPHRyPjx0ZCBjb2xzcGFuPSI1IiBzdHlsZT0iY29sb3I6dmFy KC0tdGV4dC1tdXRlZCk7dGV4dC1hbGlnbjpjZW50ZXI7cGFkZGluZzoxNnB4Ij5LZWluZSBIaW53 ZWlzZSBpbSBha3R1ZWxsZW4gRmlsdGVyLjwvdGQ+PC90cj4nOwogICAgICAgICAgICByZXR1cm47 CiAgICAgICAgfQogICAgICAgIHRib2R5LmlubmVySFRNTCA9IGdlZmlsdGVydC5tYXAoZnVuY3Rp b24oaCkgewogICAgICAgICAgICB2YXIgdHlwTGFiZWwgPSBUWVBfTEFCRUxbaC50eXBdIHx8IGgu dHlwOwogICAgICAgICAgICB2YXIga24gPSBoLmtlbm50bmlzbmFobWVuIHx8IHt9OwogICAgICAg ICAgICB2YXIgZW1wZkh0bWwgPSBPYmplY3Qua2V5cyhrbikubWFwKGZ1bmN0aW9uKGspIHsKICAg ICAgICAgICAgICAgIHZhciB0cyA9IGtuW2tdOwogICAgICAgICAgICAgICAgdmFyIHN0YXR1cyA9 IHRzCiAgICAgICAgICAgICAgICAgICAgPyAnPHNwYW4gc3R5bGU9ImNvbG9yOnZhcigtLWZhcmJl LWVyZm9sZykiPicgKyBlc2NhcGVIVE1MKHplaXRGb3JtYXQodHMpKSArICc8L3NwYW4+JwogICAg ICAgICAgICAgICAgICAgIDogJzxzcGFuIHN0eWxlPSJjb2xvcjp2YXIoLS1mYXJiZS1mZWhsZXIp O2ZvbnQtd2VpZ2h0OjYwMCI+b2ZmZW48L3NwYW4+JzsKICAgICAgICAgICAgICAgIHJldHVybiAn PGRpdiBzdHlsZT0iZm9udC1zaXplOjExcHgiPjxzdHJvbmc+JyArIGVzY2FwZUhUTUwoaykgKyAn PC9zdHJvbmc+OiAnICsgc3RhdHVzICsgJzwvZGl2Pic7CiAgICAgICAgICAgIH0pLmpvaW4oJycp OwogICAgICAgICAgICByZXR1cm4gJzx0cj4nICsKICAgICAgICAgICAgICAgICc8dGQgc3R5bGU9 ImZvbnQtc2l6ZToxMXB4O2NvbG9yOnZhcigtLXRleHQtbXV0ZWQpO3doaXRlLXNwYWNlOm5vd3Jh cCI+JyArIGVzY2FwZUhUTUwoemVpdEZvcm1hdChoLmVyc3RlbGx0QW0pKSArICc8L3RkPicgKwog ICAgICAgICAgICAgICAgJzx0ZD48c3Ryb25nPicgKyBlc2NhcGVIVE1MKHR5cExhYmVsKSArICc8 L3N0cm9uZz48L3RkPicgKwogICAgICAgICAgICAgICAgJzx0ZCBzdHlsZT0iZm9udC1zaXplOjEx cHgiIHRpdGxlPSInICsgZXNjYXBlQXR0cihoLmF1c2xvZXNlciB8fCAnJykgKyAnIj4nICsgZXNj YXBlSFRNTChhdXNsb2VzZXJBbnplaWdlKGguYXVzbG9lc2VyKSkgKyAnPC90ZD4nICsKICAgICAg ICAgICAgICAgICc8dGQgc3R5bGU9ImZvbnQtc2l6ZToxMXB4Ij4nICsga29udGV4dEZvcm1hdCho KSArICc8L3RkPicgKwogICAgICAgICAgICAgICAgJzx0ZD4nICsgZW1wZkh0bWwgKyAnPC90ZD4n ICsKICAgICAgICAgICAgJzwvdHI+JzsKICAgICAgICB9KS5qb2luKCcnKTsKICAgIH0pLmNhdGNo KGZ1bmN0aW9uKGUpIHsKICAgICAgICB0Ym9keS5pbm5lckhUTUwgPSAnPHRyPjx0ZCBjb2xzcGFu PSI1IiBzdHlsZT0iY29sb3I6dmFyKC0tZmFyYmUtZmVobGVyKTtwYWRkaW5nOjE2cHgiPkZlaGxl ciBiZWltIExhZGVuOiAnICsgZXNjYXBlSFRNTChlLm1lc3NhZ2UpICsgJzwvdGQ+PC90cj4nOwog ICAgfSk7Cn0KCi8vIE1hcmtpZXJ0IGVpbmVuIEhpbndlaXMgYWxzIGdlbGVzZW4gKHNlcnZlci1z ZWl0aWcpIHVuZCBlbnRmZXJudCBpaG4KLy8gYXVzIGRlciBsb2thbGVuIExpc3RlLiBXZW5uIGRp ZSBMaXN0ZSBkYWR1cmNoIGxlZXIgd2lyZCwgc2NobGllc3N0Ci8vIHNpY2ggZGFzIE1vZGFsIHZv biBhbGxlaW5lLgpleHBvcnQgZnVuY3Rpb24gaGlud2Vpc0tlbm50bmlzbmVobWVuKGlkKSB7CiAg ICBhcGlQb3N0KCcvYXBpL2hpbndlaXNlLycgKyBpZCArICcva2VubnRuaXMnLCB7fSkudGhlbihm dW5jdGlvbigpIHsKICAgICAgICBaLmhpbndlaXNlID0gKFouaGlud2Vpc2UgfHwgW10pLmZpbHRl cihmdW5jdGlvbihoKSB7IHJldHVybiBoLmlkICE9PSBpZDsgfSk7CiAgICAgICAgLy8gQXVzIGRl bSBNb2RhbCBkaWUgWmVpbGUgZW50ZmVybmVuCiAgICAgICAgdmFyIHJvdyA9IGRvY3VtZW50LnF1 ZXJ5U2VsZWN0b3IoJ3RyW2RhdGEtaGlud2Vpcy1pZD0iJyArIGlkICsgJyJdJyk7CiAgICAgICAg aWYgKHJvdykgcm93LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQocm93KTsKICAgICAgICBoaW53ZWlz ZUFuemVpZ2VBa3R1YWxpc2llcmVuKCk7CiAgICAgICAgaWYgKFouaGlud2Vpc2UubGVuZ3RoID09 PSAwKSB7CiAgICAgICAgICAgIG1vZGFsU2NobGllc3Nlbih0cnVlKTsKICAgICAgICAgICAgdG9h c3QoJ0FsbGUgSGlud2Vpc2UgYWJnZWFyYmVpdGV0LicsICdlcmZvbGcnKTsKICAgICAgICB9CiAg ICB9KS5jYXRjaChmdW5jdGlvbihlKSB7CiAgICAgICAgdG9hc3QoJ0ZlaGxlcjogJyArIGUubWVz c2FnZSwgJ2ZlaGxlcicpOwogICAgfSk7Cn0KCi8vIE5pbW10IEFMTEUgYWt0dWVsbCBvZmZlbmVu IEhpbndlaXNlIGF1ZiBlaW5tYWwgenVyIEtlbm50bmlzIChTYW1tZWwtQWt0aW9uCi8vIGltIE1v ZGFsLCBudXIgYmVpID4xIEhpbndlaXMgYW5nZWJvdGVuKS4gRGllIGVpbnplbG5lIEtlbm50bmlz bmFobWUgcHJvCi8vIFplaWxlIGJsZWlidCBkYXZvbiB1bmJlcnVlaHJ0LiBFcyBnaWJ0IHNlcnZl ci1zZWl0aWcga2VpbmVuIEJ1bGstRW5kcG9pbnQg4oCUCi8vIGRhaGVyIE4gcGFyYWxsZWxlIFBP U1RzOyB0ZWlsLWZlaGxnZXNjaGxhZ2VuZSBFaW50cmFlZ2UgYmxlaWJlbiBpbiBkZXIgTGlzdGUu CmV4cG9ydCBmdW5jdGlvbiBoaW53ZWlzZUFsbGVLZW5udG5pc25laG1lbigpIHsKICAgIHZhciBp ZHMgPSAoWi5oaW53ZWlzZSB8fCBbXSkubWFwKGZ1bmN0aW9uKGgpIHsgcmV0dXJuIGguaWQ7IH0p OwogICAgaWYgKCFpZHMubGVuZ3RoKSByZXR1cm47CiAgICBiZXN0YWV0aWdlbignQWxsZSAnICsg aWRzLmxlbmd0aCArICcgSGlud2Vpc2UgenVyIEtlbm50bmlzIG5laG1lbj9cblxuU2llIHZlcnNj aHdpbmRlbiBhdXMgZGVpbmVyIExpc3RlIOKAlCBpbSBMb2didWNoIGJsZWliZW4gc2llIGVyaGFs dGVuLicsIGZ1bmN0aW9uKCkgewogICAgICAgIHZhciBmZWhsZXIgPSBbXTsKICAgICAgICBQcm9t aXNlLmFsbChpZHMubWFwKGZ1bmN0aW9uKGlkKSB7CiAgICAgICAgICAgIHJldHVybiBhcGlQb3N0 KCcvYXBpL2hpbndlaXNlLycgKyBpZCArICcva2VubnRuaXMnLCB7fSkudGhlbihmdW5jdGlvbigp IHsKICAgICAgICAgICAgICAgIHZhciByb3cgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCd0cltk YXRhLWhpbndlaXMtaWQ9IicgKyBpZCArICciXScpOwogICAgICAgICAgICAgICAgaWYgKHJvdyAm JiByb3cucGFyZW50Tm9kZSkgcm93LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQocm93KTsKICAgICAg ICAgICAgfSkuY2F0Y2goZnVuY3Rpb24oKSB7IGZlaGxlci5wdXNoKGlkKTsgfSk7CiAgICAgICAg fSkpLnRoZW4oZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIFouaGlud2Vpc2UgPSAoWi5oaW53ZWlz ZSB8fCBbXSkuZmlsdGVyKGZ1bmN0aW9uKGgpIHsgcmV0dXJuIGZlaGxlci5pbmRleE9mKGguaWQp ID49IDA7IH0pOwogICAgICAgICAgICBoaW53ZWlzZUFuemVpZ2VBa3R1YWxpc2llcmVuKCk7CiAg ICAgICAgICAgIGlmIChaLmhpbndlaXNlLmxlbmd0aCA9PT0gMCkgewogICAgICAgICAgICAgICAg bW9kYWxTY2hsaWVzc2VuKHRydWUpOwogICAgICAgICAgICAgICAgdG9hc3QoJ0FsbGUgSGlud2Vp c2UgenVyIEtlbm50bmlzIGdlbm9tbWVuLicsICdlcmZvbGcnKTsKICAgICAgICAgICAgfSBlbHNl IHsKICAgICAgICAgICAgICAgIHRvYXN0KGZlaGxlci5sZW5ndGggKyAnIEhpbndlaXMoZSkga29u bnRlbiBuaWNodCBnZXNwZWljaGVydCB3ZXJkZW4g4oCUIGJpdHRlIGVybmV1dCB2ZXJzdWNoZW4u JywgJ3dhcm51bmcnKTsKICAgICAgICAgICAgfQogICAgICAgIH0pOwogICAgfSwgeyBqYVRleHQ6 ICdBbGxlIGFibmlja2VuJyB9KTsKfQo=