### SYNC-TRANSFER 3/5 -- mit sync-entpacken.bat entpacken ### Base64 - NICHT von Hand bearbeiten. ### FILE: js/import_excel.js | 91225 Ly8gPT09IGltcG9ydC9leGNlbC1pbXBvcnQuanMgPT09Ci8vIEV4Y2VsLUltcG9ydC1XaXphcmQg ZnVlciBwbGFudW5nLmpzb24gKyBwZXJzb25lbi5qc29uLiBOdXR6dCBTaGVldEpTCi8vICh4bHN4 LmZ1bGwubWluLmpzLCBsb2thbCBpbiBWSTMvKS4gRHJlaS1QaGFzZW4tU2NocmVpYnZvcmdhbmcg bWl0Ci8vIEF1dG8tQmFja3VwIHZvciBQaGFzZSAxLgoKaW1wb3J0IHsgWiB9IGZyb20gJy4vY29y ZV9zdGF0ZS5qcyc7CmltcG9ydCB7IGVzY2FwZUhUTUwsIGVzY2FwZUF0dHIsIGRhdHVtU3RyLCBw aWRLZXkgfSBmcm9tICcuL2NvcmVfdXRpbC5qcyc7CmltcG9ydCB7IGFwaVBvc3QsIGFwaVB1dCB9 IGZyb20gJy4vY29yZV9hcGkuanMnOwppbXBvcnQgeyB0b2FzdCwgbW9kYWxaZWlnZW4sIG1vZGFs U2NobGllc3NlbiwgYmVzdGFldGlnZW4sIGhpbGZlSWNvbiB9IGZyb20gJy4vdWlfZGlhbG9nLmpz JzsKaW1wb3J0IHsgYWRtaW5MaXN0ZW5Ob3JtYWxpc2llcmVuIH0gZnJvbSAnLi9jb3JlX2RhdGVu TGFkZW4uanMnOwppbXBvcnQgeyB0YWdlRXJ6ZXVnZW4sIHRhZ0luZm9zQmVyZWNobmVuLCBncmlk UmVuZGVybiwga29wZlJlbmRlcm4gfSBmcm9tICcuL2dyaWRfcmVuZGVyLmpzJzsKaW1wb3J0IHsg aXN0Q29kZUFrdGl2IH0gZnJvbSAnLi9hZG1pbl9jb2Rlcy5qcyc7CmltcG9ydCB7IG1haWxUcmln Z2VyRmV1ZXJuIH0gZnJvbSAnLi9lbWFpbF92b3JsYWdlbi5qcyc7CgogICAgLy8gPT09PT0gRXhj ZWwtSW1wb3J0ZXIgPT09PT0KCiAgICAvLyBTdGF0ZSBkZXMgSW1wb3J0ZXJzIHp3aXNjaGVuIERh dGVpLUF1c3dhaGwgdW5kIGVpZ2VudGxpY2hlbSBJbXBvcnQuCiAgICAvLyBXaXJkIGJlaW0gV2Vj aHNlbCBkZXIgRGF0ZWkgdmVyd29yZmVuLgogICAgdmFyIGltcFN0YXRlID0gbnVsbDsKCiAgICAv LyBPcHRpbWlzdGlzY2hlIE5lYmVubGFldWZpZ2tlaXQ6IFZlcnNpb24gKG10aW1lLVRpY2tzKSB2 b24gcGxhbnVuZy5qc29uLAogICAgLy8gYXVmIGRlciBkZXIgVHJhbnNmb3JtIGF1ZmdlYmF1dCBo YXQuIFdpcmQgYmVpbSBmcmlzY2hlbiBHRVQgdW5taXR0ZWxiYXIKICAgIC8vIHZvciBkZW0gVHJh bnNmb3JtIGdlc2V0enQgdW5kIGJlaW0gYWJzY2hsaWVzc2VuZGVuIFBVVCBhbHMKICAgIC8vIElm LVBsYW51bmctVmVyc2lvbiBtaXRnZXNjaGlja3QuIEhhdCBlaW4gYW5kZXJlciBOdXR6ZXIgd2Fl aHJlbmQgZGVzCiAgICAvLyBJbXBvcnRzIGdlc2NocmllYmVuLCBsZWhudCBkZXIgU2VydmVyIG1p dCA0MDkgYWIgc3RhdHQgZGVzc2VuIEFlbmRlcnVuZwogICAgLy8genUgdWViZXJzY2hyZWliZW4u IG51bGwgPSBTZXJ2ZXIgbGllZmVydCBrZWluZSBWZXJzaW9uIChBYndhZXJ0cy1Lb21wYXQsCiAg ICAvLyBkYW5uIGtlaW4gQ2hlY2spLgogICAgdmFyIGltcExldHp0ZVZlcnNpb24gPSBudWxsOwoK ICAgIC8vIEdFVCAvYXBpL3BsYW51bmcgaW5rbC4gVmVyc2lvbnMtSGVhZGVyLiBhcGkoKSB2ZXJ3 aXJmdCBIZWFkZXIsIGRhaGVyCiAgICAvLyByYXcgZmV0Y2guCiAgICBmdW5jdGlvbiBpbXBHZXRQ bGFudW5nTWl0VmVyc2lvbigpIHsKICAgICAgICByZXR1cm4gZmV0Y2goJy9hcGkvcGxhbnVuZycp LnRoZW4oZnVuY3Rpb24ocikgewogICAgICAgICAgICBpZiAoIXIub2spIHRocm93IG5ldyBFcnJv cignSFRUUCAnICsgci5zdGF0dXMpOwogICAgICAgICAgICBpbXBMZXR6dGVWZXJzaW9uID0gci5o ZWFkZXJzLmdldCgnWC1QbGFudW5nLVZlcnNpb24nKSB8fCBudWxsOwogICAgICAgICAgICByZXR1 cm4gci5qc29uKCk7CiAgICAgICAgfSk7CiAgICB9CgogICAgLy8gUmFuZ29yZG51bmcgYXVzIGVp bmVtIEV4Y2VsLVplbGx3ZXJ0IGV4dHJhaGllcmVuLiBBa3plcHRpZXJ0ICIjMTExIiwKICAgIC8v ICIxMTEiLCByZWluZSBaYWhsZW4sIGFiZXIgYXVjaCBUZXh0IHdpZSAiIzQyIFZlcnRyZXR1bmci IChlcnN0ZSBaaWZmZXJuLQogICAgLy8gZ3J1cHBlIHdpcmQgZ2Vub21tZW4pLiBSdWVja2dhYmU6 IGludGVnZXIgb2RlciBudWxsIHdlbm4gbmljaHRzIGxlc2Jhci4KICAgIGZ1bmN0aW9uIGltcFJh bmdQYXJzZW4ocmF3KSB7CiAgICAgICAgdmFyIHMgPSBTdHJpbmcocmF3ID09IG51bGwgPyAnJyA6 IHJhdykudHJpbSgpOwogICAgICAgIGlmICghcykgcmV0dXJuIG51bGw7CiAgICAgICAgdmFyIG0g PSBzLm1hdGNoKC8oXGQrKS8pOwogICAgICAgIHJldHVybiBtID8gcGFyc2VJbnQobVsxXSwgMTAp IDogbnVsbDsKICAgIH0KCiAgICAvLyBFeGNlbC1TZXJpYWwtTnVtYmVyIC0+IFlZWVktTU0tREQu IEV4Y2VsLUVwb2NoZSBpc3QgMTg5OS0xMi0zMAogICAgLy8gKGtvbXBlbnNpZXJ0IGRpZSBQc2V1 ZG8tMTkwMC1TY2hhbHRqYWhyLUJlc29uZGVyaGVpdCkuCiAgICBmdW5jdGlvbiBpbXBFeGNlbFNl cmlhbFRvSXNvKHNlcmlhbCkgewogICAgICAgIHZhciBuID0gcGFyc2VGbG9hdChzZXJpYWwpOwog ICAgICAgIGlmIChpc05hTihuKSkgcmV0dXJuIG51bGw7CiAgICAgICAgdmFyIG1zID0gKG4gLSAy NTU2OSkgKiA4NjQwMDAwMDsgIC8vIDI1NTY5ID0gVGFnZSB2b24gMTg5OS0xMi0zMCB6dSAxOTcw LTAxLTAxCiAgICAgICAgdmFyIGQgPSBuZXcgRGF0ZShtcyk7CiAgICAgICAgaWYgKGlzTmFOKGQu Z2V0VGltZSgpKSkgcmV0dXJuIG51bGw7CiAgICAgICAgLy8gVVRDLURhdHVtIHp1cnVlY2sgYXVm IGxva2FsZSBEYXR1bXN0ZWlsZSB1bXJlY2huZW4gKEV4Y2VsLVNlcmlhbCBpc3QKICAgICAgICAv LyBkYXR1bXNsb3Mg4oCUIHdpciBuZWhtZW4gZGFzIHJlaW5lIERhdHVtIG9obmUgWmVpdHpvbmUp LgogICAgICAgIHZhciB5ID0gZC5nZXRVVENGdWxsWWVhcigpLCBtID0gZC5nZXRVVENNb250aCgp ICsgMSwgZGQgPSBkLmdldFVUQ0RhdGUoKTsKICAgICAgICB2YXIgcGFkID0gZnVuY3Rpb24oeCkg eyByZXR1cm4gKHggPCAxMCA/ICcwJyA6ICcnKSArIHg7IH07CiAgICAgICAgcmV0dXJuIHkgKyAn LScgKyBwYWQobSkgKyAnLScgKyBwYWQoZGQpOwogICAgfQoKICAgIC8vIEhhdXB0ZWluc3RpZWc6 IERhdGVpIC0+IFBhcnNlIC0+IEFuYWx5c2UgLT4gU3RhdHVzLUthcnRlIHJlbmRlcm4uCiAgICBm dW5jdGlvbiBpbXBEYXRlaVZlcmFyYmVpdGVuKGZpbGUpIHsKICAgICAgICB2YXIgc3RhdHVzRWwg PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW1wLXN0YXR1cycpOwogICAgICAgIHZhciBuYW1l RWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW1wLWRhdGVpLW5hbWUnKTsKICAgICAgICBp ZiAobmFtZUVsKSBuYW1lRWwudGV4dENvbnRlbnQgPSBmaWxlLm5hbWUgKyAnICgnICsgTWF0aC5y b3VuZChmaWxlLnNpemUgLyAxMDI0KSArICcgS0IpJzsKICAgICAgICBzdGF0dXNFbC5pbm5lckhU TUwgPSAnPGRpdiBjbGFzcz0iaW1wLXN0YXR1cy1rYXJ0ZSI+RGF0ZWkgd2lyZCBnZWxlc2VuIOKA pjwvZGl2Pic7CiAgICAgICAgaW1wU3RhdGUgPSBudWxsOwoKICAgICAgICBpZiAodHlwZW9mIFhM U1ggPT09ICd1bmRlZmluZWQnKSB7CiAgICAgICAgICAgIHN0YXR1c0VsLmlubmVySFRNTCA9ICc8 ZGl2IGNsYXNzPSJpbXAtc3RhdHVzLWthcnRlIiBzdHlsZT0iYm9yZGVyLWNvbG9yOnZhcigtLWZh cmJlLWZlaGxlcikiPjxiPkZlaGxlcjo8L2I+IHhsc3gtQmlibGlvdGhlayBuaWNodCBnZWxhZGVu LiBCaXR0ZSBTZWl0ZSBuZXUgbGFkZW4uPC9kaXY+JzsKICAgICAgICAgICAgcmV0dXJuOwogICAg ICAgIH0KCiAgICAgICAgdmFyIHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7CiAgICAgICAgcmVh ZGVyLm9ubG9hZCA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAg ICAgIHN0YXR1c0VsLmlubmVySFRNTCA9ICc8ZGl2IGNsYXNzPSJpbXAtc3RhdHVzLWthcnRlIj5F eGNlbCB3aXJkIGFuYWx5c2llcnQg4oCmPC9kaXY+JzsKICAgICAgICAgICAgICAgIHNldFRpbWVv dXQoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdHJ5IHsgaW1wQW5hbHlzaWVyZW4o ZS50YXJnZXQucmVzdWx0LCBzdGF0dXNFbCk7IH0KICAgICAgICAgICAgICAgICAgICBjYXRjaCAo ZXJyKSB7IGltcEZlaGxlcihzdGF0dXNFbCwgZXJyKTsgfQogICAgICAgICAgICAgICAgfSwgNDAp OwogICAgICAgICAgICB9IGNhdGNoIChlcnIpIHsgaW1wRmVobGVyKHN0YXR1c0VsLCBlcnIpOyB9 CiAgICAgICAgfTsKICAgICAgICByZWFkZXIub25lcnJvciA9IGZ1bmN0aW9uKCkgeyBpbXBGZWhs ZXIoc3RhdHVzRWwsIG5ldyBFcnJvcignRGF0ZWkga29ubnRlIG5pY2h0IGdlbGVzZW4gd2VyZGVu LicpKTsgfTsKICAgICAgICByZWFkZXIucmVhZEFzQXJyYXlCdWZmZXIoZmlsZSk7CiAgICB9Cgog ICAgZnVuY3Rpb24gaW1wRmVobGVyKHN0YXR1c0VsLCBlcnIpIHsKICAgICAgICBjb25zb2xlLmVy cm9yKCdJbXBvcnQtRmVobGVyOicsIGVycik7CiAgICAgICAgc3RhdHVzRWwuaW5uZXJIVE1MID0g JzxkaXYgY2xhc3M9ImltcC1zdGF0dXMta2FydGUiIHN0eWxlPSJib3JkZXItY29sb3I6dmFyKC0t ZmFyYmUtZmVobGVyKSI+JyArCiAgICAgICAgICAgICc8Yj5GZWhsZXIgYmVpbSBJbXBvcnQ6PC9i PiAnICsgZXNjYXBlSFRNTChlcnIubWVzc2FnZSB8fCBTdHJpbmcoZXJyKSkgKyAnPC9kaXY+JzsK ICAgIH0KCiAgICBmdW5jdGlvbiBpbXBBbmFseXNpZXJlbihhcnJheUJ1ZmZlciwgc3RhdHVzRWwp IHsKICAgICAgICB2YXIgd2IgPSBYTFNYLnJlYWQoYXJyYXlCdWZmZXIsIHsgdHlwZTogJ2FycmF5 JywgY2VsbERhdGVzOiBmYWxzZSwgY2VsbFN0eWxlczogZmFsc2UsIHNoZWV0Um93czogMjAwIH0p OwogICAgICAgIHZhciBzaGVldE5hbWUgPSB3Yi5TaGVldE5hbWVzLmluZGV4T2YoJ1BsYW51bmcn KSA+PSAwID8gJ1BsYW51bmcnIDogd2IuU2hlZXROYW1lc1swXTsKICAgICAgICB2YXIgc2hlZXQg PSB3Yi5TaGVldHNbc2hlZXROYW1lXTsKICAgICAgICBpZiAoIXNoZWV0KSB0aHJvdyBuZXcgRXJy b3IoJ0tlaW4gU2hlZXQgIlBsYW51bmciIGluIGRlciBEYXRlaS4nKTsKCiAgICAgICAgLy8gUmFu Z2UgaW4gYW9hIChhcnJheSBvZiBhcnJheXMpIGxlc2VuLCBkYW1pdCB3aXIgZ2V6aWVsdCBhdWYg WmVpbGVuL1NwYWx0ZW4genVncmVpZmVuLgogICAgICAgIHZhciBhb2EgPSBYTFNYLnV0aWxzLnNo ZWV0X3RvX2pzb24oc2hlZXQsIHsgaGVhZGVyOiAxLCBibGFua3Jvd3M6IHRydWUsIHJhdzogdHJ1 ZSwgZGVmdmFsOiAnJyB9KTsKCiAgICAgICAgLy8gRGF0dW1zLVNwYWx0ZW4gYXVzIFplaWxlIDEg KEluZGV4IDApOiBhYiBTcGFsdGUgSiA9IEluZGV4IDkuCiAgICAgICAgdmFyIHJvdzEgPSBhb2Fb MF0gfHwgW107CiAgICAgICAgdmFyIGRhdHVtU3BhbHRlbiA9IFtdOyAgLy8gW3sgaWR4OiA5LCBk YXR1bTogJzIwMjYtMDEtMDEnIH0sIC4uLl0KICAgICAgICBmb3IgKHZhciBjID0gOTsgYyA8IHJv dzEubGVuZ3RoOyBjKyspIHsKICAgICAgICAgICAgdmFyIGlzbyA9IGltcEV4Y2VsU2VyaWFsVG9J c28ocm93MVtjXSk7CiAgICAgICAgICAgIGlmIChpc28pIGRhdHVtU3BhbHRlbi5wdXNoKHsgaWR4 OiBjLCBkYXR1bTogaXNvIH0pOwogICAgICAgIH0KCiAgICAgICAgLy8gUGVyc29uZW4gZmluZGVu OiBhYiBaZWlsZSAyMSAoSW5kZXggMjApLCBOYWNobmFtZSBpbiBTcGFsdGUgQyAoSW5kZXggMiks CiAgICAgICAgLy8gc3RvcHBlIGJlaSBlcnN0ZW4gNSBsZWVyZW4gWmVpbGVuIGluIEZvbGdlLgog ICAgICAgIHZhciBleGNlbFBlcnNvbmVuID0gW107ICAvLyBbeyB6ZWlsZUlkeCwgbmFjaG5hbWUs IG9lLCBncnVwcGUsIGRpZW5zdG51bW1lciwgdGVsZWZvbiwgemVsbGVuOiB7ZGF0dW06Y29kZX0s IGtvbW1lbnRhcmU6IHtkYXR1bTp0ZXh0fSB9XQogICAgICAgIHZhciBsZWVyID0gMDsKICAgICAg ICBmb3IgKHZhciByID0gMjA7IHIgPCBhb2EubGVuZ3RoOyByKyspIHsKICAgICAgICAgICAgdmFy IHJvdyA9IGFvYVtyXSB8fCBbXTsKICAgICAgICAgICAgdmFyIG5hbWUgPSBTdHJpbmcocm93WzJd IHx8ICcnKS50cmltKCk7CiAgICAgICAgICAgIGlmICghbmFtZSkgeyBsZWVyKys7IGlmIChsZWVy ID49IDUpIGJyZWFrOyBjb250aW51ZTsgfQogICAgICAgICAgICBsZWVyID0gMDsKICAgICAgICAg ICAgdmFyIGVpbnRyYWVnZSA9IHt9OwogICAgICAgICAgICBkYXR1bVNwYWx0ZW4uZm9yRWFjaChm dW5jdGlvbihkcykgewogICAgICAgICAgICAgICAgdmFyIHYgPSByb3dbZHMuaWR4XTsKICAgICAg ICAgICAgICAgIGlmICh2ID09PSBudWxsIHx8IHYgPT09IHVuZGVmaW5lZCkgcmV0dXJuOwogICAg ICAgICAgICAgICAgdiA9IFN0cmluZyh2KS50cmltKCk7CiAgICAgICAgICAgICAgICBpZiAoIXYp IHJldHVybjsKICAgICAgICAgICAgICAgIGVpbnRyYWVnZVtkcy5kYXR1bV0gPSB2OwogICAgICAg ICAgICB9KTsKICAgICAgICAgICAgZXhjZWxQZXJzb25lbi5wdXNoKHsKICAgICAgICAgICAgICAg IHplaWxlSWR4OiByLAogICAgICAgICAgICAgICAgbmFjaG5hbWU6IG5hbWUsCiAgICAgICAgICAg ICAgICBvZTogICAgICAgU3RyaW5nKHJvd1szXSB8fCAnJykudHJpbSgpLAogICAgICAgICAgICAg ICAgZ3J1cHBlOiAgIFN0cmluZyhyb3dbNF0gfHwgJycpLnRyaW0oKSwKICAgICAgICAgICAgICAg IC8vIFNwYWx0ZSBGIGVudGhhZWx0IGRpZSBSYW5nb3JkbnVuZyAoei5CLiAiIzExMSIpLiBXaXIg ZnVlaHJlbgogICAgICAgICAgICAgICAgLy8gc293b2hsIGRlbiBSb2h0ZXh0IGFscyBhdWNoIGRp ZSBnZXBhcnN0ZSBaYWhsIG1pdCwgZGFtaXQgZGVyCiAgICAgICAgICAgICAgICAvLyBNYXBwaW5n LURpYWxvZyBkZW4gT3JpZ2luYWx3ZXJ0IGFuemVpZ2VuIGthbm4uCiAgICAgICAgICAgICAgICBy YW5nUm9oOiAgU3RyaW5nKHJvd1s1XSB8fCAnJykudHJpbSgpLAogICAgICAgICAgICAgICAgcmFu ZzogICAgIGltcFJhbmdQYXJzZW4ocm93WzVdKSwKICAgICAgICAgICAgICAgIHRlbGVmb246ICBT dHJpbmcocm93WzZdIHx8ICcnKS50cmltKCksCiAgICAgICAgICAgICAgICBlaW50cmFlZ2U6IGVp bnRyYWVnZQogICAgICAgICAgICB9KTsKICAgICAgICB9CgogICAgICAgIC8vIEtvbW1lbnRhcmUg YXVzIGRlbiBTaGVldC1Db21tZW50cyBleHRyYWhpZXJlbi4gU2hlZXRKUyBzcGVpY2hlcnQKICAg ICAgICAvLyBLb21tZW50YXJlIGFuIHNoZWV0W3plbGxBZGRyXS5jOyBkYXMgZnVua3Rpb25pZXJ0 IG51ciB3ZW5uIGNlbGxTdHlsZXMKICAgICAgICAvLyBvZGVyIGJvb2tGaWxlcyBha3RpdiB3YXJl bi4gRnVlciB4bHNtL3hsc3ggcmVpY2hlbiBTdGFuZGFyZG9wdGlvbmVuLgogICAgICAgIC8vIFdp ciBpdGVyaWVyZW4gYWxsZSBaZWxsZW4gaW0gZ2VsZXNlbmVuIEJlcmVpY2ggdW5kIHNhbW1lbG4g S29tbWVudGFyZS4KICAgICAgICB2YXIga29tbWVudGFyZSA9IHt9OyAgLy8geyB6ZWlsZTogeyBk YXR1bTogWyB7IHRleHQsIGF1dG9yIH0gXSB9IH0KICAgICAgICB2YXIgcmVmID0gc2hlZXRbJyFy ZWYnXTsKICAgICAgICBpZiAocmVmKSB7CiAgICAgICAgICAgIHZhciByYW5nZSA9IFhMU1gudXRp bHMuZGVjb2RlX3JhbmdlKHJlZik7CiAgICAgICAgICAgIGZvciAodmFyIFIgPSAyMDsgUiA8PSBy YW5nZS5lLnIgJiYgUiA8IGFvYS5sZW5ndGg7IFIrKykgewogICAgICAgICAgICAgICAgZm9yICh2 YXIgQyA9IDk7IEMgPD0gcmFuZ2UuZS5jOyBDKyspIHsKICAgICAgICAgICAgICAgICAgICB2YXIg YWRkciA9IFhMU1gudXRpbHMuZW5jb2RlX2NlbGwoeyByOiBSLCBjOiBDIH0pOwogICAgICAgICAg ICAgICAgICAgIHZhciB6ZWxsID0gc2hlZXRbYWRkcl07CiAgICAgICAgICAgICAgICAgICAgaWYg KCF6ZWxsIHx8ICF6ZWxsLmMpIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgIC8vIFBybyBF eGNlbC1Ob3RpeiBFSU4gTGlzdGVuLUVpbnRyYWcgbWl0IGVpZ2VuZW0gQXV0b3Ig4oCUCiAgICAg ICAgICAgICAgICAgICAgLy8gYmVpIG1laHJlcmVuIE5vdGl6ZW4vQW50d29ydGVuICh0aHJlYWRl ZCkgYmxlaWJ0IGRpZQogICAgICAgICAgICAgICAgICAgIC8vIFp1b3JkbnVuZyBlcmhhbHRlbi4g QXV0b3IgYmV2b3J6dWd0IGF1cyBkZW0gTm90aXotQXV0b3ItCiAgICAgICAgICAgICAgICAgICAg Ly8gRmVsZCAoY2MuYSk7IGtsYXNzaXNjaGUgRXhjZWwtTm90aXplbiBiZXR0ZW4gIkF1dG9yOlxu IgogICAgICAgICAgICAgICAgICAgIC8vIHp1c2FldHpsaWNoIGluIGRlbiBUZXh0IGVpbiDigJQg bnVyIEdFTkFVIGRpZXNlcyBQcmFlZml4CiAgICAgICAgICAgICAgICAgICAgLy8gc3RyaXBwZW4g KG5pY2h0IGplZGVzICJXb3J0OiIsIHNvbnN0IHplcmxlZ3QgZXMgei5CLgogICAgICAgICAgICAg ICAgICAgIC8vICJBY2h0dW5nOiAuLi4iKS4gRWluIFplaXRzdGVtcGVsIHdpcmQgYmV3dXNzdCBO SUNIVAogICAgICAgICAgICAgICAgICAgIC8vIGdlc2V0enQg4oCUIEV4Y2VsLU5vdGl6ZW4gbGll ZmVybiBrZWluZW4gdmVybGFlc3NsaWNoZW4uCiAgICAgICAgICAgICAgICAgICAgdmFyIGNsaXN0 ZSA9ICh6ZWxsLmMgfHwgW10pLm1hcChmdW5jdGlvbihjYykgewogICAgICAgICAgICAgICAgICAg ICAgICB2YXIgcmF3ID0gU3RyaW5nKGNjLnQgfHwgJycpOwogICAgICAgICAgICAgICAgICAgICAg ICB2YXIgYXV0b3IgPSBTdHJpbmcoY2MuYSB8fCAnJykudHJpbSgpOwogICAgICAgICAgICAgICAg ICAgICAgICB2YXIgdCA9IHJhdzsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGF1dG9yICYm IHJhdy5zbGljZSgwLCBhdXRvci5sZW5ndGggKyAxKS50b0xvd2VyQ2FzZSgpID09PSAoYXV0b3Ig KyAnOicpLnRvTG93ZXJDYXNlKCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQgPSBy YXcuc2xpY2UoYXV0b3IubGVuZ3RoICsgMSkucmVwbGFjZSgvXlxzKlxuPy8sICcnKTsKICAgICAg ICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICghYXV0b3IpIHsKICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHZhciBwbSA9IHJhdy5tYXRjaCgvXihbXjpcbl17MSw0MH0pOlxzKlxuLyk7CiAg ICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocG0pIHsgYXV0b3IgPSBwbVsxXS50cmltKCk7 IHQgPSByYXcuc2xpY2UocG1bMF0ubGVuZ3RoKTsgfQogICAgICAgICAgICAgICAgICAgICAgICB9 CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7IHRleHQ6IHQudHJpbSgpLCBhdXRvcjog YXV0b3IgfTsKICAgICAgICAgICAgICAgICAgICB9KS5maWx0ZXIoZnVuY3Rpb24oeCkgeyByZXR1 cm4geC50ZXh0OyB9KTsKICAgICAgICAgICAgICAgICAgICBpZiAoIWNsaXN0ZS5sZW5ndGgpIGNv bnRpbnVlOwogICAgICAgICAgICAgICAgICAgIHZhciBkc3AgPSBkYXR1bVNwYWx0ZW4uZmluZChm dW5jdGlvbih4KSB7IHJldHVybiB4LmlkeCA9PT0gQzsgfSk7CiAgICAgICAgICAgICAgICAgICAg aWYgKCFkc3ApIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgIGlmICgha29tbWVudGFyZVtS XSkga29tbWVudGFyZVtSXSA9IHt9OwogICAgICAgICAgICAgICAgICAgIGtvbW1lbnRhcmVbUl1b ZHNwLmRhdHVtXSA9IGNsaXN0ZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAg ICAgIH0KICAgICAgICBleGNlbFBlcnNvbmVuLmZvckVhY2goZnVuY3Rpb24ocCkgeyBwLmtvbW1l bnRhcmUgPSBrb21tZW50YXJlW3AuemVpbGVJZHhdIHx8IHt9OyB9KTsKCiAgICAgICAgLy8gQWJn bGVpY2g6IFBlcnNvbmVuIHBlciBOYWNobmFtZSBtYXRjaGVuLiBLb252ZW50aW9uOiBXaXIgYmxl bmRlbgogICAgICAgIC8vIG5pZW1hbHMgRGF0ZW4gd2VnLCBzb25kZXJuIHplaWdlbiBLb25mbGlr dGUgc2ljaHRiYXIgYW4gdW5kIGJpZXRlbgogICAgICAgIC8vIE9wdGlvbmVuLiBQYXBpZXJrb3Ji LVBlcnNvbmVuIChnZWxvZXNjaHRBbSBnZXNldHp0KSB0YXVjaGVuIGFsc28KICAgICAgICAvLyBh dWYsIGJla29tbWVuIGFiZXIgZWluZW4gZWlnZW5lbiBTdGF0dXMgYHBhcGllcmtvcmJgIHBsdXMg ZGllCiAgICAgICAgLy8gRGVmYXVsdC1FbXBmZWhsdW5nICJXaWVkZXJoZXJzdGVsbGVuICsgenVv cmRuZW4iLiBNZWhyZGV1dGlna2VpdAogICAgICAgIC8vIHdpcmQgcHJpb3Jpc2llcnQ6IGVpbiBl aW5kZXV0aWdlciBha3RpdmVyIFRyZWZmZXIgc2NobGFlZ3QgZWluZW4KICAgICAgICAvLyBQYXBp ZXJrb3JiLVRyZWZmZXI7IG51ciB3ZW5uIGF1c3NjaGxpZXNzbGljaCBQYXBpZXJrb3JiLVRyZWZm ZXIKICAgICAgICAvLyBleGlzdGllcmVuLCBnaWJ0J3MgZGVuIGBwYXBpZXJrb3JiYC1Lb25mbGlr dC4KICAgICAgICAvLwogICAgICAgIC8vIE5hY2huYW1lLU5vcm1hbGlzaWVydW5nOiBzZW5rdCBF eGNlbC1BZW5kZXJ1bmdlbiBvZGVyIEVuY29kaW5nLQogICAgICAgIC8vIFBhdHplciBhdWYgZWlu ZSBrYW5vbmlzY2hlIEZvcm0uIEJlaXNwaWVsZSBhdXMgZGVtIEJlc3RhbmQ6CiAgICAgICAgLy8g ICAiU2NoaWXDnyIgIC8gIlNjaGllc3MiICAvICJTY2hpZcOfw7giIC8gIlNjaGllw59vZSIgIC0+ ICJzY2hpZXNzIgogICAgICAgIC8vICAgIk3DvGxsZXIiIC8gIk11ZWxsZXIiICAgLyAiTcOcTExF UiIgICAgICAgICAgICAgICAtPiAibXVlbGxlciIKICAgICAgICAvLyBEYW1pdCBncmVpZnQgZGVy IE1hdGNoIGF1Y2ggd2VubiBkYXMgRXhjZWwgVW1sYXV0ZSBvZGVyIGRhcwogICAgICAgIC8vIEVz emV0dCBkdXJjaCBTdWJzdGl0dXRpb25zLVplaWNoZW4gZXJzZXR6dCBoYXQgKGhhZXVmaWcKICAg ICAgICAvLyBiZW9iYWNodGV0OiBvLW1pdC1TdHJpY2ggVSswMEY4IHN0YXR0IMOfKS4KICAgICAg ICBmdW5jdGlvbiBfaW1wTmFtZU5vcm1hbGlzaWVyZW4ocykgewogICAgICAgICAgICBpZiAoIXMp IHJldHVybiAnJzsKICAgICAgICAgICAgcmV0dXJuIFN0cmluZyhzKS5ub3JtYWxpemUoJ05GQycp LnRyaW0oKS50b0xvd2VyQ2FzZSgpCiAgICAgICAgICAgICAgICAucmVwbGFjZSgvw6QvZywgJ2Fl JykucmVwbGFjZSgvw7YvZywgJ29lJykucmVwbGFjZSgvw7wvZywgJ3VlJykKICAgICAgICAgICAg ICAgIC5yZXBsYWNlKC/Dny9nLCAnc3MnKQogICAgICAgICAgICAgICAgLnJlcGxhY2UoL8O4L2cs ICdzcycpICAgLy8gYmVrYW5udGUgRW5jb2RpbmctRmFsbGUgYXVzIGRlbSBMaXZlLVRlc3QKICAg ICAgICAgICAgICAgIC5yZXBsYWNlKC9ccysvZywgJyAnKTsKICAgICAgICB9CiAgICAgICAgLy8g RWRpdGllcmRpc3RhbnogKExldmVuc2h0ZWluKSBmdWVyIGRlbiBUaXBwZmVobGVyLVNjaHV0eiB1 bnRlbi4KICAgICAgICAvLyBLbGVpbiBnZWhhbHRlbiwgRVM1LWtvbXBhdGliZWwuIFp3ZWkgcm9s bGVuZGUgWmVpbGVuIHN0YXR0IHZvbGxlcgogICAgICAgIC8vIE1hdHJpeCDigJQgcmVpY2h0IGZ1 ZXIgTmFjaG5hbWVuLUxhZW5nZW4gdm9lbGxpZy4KICAgICAgICBmdW5jdGlvbiBfaW1wTGV2ZW5z aHRlaW4oYSwgYikgewogICAgICAgICAgICBhID0gYSB8fCAnJzsgYiA9IGIgfHwgJyc7CiAgICAg ICAgICAgIGlmIChhID09PSBiKSByZXR1cm4gMDsKICAgICAgICAgICAgdmFyIGxhID0gYS5sZW5n dGgsIGxiID0gYi5sZW5ndGg7CiAgICAgICAgICAgIGlmICghbGEpIHJldHVybiBsYjsKICAgICAg ICAgICAgaWYgKCFsYikgcmV0dXJuIGxhOwogICAgICAgICAgICB2YXIgdm9yaGVyID0gW10sIGpl dHp0ID0gW10sIGksIGo7CiAgICAgICAgICAgIGZvciAoaiA9IDA7IGogPD0gbGI7IGorKykgdm9y aGVyW2pdID0gajsKICAgICAgICAgICAgZm9yIChpID0gMTsgaSA8PSBsYTsgaSsrKSB7CiAgICAg ICAgICAgICAgICBqZXR6dFswXSA9IGk7CiAgICAgICAgICAgICAgICBmb3IgKGogPSAxOyBqIDw9 IGxiOyBqKyspIHsKICAgICAgICAgICAgICAgICAgICB2YXIga29zdGVuID0gYS5jaGFyQXQoaSAt IDEpID09PSBiLmNoYXJBdChqIC0gMSkgPyAwIDogMTsKICAgICAgICAgICAgICAgICAgICBqZXR6 dFtqXSA9IE1hdGgubWluKGpldHp0W2ogLSAxXSArIDEsIHZvcmhlcltqXSArIDEsIHZvcmhlcltq IC0gMV0gKyBrb3N0ZW4pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZm9yIChq ID0gMDsgaiA8PSBsYjsgaisrKSB2b3JoZXJbal0gPSBqZXR6dFtqXTsKICAgICAgICAgICAgfQog ICAgICAgICAgICByZXR1cm4gdm9yaGVyW2xiXTsKICAgICAgICB9CiAgICAgICAgdmFyIGJlc3Rh bmROYW1lID0ge307CiAgICAgICAgKFoucGxhbnVuZy5wZXJzb25lbiB8fCBbXSkuZm9yRWFjaChm dW5jdGlvbihwKSB7CiAgICAgICAgICAgIHZhciBuID0gX2ltcE5hbWVOb3JtYWxpc2llcmVuKHAu bmFtZSk7CiAgICAgICAgICAgIGlmICghbikgcmV0dXJuOwogICAgICAgICAgICBpZiAoIWJlc3Rh bmROYW1lW25dKSBiZXN0YW5kTmFtZVtuXSA9IFtdOwogICAgICAgICAgICBiZXN0YW5kTmFtZVtu XS5wdXNoKHApOwogICAgICAgIH0pOwogICAgICAgIC8vIEFrdGl2ZSBCZXN0YW5kc3BlcnNvbmVu IG1pdCBOb3JtYWxmb3JtIGZ1ZXIgZGllIEZ1enp5LUFlaG5saWNoa2VpdHMtCiAgICAgICAgLy8g c3VjaGUuIFBvc2l0aW9uL1RlbGVmb24gdGF1Z2VuIE5JQ0hUIGFscyBad2VpdHNjaGx1ZXNzZWwg KFBvc2l0aW9uCiAgICAgICAgLy8gZHJpZnRldCB6d2lzY2hlbiBFeGNlbCB1bmQgQmVzdGFuZCwg VGVsZWZvbiBpc3QgZWluZSBTY2hpY2h0LVNhbW1lbC0KICAgICAgICAvLyBudW1tZXIpIOKAlCBk YWhlciBUaXBwZmVobGVyLUVya2VubnVuZyB1ZWJlciBkaWUgTmFtZW5zLUVkaXRpZXJkaXN0YW56 LgogICAgICAgIHZhciBha3RpdkJlc3RhbmQgPSAoWi5wbGFudW5nLnBlcnNvbmVuIHx8IFtdKQog ICAgICAgICAgICAuZmlsdGVyKGZ1bmN0aW9uKHApIHsgcmV0dXJuICFwLmdlbG9lc2NodEFtOyB9 KQogICAgICAgICAgICAubWFwKGZ1bmN0aW9uKHApIHsgcmV0dXJuIHsgcDogcCwgbjogX2ltcE5h bWVOb3JtYWxpc2llcmVuKHAubmFtZSkgfTsgfSk7CiAgICAgICAgdmFyIHBlcnNvbmVuTWF0Y2hl cyA9IGV4Y2VsUGVyc29uZW4ubWFwKGZ1bmN0aW9uKHhwKSB7CiAgICAgICAgICAgIHZhciBrZXkg PSBfaW1wTmFtZU5vcm1hbGlzaWVyZW4oeHAubmFjaG5hbWUpOwogICAgICAgICAgICB2YXIgdHJl ZmZlciAgICAgICA9IGJlc3RhbmROYW1lW2tleV0gfHwgW107CiAgICAgICAgICAgIHZhciBha3Rp dlRyZWZmZXIgID0gdHJlZmZlci5maWx0ZXIoZnVuY3Rpb24ocCkgeyByZXR1cm4gIXAuZ2Vsb2Vz Y2h0QW07IH0pOwogICAgICAgICAgICB2YXIgcGtUcmVmZmVyICAgICA9IHRyZWZmZXIuZmlsdGVy KGZ1bmN0aW9uKHApIHsgcmV0dXJuICBwLmdlbG9lc2NodEFtOyB9KTsKICAgICAgICAgICAgdmFy IHN0YXR1cywgemllbElkID0gbnVsbCwgd2llZGVyaGVyc3RlbGxlbiA9IGZhbHNlLCBuZXVBbmxl Z2VuID0gZmFsc2UsIGFlaG5saWNoID0gW107CiAgICAgICAgICAgIGlmIChha3RpdlRyZWZmZXIu bGVuZ3RoID09PSAxKSB7CiAgICAgICAgICAgICAgICBzdGF0dXMgPSAnb2snOwogICAgICAgICAg ICAgICAgemllbElkID0gYWt0aXZUcmVmZmVyWzBdLmlkOwogICAgICAgICAgICB9IGVsc2UgaWYg KGFrdGl2VHJlZmZlci5sZW5ndGggPiAxKSB7CiAgICAgICAgICAgICAgICBzdGF0dXMgPSAnbWVo cmRldXRpZyc7CiAgICAgICAgICAgIH0gZWxzZSBpZiAocGtUcmVmZmVyLmxlbmd0aCA9PT0gMSkg ewogICAgICAgICAgICAgICAgLy8gTnVyIFBhcGllcmtvcmItVHJlZmZlciAtPiBLb25mbGlrdCwg RGVmYXVsdDogd2llZGVyaGVyc3RlbGxlbgogICAgICAgICAgICAgICAgc3RhdHVzID0gJ3BhcGll cmtvcmInOwogICAgICAgICAgICAgICAgemllbElkID0gcGtUcmVmZmVyWzBdLmlkOwogICAgICAg ICAgICAgICAgd2llZGVyaGVyc3RlbGxlbiA9IHRydWU7CiAgICAgICAgICAgIH0gZWxzZSBpZiAo cGtUcmVmZmVyLmxlbmd0aCA+IDEpIHsKICAgICAgICAgICAgICAgIHN0YXR1cyA9ICdtZWhyZGV1 dGlnJzsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIC8vIE5pY2h0IGltIEJl c3RhbmQ6IERlZmF1bHQtVm9yc2NobGFnICJuZXUgYW5sZWdlbiIuIERpZSBFeGNlbC0KICAgICAg ICAgICAgICAgIC8vIERhdGVuIChOYWNobmFtZSwgT0UsIEdydXBwZSwgVGVsZWZvbiwgUmFuZykg d2FuZGVybiBpbiBlaW5lCiAgICAgICAgICAgICAgICAvLyBmcmlzY2hlIFBlcnNvbiBtaXQgTWFy a2VyIGBpbXBvcnROZXVBbWAuIFBlcnNvbmFsdmVyd2FsdHVuZwogICAgICAgICAgICAgICAgLy8g YmxlbmRldCBkaWVzZSBpbSBOZXVpbXBvcnQtQmxvY2sgb2JlbiBlaW4sIGJpcyBkZXIgVXNlcgog ICAgICAgICAgICAgICAgLy8gc2llIG5hY2hwZmxlZ3QgdW5kIGVybGVkaWd0LgogICAgICAgICAg ICAgICAgc3RhdHVzID0gJ25ldSc7CiAgICAgICAgICAgICAgICBuZXVBbmxlZ2VuID0gdHJ1ZTsK ICAgICAgICAgICAgICAgIC8vIFRpcHBmZWhsZXItU2NodXR6OiBhZWhubGljaGUgYWt0aXZlIEJl c3RhbmRzbmFtZW4gKEVkaXRpZXItCiAgICAgICAgICAgICAgICAvLyBkaXN0YW56IDw9IDIsIGFi ZXIgbmljaHQgMCkgYWxzIFVOVkVSQklORExJQ0hFTiBIaW53ZWlzCiAgICAgICAgICAgICAgICAv LyBzYW1tZWxuLCBkYW1pdCBkZXIgVXNlciBuaWNodCB2ZXJzZWhlbnRsaWNoIGVpbiBEdXBsaWth dAogICAgICAgICAgICAgICAgLy8gZWluZXIgYmVzdGVoZW5kZW4gUGVyc29uIGFubGVndCAoei5C LiAiTWVubmVrZVMiIC0+ICJNZW5uZWtlIikuCiAgICAgICAgICAgICAgICAvLyBCZXd1c3N0IGtl aW4gQXV0by1NYXRjaDogYmVpIGVpbmVtIEZ1enp5LVRyZWZmZXIgZW50c2NoZWlkZXQKICAgICAg ICAgICAgICAgIC8vIGRlciBNZW5zY2gsIG5pZSBkZXIgQWxnb3JpdGhtdXMuCiAgICAgICAgICAg ICAgICBpZiAoa2V5Lmxlbmd0aCA+PSA0KSB7CiAgICAgICAgICAgICAgICAgICAgYWVobmxpY2gg PSBha3RpdkJlc3RhbmQubWFwKGZ1bmN0aW9uKGFiKSB7CiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAvLyBFcnN0ZXIgQnVjaHN0YWJlIGFscyBBbmtlcjogZWNodGUgVGlwcGZlaGxlcgogICAg ICAgICAgICAgICAgICAgICAgICAgICAgLy8gZXJoYWx0ZW4gaWhuIGZhc3QgaW1tZXIuIERhcyB1 bnRlcmRydWVja3Qgd2VpY2hlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBGZWhsdHJl ZmZlciB3aWUgIk5ldW1hbm4iIHZzICJIZXltYW5uIiAoZ2xlaWNoZQogICAgICAgICAgICAgICAg ICAgICAgICAgICAgLy8gRW5kdW5nLCBEaXN0YW56IDIpLCB3YWVocmVuZCAiTWVubmVrZVMiIHZz CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiTWVubmVrZSIgKERpc3RhbnogMSkgZXJo YWx0ZW4gYmxlaWJ0LgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGFua2VyID0gYWIu bi5jaGFyQXQoMCkgPT09IGtleS5jaGFyQXQoMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAg ICByZXR1cm4geyBpZDogYWIucC5pZCwgbmFtZTogYWIucC5uYW1lLCBkaXN0OiBfaW1wTGV2ZW5z aHRlaW4oa2V5LCBhYi5uKSwgYW5rZXI6IGFua2VyIH07CiAgICAgICAgICAgICAgICAgICAgICAg IH0pCiAgICAgICAgICAgICAgICAgICAgICAgIC5maWx0ZXIoZnVuY3Rpb24oeCkgeyByZXR1cm4g eC5kaXN0ID4gMCAmJiAoeC5kaXN0IDw9IDEgfHwgKHguZGlzdCA8PSAyICYmIHguYW5rZXIpKTsg fSkKICAgICAgICAgICAgICAgICAgICAgICAgLnNvcnQoZnVuY3Rpb24oYSwgYikgeyByZXR1cm4g YS5kaXN0IC0gYi5kaXN0OyB9KQogICAgICAgICAgICAgICAgICAgICAgICAuc2xpY2UoMCwgMyk7 CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHsgZXhj ZWw6IHhwLCB0cmVmZmVyOiB0cmVmZmVyLCBzdGF0dXM6IHN0YXR1cywgemllbElkOiB6aWVsSWQs IHdpZWRlcmhlcnN0ZWxsZW46IHdpZWRlcmhlcnN0ZWxsZW4sIG5ldUFubGVnZW46IG5ldUFubGVn ZW4sIGFlaG5saWNoOiBhZWhubGljaCB9OwogICAgICAgIH0pOwoKICAgICAgICAvLyBDb2RlLUFu YWx5c2U6IGFsbGUgQ29kZXMgYXVzIGRlbiBFaW50cmFlZ2VuIHNhbW1lbG4sIGdlZ2VuIGFrdGl2 ZQogICAgICAgIC8vIENvZGVzIHVuZCBpbXBvcnRBbGlhc2UgYWJnbGVpY2hlbi4KICAgICAgICB2 YXIgYWxpYXNlID0gWi5hZG1pbi5pbXBvcnRBbGlhc2UgfHwge307CiAgICAgICAgdmFyIGFrdGl2 ZUNvZGVzID0ge307CiAgICAgICAgKFouYWRtaW4uc2NoaWNodGNvZGVzIHx8IFtdKS5mb3JFYWNo KGZ1bmN0aW9uKHNjKSB7CiAgICAgICAgICAgIGlmIChpc3RDb2RlQWt0aXYoc2MpKSBha3RpdmVD b2Rlc1tzYy5jb2RlXSA9IHRydWU7CiAgICAgICAgfSk7CiAgICAgICAgdmFyIGNvZGVWZXJ3ZW5k dW5nID0ge307ICAvLyB7IGNvZGU6IGFuemFobCB9CiAgICAgICAgZXhjZWxQZXJzb25lbi5mb3JF YWNoKGZ1bmN0aW9uKHhwKSB7CiAgICAgICAgICAgIE9iamVjdC5rZXlzKHhwLmVpbnRyYWVnZSku Zm9yRWFjaChmdW5jdGlvbihkKSB7CiAgICAgICAgICAgICAgICB2YXIgYyA9IHhwLmVpbnRyYWVn ZVtkXTsKICAgICAgICAgICAgICAgIGNvZGVWZXJ3ZW5kdW5nW2NdID0gKGNvZGVWZXJ3ZW5kdW5n W2NdIHx8IDApICsgMTsKICAgICAgICAgICAgfSk7CiAgICAgICAgfSk7CiAgICAgICAgdmFyIGNv ZGVNYXRjaGVzID0gT2JqZWN0LmtleXMoY29kZVZlcndlbmR1bmcpLnNvcnQoKS5tYXAoZnVuY3Rp b24oYykgewogICAgICAgICAgICB2YXIgYW56YWhsID0gY29kZVZlcndlbmR1bmdbY107CiAgICAg ICAgICAgIGlmIChjIGluIGFsaWFzZSkgewogICAgICAgICAgICAgICAgdmFyIHppZWwgPSBhbGlh c2VbY107CiAgICAgICAgICAgICAgICBpZiAoemllbCA9PT0gbnVsbCkgcmV0dXJuIHsgY29kZTog YywgYW56YWhsOiBhbnphaGwsIHN0YXR1czogJ2lnbm9yZScsIHppZWw6IG51bGwsIGhpbndlaXM6 ICdBbGlhczogd2lyZCB2ZXJ3b3JmZW4nIH07CiAgICAgICAgICAgICAgICByZXR1cm4geyBjb2Rl OiBjLCBhbnphaGw6IGFuemFobCwgc3RhdHVzOiAnYWxpYXMnLCB6aWVsOiB6aWVsLCBoaW53ZWlz OiAnQWxpYXM6IOKGkiAnICsgemllbCB9OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChh a3RpdmVDb2Rlc1tjXSkgcmV0dXJuIHsgY29kZTogYywgYW56YWhsOiBhbnphaGwsIHN0YXR1czog J29rJywgemllbDogYywgaGlud2VpczogJ0Jla2FubnRlciBha3RpdmVyIENvZGUnIH07CiAgICAg ICAgICAgIHJldHVybiB7IGNvZGU6IGMsIGFuemFobDogYW56YWhsLCBzdGF0dXM6ICd1bmJla2Fu bnQnLCB6aWVsOiBudWxsLCBoaW53ZWlzOiAnVW5iZWthbm50IOKAlCBtYW51ZWxsIG1hcHBlbicg fTsKICAgICAgICB9KTsKCiAgICAgICAgLy8gSmFocmVzLVBsYXVzaWJpbGl0YWV0OiBkYXMgR3Jp ZCB6ZWlndCBbUGxhbnVuZ3NqYWhyLTAxLTAxIC4uIEZvbGdlLQogICAgICAgIC8vIGphaHItMDEt MzFdIChKYW51YXIgZGVzIEZvbGdlamFocmVzIGFscyBQdWZmZXIsIHNpZWhlIHRhZ2VFcnpldWdl bikuCiAgICAgICAgLy8gRGF0dW1zc3BhbHRlbiBhdXNzZXJoYWxiIGRpZXNlcyBGZW5zdGVycyB3 dWVyZGVuIGltcG9ydGllcnQsIGFiZXIgbmllCiAgICAgICAgLy8gYW5nZXplaWd0IChUb3RlLURh dGVuKSDigJQgdHlwaXNjaCBiZWltIHZlcnNlaGVudGxpY2hlbiBJbXBvcnQgZWluZXIKICAgICAg ICAvLyBWb3JqYWhyZXMtIG9kZXIgRm9sZ2VqYWhyZXMtRGF0ZWkuIFdpciB3YXJuZW4gc3RhdHQg aGFydCB6dSBibG9ja2VuLgogICAgICAgIHZhciBqYWhySW5mbyA9IG51bGw7CiAgICAgICAgaWYg KGRhdHVtU3BhbHRlbi5sZW5ndGgpIHsKICAgICAgICAgICAgdmFyIHBvcnRhbEphaHIgPSAoWi5h ZG1pbiAmJiBaLmFkbWluLmphaHIpIHx8IG5ldyBEYXRlKCkuZ2V0RnVsbFllYXIoKTsKICAgICAg ICAgICAgdmFyIGZlbnN0ZXJWb24gPSBwb3J0YWxKYWhyICsgJy0wMS0wMSc7CiAgICAgICAgICAg IHZhciBmZW5zdGVyQmlzID0gKHBvcnRhbEphaHIgKyAxKSArICctMDEtMzEnOyAgLy8gaW5rbC4g UHVmZmVyLUphbnVhcgogICAgICAgICAgICB2YXIgamFoclphZWhsZXIgPSB7fTsKICAgICAgICAg ICAgdmFyIGF1c3NlcmhhbGIgPSAwOwogICAgICAgICAgICBkYXR1bVNwYWx0ZW4uZm9yRWFjaChm dW5jdGlvbihkKSB7CiAgICAgICAgICAgICAgICB2YXIgaiA9IGQuZGF0dW0uc3Vic3RyKDAsIDQp OwogICAgICAgICAgICAgICAgamFoclphZWhsZXJbal0gPSAoamFoclphZWhsZXJbal0gfHwgMCkg KyAxOwogICAgICAgICAgICAgICAgaWYgKGQuZGF0dW0gPCBmZW5zdGVyVm9uIHx8IGQuZGF0dW0g PiBmZW5zdGVyQmlzKSBhdXNzZXJoYWxiKys7CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICB2 YXIgZG9taW5hbnRKYWhyID0gT2JqZWN0LmtleXMoamFoclphZWhsZXIpLnNvcnQoZnVuY3Rpb24o YSwgYikgeyByZXR1cm4gamFoclphZWhsZXJbYl0gLSBqYWhyWmFlaGxlclthXTsgfSlbMF07CiAg ICAgICAgICAgIGphaHJJbmZvID0gewogICAgICAgICAgICAgICAgcG9ydGFsSmFocjogICBwb3J0 YWxKYWhyLAogICAgICAgICAgICAgICAgZG9taW5hbnRKYWhyOiBwYXJzZUludChkb21pbmFudEph aHIsIDEwKSwKICAgICAgICAgICAgICAgIGRhdGVpVm9uOiAgICAgZGF0dW1TcGFsdGVuWzBdLmRh dHVtLAogICAgICAgICAgICAgICAgZGF0ZWlCaXM6ICAgICBkYXR1bVNwYWx0ZW5bZGF0dW1TcGFs dGVuLmxlbmd0aCAtIDFdLmRhdHVtLAogICAgICAgICAgICAgICAgYXVzc2VyaGFsYjogICBhdXNz ZXJoYWxiLAogICAgICAgICAgICAgICAgZ2VzYW10OiAgICAgICBkYXR1bVNwYWx0ZW4ubGVuZ3Ro CiAgICAgICAgICAgIH07CiAgICAgICAgfQoKICAgICAgICBpbXBTdGF0ZSA9IHsKICAgICAgICAg ICAgZGF0ZWlOYW1lOiBudWxsLAogICAgICAgICAgICBkYXR1bVNwYWx0ZW46IGRhdHVtU3BhbHRl biwKICAgICAgICAgICAgZXhjZWxQZXJzb25lbjogZXhjZWxQZXJzb25lbiwKICAgICAgICAgICAg cGVyc29uZW5NYXRjaGVzOiBwZXJzb25lbk1hdGNoZXMsCiAgICAgICAgICAgIGNvZGVNYXRjaGVz OiBjb2RlTWF0Y2hlcywKICAgICAgICAgICAgamFockluZm86IGphaHJJbmZvLAogICAgICAgICAg ICBrb21tZW50YXJBbnphaGw6IE9iamVjdC52YWx1ZXMoa29tbWVudGFyZSkucmVkdWNlKGZ1bmN0 aW9uKHMsIG9iaikgewogICAgICAgICAgICAgICAgcmV0dXJuIHMgKyBPYmplY3QudmFsdWVzKG9i aikucmVkdWNlKGZ1bmN0aW9uKHMyLCBsaXN0ZSkgeyByZXR1cm4gczIgKyAobGlzdGUgPyBsaXN0 ZS5sZW5ndGggOiAwKTsgfSwgMCk7CiAgICAgICAgICAgIH0sIDApCiAgICAgICAgfTsKICAgICAg ICBpbXBTdGF0dXNSZW5kZXJuKCk7CiAgICB9CgogICAgZnVuY3Rpb24gaW1wU3RhdHVzUmVuZGVy bigpIHsKICAgICAgICB2YXIgcyA9IGltcFN0YXRlOwogICAgICAgIGlmICghcykgcmV0dXJuOwog ICAgICAgIHZhciBzdGF0dXNFbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbXAtc3RhdHVz Jyk7CiAgICAgICAgLy8gT0sgPSBhdXRvbWF0aXNjaCBvayBPREVSIHZvbSBVc2VyIG1hbnVlbGwg enVnZW9yZG5ldCAobWl0IHppZWxJZCkKICAgICAgICB2YXIgcE9rICAgID0gcy5wZXJzb25lbk1h dGNoZXMuZmlsdGVyKGZ1bmN0aW9uKG0pIHsgcmV0dXJuIChtLnN0YXR1cyA9PT0gJ29rJyB8fCBt LnN0YXR1cyA9PT0gJ21hbnVlbGwnKSAmJiBtLnppZWxJZDsgfSkubGVuZ3RoOwogICAgICAgIC8v IE5ldSA9IHdpcmQgbWl0IEV4Y2VsLURhdGVuIGZyaXNjaCBhbmdlbGVndCAoRGVmYXVsdCBmdWVy IHVuYmVrYW5udGUKICAgICAgICAvLyBOYWNobmFtZW4pLiBLZWluIEtvbmZsaWt0IOKAlCBsYWV1 ZnQgb2huZSBNYXBwaW5nLUVpbmdyaWZmLgogICAgICAgIHZhciBwTmV1ICAgPSBzLnBlcnNvbmVu TWF0Y2hlcy5maWx0ZXIoZnVuY3Rpb24obSkgeyByZXR1cm4gbS5zdGF0dXMgPT09ICduZXUnICYm IG0ubmV1QW5sZWdlbjsgfSkubGVuZ3RoOwogICAgICAgIHZhciBwSWduICAgPSBzLnBlcnNvbmVu TWF0Y2hlcy5maWx0ZXIoZnVuY3Rpb24obSkgeyByZXR1cm4gbS5zdGF0dXMgPT09ICdpZ25vcmll cnQnOyB9KS5sZW5ndGg7CiAgICAgICAgLy8gT2ZmZW4gPSBudXIgIm1laHJkZXV0aWciIChtZWhy ZXJlIEJlc3RhbmRzLVRyZWZmZXIgcHJvIE5hY2huYW1lKS4KICAgICAgICAvLyAidW5iZWthbm50 IiBnaWJ0J3MgbmljaHQgbWVociDigJQgd2lyZCBqZXR6dCBhdXRvbWF0aXNjaCB6dSAibmV1Ii4K ICAgICAgICB2YXIgcE9mZmVuID0gcy5wZXJzb25lbk1hdGNoZXMuZmlsdGVyKGZ1bmN0aW9uKG0p IHsgcmV0dXJuIG0uc3RhdHVzID09PSAnbWVocmRldXRpZyc7IH0pLmxlbmd0aDsKICAgICAgICAv LyBQYXBpZXJrb3JiLVRyZWZmZXIgc2luZCBlaW4gIndlaWNoZXIgS29uZmxpa3QiIOKAlCBEZWZh dWx0dm9yc2NobGFnIGlzdAogICAgICAgIC8vICJXaWVkZXJoZXJzdGVsbGVuICsgenVvcmRuZW4i LCBkZXIgSW1wb3J0IGxhZXVmdCBhdWNoIG9obmUgTWFwcGluZy0KICAgICAgICAvLyBFaW5ncmlm Zi4gV2lyIHphZWhsZW4gc2llIHRyb3R6ZGVtIGV4dHJhLCBkYW1pdCBkZXIgVXNlciBkaWUgU3Rl bGxlCiAgICAgICAgLy8gYmV3dXNzdCBwcnVlZmVuIGthbm4uCiAgICAgICAgdmFyIHBQSyAgICA9 IHMucGVyc29uZW5NYXRjaGVzLmZpbHRlcihmdW5jdGlvbihtKSB7IHJldHVybiBtLnN0YXR1cyA9 PT0gJ3BhcGllcmtvcmInOyB9KS5sZW5ndGg7CiAgICAgICAgLy8gVGlwcGZlaGxlci1WZXJkYWNo dDogIm5ldSItUGVyc29uZW4sIGRpZSBlaW5lciBiZXN0ZWhlbmRlbiBQZXJzb24KICAgICAgICAv LyB2ZXJkYWVjaHRpZyBhZWhubGljaCBzaW5kIChFZGl0aWVyZGlzdGFueiA8PSAyKS4gS2VpbiBC bG9ja2VyLCBhYmVyCiAgICAgICAgLy8gZWluIEhpbndlaXMsIGRhcyBNYXBwaW5nIHp1IHBydWVm ZW4sIGJldm9yIGVpbiBEdXBsaWthdCBlbnRzdGVodC4KICAgICAgICB2YXIgcEFlaG5saWNoID0g cy5wZXJzb25lbk1hdGNoZXMuZmlsdGVyKGZ1bmN0aW9uKG0pIHsgcmV0dXJuIG0uc3RhdHVzID09 PSAnbmV1JyAmJiBtLmFlaG5saWNoICYmIG0uYWVobmxpY2gubGVuZ3RoOyB9KS5sZW5ndGg7CiAg ICAgICAgdmFyIGNPayAgICA9IHMuY29kZU1hdGNoZXMuZmlsdGVyKGZ1bmN0aW9uKG0pIHsgcmV0 dXJuIChtLnN0YXR1cyA9PT0gJ29rJyB8fCBtLnN0YXR1cyA9PT0gJ2FsaWFzJyB8fCBtLnN0YXR1 cyA9PT0gJ21hbnVlbGwnKSAmJiBtLnppZWw7IH0pLmxlbmd0aDsKICAgICAgICB2YXIgY0lnbiAg ID0gcy5jb2RlTWF0Y2hlcy5maWx0ZXIoZnVuY3Rpb24obSkgeyByZXR1cm4gbS5zdGF0dXMgPT09 ICdpZ25vcmUnOyB9KS5sZW5ndGg7CiAgICAgICAgdmFyIGNPZmZlbiA9IHMuY29kZU1hdGNoZXMu ZmlsdGVyKGZ1bmN0aW9uKG0pIHsgcmV0dXJuIG0uc3RhdHVzID09PSAndW5iZWthbm50JzsgfSku bGVuZ3RoOwoKICAgICAgICAvLyBKYWhyZXMtV2FybnVuZzogRGF0ZWkgcGFzc3QgbmljaHQgenVt IGFuZ2V6ZWlndGVuIFBsYW51bmdzamFociBvZGVyCiAgICAgICAgLy8gcmFndCBhdXMgZGVtIHNp Y2h0YmFyZW4gRmVuc3RlciBoZXJhdXMgKFRvdGUtRGF0ZW4tR2VmYWhyKS4KICAgICAgICB2YXIg amFocldhcm5IdG1sID0gJyc7CiAgICAgICAgaWYgKHMuamFockluZm8gJiYgKHMuamFockluZm8u YXVzc2VyaGFsYiA+IDAgfHwgcy5qYWhySW5mby5kb21pbmFudEphaHIgIT09IHMuamFockluZm8u cG9ydGFsSmFocikpIHsKICAgICAgICAgICAgdmFyIGppID0gcy5qYWhySW5mbzsKICAgICAgICAg ICAgdmFyIGtlcm4gPSBqaS5kb21pbmFudEphaHIgIT09IGppLnBvcnRhbEphaHIKICAgICAgICAg ICAgICAgID8gJ0RpZXNlIERhdGVpIGlzdCDDvGJlcndpZWdlbmQgZsO8ciA8c3Ryb25nPicgKyBq aS5kb21pbmFudEphaHIgKyAnPC9zdHJvbmc+LCBkYXMgUG9ydGFsIHplaWd0IGFiZXIgUGxhbnVu Z3NqYWhyIDxzdHJvbmc+JyArIGppLnBvcnRhbEphaHIgKyAnPC9zdHJvbmc+LicKICAgICAgICAg ICAgICAgIDogamkuYXVzc2VyaGFsYiArICcgdm9uICcgKyBqaS5nZXNhbXQgKyAnIFRhZ2Vzc3Bh bHRlbiBsaWVnZW4gPHN0cm9uZz5hdcOfZXJoYWxiPC9zdHJvbmc+IGRlcyBhbmdlemVpZ3RlbiBa ZWl0cmF1bXMgKCcgKyBqaS5wb3J0YWxKYWhyICsgJy0wMS0wMSBiaXMgJyArIChqaS5wb3J0YWxK YWhyICsgMSkgKyAnLTAxLTMxKS4nOwogICAgICAgICAgICBqYWhyV2Fybkh0bWwgPSAnPGRpdiBj bGFzcz0iaW1wLXN0YXR1cy1rYXJ0ZSIgc3R5bGU9ImJvcmRlci1jb2xvcjp2YXIoLS1mYXJiZS13 YXJudW5nKTtiYWNrZ3JvdW5kOnZhcigtLWJnLWNhcmQtYWx0KSI+JyArCiAgICAgICAgICAgICAg ICAn4pqgIDxzdHJvbmc+SmFocmVzLUhpbndlaXM6PC9zdHJvbmc+ICcgKyBrZXJuICsKICAgICAg ICAgICAgICAgICcgRGF0ZWktWmVpdHJhdW06ICcgKyBlc2NhcGVIVE1MKGppLmRhdGVpVm9uKSAr ICcgYmlzICcgKyBlc2NhcGVIVE1MKGppLmRhdGVpQmlzKSArICcuJyArCiAgICAgICAgICAgICAg ICAnIEF1w59lcmhhbGIgbGllZ2VuZGUgVGFnZSB3ZXJkZW4gZ2VzY2hyaWViZW4sIGFiZXIgaW0g UGxhbiBuaWNodCBhbmdlemVpZ3QuIEJpdHRlIHByw7xmZW4sIG9iIGRpZSByaWNodGlnZSBEYXRl aSB1bmQgZGFzIHJpY2h0aWdlIFBsYW51bmdzamFociBnZXfDpGhsdCBzaW5kLicgKwogICAgICAg ICAgICAnPC9kaXY+JzsKICAgICAgICB9CgogICAgICAgIHZhciBodG1sID0gamFocldhcm5IdG1s ICsgJzxkaXYgY2xhc3M9ImltcC1zdGF0dXMta2FydGUiPicgKwogICAgICAgICAgICAnPGgzIHN0 eWxlPSJtYXJnaW46MCAwIDhweCAwIj5BbmFseXNlLUVyZ2VibmlzPC9oMz4nICsKICAgICAgICAg ICAgJzxkaXYgY2xhc3M9ImltcC1rcGktemVpbGUiPicgKwogICAgICAgICAgICAgICAgJzxkaXYg Y2xhc3M9ImltcC1rcGkiPjxkaXYgY2xhc3M9ImltcC1rcGktemFobCI+JyArIHMuZGF0dW1TcGFs dGVuLmxlbmd0aCArICc8L2Rpdj48ZGl2IGNsYXNzPSJpbXAta3BpLWxhYmVsIj5UYWdlc3NwYWx0 ZW48L2Rpdj48L2Rpdj4nICsKICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJpbXAta3BpIj48 ZGl2IGNsYXNzPSJpbXAta3BpLXphaGwiPicgKyBzLmV4Y2VsUGVyc29uZW4ubGVuZ3RoICsgJzwv ZGl2PjxkaXYgY2xhc3M9ImltcC1rcGktbGFiZWwiPlBlcnNvbmVuIGluIEV4Y2VsPC9kaXY+PC9k aXY+JyArCiAgICAgICAgICAgICAgICAnPGRpdiBjbGFzcz0iaW1wLWtwaSI+PGRpdiBjbGFzcz0i aW1wLWtwaS16YWhsIj4nICsgcy5rb21tZW50YXJBbnphaGwgKyAnPC9kaXY+PGRpdiBjbGFzcz0i aW1wLWtwaS1sYWJlbCI+S29tbWVudGFyZTwvZGl2PjwvZGl2PicgKwogICAgICAgICAgICAnPC9k aXY+JyArCiAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJpbXAta3BpLXplaWxlIj4nICsKICAgICAg ICAgICAgICAgICc8ZGl2IGNsYXNzPSJpbXAta3BpIGltcC1rcGktb2siPjxkaXYgY2xhc3M9Imlt cC1rcGktemFobCI+JyArIHBPayArICc8L2Rpdj48ZGl2IGNsYXNzPSJpbXAta3BpLWxhYmVsIj5Q ZXJzb25lbiB6dWdlb3JkbmV0PC9kaXY+PC9kaXY+JyArCiAgICAgICAgICAgICAgICAocE5ldSAg ID8gJzxkaXYgY2xhc3M9ImltcC1rcGkgaW1wLWtwaS1uZXUiIHRpdGxlPSJOaWNodCBpbSBCZXN0 YW5kIOKAlCB3ZXJkZW4gbWl0IGRlbiBFeGNlbC1EYXRlbiBuZXUgYW5nZWxlZ3QgdW5kIGVyc2No ZWluZW4gYW5zY2hsaWVzc2VuZCBpbSBOZXVpbXBvcnQtQmxvY2sgZGVyIFBlcnNvbmFsdmVyd2Fs dHVuZyB6dXIgTmFjaHBmbGVnZS4iPicgKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn PGRpdiBjbGFzcz0iaW1wLWtwaS16YWhsIj4nICsgcE5ldSArICc8L2Rpdj48ZGl2IGNsYXNzPSJp bXAta3BpLWxhYmVsIj5QZXJzb25lbiBuZXUgYW5sZWdlbjwvZGl2PjwvZGl2PicgOiAnJykgKwog ICAgICAgICAgICAgICAgKHBQSyAgICA/ICc8ZGl2IGNsYXNzPSJpbXAta3BpIGltcC1rcGktd2Fy biIgdGl0bGU9IkVpbmRldXRpZ2VyIFRyZWZmZXIsIGFiZXIgaW0gUGFwaWVya29yYi4gV2lyZCBw ZXIgRGVmYXVsdCB3aWVkZXJoZXJnZXN0ZWxsdCDigJQgaW0gTWFwcGluZyBwcnVlZmJhci4iPicg KwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPGRpdiBjbGFzcz0iaW1wLWtwaS16YWhs Ij4nICsgcFBLICsgJzwvZGl2PjxkaXYgY2xhc3M9ImltcC1rcGktbGFiZWwiPlBhcGllcmtvcmIt VHJlZmZlcjwvZGl2PjwvZGl2PicgOiAnJykgKwogICAgICAgICAgICAgICAgKHBJZ24gICA/ICc8 ZGl2IGNsYXNzPSJpbXAta3BpIj48ZGl2IGNsYXNzPSJpbXAta3BpLXphaGwiPicgKyBwSWduICsg JzwvZGl2PjxkaXYgY2xhc3M9ImltcC1rcGktbGFiZWwiPlBlcnNvbmVuIGlnbm9yaWVydDwvZGl2 PjwvZGl2PicgOiAnJykgKwogICAgICAgICAgICAgICAgKHBBZWhubGljaCA/ICc8ZGl2IGNsYXNz PSJpbXAta3BpIGltcC1rcGktd2FybiIgdGl0bGU9IkRpZXNlIG5ldSBhbnp1bGVnZW5kZW4gUGVy c29uZW4gw6RobmVsbiBzdGFyayBlaW5lciBiZXN0ZWhlbmRlbiBQZXJzb24g4oCUIHZlcm11dGxp Y2ggVGlwcGZlaGxlci4gSW0gTWFwcGluZyBwcsO8ZmVuLCBzb25zdCBlbnRzdGVoZW4gRHVwbGlr YXRlLiI+JyArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJpbXAt a3BpLXphaGwiPicgKyBwQWVobmxpY2ggKyAnPC9kaXY+PGRpdiBjbGFzcz0iaW1wLWtwaS1sYWJl bCI+VGlwcGZlaGxlci1WZXJkYWNodDwvZGl2PjwvZGl2PicgOiAnJykgKwogICAgICAgICAgICAg ICAgKHBPZmZlbiA/ICc8ZGl2IGNsYXNzPSJpbXAta3BpIGltcC1rcGktZmVobGVyIj48ZGl2IGNs YXNzPSJpbXAta3BpLXphaGwiPicgKyBwT2ZmZW4gKyAnPC9kaXY+PGRpdiBjbGFzcz0iaW1wLWtw aS1sYWJlbCI+UGVyc29uZW4gb2ZmZW48L2Rpdj48L2Rpdj4nIDogJycpICsKICAgICAgICAgICAg JzwvZGl2PicgKwogICAgICAgICAgICAnPGRpdiBjbGFzcz0iaW1wLWtwaS16ZWlsZSI+JyArCiAg ICAgICAgICAgICAgICAnPGRpdiBjbGFzcz0iaW1wLWtwaSBpbXAta3BpLW9rIj48ZGl2IGNsYXNz PSJpbXAta3BpLXphaGwiPicgKyBjT2sgKyAnPC9kaXY+PGRpdiBjbGFzcz0iaW1wLWtwaS1sYWJl bCI+Q29kZXMgZ2VtYXBwdDwvZGl2PjwvZGl2PicgKwogICAgICAgICAgICAgICAgKGNJZ24gICA/ ICc8ZGl2IGNsYXNzPSJpbXAta3BpIj48ZGl2IGNsYXNzPSJpbXAta3BpLXphaGwiPicgKyBjSWdu ICsgJzwvZGl2PjxkaXYgY2xhc3M9ImltcC1rcGktbGFiZWwiPkNvZGVzIGlnbm9yaWVydDwvZGl2 PjwvZGl2PicgOiAnJykgKwogICAgICAgICAgICAgICAgKGNPZmZlbiA/ICc8ZGl2IGNsYXNzPSJp bXAta3BpIGltcC1rcGktd2FybiI+PGRpdiBjbGFzcz0iaW1wLWtwaS16YWhsIj4nICsgY09mZmVu ICsgJzwvZGl2PjxkaXYgY2xhc3M9ImltcC1rcGktbGFiZWwiPkNvZGVzIG9mZmVuPC9kaXY+PC9k aXY+JyA6ICcnKSArCiAgICAgICAgICAgICc8L2Rpdj4nICsKICAgICAgICAgICAgJzxkaXYgc3R5 bGU9Im1hcmdpbi10b3A6MTRweDtkaXNwbGF5OmZsZXg7Z2FwOjEwcHg7YWxpZ24taXRlbXM6Y2Vu dGVyIj4nICsKICAgICAgICAgICAgICAgICc8YnV0dG9uIGNsYXNzPSJidG4gYnRuLXNlayIgaWQ9 ImltcC1tYXBwaW5nLW9lZmZuZW4iPk1hcHBpbmcgw7ZmZm5lbicgKwogICAgICAgICAgICAgICAg ICAgIChwT2ZmZW4gKyBjT2ZmZW4gPiAwID8gJyAoJyArIChwT2ZmZW4gKyBjT2ZmZW4pICsgJyBv ZmZlbiknIDogKHBQSyA/ICcgKCcgKyBwUEsgKyAnIFBhcGllcmtvcmItVHJlZmZlciBwcsO8ZmVu KScgOiAnJykpICsKICAgICAgICAgICAgICAgICc8L2J1dHRvbj4nICsKICAgICAgICAgICAgICAg IGhpbGZlSWNvbignTWFwcGluZzogSGllciBvcmRuZXN0IGR1IGplZGUgRXhjZWwtUGVyc29uIGVp bmVyIFBsYW4tUGVyc29uIHp1IChvZnQgcGVyIE5hY2huYW1lIGF1dG9tYXRpc2NoIGVya2FubnQp IHVuZCBlbnRzY2hlaWRlc3QgZnVlciB1bmJla2FubnRlIEV4Y2VsLVNjaGljaHRjb2Rlcywgb2Ig c2llIGVpbmVtIGJlc3RlaGVuZGVuIENvZGUgenVnZW9yZG5ldCwgbmV1IGFuZ2VsZWd0IG9kZXIg aWdub3JpZXJ0IHdlcmRlbi4gRXJzdCB3ZW5uIGFsbGUgS29uZmxpa3RlIGF1ZmdlbG9lc3Qgc2lu ZCwgd2lyZCBkZXIgSW1wb3J0LUJ1dHRvbiBmcmVpZ2VnZWJlbi4nKSArCiAgICAgICAgICAgICAg ICAnPGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1zZWsiIGlkPSJpbXAtdHJvY2tlbmxhdWYiJyArICgo cE9mZmVuICsgY09mZmVuKSA+IDAgPyAnIGRpc2FibGVkIHRpdGxlPSJFcnN0IG9mZmVuZSBLb25m bGlrdGUgaW0gTWFwcGluZy1EaWFsb2cgYXVmbMO2c2VuIicgOiAnJykgKyAnPlZvcnNjaGF1IC8g VHJvY2tlbmxhdWY8L2J1dHRvbj4nICsKICAgICAgICAgICAgICAgICc8YnV0dG9uIGNsYXNzPSJi dG4gYnRuLXByaW1hZXIiIGlkPSJpbXAtc3RhcnRlbiInICsgKChwT2ZmZW4gKyBjT2ZmZW4pID4g MCA/ICcgZGlzYWJsZWQgdGl0bGU9IkVyc3Qgb2ZmZW5lIEtvbmZsaWt0ZSBpbSBNYXBwaW5nLURp YWxvZyBhdWZsw7ZzZW4iJyA6ICcnKSArICc+SW1wb3J0IHN0YXJ0ZW48L2J1dHRvbj4nICsKICAg ICAgICAgICAgJzwvZGl2PicgKwogICAgICAgICc8L2Rpdj4nOwoKICAgICAgICBzdGF0dXNFbC5p bm5lckhUTUwgPSBodG1sOwogICAgICAgIHZhciBtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo J2ltcC1tYXBwaW5nLW9lZmZuZW4nKTsKICAgICAgICBpZiAobSkgbS5hZGRFdmVudExpc3RlbmVy KCdjbGljaycsIGltcE1hcHBpbmdNb2RhbCk7CiAgICAgICAgdmFyIHRsID0gZG9jdW1lbnQuZ2V0 RWxlbWVudEJ5SWQoJ2ltcC10cm9ja2VubGF1ZicpOwogICAgICAgIGlmICh0bCkgdGwuYWRkRXZl bnRMaXN0ZW5lcignY2xpY2snLCBpbXBUcm9ja2VubGF1Zk1vZGFsKTsKICAgICAgICB2YXIgaWIg PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW1wLXN0YXJ0ZW4nKTsKICAgICAgICBpZiAoaWIp IGliLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgaW1wU2NocmVpYmVuU3RhcnRlbik7CiAgICB9 CgogICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09CiAgICAvLyBUcm9ja2VubGF1ZiAvIFZvcnNjaGF1CiAgICAvLyA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAg IC8vIEJlcmVjaG5ldCBkaWUgRGlmZi1MaXN0ZSwgZGllIGVpbiBlY2h0ZXIgSW1wb3J0IGVyemV1 Z2VuIHd1ZXJkZSwKICAgIC8vIE9ITkUgaW4gWi5wbGFudW5nIHp1IHNjaHJlaWJlbiBvZGVyIEFQ SS1DYWxscyB6dSBtYWNoZW4uIExvZ2lrCiAgICAvLyBnZXNwaWVnZWx0IGF1cyBpbXBTY2hyZWli ZW5QaGFzZTJUcmFuc2Zvcm0g4oCUIHdlbm4gZGllIGJlaWRlbgogICAgLy8gamVtYWxzIGF1c2Vp bmFuZGVyZHJpZnRlbiwgd2FuZGVybiBGZWhsZXIgdW5lbnRkZWNrdCBpbiBkZW4gSW1wb3J0Lgog ICAgLy8gUHJvIFplbGwtUG9zaXRpb24gKGRhdHVtLCBwZXJzb25JZCkgd2lyZCBlaW4gRWludHJh ZyBtaXQgYWx0L25ldS8KICAgIC8vIGFydCBlcnpldWd0OyBkYXJhdXMgYmF1dCBkYXMgTW9kYWwg ZWluZSBmaWx0ZXItIHVuZCBzb3J0aWVyYmFyZQogICAgLy8gVGFiZWxsZS4gRGllbnQgYWxzIERp YWdub3NlLCB3ZW5uIGRlciBVc2VyIGJlaGF1cHRldCAiRGF0ZW4gbGFuZGVuCiAgICAvLyBhbSBm YWxzY2hlbiBUYWcgLyBiZWkgZGVyIGZhbHNjaGVuIFBlcnNvbiIuCiAgICBmdW5jdGlvbiBpbXBU cm9ja2VubGF1ZkJlcmVjaG5lbihzKSB7CiAgICAgICAgdmFyIGJlc3RhbmQgPSBaLnBsYW51bmcg fHwge307CiAgICAgICAgdmFyIGJlc3RhbmRFaW50cmFlZ2UgPSBiZXN0YW5kLmVpbnRyYWVnZSB8 fCB7fTsKICAgICAgICB2YXIgcGVyc29uZW5BdXNaID0gYmVzdGFuZC5wZXJzb25lbiB8fCBbXTsK ICAgICAgICB2YXIgcGlkWnVOYW1lID0ge307CiAgICAgICAgcGVyc29uZW5BdXNaLmZvckVhY2go ZnVuY3Rpb24ocCkgewogICAgICAgICAgICBwaWRadU5hbWVbU3RyaW5nKHAuaWQpXSA9ICgocC52 b3JuYW1lIHx8ICcnKSArICcgJyArIChwLm5hbWUgfHwgJycpKS50cmltKCk7CiAgICAgICAgfSk7 CgogICAgICAgIHZhciBleGNlbERhdHVtU2V0ID0ge307CiAgICAgICAgcy5kYXR1bVNwYWx0ZW4u Zm9yRWFjaChmdW5jdGlvbihkKSB7IGV4Y2VsRGF0dW1TZXRbZC5kYXR1bV0gPSB0cnVlOyB9KTsK CiAgICAgICAgdmFyIGNvZGVNYXAgPSB7fTsKICAgICAgICBzLmNvZGVNYXRjaGVzLmZvckVhY2go ZnVuY3Rpb24obSkgeyBjb2RlTWFwW20uY29kZV0gPSBtLnppZWw7IH0pOwoKICAgICAgICAvLyBQ SUQgLT4gRXhjZWwtTmFtZS4gUGFyaXRhZXQgenVtIGVjaHRlbiBTY2hyZWlidm9yZ2FuZyAoTTEt U2NodXR6KToKICAgICAgICAvLyBudXIgUGVyc29uZW4gbWl0IG1pbmRlc3RlbnMgZWluZW0gRXhj ZWwtRWludHJhZyBnZWx0ZW4gYWxzICJFeGNlbC0KICAgICAgICAvLyBQZXJzb24iIOKAlCBlaW5l IGtvbXBsZXR0IGxlZXJlIEV4Y2VsLVplaWxlIGxlZXJ0IGRlbiBCZXN0YW5kIG5pY2h0LgogICAg ICAgIHZhciBleGNlbFBpZHMgPSB7fTsKICAgICAgICBzLnBlcnNvbmVuTWF0Y2hlcy5mb3JFYWNo KGZ1bmN0aW9uKG0pIHsKICAgICAgICAgICAgaWYgKG0uemllbElkICYmIE9iamVjdC5rZXlzKG0u ZXhjZWwuZWludHJhZWdlIHx8IHt9KS5sZW5ndGggPiAwKSB7CiAgICAgICAgICAgICAgICBleGNl bFBpZHNbU3RyaW5nKG0uemllbElkKV0gPSBtLmV4Y2VsLm5hY2huYW1lOwogICAgICAgICAgICB9 CiAgICAgICAgfSk7CgogICAgICAgIC8vIFBoYXNlIEE6IEV4Y2VsLVBlcnNvbmVuLUVpbnRyYWVn ZSBzaW11bGllcmVuIChkYXR1bSAtPiBwaWQgLT4gbmV1ZXJDb2RlKQogICAgICAgIHZhciBzaW1O ZXUgPSB7fTsgIC8vIHsgZGF0dW06IHsgcGlkOiBjb2RlIH0gfQogICAgICAgIHZhciBzdGF0c0Nv ZGVJZ25vcmUgPSAwOwogICAgICAgIHMucGVyc29uZW5NYXRjaGVzLmZvckVhY2goZnVuY3Rpb24o bSkgewogICAgICAgICAgICBpZiAoIW0uemllbElkKSByZXR1cm47CiAgICAgICAgICAgIHZhciBw aWQgPSBTdHJpbmcobS56aWVsSWQpOwogICAgICAgICAgICBPYmplY3Qua2V5cyhtLmV4Y2VsLmVp bnRyYWVnZSkuZm9yRWFjaChmdW5jdGlvbihkYXR1bSkgewogICAgICAgICAgICAgICAgdmFyIHNy YyA9IG0uZXhjZWwuZWludHJhZWdlW2RhdHVtXTsKICAgICAgICAgICAgICAgIHZhciB6aWVsID0g Y29kZU1hcFtzcmNdOwogICAgICAgICAgICAgICAgaWYgKCF6aWVsKSB7IHN0YXRzQ29kZUlnbm9y ZSsrOyByZXR1cm47IH0KICAgICAgICAgICAgICAgIGlmICghc2ltTmV1W2RhdHVtXSkgc2ltTmV1 W2RhdHVtXSA9IHt9OwogICAgICAgICAgICAgICAgc2ltTmV1W2RhdHVtXVtwaWRdID0gemllbDsK ICAgICAgICAgICAgfSk7CiAgICAgICAgfSk7CgogICAgICAgIC8vIFBoYXNlIEI6IFBybyBaZWxs ZSBpbSBFeGNlbC1aZWl0cmF1bSBkZW4gVmVyZ2xlaWNoIHp1c2FtbWVuc3RlbGxlbi4KICAgICAg ICAvLyBXaXIgZ2VoZW4gdWViZXIgQUxMRSAoZGF0dW0sIHBpZCkgaW0gQmVzdGFuZCBVTkQgaW4g RXhjZWwgaW5uZXJoYWxiCiAgICAgICAgLy8gZGVzIFplaXRyYXVtcywgZGFtaXQgYXVjaCAidmVy c2Nod2luZGVuZGUiIEVpbnRyYWVnZSAoVGFnIHZvcmhlcgogICAgICAgIC8vIGJlbGVndCwgRXhj ZWwgbGFlc3N0IGxlZXIpIHNpY2h0YmFyIHdlcmRlbi4KICAgICAgICB2YXIgZGlmZiA9IFtdOwog ICAgICAgIC8vIFNldCBhbGxlciByZWxldmFudGVuIChkYXR1bSwgcGlkKS1Lb21iaW5hdGlvbmVu CiAgICAgICAgdmFyIHNjaGx1ZXNzZWwgPSB7fTsKICAgICAgICBPYmplY3Qua2V5cyhzaW1OZXUp LmZvckVhY2goZnVuY3Rpb24oZCkgewogICAgICAgICAgICBPYmplY3Qua2V5cyhzaW1OZXVbZF0p LmZvckVhY2goZnVuY3Rpb24ocGlkKSB7CiAgICAgICAgICAgICAgICBzY2hsdWVzc2VsW2QgKyAn fCcgKyBwaWRdID0gdHJ1ZTsKICAgICAgICAgICAgfSk7CiAgICAgICAgfSk7CiAgICAgICAgT2Jq ZWN0LmtleXMoYmVzdGFuZEVpbnRyYWVnZSkuZm9yRWFjaChmdW5jdGlvbihkKSB7CiAgICAgICAg ICAgIGlmICghZXhjZWxEYXR1bVNldFtkXSkgcmV0dXJuOwogICAgICAgICAgICBPYmplY3Qua2V5 cyhiZXN0YW5kRWludHJhZWdlW2RdIHx8IHt9KS5mb3JFYWNoKGZ1bmN0aW9uKHBpZCkgewogICAg ICAgICAgICAgICAgc2NobHVlc3NlbFtkICsgJ3wnICsgcGlkXSA9IHRydWU7CiAgICAgICAgICAg IH0pOwogICAgICAgIH0pOwoKICAgICAgICBPYmplY3Qua2V5cyhzY2hsdWVzc2VsKS5mb3JFYWNo KGZ1bmN0aW9uKGspIHsKICAgICAgICAgICAgdmFyIHRlaWxlID0gay5zcGxpdCgnfCcpOwogICAg ICAgICAgICB2YXIgZGF0dW0gPSB0ZWlsZVswXTsKICAgICAgICAgICAgdmFyIHBpZCA9IHRlaWxl WzFdOwogICAgICAgICAgICB2YXIgYWx0ID0gKGJlc3RhbmRFaW50cmFlZ2VbZGF0dW1dICYmIGJl c3RhbmRFaW50cmFlZ2VbZGF0dW1dW3BpZF0pIHx8ICcnOwogICAgICAgICAgICB2YXIgbmV1UmF3 ID0gKHNpbU5ldVtkYXR1bV0gJiYgc2ltTmV1W2RhdHVtXVtwaWRdKSB8fCAnJzsKICAgICAgICAg ICAgLy8gU2NobHVlcm1hbm4tU2NodXR6OiB3ZW5uIGRpZSBQZXJzb24gTklDSFQgaW4gZGVyIEV4 Y2VsIGlzdCwgYmxlaWJ0CiAgICAgICAgICAgIC8vIGlociBiZXN0ZWhlbmRlciBFaW50cmFnIGVy aGFsdGVuLiBBdXMgRGlmZi1TaWNodCBlbnRzcHJpY2h0IGRhcwogICAgICAgICAgICAvLyAibmV1 ID0gYWx0IiDigJQga2VpbiBBZW5kZXJ1bmdzLUl0ZW0sIHdhbmRlcnQgbmFjaCAnZ2xlaWNoJy4K ICAgICAgICAgICAgdmFyIG5ldSA9IGV4Y2VsUGlkc1twaWRdID8gbmV1UmF3IDogYWx0OwoKICAg ICAgICAgICAgdmFyIGFydCA9IG51bGw7CiAgICAgICAgICAgIGlmIChhbHQgPT09IG5ldSkgewog ICAgICAgICAgICAgICAgYXJ0ID0gJ2dsZWljaCc7ICAgLy8gS2VpbiBVcGRhdGUg4oCUIHdpcmQg bmljaHQgYW5nZXplaWd0IChEZWZhdWx0LUZpbHRlcikKICAgICAgICAgICAgfSBlbHNlIGlmICgh YWx0ICYmIG5ldSkgewogICAgICAgICAgICAgICAgYXJ0ID0gJ25ldSc7ICAgICAgLy8gTmV1IGVp bmdldHJhZ2VuCiAgICAgICAgICAgIH0gZWxzZSBpZiAoYWx0ICYmICFuZXUpIHsKICAgICAgICAg ICAgICAgIC8vIFZlcnNjaHdpbmRldDogRXhjZWwtWmVsbGUgbGVlciBvZGVyIENvZGUgd2VnZW4g QWxpYXMgdmVyd29yZmVuLgogICAgICAgICAgICAgICAgLy8gKEJlc3RhbmQtb25seS1QZXJzb25l biBsYW5kZW4gb2JlbiBpbiAnZ2xlaWNoJyBkYW5rIGRlcyBTY2h1dHplcy4pCiAgICAgICAgICAg ICAgICBhcnQgPSAndmVybG9yZW4tbGVlcic7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAg ICAgICAgICBhcnQgPSAnZ2VhZW5kZXJ0JzsgIC8vIGFsdCAhPSBuZXUsIGJlaWRlIGdlZnVlbGx0 CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZGlmZi5wdXNoKHsKICAgICAgICAgICAgICAgIGRh dHVtOiBkYXR1bSwgcGlkOiBwaWQsCiAgICAgICAgICAgICAgICBuYW1lOiBwaWRadU5hbWVbcGlk XSB8fCAoJ1BJRCAnICsgcGlkKSwKICAgICAgICAgICAgICAgIGlzdEV4Y2VsUGVyc29uOiAhIWV4 Y2VsUGlkc1twaWRdLAogICAgICAgICAgICAgICAgZXhjZWxOYW1lOiBleGNlbFBpZHNbcGlkXSB8 fCBudWxsLAogICAgICAgICAgICAgICAgYWx0OiBhbHQsIG5ldTogbmV1LCBhcnQ6IGFydAogICAg ICAgICAgICB9KTsKICAgICAgICB9KTsKCiAgICAgICAgLy8gU29ydGllcnVuZzogenVlcnN0IG5h Y2ggRGF0dW0gKGNocm9ub2xvZ2lzY2gpLCBkYW5uIG5hY2ggTmFtZQogICAgICAgIGRpZmYuc29y dChmdW5jdGlvbihhLCBiKSB7CiAgICAgICAgICAgIGlmIChhLmRhdHVtICE9PSBiLmRhdHVtKSBy ZXR1cm4gYS5kYXR1bSA8IGIuZGF0dW0gPyAtMSA6IDE7CiAgICAgICAgICAgIHJldHVybiBhLm5h bWUubG9jYWxlQ29tcGFyZShiLm5hbWUsICdkZScpOwogICAgICAgIH0pOwoKICAgICAgICByZXR1 cm4gewogICAgICAgICAgICBkaWZmOiBkaWZmLAogICAgICAgICAgICBzdGF0czogewogICAgICAg ICAgICAgICAgZ2VzYW10OiAgICAgICAgICAgZGlmZi5sZW5ndGgsCiAgICAgICAgICAgICAgICBu ZXU6ICAgICAgICAgICAgICBkaWZmLmZpbHRlcihmdW5jdGlvbihkKSB7IHJldHVybiBkLmFydCA9 PT0gJ25ldSc7IH0pLmxlbmd0aCwKICAgICAgICAgICAgICAgIGdlYWVuZGVydDogICAgICAgIGRp ZmYuZmlsdGVyKGZ1bmN0aW9uKGQpIHsgcmV0dXJuIGQuYXJ0ID09PSAnZ2VhZW5kZXJ0JzsgfSku bGVuZ3RoLAogICAgICAgICAgICAgICAgZ2xlaWNoOiAgICAgICAgICAgZGlmZi5maWx0ZXIoZnVu Y3Rpb24oZCkgeyByZXR1cm4gZC5hcnQgPT09ICdnbGVpY2gnOyB9KS5sZW5ndGgsCiAgICAgICAg ICAgICAgICB2ZXJsb3JlbkxlZXI6ICAgICBkaWZmLmZpbHRlcihmdW5jdGlvbihkKSB7IHJldHVy biBkLmFydCA9PT0gJ3ZlcmxvcmVuLWxlZXInOyB9KS5sZW5ndGgsCiAgICAgICAgICAgICAgICBj b2RlSWdub3JlOiAgICAgICBzdGF0c0NvZGVJZ25vcmUKICAgICAgICAgICAgfQogICAgICAgIH07 CiAgICB9CgogICAgZnVuY3Rpb24gaW1wVHJvY2tlbmxhdWZNb2RhbCgpIHsKICAgICAgICBpZiAo IWltcFN0YXRlKSByZXR1cm47CiAgICAgICAgdmFyIHJlcyA9IGltcFRyb2NrZW5sYXVmQmVyZWNo bmVuKGltcFN0YXRlKTsKICAgICAgICAvLyBEZWZhdWx0LUZpbHRlcjogbnVyIEFlbmRlcnVuZ2Vu LCAnZ2xlaWNoJyAoPSB1bnZlcmFlbmRlcnQpIGF1c2dlYmxlbmRldC4KICAgICAgICB2YXIgYWt0 aXZBcnRlbiA9IHsgJ25ldSc6IHRydWUsICdnZWFlbmRlcnQnOiB0cnVlLCAndmVybG9yZW4tbGVl cic6IHRydWUsICdnbGVpY2gnOiBmYWxzZSB9OwogICAgICAgIHZhciBzdWNoZSA9ICcnOwoKICAg ICAgICBmdW5jdGlvbiByZW5kZXJuKCkgewogICAgICAgICAgICB2YXIgZ2VmaWx0ZXJ0ID0gcmVz LmRpZmYuZmlsdGVyKGZ1bmN0aW9uKGQpIHsKICAgICAgICAgICAgICAgIGlmICghYWt0aXZBcnRl bltkLmFydF0pIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgIGlmIChzdWNoZSkgewogICAg ICAgICAgICAgICAgICAgIHZhciBzID0gc3VjaGUudG9Mb3dlckNhc2UoKTsKICAgICAgICAgICAg ICAgICAgICBpZiAoKGQubmFtZXx8JycpLnRvTG93ZXJDYXNlKCkuaW5kZXhPZihzKSA8IDAgJiYK ICAgICAgICAgICAgICAgICAgICAgICAgKGQuZGF0dW18fCcnKS5pbmRleE9mKHMpIDwgMCAmJgog ICAgICAgICAgICAgICAgICAgICAgICAoZC5hbHR8fCcnKS50b0xvd2VyQ2FzZSgpLmluZGV4T2Yo cykgPCAwICYmCiAgICAgICAgICAgICAgICAgICAgICAgIChkLm5ldXx8JycpLnRvTG93ZXJDYXNl KCkuaW5kZXhPZihzKSA8IDApIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgIH0KICAgICAg ICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICB9KTsKICAgICAgICAgICAgdmFyIHJv d3MgPSBnZWZpbHRlcnQuc2xpY2UoMCwgNTAwKS5tYXAoZnVuY3Rpb24oZCkgewogICAgICAgICAg ICAgICAgdmFyIGFydExhYmVsID0gewogICAgICAgICAgICAgICAgICAgICduZXUnOiAgICAgICAg ICAgICc8c3BhbiBzdHlsZT0iY29sb3I6IzFmN2ExZiI+bmV1PC9zcGFuPicsCiAgICAgICAgICAg ICAgICAgICAgJ2dlYWVuZGVydCc6ICAgICAgJzxzcGFuIHN0eWxlPSJjb2xvcjojYjA2MDAwIj5n ZcOkbmRlcnQ8L3NwYW4+JywKICAgICAgICAgICAgICAgICAgICAnZ2xlaWNoJzogICAgICAgICAn PHNwYW4gc3R5bGU9ImNvbG9yOiM4ODgiPmdsZWljaDwvc3Bhbj4nLAogICAgICAgICAgICAgICAg ICAgICd2ZXJsb3Jlbi1sZWVyJzogICc8c3BhbiBzdHlsZT0iY29sb3I6I2IwMjAyMCIgdGl0bGU9 IkV4Y2VsLVplbGxlIGxlZXIgb2RlciBDb2RlIOKAni4iIOKAlCBFaW50cmFnIHdpcmQgZW50ZmVy bnQiPmxlZXIgaW4gRXhjZWw8L3NwYW4+JwogICAgICAgICAgICAgICAgfVtkLmFydF0gfHwgZC5h cnQ7CiAgICAgICAgICAgICAgICByZXR1cm4gJzx0cj4nICsKICAgICAgICAgICAgICAgICAgICAn PHRkPicgKyBlc2NhcGVIVE1MKGQuZGF0dW0pICsgJzwvdGQ+JyArCiAgICAgICAgICAgICAgICAg ICAgJzx0ZD4nICsgZXNjYXBlSFRNTChkLm5hbWUpICsgKGQuaXN0RXhjZWxQZXJzb24gPyAnJyA6 ICcgPHNwYW4gc3R5bGU9ImNvbG9yOiNiMDYwMDA7Zm9udC1zaXplOjEwcHgiIHRpdGxlPSJOaWNo dCBpbiBkZXIgRXhjZWwiPuKaoDwvc3Bhbj4nKSArICc8L3RkPicgKwogICAgICAgICAgICAgICAg ICAgICc8dGQgc3R5bGU9ImZvbnQtZmFtaWx5Om1vbm9zcGFjZTtjb2xvcjojNjY2Ij4nICsgZXNj YXBlSFRNTChkLmFsdCB8fCAn4oCUJykgKyAnPC90ZD4nICsKICAgICAgICAgICAgICAgICAgICAn PHRkIHN0eWxlPSJmb250LWZhbWlseTptb25vc3BhY2UiPicgKyBlc2NhcGVIVE1MKGQubmV1IHx8 ICfigJQnKSArICc8L3RkPicgKwogICAgICAgICAgICAgICAgICAgICc8dGQ+JyArIGFydExhYmVs ICsgJzwvdGQ+JyArCiAgICAgICAgICAgICAgICAnPC90cj4nOwogICAgICAgICAgICB9KS5qb2lu KCcnKTsKICAgICAgICAgICAgdmFyIGhpbndlaXNHZWt1ZXJ6dCA9IGdlZmlsdGVydC5sZW5ndGgg PiA1MDAKICAgICAgICAgICAgICAgID8gJzxkaXYgc3R5bGU9InBhZGRpbmc6NnB4IDhweDtjb2xv cjojYjA2MDAwO2ZvbnQtc2l6ZToxMXB4Ij7igKYgJyArIChnZWZpbHRlcnQubGVuZ3RoIC0gNTAw KSArICcgd2VpdGVyZSBaZWlsZW4gYXVzZ2VibGVuZGV0IChGaWx0ZXIgZWluZ3JlbnplbikuPC9k aXY+JwogICAgICAgICAgICAgICAgOiAnJzsKICAgICAgICAgICAgdmFyIHRib2R5ID0gZG9jdW1l bnQuZ2V0RWxlbWVudEJ5SWQoJ2ltcC10bC10Ym9keScpOwogICAgICAgICAgICB2YXIgbWV0YSA9 IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbXAtdGwtbWV0YScpOwogICAgICAgICAgICBpZiAo dGJvZHkpIHRib2R5LmlubmVySFRNTCA9IHJvd3M7CiAgICAgICAgICAgIGlmIChtZXRhKSBtZXRh LmlubmVySFRNTCA9ICdaZWlnZSAnICsgTWF0aC5taW4oZ2VmaWx0ZXJ0Lmxlbmd0aCwgNTAwKSAr ICcgdm9uICcgKyBnZWZpbHRlcnQubGVuZ3RoICsgJyBnZWZpbHRlcnRlbiBaZWlsZW4gKGdlc2Ft dCAnICsgcmVzLmRpZmYubGVuZ3RoICsgJykuJyArIGhpbndlaXNHZWt1ZXJ6dDsKICAgICAgICB9 CgogICAgICAgIGZ1bmN0aW9uIGNoayhhcnQsIGxhYmVsLCBjb3VudCwgY29sb3IpIHsKICAgICAg ICAgICAgdmFyIGNoZWNrZWQgPSBha3RpdkFydGVuW2FydF0gPyAnIGNoZWNrZWQnIDogJyc7CiAg ICAgICAgICAgIHJldHVybiAnPGxhYmVsIHN0eWxlPSJkaXNwbGF5OmlubGluZS1mbGV4O2FsaWdu LWl0ZW1zOmNlbnRlcjtnYXA6NHB4O21hcmdpbi1yaWdodDoxMnB4O2N1cnNvcjpwb2ludGVyIj4n ICsKICAgICAgICAgICAgICAgICc8aW5wdXQgdHlwZT0iY2hlY2tib3giIGRhdGEtYXJ0PSInICsg YXJ0ICsgJyInICsgY2hlY2tlZCArICc+ICcgKwogICAgICAgICAgICAgICAgJzxzcGFuIHN0eWxl PSJjb2xvcjonICsgY29sb3IgKyAnIj4nICsgbGFiZWwgKyAnPC9zcGFuPicgKwogICAgICAgICAg ICAgICAgJyA8c3BhbiBzdHlsZT0iY29sb3I6Izg4OCI+KCcgKyBjb3VudCArICcpPC9zcGFuPicg KwogICAgICAgICAgICAnPC9sYWJlbD4nOwogICAgICAgIH0KCiAgICAgICAgdmFyIGtvZXJwZXIg PQogICAgICAgICAgICAnPGRpdiBzdHlsZT0iZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNv bHVtbjtnYXA6OHB4O21pbi13aWR0aDo3NjBweDttYXgtd2lkdGg6MTAwMHB4Ij4nICsKICAgICAg ICAgICAgICAgICc8ZGl2IHN0eWxlPSJkaXNwbGF5OmZsZXg7ZmxleC13cmFwOndyYXA7Z2FwOjZw eDtmb250LXNpemU6MTJweDtiYWNrZ3JvdW5kOnZhcigtLWJnLWNhcmQtYWx0KTtwYWRkaW5nOjhw eDtib3JkZXItcmFkaXVzOjZweCI+JyArCiAgICAgICAgICAgICAgICAgICAgY2hrKCduZXUnLCAg ICAgICAgICAgICduZXUnLCAgICAgICAgICAgIHJlcy5zdGF0cy5uZXUsICAgICAgICAgICAnIzFm N2ExZicpICsKICAgICAgICAgICAgICAgICAgICBjaGsoJ2dlYWVuZGVydCcsICAgICAgJ2dlw6Ru ZGVydCcsICAgICAgIHJlcy5zdGF0cy5nZWFlbmRlcnQsICAgICAnI2IwNjAwMCcpICsKICAgICAg ICAgICAgICAgICAgICBjaGsoJ3ZlcmxvcmVuLWxlZXInLCAgJ2xlZXIgaW4gRXhjZWwnLCAgcmVz LnN0YXRzLnZlcmxvcmVuTGVlciwgICcjYjAyMDIwJykgKwogICAgICAgICAgICAgICAgICAgIGNo aygnZ2xlaWNoJywgICAgICAgICAndW52ZXLDpG5kZXJ0JywgICAgcmVzLnN0YXRzLmdsZWljaCwg ICAgICAgICcjODg4JykgKwogICAgICAgICAgICAgICAgJzwvZGl2PicgKwogICAgICAgICAgICAg ICAgJzxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0iaW1wLXRsLXN1Y2hlIiBwbGFjZWhvbGRlcj0iRmls dGVyIChOYW1lLCBEYXR1bSwgQ29kZSkg4oCmIiBzdHlsZT0icGFkZGluZzo1cHggOHB4O2ZvbnQt c2l6ZToxMnB4O3dpZHRoOjEwMCU7Ym94LXNpemluZzpib3JkZXItYm94Ij4nICsKICAgICAgICAg ICAgICAgICc8ZGl2IGlkPSJpbXAtdGwtbWV0YSIgc3R5bGU9ImZvbnQtc2l6ZToxMS41cHg7Y29s b3I6IzY2NiI+PC9kaXY+JyArCiAgICAgICAgICAgICAgICAnPGRpdiBzdHlsZT0ibWF4LWhlaWdo dDo1MjBweDtvdmVyZmxvdzphdXRvO2JvcmRlcjoxcHggc29saWQgdmFyKC0tYm9yZGVyLWxpZ2h0 KTtib3JkZXItcmFkaXVzOjRweCI+JyArCiAgICAgICAgICAgICAgICAgICAgJzx0YWJsZSBzdHls ZT0id2lkdGg6MTAwJTtib3JkZXItY29sbGFwc2U6Y29sbGFwc2U7Zm9udC1zaXplOjEycHgiPicg KwogICAgICAgICAgICAgICAgICAgICAgICAnPHRoZWFkIHN0eWxlPSJwb3NpdGlvbjpzdGlja3k7 dG9wOjA7YmFja2dyb3VuZDp2YXIoLS1iZy1jYXJkKSI+JyArCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAnPHRyPjx0aCBzdHlsZT0idGV4dC1hbGlnbjpsZWZ0O3BhZGRpbmc6NnB4IDhweDti b3JkZXItYm90dG9tOjFweCBzb2xpZCAjZGRkIj5EYXR1bTwvdGg+JyArCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgJzx0aCBzdHlsZT0idGV4dC1hbGlnbjpsZWZ0O3BhZGRpbmc6NnB4 IDhweDtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjZGRkIj5QZXJzb248L3RoPicgKwogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICc8dGggc3R5bGU9InRleHQtYWxpZ246bGVmdDtwYWRk aW5nOjZweCA4cHg7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2RkZCI+dm9yaGVyPC90aD4nICsK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPHRoIHN0eWxlPSJ0ZXh0LWFsaWduOmxl ZnQ7cGFkZGluZzo2cHggOHB4O2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNkZGQiPm5hY2hoZXI8 L3RoPicgKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8dGggc3R5bGU9InRleHQt YWxpZ246bGVmdDtwYWRkaW5nOjZweCA4cHg7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2RkZCI+ QXJ0PC90aD48L3RyPicgKwogICAgICAgICAgICAgICAgICAgICAgICAnPC90aGVhZD4nICsKICAg ICAgICAgICAgICAgICAgICAgICAgJzx0Ym9keSBpZD0iaW1wLXRsLXRib2R5Ij48L3Rib2R5Picg KwogICAgICAgICAgICAgICAgICAgICc8L3RhYmxlPicgKwogICAgICAgICAgICAgICAgJzwvZGl2 PicgKwogICAgICAgICAgICAgICAgKHJlcy5zdGF0cy5jb2RlSWdub3JlID8gJzxkaXYgc3R5bGU9 ImZvbnQtc2l6ZToxMXB4O2NvbG9yOiNiMDYwMDAiPkhpbndlaXM6ICcgKyByZXMuc3RhdHMuY29k ZUlnbm9yZSArICcgWmVsbGVuIHd1cmRlbiB3ZWdlbiBDb2RlLU1hcHBpbmcgdmVyd29yZmVuICh6 LkIuIOKAni4iIOKGkiBpZ25vcmllcmVuKS48L2Rpdj4nIDogJycpICsKICAgICAgICAgICAgJzwv ZGl2Pic7CgogICAgICAgIG1vZGFsWmVpZ2VuKCdUcm9ja2VubGF1ZiDigJQgVm9yc2NoYXUgZGVy IMOEbmRlcnVuZ2VuJywKICAgICAgICAgICAga29lcnBlciwKICAgICAgICAgICAgJzxidXR0b24g Y2xhc3M9ImJ0biBidG4tcHJpbWFlciIgaWQ9ImltcC10bC1zY2hsaWVzc2VuIj5TY2hsaWXDn2Vu PC9idXR0b24+JywKICAgICAgICAgICAgbnVsbCwgbnVsbCwgeyByZWluZXJEaWFsb2c6IHRydWUg fSk7CgogICAgICAgIC8vIEV2ZW50LUJpbmRpbmdzIG5hY2ggUmVuZGVyCiAgICAgICAgcmVuZGVy bigpOwogICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2lucHV0W2RhdGEtYXJ0XScp LmZvckVhY2goZnVuY3Rpb24oY2IpIHsKICAgICAgICAgICAgY2IuYWRkRXZlbnRMaXN0ZW5lcign Y2hhbmdlJywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBha3RpdkFydGVuW3RoaXMuZ2V0 QXR0cmlidXRlKCdkYXRhLWFydCcpXSA9IHRoaXMuY2hlY2tlZDsKICAgICAgICAgICAgICAgIHJl bmRlcm4oKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgfSk7CiAgICAgICAgdmFyIHN1Y2hlRWwg PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW1wLXRsLXN1Y2hlJyk7CiAgICAgICAgaWYgKHN1 Y2hlRWwpIHN1Y2hlRWwuYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLCBmdW5jdGlvbigpIHsKICAg ICAgICAgICAgc3VjaGUgPSB0aGlzLnZhbHVlLnRyaW0oKTsKICAgICAgICAgICAgcmVuZGVybigp OwogICAgICAgIH0pOwogICAgICAgIHZhciBzY2hsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo J2ltcC10bC1zY2hsaWVzc2VuJyk7CiAgICAgICAgaWYgKHNjaGwpIHNjaGwuYWRkRXZlbnRMaXN0 ZW5lcignY2xpY2snLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgbW9kYWxTY2hsaWVzc2VuKHRy dWUpOwogICAgICAgICAgICAvLyBVWC1BdWRpdCBTcHJpbnQgMi44ICgyMDI2LTA1LTI5KTogbmFj aCBUcm9ja2VubGF1Zi1TY2hsaWVzc2VuCiAgICAgICAgICAgIC8vIGRlbiBGb2t1cyB6dXJ1ZWNr IGF1ZiAiSW1wb3J0IHN0YXJ0ZW4iIGltIFN0YXR1cy1CaWxkc2NoaXJtLAogICAgICAgICAgICAv LyBkYW1pdCBkZXIgbmFlY2hzdGUgU2Nocml0dCBkaXJla3Qga2xhciBpc3QgKFRhc3RhdHVyLVVz ZXIpLgogICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAg dmFyIGJ0biA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbXAtc3RhcnRlbicpOwogICAgICAg ICAgICAgICAgaWYgKGJ0bikgeyBidG4uZm9jdXMoKTsgYnRuLnNjcm9sbEludG9WaWV3KHsgYmxv Y2s6ICdjZW50ZXInLCBiZWhhdmlvcjogJ3Ntb290aCcgfSk7IH0KICAgICAgICAgICAgfSwgMTAw KTsKICAgICAgICB9KTsKICAgIH0KCiAgICAvLyBJbXBvcnR2b3JnYW5nIGFibGF1ZmVuOiBCYWNr dXAgLT4gVHJhbnNmb3JtYXRpb24gLT4gU2NocmVpYmVuLgogICAgLy8gVmVyd2VuZGV0IGVpbiBQ cm9ncmVzcy1Nb2RhbCBtaXQgZHJlaSBQaGFzZW4uIEJld3Vzc3QgbGFuZ3NhbSB1bmQgaW4KICAg IC8vIEV0YXBwZW4sIGRhbWl0IGRlciBVc2VyIHZpc3VlbGwgdmVyZm9sZ2VuIGthbm4gd2FzIHBh c3NpZXJ0LgogICAgZnVuY3Rpb24gaW1wU2NocmVpYmVuU3RhcnRlbigpIHsKICAgICAgICBpZiAo IWltcFN0YXRlKSByZXR1cm47CiAgICAgICAgdmFyIHMgPSBpbXBTdGF0ZTsKCiAgICAgICAgLy8g S29uc2VxdWVuei1adXNhbW1lbmZhc3N1bmc6IGRlbSBVc2VyIHZvciBkZW0gU2NocmVpYmVuIHZv ciBBdWdlbgogICAgICAgIC8vIGZ1ZWhyZW4sIHdhcyBkZXIgSW1wb3J0IGtvbmtyZXQgYmV3aXJr dCDigJQgaW5zYmVzb25kZXJlIG5ldWUgUGVyc29uZW4KICAgICAgICAvLyAoRHVwbGlrYXQtUmlz aWtvKSB1bmQgWmVsbGVuLCBkaWUgZ2VsZWVydCBzdGF0dCBiZWZ1ZWxsdCB3ZXJkZW4KICAgICAg ICAvLyAoQ29kZSB1bmJla2FubnQvaWdub3JpZXJ0IG9kZXIgRXhjZWwtWmVsbGUgbGVlcikuIFF1 ZWxsZSBpc3QgZXhha3QKICAgICAgICAvLyBkaWVzZWxiZSBEaWZmLUJlcmVjaG51bmcgd2llIGlt IFRyb2NrZW5sYXVmLgogICAgICAgIHZhciBwTmV1ICAgICAgPSBzLnBlcnNvbmVuTWF0Y2hlcy5m aWx0ZXIoZnVuY3Rpb24obSkgeyByZXR1cm4gbS5uZXVBbmxlZ2VuICYmICFtLnppZWxJZDsgfSku bGVuZ3RoOwogICAgICAgIHZhciBwQWVobmxpY2ggPSBzLnBlcnNvbmVuTWF0Y2hlcy5maWx0ZXIo ZnVuY3Rpb24obSkgeyByZXR1cm4gbS5zdGF0dXMgPT09ICduZXUnICYmIG0uYWVobmxpY2ggJiYg bS5hZWhubGljaC5sZW5ndGg7IH0pLmxlbmd0aDsKICAgICAgICB2YXIgdGwgICAgICAgID0gaW1w VHJvY2tlbmxhdWZCZXJlY2huZW4ocyk7CgogICAgICAgIC8vIE0yOiBSYW5nL1Bvc2l0aW9uLUFl bmRlcnVuZ2VuIHNpY2h0YmFyIG1hY2hlbi4gRGVyIEltcG9ydCB6aWVodCBkZW4KICAgICAgICAv LyBFeGNlbC1SYW5nIChTcGFsdGUgRikgYXVmIGRpZSBnZW1hdGNodGUgUGVyc29uIOKAlCBkYXMg a2FubiBkaWUKICAgICAgICAvLyBSZWloZW5mb2xnZSBkZXIgUGVyc29uYWxsaXN0ZSB1bXNvcnRp ZXJlbiwgZWluIGxlaWNodCB1ZWJlcnNlaGVuZXIKICAgICAgICAvLyBOZWJlbmVmZmVrdCBlaW5l cyByZWluZW4gU2NoaWNodC1JbXBvcnRzLgogICAgICAgIHZhciBwaWRQb3MgPSB7fTsKICAgICAg ICAoWi5wbGFudW5nLnBlcnNvbmVuIHx8IFtdKS5mb3JFYWNoKGZ1bmN0aW9uKHApIHsgcGlkUG9z W1N0cmluZyhwLmlkKV0gPSBwLnBvc2l0aW9uOyB9KTsKICAgICAgICB2YXIgcmFlbmdlID0gcy5w ZXJzb25lbk1hdGNoZXMuZmlsdGVyKGZ1bmN0aW9uKG0pIHsKICAgICAgICAgICAgcmV0dXJuIG0u emllbElkICYmIG0uZXhjZWwucmFuZyAhPSBudWxsICYmIHBpZFBvc1tTdHJpbmcobS56aWVsSWQp XSAhPT0gbS5leGNlbC5yYW5nOwogICAgICAgIH0pLmxlbmd0aDsKCiAgICAgICAgdmFyIHplaWxl biA9IFsKICAgICAgICAgICAgJ0RpZSBFaW50csOkZ2UgaW0gRXhjZWwtWmVpdHJhdW0gKCcgKwog ICAgICAgICAgICBzLmRhdHVtU3BhbHRlblswXS5kYXR1bSArICcgYmlzICcgKwogICAgICAgICAg ICBzLmRhdHVtU3BhbHRlbltzLmRhdHVtU3BhbHRlbi5sZW5ndGggLSAxXS5kYXR1bSArCiAgICAg ICAgICAgICcpIHdlcmRlbiBmw7xyIGRpZSBpbXBvcnRpZXJ0ZW4gUGVyc29uZW4gZHVyY2ggZGll IEV4Y2VsLVdlcnRlIEVSU0VUWlQuICcgKwogICAgICAgICAgICAnS29tbWVudGFyZSBhdXMgZGVy IEV4Y2VsIHdlcmRlbiBlcmfDpG56dCDigJQgdm9yaGFuZGVuZSBibGVpYmVuIGVyaGFsdGVuLiAn ICsKICAgICAgICAgICAgJ1BlcnNvbmVuLCBkaWUgbmljaHQgaW4gZGVyIEV4Y2VsIHN0ZWhlbiwg YmVoYWx0ZW4gaWhyZSBFaW50csOkZ2UgdW52ZXLDpG5kZXJ0LicKICAgICAgICBdOwoKICAgICAg ICB2YXIgYmlsYW56ID0gW107CiAgICAgICAgaWYgKHRsLnN0YXRzLm5ldSkgICAgICAgICAgYmls YW56LnB1c2goJ+KAoiAnICsgdGwuc3RhdHMubmV1ICsgJyBaZWxsZShuKSBuZXUgZWluZ2V0cmFn ZW4nKTsKICAgICAgICBpZiAodGwuc3RhdHMuZ2VhZW5kZXJ0KSAgICBiaWxhbnoucHVzaCgn4oCi ICcgKyB0bC5zdGF0cy5nZWFlbmRlcnQgKyAnIFplbGxlKG4pIGdlw6RuZGVydCcpOwogICAgICAg IGlmICh0bC5zdGF0cy52ZXJsb3JlbkxlZXIpIGJpbGFuei5wdXNoKCfigKIgJyArIHRsLnN0YXRz LnZlcmxvcmVuTGVlciArICcgWmVsbGUobikgd2VyZGVuIEdFTEVFUlQgKGluIEV4Y2VsIGxlZXIg b2RlciBDb2RlIG5pY2h0IHp1Z2VvcmRuZXQpJyk7CiAgICAgICAgaWYgKHBOZXUpICAgICAgICAg ICAgICAgICAgYmlsYW56LnB1c2goJ+KAoiAnICsgcE5ldSArICcgUGVyc29uKGVuKSB3ZXJkZW4g TkVVIGFuZ2VsZWd0JyArIChwQWVobmxpY2ggPyAnIOKAlCBkYXZvbiAnICsgcEFlaG5saWNoICsg JyBtaXQgVGlwcGZlaGxlci1WZXJkYWNodCEnIDogJycpKTsKICAgICAgICBpZiAocmFlbmdlKSAg ICAgICAgICAgICAgICBiaWxhbnoucHVzaCgn4oCiICcgKyByYWVuZ2UgKyAnIFBlcnNvbihlbikg YmVrb21tZW4gZWluZSBuZXVlIFJlaWhlbmZvbGdlLVBvc2l0aW9uIGF1cyBkZXIgRXhjZWwgKFNw YWx0ZSBGKScpOwogICAgICAgIGlmIChiaWxhbnoubGVuZ3RoKSB6ZWlsZW4ucHVzaCgnRGFzIGJl d2lya3Q6XG4nICsgYmlsYW56LmpvaW4oJ1xuJykpOwoKICAgICAgICBpZiAocEFlaG5saWNoKSB7 CiAgICAgICAgICAgIHplaWxlbi5wdXNoKCfimqAgJyArIHBBZWhubGljaCArICcgbmV1IGFuenVs ZWdlbmRlIFBlcnNvbihlbikgw6RobmVsbiBlaW5lciBiZXN0ZWhlbmRlbiBQZXJzb24uIEJpdHRl IHZvcmhlciBpbSBNYXBwaW5nIHByw7xmZW4sIHNvbnN0IGVudHN0ZWhlbiBEdXBsaWthdGUuJyk7 CiAgICAgICAgfQogICAgICAgIGlmIChzLmphaHJJbmZvICYmIChzLmphaHJJbmZvLmF1c3Nlcmhh bGIgPiAwIHx8IHMuamFockluZm8uZG9taW5hbnRKYWhyICE9PSBzLmphaHJJbmZvLnBvcnRhbEph aHIpKSB7CiAgICAgICAgICAgIHplaWxlbi5wdXNoKCfimqAgSmFocmVzLUhpbndlaXM6IERhdGVp LVplaXRyYXVtICcgKyBzLmphaHJJbmZvLmRhdGVpVm9uICsgJyBiaXMgJyArIHMuamFockluZm8u ZGF0ZWlCaXMgKwogICAgICAgICAgICAgICAgJywgUG9ydGFsIHplaWd0IFBsYW51bmdzamFociAn ICsgcy5qYWhySW5mby5wb3J0YWxKYWhyICsgJy4gJyArCiAgICAgICAgICAgICAgICAocy5qYWhy SW5mby5hdXNzZXJoYWxiID8gcy5qYWhySW5mby5hdXNzZXJoYWxiICsgJyBUYWcoZSkgYXXDn2Vy aGFsYiBkZXMgYW5nZXplaWd0ZW4gWmVpdHJhdW1zIHdlcmRlbiBnZXNjaHJpZWJlbiwgYWJlciBu aWNodCBhbmdlemVpZ3QuICcgOiAnJykgKwogICAgICAgICAgICAgICAgJ0JpdHRlIHNpY2hlcnN0 ZWxsZW4sIGRhc3MgRGF0ZWkgdW5kIFBsYW51bmdzamFociB6dXNhbW1lbnBhc3Nlbi4nKTsKICAg ICAgICB9CgogICAgICAgIHplaWxlbi5wdXNoKCdFaW4gU2ljaGVyaGVpdHMtQmFja3VwIGRlciBh a3R1ZWxsZW4gUGxhbnVuZyB3aXJkIHZvcmhlciBhdXRvbWF0aXNjaCBhbmdlbGVndC4nKTsKICAg ICAgICB6ZWlsZW4ucHVzaCgnRm9ydHNldHplbj8nKTsKCiAgICAgICAgYmVzdGFldGlnZW4oCiAg ICAgICAgICAgIHplaWxlbi5qb2luKCdcblxuJyksCiAgICAgICAgICAgIGZ1bmN0aW9uKCkgeyBp bXBTY2hyZWliZW5BdXNmdWVocmVuKCk7IH0sCiAgICAgICAgICAgIHsgdGl0ZWw6ICdFeGNlbC1J bXBvcnQgYmVzdMOkdGlnZW4nLCBqYVRleHQ6ICdGb3J0c2V0emVuJywgamFEYW5nZXI6IHRydWUg fQogICAgICAgICk7CiAgICB9CgogICAgZnVuY3Rpb24gaW1wUHJvZ3Jlc3NNb2RhbE9lZmZuZW4o KSB7CiAgICAgICAgdmFyIGtvZXJwZXIgPQogICAgICAgICAgICAnPGRpdiBjbGFzcz0iaW1wLXBy b2dyZXNzLWtvbnRleHQiPicgKwogICAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9ImltcC1wcm9n cmVzcy1waGFzZSIgaWQ9ImltcC1wcm9nLXBoYXNlIj5Wb3JiZXJlaXRlbiDigKY8L2Rpdj4nICsK ICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJpbXAtcHJvZ3Jlc3MtYmFyIj48ZGl2IGNsYXNz PSJpbXAtcHJvZ3Jlc3MtZmlsbCIgaWQ9ImltcC1wcm9nLWZpbGwiPjwvZGl2PjwvZGl2PicgKwog ICAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9ImltcC1wcm9ncmVzcy10ZXh0IiBpZD0iaW1wLXBy b2ctdGV4dCI+Jm5ic3A7PC9kaXY+JyArCiAgICAgICAgICAgICc8L2Rpdj4nOwogICAgICAgIG1v ZGFsWmVpZ2VuKCdFeGNlbC1JbXBvcnQgbMOkdWZ0Jywga29lcnBlciwgJycsIG51bGwpOwogICAg ICAgIC8vIFNjaGxpZcOfZW4tS3JldXogdmVyc3RlY2tlbiDigJQgSW1wb3J0IGRhcmYgbmljaHQg YWJnZWJyb2NoZW4gd2VyZGVuCiAgICAgICAgdmFyIG1vZCA9IGRvY3VtZW50LmdldEVsZW1lbnRC eUlkKCdtb2RhbC1vdmVybGF5Jyk7CiAgICAgICAgaWYgKG1vZCkgbW9kLnNldEF0dHJpYnV0ZSgn ZGF0YS1uby1jbG9zZScsICcxJyk7CiAgICB9CiAgICBmdW5jdGlvbiBpbXBQcm9ncmVzc1VwZGF0 ZShwaGFzZSwgcHJvemVudCwgdGV4dCkgewogICAgICAgIHZhciBwaCA9IGRvY3VtZW50LmdldEVs ZW1lbnRCeUlkKCdpbXAtcHJvZy1waGFzZScpOwogICAgICAgIHZhciBmbCA9IGRvY3VtZW50Lmdl dEVsZW1lbnRCeUlkKCdpbXAtcHJvZy1maWxsJyk7CiAgICAgICAgdmFyIHR4ID0gZG9jdW1lbnQu Z2V0RWxlbWVudEJ5SWQoJ2ltcC1wcm9nLXRleHQnKTsKICAgICAgICBpZiAocGggJiYgcGhhc2Up IHBoLnRleHRDb250ZW50ID0gcGhhc2U7CiAgICAgICAgaWYgKGZsKSBmbC5zdHlsZS53aWR0aCA9 IE1hdGgubWF4KDAsIE1hdGgubWluKDEwMCwgcHJvemVudCkpICsgJyUnOwogICAgICAgIGlmICh0 eCkgdHgudGV4dENvbnRlbnQgPSB0ZXh0IHx8ICcnOwogICAgfQogICAgZnVuY3Rpb24gaW1wUHJv Z3Jlc3NGZWhsZXIobXNnKSB7CiAgICAgICAgdmFyIHBoID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5 SWQoJ2ltcC1wcm9nLXBoYXNlJyk7CiAgICAgICAgdmFyIHR4ID0gZG9jdW1lbnQuZ2V0RWxlbWVu dEJ5SWQoJ2ltcC1wcm9nLXRleHQnKTsKICAgICAgICB2YXIgZmwgPSBkb2N1bWVudC5nZXRFbGVt ZW50QnlJZCgnaW1wLXByb2ctZmlsbCcpOwogICAgICAgIGlmIChwaCkgeyBwaC50ZXh0Q29udGVu dCA9ICfinYwgRmVobGVyJzsgcGguc3R5bGUuY29sb3IgPSAndmFyKC0tZmFyYmUtZmVobGVyKSc7 IH0KICAgICAgICBpZiAoZmwpIHsgZmwuc3R5bGUuYmFja2dyb3VuZCA9ICd2YXIoLS1mYXJiZS1m ZWhsZXIpJzsgfQogICAgICAgIGlmICh0eCkgdHgudGV4dENvbnRlbnQgPSBtc2c7CiAgICAgICAg Ly8gU2NobGllw59lbi1CdXR0b24gYW5oYWVuZ2VuCiAgICAgICAgdmFyIGZ1c3MgPSBkb2N1bWVu dC5nZXRFbGVtZW50QnlJZCgnbW9kYWwtZnVzcycpOwogICAgICAgIGlmIChmdXNzKSB7CiAgICAg ICAgICAgIGZ1c3MuaW5uZXJIVE1MID0gJzxidXR0b24gY2xhc3M9ImJ0biIgaWQ9ImltcC1wcm9n LWNsb3NlIj5TY2hsaWXDn2VuPC9idXR0b24+JzsKICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxl bWVudEJ5SWQoJ2ltcC1wcm9nLWNsb3NlJykuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBtb2Rh bFNjaGxpZXNzZW4pOwogICAgICAgIH0KICAgIH0KICAgIGZ1bmN0aW9uIGltcFByb2dyZXNzRXJm b2xnKGVpbnRyYWVnZSwga29tbWVudGFyZSwgYmFja3VwTmFtZSkgewogICAgICAgIGltcFByb2dy ZXNzVXBkYXRlKCfinJMgSW1wb3J0IGFiZ2VzY2hsb3NzZW4nLCAxMDAsCiAgICAgICAgICAgIGVp bnRyYWVnZSArICcgRWludHLDpGdlIHVuZCAnICsga29tbWVudGFyZSArICcgS29tbWVudGFyZSDD vGJlcm5vbW1lbi4gQmFja3VwOiAnICsgKGJhY2t1cE5hbWUgfHwgJ+KAkycpKTsKICAgICAgICB2 YXIgcGggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW1wLXByb2ctcGhhc2UnKTsKICAgICAg ICBpZiAocGgpIHBoLnN0eWxlLmNvbG9yID0gJ3ZhcigtLWZhcmJlLWVyZm9sZyknOwogICAgICAg IHZhciBmdXNzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21vZGFsLWZ1c3MnKTsKICAgICAg ICBpZiAoZnVzcykgewogICAgICAgICAgICBmdXNzLmlubmVySFRNTCA9ICc8YnV0dG9uIGNsYXNz PSJidG4gYnRuLXByaW1hZXIiIGlkPSJpbXAtcHJvZy1jbG9zZSI+U2VpdGUgbmV1IGxhZGVuPC9i dXR0b24+JzsKICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ltcC1wcm9nLWNs b3NlJykuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAg ICAgIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgfQog ICAgfQoKICAgIGZ1bmN0aW9uIGltcFNjaHJlaWJlbkF1c2Z1ZWhyZW4oKSB7CiAgICAgICAgdmFy IHMgPSBpbXBTdGF0ZTsKICAgICAgICBpZiAoIXMpIHJldHVybjsKICAgICAgICBpbXBQcm9ncmVz c01vZGFsT2VmZm5lbigpOwoKICAgICAgICAvLyA9PT0gUGhhc2UgMTogQmFja3VwID09PQogICAg ICAgIGltcFByb2dyZXNzVXBkYXRlKCdTaWNoZXJoZWl0cy1CYWNrdXAgd2lyZCBhbmdlbGVndCDi gKYnLCA1LCAnUE9TVCAvYXBpL3BsYW51bmcvYmFja3VwJyk7CiAgICAgICAgdmFyIGJhY2t1cE5h bWUgPSAnJzsKICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewogICAgICAgICAgICBhcGlQ b3N0KCcvYXBpL3BsYW51bmcvYmFja3VwJywge30pLnRoZW4oZnVuY3Rpb24ocikgewogICAgICAg ICAgICAgICAgYmFja3VwTmFtZSA9IHIuZGF0ZWluYW1lIHx8ICcnOwogICAgICAgICAgICAgICAg aW1wUHJvZ3Jlc3NVcGRhdGUoJ1NpY2hlcmhlaXRzLUJhY2t1cDogJyArIChiYWNrdXBOYW1lIHx8 ICdPSycpLCAyMCwgJ0JhY2t1cCBlcnN0ZWxsdCcpOwogICAgICAgICAgICAgICAgc2V0VGltZW91 dChmdW5jdGlvbigpIHsgaW1wU2NocmVpYmVuUGhhc2UyKHMsIGJhY2t1cE5hbWUpOyB9LCAzNTAp OwogICAgICAgICAgICB9KS5jYXRjaChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICBpbXBQ cm9ncmVzc0ZlaGxlcignQmFja3VwIGZlaGxnZXNjaGxhZ2VuOiAnICsgZS5tZXNzYWdlKTsKICAg ICAgICAgICAgfSk7CiAgICAgICAgfSwgMjAwKTsKICAgIH0KCiAgICBmdW5jdGlvbiBpbXBTY2hy ZWliZW5QaGFzZTIocywgYmFja3VwTmFtZSkgewogICAgICAgIC8vID09PSBQaGFzZSAyYTogTmV1 ZSBQZXJzb25lbiBhbmxlZ2VuID09PQogICAgICAgIC8vIEZ1ZXIgamVkZXMgTWF0Y2ggbWl0IGBu ZXVBbmxlZ2VuPXRydWVgIGVpbmVuIFBPU1QgL2FwaS9wZXJzb25lbgogICAgICAgIC8vIHNlcXVl bnppZWxsIGFic2V0emVuLiBTZXJ2ZXIgdmVyZ2lidCBkaWUgbmV1ZSBJRCArIE1hcmtlcgogICAg ICAgIC8vIGBpbXBvcnROZXVBbWAsIGRhbWl0IGRpZSBQZXJzb25hbHZlcndhbHR1bmcgc2llIHNw YWV0ZXIgaW0KICAgICAgICAvLyBOZXVpbXBvcnQtQmxvY2sgb2JlbiBzYW1tZWx0LiBOYWNoIGFs bGVuIFBPU1RzIGhvbGVuIHdpciBkZW4KICAgICAgICAvLyBmcmlzY2hlbiBQbGFudW5ncy1TdGFu ZCB2b20gU2VydmVyIChHRVQgL2FwaS9wbGFudW5nKSwgYmV2b3Igd2lyIGluCiAgICAgICAgLy8g UGhhc2UgMmIgZGllIEVpbnRyYWVnZSB0cmFuc2Zvcm1pZXJlbiDigJQgc29uc3QgZmVobHRlbiBk aWUgbmV1ZW4KICAgICAgICAvLyBQZXJzb25lbiBpbSBuZXVlUGxhbnVuZy1Cb2R5LgogICAgICAg IHZhciBuZXVBbnp1bGVnZW4gPSBzLnBlcnNvbmVuTWF0Y2hlcy5maWx0ZXIoZnVuY3Rpb24obSkg eyByZXR1cm4gbS5uZXVBbmxlZ2VuICYmICFtLnppZWxJZDsgfSk7CiAgICAgICAgaWYgKG5ldUFu enVsZWdlbi5sZW5ndGggPT09IDApIHsKICAgICAgICAgICAgLy8gQXVjaCBvaG5lIG5ldWUgUGVy c29uZW4gZGVuIEZSSVNDSEVOIFN0YW5kIHZvbSBTZXJ2ZXIgaG9sZW4sIGJldm9yCiAgICAgICAg ICAgIC8vIHdpciB0cmFuc2Zvcm1pZXJlbi4gRGVyIG5hY2hmb2xnZW5kZSBWb2xsLVBVVCB1ZWJl cnNjaHJlaWJ0CiAgICAgICAgICAgIC8vIHBsYW51bmcuanNvbiBrb21wbGV0dCDigJQgYmF1dCBl ciBhdWYgZWluZW0gdmVyYWx0ZXRlbiBaLnBsYW51bmcgYXVmCiAgICAgICAgICAgIC8vICh6LkIu IHNlaXQgU2VpdGVuYXVmcnVmIGhhdCBqZW1hbmQgYW5kZXJlcyBaZWxsZW4gZWRpdGllcnQpLCBn aW5nZW4KICAgICAgICAgICAgLy8gZGllc2UgQWVuZGVydW5nZW4gdmVybG9yZW4gdW5kIEJlc3Rh bmQtb25seS1QZXJzb25lbiB3dWVyZGVuIG1pdAogICAgICAgICAgICAvLyBBbHRzdGFuZCB6dXJ1 ZWNrZ2VzY2hyaWViZW4uIEVpbiBHRVQgdW5taXR0ZWxiYXIgdm9yIGRlbSBUcmFuc2Zvcm0KICAg ICAgICAgICAgLy8gdmVya2xlaW5lcnQgZGllc2VzIEZlbnN0ZXIgYXVmIGRlbiBlaWdlbnRsaWNo ZW4gU2NocmVpYnZvcmdhbmcuCiAgICAgICAgICAgIGltcFByb2dyZXNzVXBkYXRlKCdBa3R1ZWxs ZW4gUGxhbnVuZ3NzdGFuZCBsYWRlbiDigKYnLCAyNCwgJ0dFVCAvYXBpL3BsYW51bmcnKTsKICAg ICAgICAgICAgaW1wR2V0UGxhbnVuZ01pdFZlcnNpb24oKS50aGVuKGZ1bmN0aW9uKHApIHsKICAg ICAgICAgICAgICAgIFoucGxhbnVuZyA9IHA7CiAgICAgICAgICAgICAgICBpbXBTY2hyZWliZW5Q aGFzZTJUcmFuc2Zvcm0ocywgYmFja3VwTmFtZSk7CiAgICAgICAgICAgIH0pLmNhdGNoKGZ1bmN0 aW9uKGUpIHsKICAgICAgICAgICAgICAgIGltcFByb2dyZXNzRmVobGVyKCdBa3R1ZWxsZXIgUGxh bnVuZ3NzdGFuZCBrb25udGUgbmljaHQgZ2VsYWRlbiB3ZXJkZW46ICcgKyBlLm1lc3NhZ2UpOwog ICAgICAgICAgICB9KTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICB2YXIg bnJKZXR6dCA9IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKTsKICAgICAgICB2YXIgYW56QW5nZWxl Z3QgPSAwOwogICAgICAgIGZ1bmN0aW9uIG5hZWNoc3RlUGVyc29uKCkgewogICAgICAgICAgICBp ZiAoYW56QW5nZWxlZ3QgPj0gbmV1QW56dWxlZ2VuLmxlbmd0aCkgewogICAgICAgICAgICAgICAg Ly8gQWxsZSBhbmdlbGVndCDigJQgUGxhbnVuZyBuZXUgbGFkZW4sIGRhbWl0IGRpZSBuZXVlbiBJ RHMgaW4KICAgICAgICAgICAgICAgIC8vIFoucGxhbnVuZy5wZXJzb25lbiB2ZXJmdWVnYmFyIHNp bmQuCiAgICAgICAgICAgICAgICBpbXBQcm9ncmVzc1VwZGF0ZSgnUGVyc29uZW4tTGlzdGUgd2ly ZCBha3R1YWxpc2llcnQg4oCmJywgMjQsICdGcmlzY2hlIElEcyB2b20gU2VydmVyIGxhZGVuJyk7 CiAgICAgICAgICAgICAgICBpbXBHZXRQbGFudW5nTWl0VmVyc2lvbigpLnRoZW4oZnVuY3Rpb24o cCkgewogICAgICAgICAgICAgICAgICAgIFoucGxhbnVuZyA9IHA7CiAgICAgICAgICAgICAgICAg ICAgaW1wU2NocmVpYmVuUGhhc2UyVHJhbnNmb3JtKHMsIGJhY2t1cE5hbWUpOwogICAgICAgICAg ICAgICAgfSkuY2F0Y2goZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIGltcFByb2dy ZXNzRmVobGVyKCdQbGFudW5nIGtvbm50ZSBuYWNoIFBlcnNvbmVuLUFubGFnZSBuaWNodCBuZXUg Z2VsYWRlbiB3ZXJkZW46ICcgKyBlLm1lc3NhZ2UpOwogICAgICAgICAgICAgICAgfSk7CiAgICAg ICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdmFyIG0gPSBuZXVB bnp1bGVnZW5bYW56QW5nZWxlZ3RdOwogICAgICAgICAgICB2YXIgZGF0ZW4gPSB7CiAgICAgICAg ICAgICAgICBuYW1lOiBtLmV4Y2VsLm5hY2huYW1lLAogICAgICAgICAgICAgICAgdm9ybmFtZTog JycsICAvLyBFeGNlbCBrZW5udCBudXIgZGVuIE5hY2huYW1lbiDigJQgd2lyZCBpbSBOZXVpbXBv cnQtQmxvY2sgbmFjaGdlcGZsZWd0CiAgICAgICAgICAgICAgICBncnVwcGU6IG0uZXhjZWwuZ3J1 cHBlIHx8ICcnLAogICAgICAgICAgICAgICAgb2U6IG0uZXhjZWwub2UgfHwgJycsCiAgICAgICAg ICAgICAgICB0ZWxlZm9uOiBtLmV4Y2VsLnRlbGVmb24gfHwgJycsCiAgICAgICAgICAgICAgICBl aW5yZWloZW46ICd1bnRlbicsCiAgICAgICAgICAgICAgICBpbXBvcnROZXVBbTogbnJKZXR6dAog ICAgICAgICAgICB9OwogICAgICAgICAgICB2YXIgaWR4ID0gYW56QW5nZWxlZ3QgKyAxOwogICAg ICAgICAgICBpbXBQcm9ncmVzc1VwZGF0ZSgnTmV1ZSBQZXJzb25lbiB3ZXJkZW4gYW5nZWxlZ3Qg 4oCmJywKICAgICAgICAgICAgICAgIDIxICsgTWF0aC5mbG9vcigzICogYW56QW5nZWxlZ3QgLyBu ZXVBbnp1bGVnZW4ubGVuZ3RoKSwKICAgICAgICAgICAgICAgICdBbmxlZ2VuOiAnICsgbS5leGNl bC5uYWNobmFtZSArICcgKCcgKyBpZHggKyAnLycgKyBuZXVBbnp1bGVnZW4ubGVuZ3RoICsgJykn KTsKICAgICAgICAgICAgYXBpUG9zdCgnL2FwaS9wZXJzb25lbicsIGRhdGVuKS50aGVuKGZ1bmN0 aW9uKHIpIHsKICAgICAgICAgICAgICAgIG0uemllbElkID0gci5pZDsKICAgICAgICAgICAgICAg IGFuekFuZ2VsZWd0Kys7CiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KG5hZWNoc3RlUGVyc29u LCAzMCk7CiAgICAgICAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAg IGltcFByb2dyZXNzRmVobGVyKCdQZXJzb24gIicgKyBtLmV4Y2VsLm5hY2huYW1lICsgJyIga29u bnRlIG5pY2h0IGFuZ2VsZWd0IHdlcmRlbjogJyArIGUubWVzc2FnZSk7CiAgICAgICAgICAgIH0p OwogICAgICAgIH0KICAgICAgICBzZXRUaW1lb3V0KG5hZWNoc3RlUGVyc29uLCAxMDApOwogICAg fQoKICAgIGZ1bmN0aW9uIGltcFNjaHJlaWJlblBoYXNlMlRyYW5zZm9ybShzLCBiYWNrdXBOYW1l KSB7CiAgICAgICAgLy8gPT09IFBoYXNlIDJiOiBUcmFuc2Zvcm1hdGlvbiA9PT0KICAgICAgICBp bXBQcm9ncmVzc1VwZGF0ZSgnRGF0ZW4gd2VyZGVuIHRyYW5zZm9ybWllcnQg4oCmJywgMjUsICdL b3BpZSBkZXIgYmVzdGVoZW5kZW4gUGxhbnVuZyB3aXJkIHZvcmJlcmVpdGV0Jyk7CgogICAgICAg IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHZhciBuZXVlUGxhbnVuZyA9IEpT T04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoWi5wbGFudW5nKSk7CiAgICAgICAgICAgIHZhciBleGNl bERhdHVtU2V0ID0ge307CiAgICAgICAgICAgIHMuZGF0dW1TcGFsdGVuLmZvckVhY2goZnVuY3Rp b24oZCkgeyBleGNlbERhdHVtU2V0W2QuZGF0dW1dID0gdHJ1ZTsgfSk7CgogICAgICAgICAgICAv LyBBbHRlIEVpbnRyYWVnZSBpbSBFeGNlbC1aZWl0cmF1bSBlbnRmZXJuZW4g4oCUIGFiZXIgTlVS IGZ1ZXIKICAgICAgICAgICAgLy8gUGVyc29uZW4sIGRpZSBpbiBkZXIgRXhjZWwgYXVmdGF1Y2hl biBVTkQgZG9ydCBtaW5kZXN0ZW5zIGVpbmVuCiAgICAgICAgICAgIC8vIEVpbnRyYWcgaGFiZW4u IFBlcnNvbmVuLCBkaWUgbnVyIGltIEJlc3RhbmQgc2luZCAobmV1ZSBNaXRhcmJlaXRlciwKICAg ICAgICAgICAgLy8gbm9jaCBuaWNodCBpbiBkZXIgRXhjZWwtVm9ybGFnZSksIGJlaGFsdGVuIGlo cmUgRWludHJhZWdlLgogICAgICAgICAgICAvLyBWb3JoZXIgaGFiZW4gd2lyIGhpZXIgZGVuIGdh bnplbiBUYWcgZ2VsZWVydCDigJQgZGFzIGhhdCBmdWVyCiAgICAgICAgICAgIC8vIEJlc3RhbmQt b25seS1QZXJzb25lbiBhbGxlIFNjaGljaHRlbiBpbSBJbXBvcnR6ZWl0cmF1bQogICAgICAgICAg ICAvLyB1bmJlYWJzaWNodGlndCBlbnRmZXJudC4KICAgICAgICAgICAgLy8KICAgICAgICAgICAg Ly8gTTEtU2NodXR6OiBFaW5lIGdlbWF0Y2h0ZSBQZXJzb24gbWl0IEtPTVBMRVRUIGxlZXJlciBF eGNlbC1aZWlsZQogICAgICAgICAgICAvLyAoMCBFaW50cmFlZ2UpIHdpcmQgTklDSFQgZ2VsZWVy dC4gU29uc3Qgd3VlcmRlIGVpbmUgUGVyc29uLCBkaWUgaW4KICAgICAgICAgICAgLy8gZGVyIFZv cmxhZ2UgbnVyIGdlbGlzdGV0LCBhYmVyIGltIFplaXRyYXVtIGdhciBuaWNodCBlaW5nZXBsYW50 CiAgICAgICAgICAgIC8vIGlzdCwgaWhyZSBrb21wbGV0dGVuIGJlc3RlaGVuZGVuIFNjaGljaHRl biB2ZXJsaWVyZW4uIEhhdCBkaWUKICAgICAgICAgICAgLy8gWmVpbGUgYXVjaCBudXIgRUlORU4g RWludHJhZywgZ2lsdCBkaWUgRXhjZWwgYWxzIHZlcmJpbmRsaWNoIHVuZAogICAgICAgICAgICAv LyBsZWVyZSBaZWxsZW4gbG9lc2NoZW4gd2llIGdld29sbHQuCiAgICAgICAgICAgIG5ldWVQbGFu dW5nLmVpbnRyYWVnZSA9IG5ldWVQbGFudW5nLmVpbnRyYWVnZSB8fCB7fTsKICAgICAgICAgICAg dmFyIGV4Y2VsUGlkU2V0ID0ge307CiAgICAgICAgICAgIHMucGVyc29uZW5NYXRjaGVzLmZvckVh Y2goZnVuY3Rpb24obSkgewogICAgICAgICAgICAgICAgaWYgKG0uemllbElkICYmIE9iamVjdC5r ZXlzKG0uZXhjZWwuZWludHJhZWdlIHx8IHt9KS5sZW5ndGggPiAwKSB7CiAgICAgICAgICAgICAg ICAgICAgZXhjZWxQaWRTZXRbU3RyaW5nKG0uemllbElkKV0gPSB0cnVlOwogICAgICAgICAgICAg ICAgfQogICAgICAgICAgICB9KTsKICAgICAgICAgICAgT2JqZWN0LmtleXMobmV1ZVBsYW51bmcu ZWludHJhZWdlKS5mb3JFYWNoKGZ1bmN0aW9uKGQpIHsKICAgICAgICAgICAgICAgIGlmICghZXhj ZWxEYXR1bVNldFtkXSkgcmV0dXJuOwogICAgICAgICAgICAgICAgdmFyIGJ1Y2tldCA9IG5ldWVQ bGFudW5nLmVpbnRyYWVnZVtkXTsKICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKGJ1Y2tldCku Zm9yRWFjaChmdW5jdGlvbihwaWQpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoZXhjZWxQaWRT ZXRbcGlkXSkgZGVsZXRlIGJ1Y2tldFtwaWRdOwogICAgICAgICAgICAgICAgfSk7CiAgICAgICAg ICAgIH0pOwogICAgICAgICAgICBuZXVlUGxhbnVuZy5rb21tZW50YXJlID0gbmV1ZVBsYW51bmcu a29tbWVudGFyZSB8fCB7fTsKCiAgICAgICAgICAgIGltcFByb2dyZXNzVXBkYXRlKCdEYXRlbiB3 ZXJkZW4gdHJhbnNmb3JtaWVydCDigKYnLCA0MCwgJ0FsdGUgRWludHLDpGdlIGltIFppZWx6ZWl0 cmF1bSBlbnRmZXJudCcpOwoKICAgICAgICAgICAgLy8gQ29kZS1NYXBwaW5nIHZvcmJlcmVpdGVu CiAgICAgICAgICAgIHZhciBjb2RlTWFwID0ge307CiAgICAgICAgICAgIHMuY29kZU1hdGNoZXMu Zm9yRWFjaChmdW5jdGlvbihtKSB7IGNvZGVNYXBbbS5jb2RlXSA9IG0uemllbDsgfSk7CgogICAg ICAgICAgICAvLyBOZXVlIEVpbnRyYWVnZSArIEtvbW1lbnRhcmUgZWluc2NocmVpYmVuLiBLb21t ZW50YXJlIGJlaGFsdGVuCiAgICAgICAgICAgIC8vIGlocmVuIE9SSUdJTkFMLUF1dG9yIGF1cyBk ZXIgRXhjZWwtTm90aXogdW5kIGJla29tbWVuIGJld3Vzc3QKICAgICAgICAgICAgLy8gS0VJTkVO IFplaXRzdGVtcGVsIChFeGNlbCBsaWVmZXJ0IGtlaW5lbiB2ZXJsYWVzc2xpY2hlbikg4oCUIGRh aGVyCiAgICAgICAgICAgIC8vIGhpZXIga2VpbiAiYWJzZW5kZXIiLyJqZXR6dCIgbWVoci4KICAg ICAgICAgICAgdmFyIGVpbnRyYWVnZUdlc2FtdCA9IDAsIGtvbW1lbnRhcmVHZXNhbXQgPSAwOwoK ICAgICAgICAgICAgdmFyIGlnbm9yaWVydENvZGVzID0gMDsKICAgICAgICAgICAgdmFyIGlnbm9y aWVydFBlcnNvbmVuID0gMDsKICAgICAgICAgICAgdmFyIHJhZW5nZVVlYmVybm9tbWVuID0gMDsK ICAgICAgICAgICAgdmFyIHdpZWRlcmhlcmdlc3RlbGx0ID0gMDsKICAgICAgICAgICAgdmFyIGRl ZHVwVWViZXJzcHJ1bmdlbiA9IDA7CiAgICAgICAgICAgIC8vIExpZWZlcnQgZGllIGJlc3RlaGVu ZGUgS29tbWVudGFybGlzdGUgZnVlciAoZGF0dW0scGlkKSBhbHMgQXJyYXkKICAgICAgICAgICAg Ly8g4oCUIG1pZ3JpZXJ0IGRhYmVpIGV2dGwuIG5vY2ggdm9yaGFuZGVuZSBBbHQtRm9ybWF0ZSAo U3RyaW5nIG9kZXIKICAgICAgICAgICAgLy8gU2luZ2xlLU9iamVjdCkgaW5zIG5ldWUgTGlzdGVu LVNjaGVtYSwgZGFtaXQgZGVyIEFwcGVuZCBuaWNodAogICAgICAgICAgICAvLyBlaW5lbiBNaXgg ZGVyIEZvcm1hdGUgaGludGVybGFlc3N0LgogICAgICAgICAgICBmdW5jdGlvbiBiZXN0ZWhlbmRl S29tbWVudGFyTGlzdGUoZGF0dW0sIHBpZCkgewogICAgICAgICAgICAgICAgdmFyIGJ1Y2tldCA9 IG5ldWVQbGFudW5nLmtvbW1lbnRhcmVbZGF0dW1dOwogICAgICAgICAgICAgICAgaWYgKCFidWNr ZXQpIHJldHVybiBbXTsKICAgICAgICAgICAgICAgIHZhciB2b3JoID0gYnVja2V0W3BpZF07CiAg ICAgICAgICAgICAgICBpZiAoIXZvcmgpIHJldHVybiBbXTsKICAgICAgICAgICAgICAgIGlmICh0 eXBlb2Ygdm9yaCA9PT0gJ3N0cmluZycpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdm9y aC50cmltKCkKICAgICAgICAgICAgICAgICAgICAgICAgPyBbeyBpZDogJ2tfbGVnYWN5XycgKyBN YXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiA5OTk5OSksIHRleHQ6IHZvcmgsIGdlYWVuZGVydEFt OiBudWxsLCBnZWFlbmRlcnRWb246IG51bGwgfV0KICAgICAgICAgICAgICAgICAgICAgICAgOiBb XTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHZv cmgpKSByZXR1cm4gdm9yaC5zbGljZSgpOwogICAgICAgICAgICAgICAgaWYgKHZvcmgudGV4dCkg ewogICAgICAgICAgICAgICAgICAgIHJldHVybiBbewogICAgICAgICAgICAgICAgICAgICAgICBp ZDogICAgICAgICAgIHZvcmguaWQgfHwgKCdrX2xlZ2FjeV8nICsgTWF0aC5mbG9vcihNYXRoLnJh bmRvbSgpICogOTk5OTkpKSwKICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDogICAgICAgICB2 b3JoLnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgIGdlYWVuZGVydEFtOiAgdm9yaC5nZWFl bmRlcnRBbSB8fCBudWxsLAogICAgICAgICAgICAgICAgICAgICAgICBnZWFlbmRlcnRWb246IHZv cmguZ2VhZW5kZXJ0Vm9uIHx8IG51bGwKICAgICAgICAgICAgICAgICAgICB9XTsKICAgICAgICAg ICAgICAgIH0KICAgICAgICAgICAgICAgIHJldHVybiBbXTsKICAgICAgICAgICAgfQogICAgICAg ICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcy5wZXJzb25lbk1h dGNoZXMuZm9yRWFjaChmdW5jdGlvbihtKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCFtLnpp ZWxJZCkgeyBpZ25vcmllcnRQZXJzb25lbisrOyByZXR1cm47IH0KICAgICAgICAgICAgICAgICAg ICB2YXIgcGlkID0gU3RyaW5nKG0uemllbElkKTsKICAgICAgICAgICAgICAgICAgICB2YXIgemll bFAgPSAobmV1ZVBsYW51bmcucGVyc29uZW4gfHwgW10pLmZpbmQoZnVuY3Rpb24ocCkgeyByZXR1 cm4gU3RyaW5nKHAuaWQpID09PSBwaWQ7IH0pOwogICAgICAgICAgICAgICAgICAgIC8vIFdpZWRl cmhlcnN0ZWxsdW5nIGF1cyBQYXBpZXJrb3JiIChLb252ZW50aW9uOiBEYXRlbiBsaWViZXIKICAg ICAgICAgICAgICAgICAgICAvLyBhZG1pbmlzdHJpZXJlbiBhbHMgd2Vnd2VyZmVuKS4gR3JlaWZ0 IGJlaSBzdGF0dXM9J3BhcGllcmtvcmInCiAgICAgICAgICAgICAgICAgICAgLy8gbWl0IERlZmF1 bHQtVm9yc2NobGFnIG9kZXIgd2VubiBkZXIgVXNlciBpbSBNYXBwaW5nIGVpbmUKICAgICAgICAg ICAgICAgICAgICAvLyBQYXBpZXJrb3JiLVBlcnNvbiBtYW51ZWxsIHVlYmVyIGRlbiBgcmVzdG9y ZTo8aWQ+YC1FaW50cmFnCiAgICAgICAgICAgICAgICAgICAgLy8gYXVzZ2V3YWVobHQgaGF0Lgog ICAgICAgICAgICAgICAgICAgIGlmIChtLndpZWRlcmhlcnN0ZWxsZW4gJiYgemllbFAgJiYgemll bFAuZ2Vsb2VzY2h0QW0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHppZWxQLmdl bG9lc2NodEFtOwogICAgICAgICAgICAgICAgICAgICAgICB6aWVsUC5ha3RpdiA9IHRydWU7CiAg ICAgICAgICAgICAgICAgICAgICAgIHdpZWRlcmhlcmdlc3RlbGx0Kys7CiAgICAgICAgICAgICAg ICAgICAgfQogICAgICAgICAgICAgICAgICAgIC8vIFJhbmdvcmRudW5nIGF1cyBFeGNlbC1TcGFs dGUgRiBhdWYgZGllIGdlbWF0Y2h0ZSBQZXJzb24KICAgICAgICAgICAgICAgICAgICAvLyB1ZWJl cnRyYWdlbiDigJQgd2lya3QgZGlyZWt0IGF1ZiBwZXJzb25lbk5ldUF1ZmJhdWVuKCkuCiAgICAg ICAgICAgICAgICAgICAgaWYgKG0uZXhjZWwucmFuZyAhPSBudWxsKSB7CiAgICAgICAgICAgICAg ICAgICAgICAgIGlmICh6aWVsUCAmJiB6aWVsUC5wb3NpdGlvbiAhPT0gbS5leGNlbC5yYW5nKSB7 CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB6aWVsUC5wb3NpdGlvbiA9IG0uZXhjZWwucmFu ZzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhZW5nZVVlYmVybm9tbWVuKys7CiAgICAg ICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg ICAgICAgT2JqZWN0LmtleXMobS5leGNlbC5laW50cmFlZ2UpLmZvckVhY2goZnVuY3Rpb24oZGF0 dW0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHNyYyA9IG0uZXhjZWwuZWludHJhZWdl W2RhdHVtXTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHppZWwgPSBjb2RlTWFwW3NyY107 CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghemllbCkgeyBpZ25vcmllcnRDb2RlcysrOyBy ZXR1cm47IH0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFuZXVlUGxhbnVuZy5laW50cmFl Z2VbZGF0dW1dKSBuZXVlUGxhbnVuZy5laW50cmFlZ2VbZGF0dW1dID0ge307CiAgICAgICAgICAg ICAgICAgICAgICAgIG5ldWVQbGFudW5nLmVpbnRyYWVnZVtkYXR1bV1bcGlkXSA9IHppZWw7CiAg ICAgICAgICAgICAgICAgICAgICAgIGVpbnRyYWVnZUdlc2FtdCsrOwogICAgICAgICAgICAgICAg ICAgIH0pOwogICAgICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKG0uZXhjZWwua29tbWVudGFy ZSB8fCB7fSkuZm9yRWFjaChmdW5jdGlvbihkYXR1bSkgewogICAgICAgICAgICAgICAgICAgICAg ICB2YXIgY2xpc3RlID0gbS5leGNlbC5rb21tZW50YXJlW2RhdHVtXSB8fCBbXTsKICAgICAgICAg ICAgICAgICAgICAgICAgaWYgKCFjbGlzdGUubGVuZ3RoKSByZXR1cm47CiAgICAgICAgICAgICAg ICAgICAgICAgIGlmICghbmV1ZVBsYW51bmcua29tbWVudGFyZVtkYXR1bV0pIG5ldWVQbGFudW5n LmtvbW1lbnRhcmVbZGF0dW1dID0ge307CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBiZXN0 YW5kID0gYmVzdGVoZW5kZUtvbW1lbnRhckxpc3RlKGRhdHVtLCBwaWQpOwogICAgICAgICAgICAg ICAgICAgICAgICB2YXIgaWR4ID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgY2xpc3RlLmZv ckVhY2goZnVuY3Rpb24oa2MpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0eHQg PSAoa2MudGV4dCB8fCAnJykudHJpbSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYg KCF0eHQpIHJldHVybjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIERlZHVwOiBnbGVp Y2hlciBUZXh0IGJlcmVpdHMgaW0gVmVybGF1ZiAtPiBuaWNodAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgLy8gZXJuZXV0IGFuaGFlbmdlbiAoUmUtSW1wb3J0IGR1cGxpemllcnQgc29uc3Qp LgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHNjaG9uRGEgPSBiZXN0YW5kLnNvbWUo ZnVuY3Rpb24oaykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoay50 ZXh0IHx8ICcnKS50cmltKCkgPT09IHR4dDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0p OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNjaG9uRGEpIHsgZGVkdXBVZWJlcnNw cnVuZ2VuKys7IHJldHVybjsgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVzdGFuZC5w dXNoKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogICAgICAgICAgICdrX2lt cF8nICsgRGF0ZS5ub3coKSArICdfJyArIChpZHgrKykgKyAnXycgKyBNYXRoLmZsb29yKE1hdGgu cmFuZG9tKCkgKiA5OTk5OSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDog ICAgICAgICB0eHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gS0VJTiBaZWl0 c3RlbXBlbDogRXhjZWwtTm90aXplbiBsaWVmZXJuIGtlaW5lbgogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIC8vIHZlcmxhZXNzbGljaGVuIFplaXRwdW5rdC4gVmVyZmFzc2VyID0gT3Jp Z2luYWwtCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQXV0b3IgYXVzIGRlciBO b3RpeiAobmljaHQgZGVyIEltcG9ydGV1cikuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZ2VhZW5kZXJ0QW06ICBudWxsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdl YWVuZGVydFZvbjogKGtjLmF1dG9yIHx8ICcnKS50cmltKCkgfHwgbnVsbAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBrb21tZW50YXJl R2VzYW10Kys7CiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAg ICAgICBpZiAoYmVzdGFuZC5sZW5ndGgpIG5ldWVQbGFudW5nLmtvbW1lbnRhcmVbZGF0dW1dW3Bp ZF0gPSBiZXN0YW5kOwogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgfSk7 CiAgICAgICAgICAgICAgICB2YXIgcmFuZ0luZm8gPSByYWVuZ2VVZWJlcm5vbW1lbiA/ICcsICcg KyByYWVuZ2VVZWJlcm5vbW1lbiArICcgUmFlbmdlIGFrdHVhbGlzaWVydCcgOiAnJzsKICAgICAg ICAgICAgICAgIHZhciB3aWVkZXJJbmZvID0gd2llZGVyaGVyZ2VzdGVsbHQgPyAnLCAnICsgd2ll ZGVyaGVyZ2VzdGVsbHQgKyAnIFBlcnNvbmVuIGF1cyBQYXBpZXJrb3JiIHdpZWRlcmhlcmdlc3Rl bGx0JyA6ICcnOwogICAgICAgICAgICAgICAgdmFyIGRlZHVwSW5mbyA9IGRlZHVwVWViZXJzcHJ1 bmdlbiA/ICcsICcgKyBkZWR1cFVlYmVyc3BydW5nZW4gKyAnIEtvbW1lbnRhci1EdXBsaWthdGUg w7xiZXJzcHJ1bmdlbicgOiAnJzsKICAgICAgICAgICAgICAgIGltcFByb2dyZXNzVXBkYXRlKCdE YXRlbiB3ZXJkZW4gdHJhbnNmb3JtaWVydCDigKYnLCA2MCwKICAgICAgICAgICAgICAgICAgICBl aW50cmFlZ2VHZXNhbXQgKyAnIEVpbnRyw6RnZSArICcgKyBrb21tZW50YXJlR2VzYW10ICsgJyBL b21tZW50YXJlIGdlc2FtbWVsdCcgKyByYW5nSW5mbyArIHdpZWRlckluZm8gKyBkZWR1cEluZm8p OwogICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgaW1wU2NocmVpYmVuUGhh c2UzKG5ldWVQbGFudW5nLCBiYWNrdXBOYW1lLCBlaW50cmFlZ2VHZXNhbXQsIGtvbW1lbnRhcmVH ZXNhbXQpOyB9LCAzNTApOwogICAgICAgICAgICB9LCAzMDApOwogICAgICAgIH0sIDI1MCk7CiAg ICB9CgogICAgZnVuY3Rpb24gaW1wU2NocmVpYmVuUGhhc2UzKG5ldWVQbGFudW5nLCBiYWNrdXBO YW1lLCBlaW50cmFlZ2VHZXNhbXQsIGtvbW1lbnRhcmVHZXNhbXQpIHsKICAgICAgICAvLyA9PT0g UGhhc2UgMzogU2NocmVpYmVuID09PQogICAgICAgIGltcFByb2dyZXNzVXBkYXRlKCdQbGFudW5n IHdpcmQgZ2VzY2hyaWViZW4g4oCmJywgNzAsICdQVVQgL2FwaS9wbGFudW5nJyk7CiAgICAgICAg c2V0VGltZW91dChmdW5jdGlvbigpIHsKICAgICAgICAgICAgdmFyIGhlYWRlcnMgPSB7ICdDb250 ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicgfTsKICAgICAgICAgICAgLy8gT3B0aW1pc3Rp c2NoZSBTcGVycmU6IG51ciBzY2hyZWliZW4sIHdlbm4gcGxhbnVuZy5qc29uIHNlaXQgZGVtCiAg ICAgICAgICAgIC8vIEdFVCB1bm1pdHRlbGJhciB2b3IgZGVtIFRyYW5zZm9ybSB1bnZlcmFlbmRl cnQgaXN0LgogICAgICAgICAgICBpZiAoaW1wTGV0enRlVmVyc2lvbikgaGVhZGVyc1snSWYtUGxh bnVuZy1WZXJzaW9uJ10gPSBpbXBMZXR6dGVWZXJzaW9uOwogICAgICAgICAgICBmZXRjaCgnL2Fw aS9wbGFudW5nJywgewogICAgICAgICAgICAgICAgbWV0aG9kOiAnUFVUJywKICAgICAgICAgICAg ICAgIGhlYWRlcnM6IGhlYWRlcnMsCiAgICAgICAgICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lm eShuZXVlUGxhbnVuZykKICAgICAgICAgICAgfSkudGhlbihmdW5jdGlvbihyKSB7CiAgICAgICAg ICAgICAgICBpZiAoci5zdGF0dXMgPT09IDQwOSkgewogICAgICAgICAgICAgICAgICAgIC8vIEpl bWFuZCBhbmRlcmVzIGhhdCB3YWVocmVuZCBkZXMgSW1wb3J0cyBnZXNjaHJpZWJlbiDigJQgZGVy CiAgICAgICAgICAgICAgICAgICAgLy8gU2VydmVyIGhhdCBOSUNIVFMgdWViZXJzY2hyaWViZW4u IFdpciBicmVjaGVuIHNhdWJlciBhYiwKICAgICAgICAgICAgICAgICAgICAvLyBvaG5lIGRlc3Nl biBBZW5kZXJ1bmcgenUgdmVybGllcmVuLgogICAgICAgICAgICAgICAgICAgIHJldHVybiByLmpz b24oKS50aGVuKGZ1bmN0aW9uKGJvZHkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cg bmV3IEVycm9yKCdLb25mbGlrdDogJyArIChib2R5Lm1lbGR1bmcgfHwgJ0RpZSBQbGFudW5nIHd1 cmRlIHfDpGhyZW5kIGRlcyBJbXBvcnRzIHZvbiBlaW5lciBhbmRlcmVuIFBlcnNvbiBnZcOkbmRl cnQuJykgKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1xuXG5FcyB3dXJkZSBOSUNIVFMg w7xiZXJzY2hyaWViZW4uIEJpdHRlIGRpZSBTZWl0ZSBuZXUgbGFkZW4gdW5kIGRlbiBJbXBvcnQg ZXJuZXV0IHN0YXJ0ZW4uJyk7CiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAg ICB9CiAgICAgICAgICAgICAgICBpZiAoIXIub2spIHJldHVybiByLmpzb24oKS50aGVuKGZ1bmN0 aW9uKGJvZHkpIHsgdGhyb3cgbmV3IEVycm9yKGJvZHkuZmVobGVyIHx8ICgnSFRUUCAnICsgci5z dGF0dXMpKTsgfSk7CiAgICAgICAgICAgICAgICBpbXBQcm9ncmVzc1VwZGF0ZSgnUGxhbnVuZyB3 aXJkIGdlc2NocmllYmVuIOKApicsIDkwLCAnQW50d29ydCB2b20gU2VydmVyIGVyaGFsdGVuJyk7 CiAgICAgICAgICAgICAgICBaLnBsYW51bmcgPSBuZXVlUGxhbnVuZzsKICAgICAgICAgICAgICAg IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgaW1wUHJvZ3Jlc3NF cmZvbGcoZWludHJhZWdlR2VzYW10LCBrb21tZW50YXJlR2VzYW10LCBiYWNrdXBOYW1lKTsKICAg ICAgICAgICAgICAgIH0sIDQwMCk7CiAgICAgICAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uKGUpIHsK ICAgICAgICAgICAgICAgIGltcFByb2dyZXNzRmVobGVyKCdTY2hyZWliZW4gZmVobGdlc2NobGFn ZW46ICcgKyBlLm1lc3NhZ2UgKyAnXG5cbkRhcyBCYWNrdXAgIicgKyAoYmFja3VwTmFtZSB8fCAn JykgKyAnIiBlbnRow6RsdCBkZW4gU3RhbmQgdm9yIGRlbSBJbXBvcnQuJyk7CiAgICAgICAgICAg IH0pOwogICAgICAgIH0sIDMwMCk7CiAgICB9CgogICAgLy8gTWFwcGluZy1Nb2RhbDogendlaSBU YWJzIChQZXJzb25lbiwgQ29kZXMpLiBEZXIgVXNlciBrYW5uIG9mZmVuZQogICAgLy8gS29uZmxp a3RlIG1hbnVlbGwgYXVmbG9lc2VuLiBBZW5kZXJ1bmdlbiB3ZXJkZW4gZGlyZWt0IGluIGltcFN0 YXRlCiAgICAvLyBwZXJzaXN0aWVydCDigJQgZGFzIFN0YXR1cy1QYW5lbCB3aXJkIGJlaW0gU2No bGllc3NlbiBuZXUgZ2VyZW5kZXJ0LgogICAgZnVuY3Rpb24gaW1wTWFwcGluZ01vZGFsKCkgewog ICAgICAgIGlmICghaW1wU3RhdGUpIHJldHVybjsKICAgICAgICAvLyBBa3RpdmUgQ29kZXMgKyBE ZWZhdWx0LUF1c3dhaGwuIGFrdGl2ZUNvZGVzIGlzdCBsZXQtYWVobmxpY2g6CiAgICAgICAgLy8g d2lyZCBuYWNoIGVyZm9sZ3JlaWNoZXIgTmV1YW5sYWdlIChzaWVoZSBuZXVlckNvZGVGb3JtWmVp Z2VuKQogICAgICAgIC8vIG5ldSB6dWdld2llc2VuLCBkYW1pdCBkaWUgUmUtUmVuZGVyLVNjaGxl aWZlIGRlbiBmcmlzY2hlbiBDb2RlCiAgICAgICAgLy8gYmVydWVja3NpY2h0aWd0LgogICAgICAg IHZhciBha3RpdmVDb2RlcyA9IChaLmFkbWluLnNjaGljaHRjb2RlcyB8fCBbXSkuZmlsdGVyKGlz dENvZGVBa3RpdikKICAgICAgICAgICAgLnNsaWNlKCkuc29ydChmdW5jdGlvbihhLCBiKSB7IHJl dHVybiAoYS5jb2RlIHx8ICcnKS5sb2NhbGVDb21wYXJlKGIuY29kZSB8fCAnJywgJ2RlJyk7IH0p OwogICAgICAgIGZ1bmN0aW9uIGNvZGVPcHRzKHppZWwpIHsKICAgICAgICAgICAgcmV0dXJuICc8 b3B0aW9uIHZhbHVlPSJfX25ld19fIj7inpUgQWxzIG5ldWVuIENvZGUgYW5sZWdlbiDigKY8L29w dGlvbj4nICsKICAgICAgICAgICAgICAgICc8b3B0aW9uIHZhbHVlPSIiPuKAlCBpZ25vcmllcmVu IOKAlDwvb3B0aW9uPicgKwogICAgICAgICAgICAgICAgYWt0aXZlQ29kZXMubWFwKGZ1bmN0aW9u KHNjKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHNlbCA9IHppZWwgPT09IHNjLmNvZGUgPyAn IHNlbGVjdGVkJyA6ICcnOwogICAgICAgICAgICAgICAgICAgIHJldHVybiAnPG9wdGlvbiB2YWx1 ZT0iJyArIGVzY2FwZUF0dHIoc2MuY29kZSkgKyAnIicgKyBzZWwgKyAnPicgKyBlc2NhcGVIVE1M KHNjLmNvZGUpICsgJyDigJQgJyArIGVzY2FwZUhUTUwoc2MuYmV6ZWljaG51bmcgfHwgJycpICsg Jzwvb3B0aW9uPic7CiAgICAgICAgICAgICAgICB9KS5qb2luKCcnKTsKICAgICAgICB9CgogICAg ICAgIC8vIFN0YXR1cy1JY29uLU1hcCBwcm8gTWFwcGluZy1aZWlsZS4gRmFyYmVuIGtvbW1lbiBp bmxpbmUsIGRhbWl0IGRhcwogICAgICAgIC8vIENTUyAoLmltcC1tYXBwaW5nLXN0YXR1cykgbnVy IExheW91dCAoQnJlaXRlL0JvbGQpIHRyYWVndCDigJQgYW5hbG9nCiAgICAgICAgLy8genVtIGJl c3RlaGVuZGVuIFN0aWwgZGVyIGltcC1tYXBwaW5nLXplaWxlLUhpbnRlcmdydWVuZGUuCiAgICAg ICAgLy8gQnVja2V0czoKICAgICAgICAvLyAgIG9rL2FsaWFzL21hbnVlbGwgICAgIC0+IOKckyBn cnVlbgogICAgICAgIC8vICAgbmV1ICAgICAgICAgICAgICAgICAgLT4g4p6VIGJsYXUKICAgICAg ICAvLyAgIHBhcGllcmtvcmIgICAgICAgICAgIC0+IOKGuyBvcmFuZ2UgKEtvbmZsaWt0LURlZmF1 bHQpCiAgICAgICAgLy8gICBtZWhyZGV1dGlnL3VuYmVrYW5udCAtPiA/IHdhcm51bmcKICAgICAg ICAvLyAgIGlnbm9yaWVydC9pZ25vcmUgICAgIC0+IOKclyBncmF1CiAgICAgICAgZnVuY3Rpb24g c3RhdHVzSWNvbkh0bWwobSkgewogICAgICAgICAgICB2YXIgc3QgPSBtICYmIG0uc3RhdHVzOwog ICAgICAgICAgICB2YXIgaWMgPSAn4pyXJywgYyA9ICd2YXIoLS10ZXh0LW11dGVkKSc7CiAgICAg ICAgICAgIGlmIChzdCA9PT0gJ29rJyB8fCBzdCA9PT0gJ2FsaWFzJyB8fCBzdCA9PT0gJ21hbnVl bGwnKSB7IGljID0gJ+Kckyc7IGMgPSAndmFyKC0tZmFyYmUtZXJmb2xnKSc7IH0KICAgICAgICAg ICAgZWxzZSBpZiAoc3QgPT09ICduZXUnKSB7IGljID0gJ+KelSc7IGMgPSAndmFyKC0tZmFyYmUt cHJpbWFlciknOyB9CiAgICAgICAgICAgIGVsc2UgaWYgKHN0ID09PSAncGFwaWVya29yYicpIHsg aWMgPSAn4oa7JzsgYyA9ICcjY2E2ZjFlJzsgfQogICAgICAgICAgICBlbHNlIGlmIChzdCA9PT0g J21laHJkZXV0aWcnIHx8IHN0ID09PSAndW5iZWthbm50JykgeyBpYyA9ICc/JzsgYyA9ICd2YXIo LS1mYXJiZS13YXJudW5nKSc7IH0KICAgICAgICAgICAgcmV0dXJuICc8c3BhbiBjbGFzcz0iaW1w LW1hcHBpbmctc3RhdHVzIiBzdHlsZT0iY29sb3I6JyArIGMgKyAnIj4nICsgaWMgKyAnPC9zcGFu Pic7CiAgICAgICAgfQoKICAgICAgICAvLyBMaXZlLUFnZ3JlZ2F0LVplaWxlIGltIE1vZGFsLUhl YWRlci4gWmFlaGx0IGJlaWRlIE1hdGNoLUxpc3RlbgogICAgICAgIC8vIChQZXJzb25lbiArIENv ZGVzKSB6dXNhbW1lbiB1bmQgcmVuZGVydCBudXIgZGllIG5pY2h0LWxlZXJlbiBCdWNrZXRzLgog ICAgICAgIGZ1bmN0aW9uIHN0YXR1c1phZWhsZXJVcGRhdGVuKCkgewogICAgICAgICAgICBpZiAo IWltcFN0YXRlKSByZXR1cm47CiAgICAgICAgICAgIHZhciB6ID0geyBvazogMCwgbmV1OiAwLCBw azogMCwgZnJhZzogMCwgaWc6IDAgfTsKICAgICAgICAgICAgZnVuY3Rpb24gYnVja2V0RWluc29y dGllcmVuKHN0KSB7CiAgICAgICAgICAgICAgICBpZiAoc3QgPT09ICdvaycgfHwgc3QgPT09ICdh bGlhcycgfHwgc3QgPT09ICdtYW51ZWxsJykgei5vaysrOwogICAgICAgICAgICAgICAgZWxzZSBp ZiAoc3QgPT09ICduZXUnKSB6Lm5ldSsrOwogICAgICAgICAgICAgICAgZWxzZSBpZiAoc3QgPT09 ICdwYXBpZXJrb3JiJykgei5waysrOwogICAgICAgICAgICAgICAgZWxzZSBpZiAoc3QgPT09ICdt ZWhyZGV1dGlnJyB8fCBzdCA9PT0gJ3VuYmVrYW5udCcpIHouZnJhZysrOwogICAgICAgICAgICAg ICAgZWxzZSB6LmlnKys7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaW1wU3RhdGUucGVyc29u ZW5NYXRjaGVzLmZvckVhY2goZnVuY3Rpb24obSkgeyBidWNrZXRFaW5zb3J0aWVyZW4obS5zdGF0 dXMpOyB9KTsKICAgICAgICAgICAgaW1wU3RhdGUuY29kZU1hdGNoZXMuZm9yRWFjaChmdW5jdGlv bihtKSB7IGJ1Y2tldEVpbnNvcnRpZXJlbihtLnN0YXR1cyk7IH0pOwogICAgICAgICAgICB2YXIg dGVpbGUgPSBbXTsKICAgICAgICAgICAgaWYgKHoub2spICAgdGVpbGUucHVzaCgnPHNwYW4gc3R5 bGU9ImNvbG9yOnZhcigtLWZhcmJlLWVyZm9sZykiPuKckyAnICAgKyB6Lm9rICsgJzwvc3Bhbj4n KTsKICAgICAgICAgICAgaWYgKHoubmV1KSAgdGVpbGUucHVzaCgnPHNwYW4gc3R5bGU9ImNvbG9y OnZhcigtLWZhcmJlLXByaW1hZXIpIj7inpUgJyArIHoubmV1ICsgJzwvc3Bhbj4nKTsKICAgICAg ICAgICAgaWYgKHoucGspICAgdGVpbGUucHVzaCgnPHNwYW4gc3R5bGU9ImNvbG9yOiNjYTZmMWUi PuKGuyAnICAgICAgICAgICAgICAgICsgei5wayArICc8L3NwYW4+Jyk7CiAgICAgICAgICAgIGlm ICh6LmZyYWcpIHRlaWxlLnB1c2goJzxzcGFuIHN0eWxlPSJjb2xvcjp2YXIoLS1mYXJiZS13YXJu dW5nKSI+PyAnICAgKyB6LmZyYWcgKyAnPC9zcGFuPicpOwogICAgICAgICAgICBpZiAoei5pZykg ICB0ZWlsZS5wdXNoKCc8c3BhbiBzdHlsZT0iY29sb3I6dmFyKC0tdGV4dC1tdXRlZCkiPuKclyAn ICAgICAgKyB6LmlnICsgJzwvc3Bhbj4nKTsKICAgICAgICAgICAgdmFyIGFnID0gZG9jdW1lbnQu Z2V0RWxlbWVudEJ5SWQoJ2ltcC1zdGF0dXMtYWdncmVnYXQnKTsKICAgICAgICAgICAgaWYgKGFn KSBhZy5pbm5lckhUTUwgPSB0ZWlsZS5qb2luKCcgICcpOwogICAgICAgIH0KCiAgICAgICAgLy8g UGVyc29uZW4tS2FuZGlkYXRlbiBmdWVyIE1laHJkZXV0aWctL1VuYmVrYW5udC0vUGFwaWVya29y Yi1BdXN3YWhsLgogICAgICAgIC8vIEtvbnZlbnRpb246IG5pY2h0cyB3ZWdibGVuZGVuIOKAlCBk ZXIgQWRtaW4gc29sbCBkaWUgRGF0ZW4gbGllYmVyCiAgICAgICAgLy8gc2ljaHRiYXIgaGFiZW4g dW5kIGVudHNjaGVpZGVuLCBzdGF0dCBzaWUgenUgdmVybGllcmVuLiBQYXBpZXJrb3JiLQogICAg ICAgIC8vIFBlcnNvbmVuIGVyc2NoZWluZW4gc29ydGllcnQgYW5zIEVuZGUgdW5kIHdlcmRlbiBt aXQgYOKGuyAuLi4KICAgICAgICAvLyAoUGFwaWVya29yYiDigJQgd2lyZCB3aWVkZXJoZXJnZXN0 ZWxsdClgIG1hcmtpZXJ0LiBJaHIgPG9wdGlvbj4tV2VydAogICAgICAgIC8vIGlzdCBgcmVzdG9y ZTo8aWQ+YCwgZGFtaXQgZGVyIFNhdmUtUGZhZCBzaWUgYXV0b21hdGlzY2ggd2llZGVyCiAgICAg ICAgLy8gYWt0aXYgc2NoYWx0ZXQg4oCUIGVpbmUgdmVyc2VoZW50bGljaGUgWnVvcmRudW5nIGF1 ZiBlaW5lcgogICAgICAgIC8vIGF1c3JhbmdpZXJ0ZW4gUGVyc29uIG9obmUgV2llZGVyaGVyc3Rl bGx1bmcgaXN0IHNvIG5pY2h0IG1vZWdsaWNoLgogICAgICAgIHZhciBhbGxlQmVzdGFuZCA9ICha LnBsYW51bmcucGVyc29uZW4gfHwgW10pLnNsaWNlKCkKICAgICAgICAgICAgLnNvcnQoZnVuY3Rp b24oYSwgYikgewogICAgICAgICAgICAgICAgdmFyIGFQSyA9ICEhYS5nZWxvZXNjaHRBbSwgYlBL ID0gISFiLmdlbG9lc2NodEFtOwogICAgICAgICAgICAgICAgaWYgKGFQSyAhPT0gYlBLKSByZXR1 cm4gYVBLID8gMSA6IC0xOwogICAgICAgICAgICAgICAgcmV0dXJuIChhLm5hbWUgfHwgJycpLmxv Y2FsZUNvbXBhcmUoYi5uYW1lIHx8ICcnLCAnZGUnKTsKICAgICAgICAgICAgfSk7CiAgICAgICAg ZnVuY3Rpb24gcGVyc29uT3B0cyhtKSB7CiAgICAgICAgICAgIC8vIERyb3Bkb3duLVdlcnRlOgog ICAgICAgICAgICAvLyAgICJuZXciICAgICAgICAgICAgIC0+IFBlcnNvbiBuZXUgYW5sZWdlbiAo RXhjZWwtRGF0ZW4pCiAgICAgICAgICAgIC8vICAgIiIgICAgICAgICAgICAgICAgLT4gaWdub3Jp ZXJlbgogICAgICAgICAgICAvLyAgICI8aWQ+IiAgICAgICAgICAgIC0+IGFrdGl2ZSBCZXN0YW5k cy1QZXJzb24genVvcmRuZW4KICAgICAgICAgICAgLy8gICAicmVzdG9yZTo8aWQ+IiAgICAtPiBQ YXBpZXJrb3JiLVBlcnNvbiB3aWVkZXJoZXJzdGVsbGVuICsgenVvcmRuZW4KICAgICAgICAgICAg dmFyIGFrdGl2ZVZhbHVlOwogICAgICAgICAgICBpZiAobS5uZXVBbmxlZ2VuKSBha3RpdmVWYWx1 ZSA9ICduZXcnOwogICAgICAgICAgICBlbHNlIGlmIChtLnppZWxJZCAhPSBudWxsKSBha3RpdmVW YWx1ZSA9IG0ud2llZGVyaGVyc3RlbGxlbiA/ICdyZXN0b3JlOicgKyBtLnppZWxJZCA6IFN0cmlu ZyhtLnppZWxJZCk7CiAgICAgICAgICAgIGVsc2UgYWt0aXZlVmFsdWUgPSAnJzsKICAgICAgICAg ICAgdmFyIG9wdHNLb3BmID0gJzxvcHRpb24gdmFsdWU9Im5ldyInICsgKGFrdGl2ZVZhbHVlID09 PSAnbmV3JyA/ICcgc2VsZWN0ZWQnIDogJycpICsgJz7inpUgTmV1IGFubGVnZW4g4oCUIG1pdCBF eGNlbC1EYXRlbiAoTmFjaG5hbWUsIE9FLCBHcnVwcGUsIFRlbGVmb24sIFJhbmcpPC9vcHRpb24+ JyArCiAgICAgICAgICAgICAgICAnPG9wdGlvbiB2YWx1ZT0iIicgKyAoYWt0aXZlVmFsdWUgPT09 ICcnID8gJyBzZWxlY3RlZCcgOiAnJykgKyAnPuKAlCBpZ25vcmllcmVuIOKAlDwvb3B0aW9uPic7 CiAgICAgICAgICAgIHJldHVybiBvcHRzS29wZiArCiAgICAgICAgICAgICAgICBhbGxlQmVzdGFu ZC5tYXAoZnVuY3Rpb24ocCkgewogICAgICAgICAgICAgICAgICAgIHZhciBvcHRWYWx1ZSwgbGFi ZWw7CiAgICAgICAgICAgICAgICAgICAgaWYgKHAuZ2Vsb2VzY2h0QW0pIHsKICAgICAgICAgICAg ICAgICAgICAgICAgb3B0VmFsdWUgPSAncmVzdG9yZTonICsgcC5pZDsKICAgICAgICAgICAgICAg ICAgICAgICAgbGFiZWwgPSAn4oa7ICcgKyAoKHAudm9ybmFtZSB8fCAnJykgKyAnICcgKyAocC5u YW1lIHx8ICcnKSkudHJpbSgpICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnIMK3 ICcgKyAocC5vZSB8fCAnPycpICsgJyDCtyAnICsgKHAuZ3J1cHBlIHx8ICc/JykgKwogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICcgKFBhcGllcmtvcmIg4oCUIHdpcmQgd2llZGVyaGVy Z2VzdGVsbHQpJzsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAg ICAgICAgICBvcHRWYWx1ZSA9IFN0cmluZyhwLmlkKTsKICAgICAgICAgICAgICAgICAgICAgICAg bGFiZWwgPSAoKHAudm9ybmFtZSB8fCAnJykgKyAnICcgKyAocC5uYW1lIHx8ICcnKSkudHJpbSgp ICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnIMK3ICcgKyAocC5vZSB8fCAnPycp ICsgJyDCtyAnICsgKHAuZ3J1cHBlIHx8ICc/Jyk7CiAgICAgICAgICAgICAgICAgICAgfQogICAg ICAgICAgICAgICAgICAgIHZhciBzZWwgPSBvcHRWYWx1ZSA9PT0gYWt0aXZlVmFsdWUgPyAnIHNl bGVjdGVkJyA6ICcnOwogICAgICAgICAgICAgICAgICAgIHJldHVybiAnPG9wdGlvbiB2YWx1ZT0i JyArIGVzY2FwZUF0dHIob3B0VmFsdWUpICsgJyInICsgc2VsICsgJz4nICsgZXNjYXBlSFRNTChs YWJlbCkgKyAnPC9vcHRpb24+JzsKICAgICAgICAgICAgICAgIH0pLmpvaW4oJycpOwogICAgICAg IH0KCiAgICAgICAgLy8gUGVyc29uZW4tUGFuZWwKICAgICAgICB2YXIgcGVyc0h0bWwgPSAnPHAg c3R5bGU9Im1hcmdpbjowIDAgOHB4IDA7Zm9udC1zaXplOjEycHg7Y29sb3I6dmFyKC0tdGV4dC1t dXRlZCkiPlBlcnNvbmVuIGF1cyBkZXIgRXhjZWwtRGF0ZWkgKCcgKyBpbXBTdGF0ZS5leGNlbFBl cnNvbmVuLmxlbmd0aCArICcpLiBHcsO8biA9IGVpbmRldXRpZyB6dWdlb3JkbmV0LCBibGF1ID0g d2lyZCBuZXUgYW5nZWxlZ3QsIG9yYW5nZSA9IFBhcGllcmtvcmItVHJlZmZlciAoRGVmYXVsdDog d2llZGVyaGVyc3RlbGxlbiksIGdlbGIgPSBtZWhyZGV1dGlnLjwvcD4nICsKICAgICAgICAgICAg JzxkaXYgY2xhc3M9ImltcC1tYXBwaW5nLWxpc3RlIj4nOwogICAgICAgIGltcFN0YXRlLnBlcnNv bmVuTWF0Y2hlcy5mb3JFYWNoKGZ1bmN0aW9uKG0sIGkpIHsKICAgICAgICAgICAgdmFyIHN0ID0g bS5zdGF0dXM7CiAgICAgICAgICAgIHZhciBjbHMgPSBzdCA9PT0gJ29rJyA/ICdpbXAtb2snCiAg ICAgICAgICAgICAgICAgICAgOiBzdCA9PT0gJ3BhcGllcmtvcmInID8gJ2ltcC1wYXBpZXJrb3Ji JwogICAgICAgICAgICAgICAgICAgIDogc3QgPT09ICduZXUnID8gJ2ltcC1uZXUnCiAgICAgICAg ICAgICAgICAgICAgOiAnaW1wLXdhcm4nOwogICAgICAgICAgICB2YXIgYW56YWhsRWludHIgPSBP YmplY3Qua2V5cyhtLmV4Y2VsLmVpbnRyYWVnZSkubGVuZ3RoOwogICAgICAgICAgICB2YXIgcXVl bGxlID0gJzxkaXY+PHNwYW4gY2xhc3M9ImltcC1tYXBwaW5nLXF1ZWxsZSI+JyArIGVzY2FwZUhU TUwobS5leGNlbC5uYWNobmFtZSkgKyAnPC9zcGFuPicgKwogICAgICAgICAgICAgICAgJzxzcGFu IGNsYXNzPSJpbXAtbWFwcGluZy1hbnphaGwiPsK3ICcgKyBhbnphaGxFaW50ciArICcgWmVsbGVu LCBPRSAnICsgZXNjYXBlSFRNTChtLmV4Y2VsLm9lIHx8ICc/JykgKyAnLCBHcnAgJyArIGVzY2Fw ZUhUTUwobS5leGNlbC5ncnVwcGUgfHwgJz8nKSArCiAgICAgICAgICAgICAgICAobS5leGNlbC5y YW5nICE9IG51bGwgPyAnLCBSYW5nICcgKyBtLmV4Y2VsLnJhbmcgOiAnJykgKyAnPC9zcGFuPjwv ZGl2Pic7CiAgICAgICAgICAgIHZhciB6aWVsOwogICAgICAgICAgICBpZiAoc3QgPT09ICdvaycp IHsKICAgICAgICAgICAgICAgIHppZWwgPSAnPGRpdiBzdHlsZT0iY29sb3I6dmFyKC0tZmFyYmUt ZXJmb2xnKTtmb250LXNpemU6MTJweCI+4pyTICcgKyBlc2NhcGVIVE1MKG0udHJlZmZlclswXS52 b3JuYW1lIHx8ICcnKSArICcgJyArIGVzY2FwZUhUTUwobS50cmVmZmVyWzBdLm5hbWUpICsgJyAo SUQgJyArIG0udHJlZmZlclswXS5pZCArICcpPC9kaXY+JzsKICAgICAgICAgICAgfSBlbHNlIGlm IChzdCA9PT0gJ3BhcGllcmtvcmInKSB7CiAgICAgICAgICAgICAgICAvLyBLb25mbGlrdC1IaW53 ZWlzICsgRHJvcGRvd24gbWl0IFdpZWRlcmhlcnN0ZWxsZW4tRGVmYXVsdC4KICAgICAgICAgICAg ICAgIC8vIERlciBVc2VyIGthbm4gaGllciBhdWNoIGVpbmUgYW5kZXJlIGFrdGl2ZSBQZXJzb24g d2FlaGxlbiBvZGVyCiAgICAgICAgICAgICAgICAvLyBpZ25vcmllcmVuIOKAlCBkZXIgRGVmYXVs dCAiV2llZGVyaGVyc3RlbGxlbiArIHp1b3JkbmVuIgogICAgICAgICAgICAgICAgLy8gc2ljaGVy dCBkaWUgRXhjZWwtRGF0ZW4gaW4gamVkZW0gRmFsbCBhYi4KICAgICAgICAgICAgICAgIC8vIHBp ZEtleS1XcmFwcGVyOiBtLnppZWxJZCBpc3QgbmFjaCBwYXJzZUludCgpIG9kZXIgQVBJLUFubGFn ZQogICAgICAgICAgICAgICAgLy8gZWluIE51bWJlciwgcC5pZCBpc3QgaW4gZGVyIFByYXhpcyBh dWNoIE51bWJlciDigJQgYWJlciB3ZW5uCiAgICAgICAgICAgICAgICAvLyBqZW1hbmQgbWFsIGVp bmUgcGxhbnVuZy5qc29uIG1pdCBTdHJpbmctSURzIGVkaXRpZXJ0LCBzY2hsYWVndAogICAgICAg ICAgICAgICAgLy8gZGVyID09PSBWZXJnbGVpY2ggZmVobC4gU3RyaW5nLXp1LVN0cmluZyBpc3Qg cm9idXN0ZXIuCiAgICAgICAgICAgICAgICB2YXIgcGtwID0gbS50cmVmZmVyLmZpbmQoZnVuY3Rp b24ocCkgeyByZXR1cm4gcGlkS2V5KHAuaWQpID09PSBwaWRLZXkobS56aWVsSWQpOyB9KTsKICAg ICAgICAgICAgICAgIHZhciBwa05hbWUgPSBwa3AgPyAoKChwa3Audm9ybmFtZSB8fCAnJykgKyAn ICcgKyAocGtwLm5hbWUgfHwgJycpKS50cmltKCkgfHwgKCdJRCAnICsgcGtwLmlkKSkgOiAnJzsK ICAgICAgICAgICAgICAgIHZhciBwa1NlaXQgPSAocGtwICYmIHBrcC5nZWxvZXNjaHRBbSkgPyBT dHJpbmcocGtwLmdlbG9lc2NodEFtKS5zdWJzdHIoMCwgMTApIDogJyc7CiAgICAgICAgICAgICAg ICB6aWVsID0gJzxkaXYgc3R5bGU9ImRpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47 Z2FwOjRweDttaW4td2lkdGg6MjgwcHgiPicgKwogICAgICAgICAgICAgICAgICAgICc8c2VsZWN0 IGNsYXNzPSJmb3JtLWlucHV0IGltcC1wZXJzLXNlbCIgZGF0YS1pPSInICsgaSArICciPicgKyBw ZXJzb25PcHRzKG0pICsgJzwvc2VsZWN0PicgKwogICAgICAgICAgICAgICAgICAgICc8ZGl2IGNs YXNzPSJpbXAtcGFwaWVya29yYi1oaW53ZWlzIj4nICsKICAgICAgICAgICAgICAgICAgICAgICAg J+KGuyBFaW5kZXV0aWdlciBUcmVmZmVyIGltIFBhcGllcmtvcmI6IDxzdHJvbmc+JyArIGVzY2Fw ZUhUTUwocGtOYW1lKSArICc8L3N0cm9uZz4nICsKICAgICAgICAgICAgICAgICAgICAgICAgKHBr U2VpdCA/ICcsIGdlbMO2c2NodCAnICsgZXNjYXBlSFRNTChwa1NlaXQpIDogJycpICsKICAgICAg ICAgICAgICAgICAgICAgICAgJy4gRGVmYXVsdDogUGVyc29uIHdpZWRlcmhlcnN0ZWxsZW4gdW5k IERhdGVuIMO8YmVybmVobWVuLicgKwogICAgICAgICAgICAgICAgICAgICc8L2Rpdj4nICsKICAg ICAgICAgICAgICAgICc8L2Rpdj4nOwogICAgICAgICAgICB9IGVsc2UgaWYgKHN0ID09PSAnbmV1 JykgewogICAgICAgICAgICAgICAgLy8gVGlwcGZlaGxlci1XYXJudW5nOiBhZWhubGljaGUgQmVz dGFuZHNuYW1lbiBwcm9taW5lbnQgemVpZ2VuLAogICAgICAgICAgICAgICAgLy8gZGFtaXQgZGVy IFVzZXIgbmljaHQgdmVyc2VoZW50bGljaCBlaW4gRHVwbGlrYXQgYW5sZWd0LiBEaWUKICAgICAg ICAgICAgICAgIC8vIEthbmRpZGF0ZW4gc3RlaGVuIG9obmVoaW4gaW0gRHJvcGRvd24g4oCUIGRl ciBIaW53ZWlzIG5lbm50IHNpZQogICAgICAgICAgICAgICAgLy8gYmVpbSBOYW1lbiwgZGFtaXQg bWFuIHNpZSBmaW5kZXQgdW5kIGJld3Vzc3QgenVvcmRuZW4ga2Fubi4KICAgICAgICAgICAgICAg IHZhciBhZWhubGljaEh0bWwgPSAnJzsKICAgICAgICAgICAgICAgIGlmIChtLmFlaG5saWNoICYm IG0uYWVobmxpY2gubGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIG5hbWVuID0gbS5h ZWhubGljaC5tYXAoZnVuY3Rpb24oYSkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g JzxzdHJvbmc+JyArIGVzY2FwZUhUTUwoKChhLm5hbWUgfHwgJycpKS50cmltKCkpICsgJzwvc3Ry b25nPic7CiAgICAgICAgICAgICAgICAgICAgfSkuam9pbignLCAnKTsKICAgICAgICAgICAgICAg ICAgICBhZWhubGljaEh0bWwgPSAnPGRpdiBjbGFzcz0iaW1wLWFlaG5saWNoLXdhcm51bmciIHN0 eWxlPSJmb250LXNpemU6MTFweDtjb2xvcjp2YXIoLS1mYXJiZS13YXJudW5nKTtib3JkZXI6MXB4 IHNvbGlkIHZhcigtLWZhcmJlLXdhcm51bmcpO2JvcmRlci1yYWRpdXM6NHB4O3BhZGRpbmc6NHB4 IDZweCI+JyArCiAgICAgICAgICAgICAgICAgICAgICAgICfimqAgw4RobmxpY2ggenUgYmVzdGVo ZW5kZXIgUGVyc29uOiAnICsgbmFtZW4gKyAnLiBGYWxscyBkYXMgZGllc2VsYmUgUGVyc29uIGlz dCAoei5CLiBUaXBwZmVobGVyKSwgYml0dGUgb2JlbiB6dW9yZG5lbiBzdGF0dCBuZXUgYW56dWxl Z2VuIOKAlCBzb25zdCBlbnRzdGVodCBlaW4gRHVwbGlrYXQuJyArCiAgICAgICAgICAgICAgICAg ICAgJzwvZGl2Pic7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB6aWVsID0gJzxk aXYgc3R5bGU9ImRpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47Z2FwOjRweDttaW4t d2lkdGg6MjgwcHgiPicgKwogICAgICAgICAgICAgICAgICAgICc8c2VsZWN0IGNsYXNzPSJmb3Jt LWlucHV0IGltcC1wZXJzLXNlbCIgZGF0YS1pPSInICsgaSArICciPicgKyBwZXJzb25PcHRzKG0p ICsgJzwvc2VsZWN0PicgKwogICAgICAgICAgICAgICAgICAgIGFlaG5saWNoSHRtbCArCiAgICAg ICAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9ImltcC1uZXUtaGlud2VpcyI+JyArCiAgICAgICAg ICAgICAgICAgICAgICAgICfinpUgTmljaHQgaW0gQmVzdGFuZC4gRGVmYXVsdDogPHN0cm9uZz5O ZXUgYW5sZWdlbjwvc3Ryb25nPiBtaXQgRXhjZWwtRGF0ZW4g4oCUIE5hY2hwZmxlZ2UgKFZvcm5h bWUsIEZ1bmt0aW9uLCDigKYpIGFuc2NobGllc3NlbmQgaW0gTmV1aW1wb3J0LUJsb2NrLicgKwog ICAgICAgICAgICAgICAgICAgICc8L2Rpdj4nICsKICAgICAgICAgICAgICAgICc8L2Rpdj4nOwog ICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgemllbCA9ICc8c2VsZWN0IGNsYXNz PSJmb3JtLWlucHV0IGltcC1wZXJzLXNlbCIgZGF0YS1pPSInICsgaSArICciPicgKyBwZXJzb25P cHRzKG0pICsgJzwvc2VsZWN0Pic7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcGVyc0h0bWwg Kz0gJzxkaXYgY2xhc3M9ImltcC1tYXBwaW5nLXplaWxlICcgKyBjbHMgKyAnIiBkYXRhLXBlcnMt aT0iJyArIGkgKyAnIj4nICsgc3RhdHVzSWNvbkh0bWwobSkgKyBxdWVsbGUgKyAnPHNwYW4gY2xh c3M9ImltcC1wZmVpbCI+4oaSPC9zcGFuPicgKyB6aWVsICsgJzwvZGl2Pic7CiAgICAgICAgfSk7 CiAgICAgICAgcGVyc0h0bWwgKz0gJzwvZGl2Pic7CgogICAgICAgIC8vIENvZGUtUGFuZWwKICAg ICAgICB2YXIgY29kZUh0bWwgPSAnPHAgc3R5bGU9Im1hcmdpbjowIDAgOHB4IDA7Zm9udC1zaXpl OjEycHg7Y29sb3I6dmFyKC0tdGV4dC1tdXRlZCkiPkFsbGUgU2NoaWNodGNvZGVzIGF1cyBkZXIg RXhjZWwtRGF0ZWkgKCcgKyBpbXBTdGF0ZS5jb2RlTWF0Y2hlcy5sZW5ndGggKyAnKS4gQWxpYXNl IHVuZCBiZWthbm50ZSBDb2RlcyBzaW5kIHZvcmJlbGVndCDigJQgb2ZmZW5lIENvZGVzIG3DvHNz ZW4genVnZW9yZG5ldCBvZGVyIGF1ZiDigJ5pZ25vcmllcmVuIiBnZXNldHp0IHdlcmRlbi48L3A+ JyArCiAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJpbXAtbWFwcGluZy1saXN0ZSI+JzsKICAgICAg ICBpbXBTdGF0ZS5jb2RlTWF0Y2hlcy5mb3JFYWNoKGZ1bmN0aW9uKG0sIGkpIHsKICAgICAgICAg ICAgdmFyIGNscyA9IG0uc3RhdHVzID09PSAnb2snIHx8IG0uc3RhdHVzID09PSAnYWxpYXMnID8g J2ltcC1vaycgOiBtLnN0YXR1cyA9PT0gJ2lnbm9yZScgPyAnJyA6ICdpbXAtd2Fybic7CiAgICAg ICAgICAgIHZhciBxdWVsbGUgPSAnPGRpdj48c3BhbiBjbGFzcz0iaW1wLW1hcHBpbmctcXVlbGxl Ij48Y29kZT4nICsgZXNjYXBlSFRNTChtLmNvZGUpICsgJzwvY29kZT48L3NwYW4+JyArCiAgICAg ICAgICAgICAgICAnPHNwYW4gY2xhc3M9ImltcC1tYXBwaW5nLWFuemFobCI+wrcgJyArIG0uYW56 YWhsICsgJ8OXIGluIGRlciBEYXRlaTwvc3Bhbj4nICsKICAgICAgICAgICAgICAgICc8ZGl2IHN0 eWxlPSJmb250LXNpemU6MTFweDtjb2xvcjp2YXIoLS10ZXh0LW11dGVkKSI+JyArIGVzY2FwZUhU TUwobS5oaW53ZWlzIHx8ICcnKSArICc8L2Rpdj48L2Rpdj4nOwogICAgICAgICAgICB2YXIgemll bCA9ICc8c2VsZWN0IGNsYXNzPSJmb3JtLWlucHV0IGltcC1jb2RlLXNlbCIgZGF0YS1pPSInICsg aSArICciPicgKyBjb2RlT3B0cyhtLnppZWwpICsgJzwvc2VsZWN0Pic7CiAgICAgICAgICAgIGNv ZGVIdG1sICs9ICc8ZGl2IGNsYXNzPSJpbXAtbWFwcGluZy16ZWlsZSAnICsgY2xzICsgJyIgZGF0 YS1jb2RlLWk9IicgKyBpICsgJyI+JyArIHN0YXR1c0ljb25IdG1sKG0pICsgcXVlbGxlICsgJzxz cGFuIGNsYXNzPSJpbXAtcGZlaWwiPuKGkjwvc3Bhbj4nICsgemllbCArICc8L2Rpdj4nOwogICAg ICAgIH0pOwogICAgICAgIGNvZGVIdG1sICs9ICc8L2Rpdj4nOwoKICAgICAgICAvLyBBZ2dyZWdh dC1aZWlsZSAoTGl2ZS1aYWVobGVyKSB1ZWJlciBkZW4gVGFiLUJ1dHRvbnMuIFdpcmQgZHVyY2gK ICAgICAgICAvLyBzdGF0dXNaYWVobGVyVXBkYXRlbigpIG5hY2ggbW9kYWxaZWlnZW4gKyBuYWNo IGplZGVtIFNlbGVjdC1DaGFuZ2UKICAgICAgICAvLyBiZWZ1ZWxsdC4gQmxlaWJ0IGxlZXIgKENT UzogOmVtcHR5IHsgZGlzcGxheTpub25lIH0pIHdlbm4gYmVpZGUKICAgICAgICAvLyBNYXRjaC1M aXN0ZW4gbGVlciBzaW5kLgogICAgICAgIHZhciBrb2VycGVyID0gJzxkaXYgY2xhc3M9ImltcC1z dGF0dXMtYWdncmVnYXQiIGlkPSJpbXAtc3RhdHVzLWFnZ3JlZ2F0Ij48L2Rpdj4nICsKICAgICAg ICAnPGRpdiBjbGFzcz0ibW9kYWwtdGFicyIgc3R5bGU9ImRpc3BsYXk6ZmxleDtnYXA6OHB4O21h cmdpbi1ib3R0b206MTRweDtib3JkZXItYm90dG9tOjFweCBzb2xpZCB2YXIoLS1ib3JkZXItbGln aHQpIj4nICsKICAgICAgICAgICAgJzxidXR0b24gY2xhc3M9ImJ0biBidG4tc2VrIiBkYXRhLWlt cC10YWI9InBlcnNvbmVuIiBzdHlsZT0iYm9yZGVyLXJhZGl1czo0cHggNHB4IDAgMCI+UGVyc29u ZW48L2J1dHRvbj4nICsKICAgICAgICAgICAgJzxidXR0b24gY2xhc3M9ImJ0biBidG4tc2VrIiBk YXRhLWltcC10YWI9ImNvZGVzIiBzdHlsZT0iYm9yZGVyLXJhZGl1czo0cHggNHB4IDAgMCI+Q29k ZXM8L2J1dHRvbj4nICsKICAgICAgICAnPC9kaXY+JyArCiAgICAgICAgJzxkaXYgaWQ9ImltcC10 YWItcGVyc29uZW4iPicgKyBwZXJzSHRtbCArICc8L2Rpdj4nICsKICAgICAgICAnPGRpdiBpZD0i aW1wLXRhYi1jb2RlcyIgY2xhc3M9InZlcnN0ZWNrdCI+JyArIGNvZGVIdG1sICsgJzwvZGl2Pic7 CgogICAgICAgIC8vIFNuYXBzaG90IGRlciBNYXBwaW5nLVppZWx3ZXJ0ZSB2b3IgZGVtIE9lZmZu ZW4g4oCUIGRpZSBMaXZlLUJpbmRpbmdzCiAgICAgICAgLy8gKFouIH42ODUsIH43MTMpIG11dGll cmVuIGltcFN0YXRlIGRpcmVrdCBiZWkgamVkZXIgU2VsZWN0LUFlbmRlcnVuZy4KICAgICAgICAv LyBCZWkgIkFiYnJlY2hlbiIgcm9sbGVuIHdpciBhdWYgZGVuIFNuYXBzaG90IHp1cnVlY2suCiAg ICAgICAgdmFyIG1hcHBpbmdTbmFwc2hvdCA9IHsKICAgICAgICAgICAgcG06IEpTT04ucGFyc2Uo SlNPTi5zdHJpbmdpZnkoaW1wU3RhdGUucGVyc29uZW5NYXRjaGVzKSksCiAgICAgICAgICAgIGNt OiBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGltcFN0YXRlLmNvZGVNYXRjaGVzKSkKICAgICAg ICB9OwoKICAgICAgICB2YXIgZnVzcyA9ICc8YnV0dG9uIGNsYXNzPSJidG4iIGlkPSJpbXAtbW9k YWwtYWJicmVjaGVuIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OmF1dG8iPkFiYnJlY2hlbjwvYnV0dG9u PicgKwogICAgICAgICAgICAgICAgICAgJzxidXR0b24gY2xhc3M9ImJ0biBidG4tcHJpbWFlciIg aWQ9ImltcC1tb2RhbC11ZWJlcm5laG1lbiIgdGl0bGU9Ik9mZmVuZSBNYXBwaW5ncyBpZ25vcmll cmVuLCByZXN0bGljaGUgQXVzd2FobCB1ZWJlcm5laG1lbiI+w5xiZXJuZWhtZW48L2J1dHRvbj4n OwogICAgICAgIG1vZGFsWmVpZ2VuKCdFeGNlbC1JbXBvcnQ6IE1hcHBpbmcgcHLDvGZlbicsIGtv ZXJwZXIsIGZ1c3MsIG51bGwpOwoKICAgICAgICAvLyBEaXNjYXJkLUhvb2s6IGJlaSAiVmVyd2Vy ZmVuIiBpbSBEaXJ0eS1CZXN0YWV0aWd1bmdzLURpYWxvZwogICAgICAgIC8vICh1aV9kaWFsb2cu anM6MjMwKSB3aXJkIGRpZXNlciBDYWxsYmFjayBhdWZnZXJ1ZmVuLCBiZXZvciBkYXMgTW9kYWwK ICAgICAgICAvLyBmb3JjaWVydCBnZXNjaGxvc3NlbiB3aXJkLiBHcmVpZnQgYXVjaCB3ZW5uIGRl ciBVc2VyIHBlciBFU0MgLwogICAgICAgIC8vIE92ZXJsYXktS2xpY2sgc2NobGllc3N0IHVuZCBp bSBCZXN0YWV0aWd1bmdzLURpYWxvZyAiVmVyd2VyZmVuIiB3YWVobHQuCiAgICAgICAgWi5tb2Rh bE9uRGlzY2FyZCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICBpbXBTdGF0ZS5wZXJzb25lbk1h dGNoZXMgPSBtYXBwaW5nU25hcHNob3QucG07CiAgICAgICAgICAgIGltcFN0YXRlLmNvZGVNYXRj aGVzID0gbWFwcGluZ1NuYXBzaG90LmNtOwogICAgICAgICAgICBpbXBTdGF0dXNSZW5kZXJuKCk7 CiAgICAgICAgfTsKCiAgICAgICAgLy8gVGFiLVN3aXRjaAogICAgICAgIHZhciB0YWJzID0gZG9j dW1lbnQucXVlcnlTZWxlY3RvckFsbCgnW2RhdGEtaW1wLXRhYl0nKTsKICAgICAgICBmdW5jdGlv biB0YWJaZWlnZW4obmFtZSkgewogICAgICAgICAgICB0YWJzLmZvckVhY2goZnVuY3Rpb24odCkg eyB0LmNsYXNzTGlzdC50b2dnbGUoJ2FrdGl2JywgdC5nZXRBdHRyaWJ1dGUoJ2RhdGEtaW1wLXRh YicpID09PSBuYW1lKTsgfSk7CiAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdp bXAtdGFiLXBlcnNvbmVuJykuY2xhc3NMaXN0LnRvZ2dsZSgndmVyc3RlY2t0JywgbmFtZSAhPT0g J3BlcnNvbmVuJyk7CiAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbXAtdGFi LWNvZGVzJykuY2xhc3NMaXN0LnRvZ2dsZSgndmVyc3RlY2t0JywgbmFtZSAhPT0gJ2NvZGVzJyk7 CiAgICAgICAgfQogICAgICAgIHRhYnMuZm9yRWFjaChmdW5jdGlvbih0KSB7IHQuYWRkRXZlbnRM aXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbigpIHsgdGFiWmVpZ2VuKHQuZ2V0QXR0cmlidXRlKCdk YXRhLWltcC10YWInKSk7IH0pOyB9KTsKICAgICAgICB0YWJaZWlnZW4oJ3BlcnNvbmVuJyk7Cgog ICAgICAgIC8vIEluaXRpYWxlcyBSZW5kZXJuIGRlciBBZ2dyZWdhdC1aZWlsZS4KICAgICAgICBz dGF0dXNaYWVobGVyVXBkYXRlbigpOwoKICAgICAgICAvLyBMaXZlLUJpbmRpbmdzOiBBdXN3YWhs IGFlbmRlcm4gLT4gaW1wU3RhdGUtWmllbHdlcnRlIHVwZGF0ZW4uCiAgICAgICAgLy8gU3Blemlh bGZhZWxsZTogYG5ld2AgLT4gbmV1IGFubGVnZW4sIGByZXN0b3JlOjxpZD5gIC0+IFBhcGllcmtv cmItCiAgICAgICAgLy8gV2llZGVyaGVyc3RlbGxlbi4gQmVpZGUgRmxhZ3Mgd2VyZGVuIGluIFBo YXNlIDJhIChBbmxhZ2UgbmV1ZXIKICAgICAgICAvLyBQZXJzb25lbikgYnp3LiBQaGFzZSAyYiAo V2llZGVyaGVyc3RlbGx1bmcpIGF1c2dld2VydGV0LgogICAgICAgIGRvY3VtZW50LnF1ZXJ5U2Vs ZWN0b3JBbGwoJy5pbXAtcGVycy1zZWwnKS5mb3JFYWNoKGZ1bmN0aW9uKHNlbCkgewogICAgICAg ICAgICBzZWwuYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgZnVuY3Rpb24oKSB7CiAgICAgICAg ICAgICAgICB2YXIgaSA9IHBhcnNlSW50KHNlbC5nZXRBdHRyaWJ1dGUoJ2RhdGEtaScpLCAxMCk7 CiAgICAgICAgICAgICAgICB2YXIgdiA9IHNlbC52YWx1ZTsKICAgICAgICAgICAgICAgIHZhciBt ID0gaW1wU3RhdGUucGVyc29uZW5NYXRjaGVzW2ldOwogICAgICAgICAgICAgICAgaWYgKCF2KSB7 CiAgICAgICAgICAgICAgICAgICAgbS56aWVsSWQgPSBudWxsOwogICAgICAgICAgICAgICAgICAg IG0ud2llZGVyaGVyc3RlbGxlbiA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgIG0ubmV1QW5s ZWdlbiA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgIG0uc3RhdHVzID0gJ2lnbm9yaWVydCc7 CiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHYgPT09ICduZXcnKSB7CiAgICAgICAgICAgICAg ICAgICAgbS56aWVsSWQgPSBudWxsOwogICAgICAgICAgICAgICAgICAgIG0ud2llZGVyaGVyc3Rl bGxlbiA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgIG0ubmV1QW5sZWdlbiA9IHRydWU7CiAg ICAgICAgICAgICAgICAgICAgbS5zdGF0dXMgPSAnbmV1JzsKICAgICAgICAgICAgICAgIH0gZWxz ZSBpZiAodi5pbmRleE9mKCdyZXN0b3JlOicpID09PSAwKSB7CiAgICAgICAgICAgICAgICAgICAg bS56aWVsSWQgPSBwYXJzZUludCh2LnN1YnN0cig4KSwgMTApOwogICAgICAgICAgICAgICAgICAg IG0ud2llZGVyaGVyc3RlbGxlbiA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgbS5uZXVBbmxl Z2VuID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgbS5zdGF0dXMgPSAnbWFudWVsbCc7CiAg ICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIG0uemllbElkID0gcGFy c2VJbnQodiwgMTApOwogICAgICAgICAgICAgICAgICAgIG0ud2llZGVyaGVyc3RlbGxlbiA9IGZh bHNlOwogICAgICAgICAgICAgICAgICAgIG0ubmV1QW5sZWdlbiA9IGZhbHNlOwogICAgICAgICAg ICAgICAgICAgIG0uc3RhdHVzID0gJ21hbnVlbGwnOwogICAgICAgICAgICAgICAgfQogICAgICAg ICAgICAgICAgLy8gU3RhdHVzLUljb24gaW4gZGVyIFplaWxlICsgQWdncmVnYXQtSGVhZGVyIGFr dHVhbGlzaWVyZW4uCiAgICAgICAgICAgICAgICB2YXIgcGVyc1JvdyA9IGRvY3VtZW50LnF1ZXJ5 U2VsZWN0b3IoJ1tkYXRhLXBlcnMtaT0iJyArIGkgKyAnIl0nKTsKICAgICAgICAgICAgICAgIGlm IChwZXJzUm93KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGFsdCA9IHBlcnNSb3cucXVlcnlT ZWxlY3RvcignLmltcC1tYXBwaW5nLXN0YXR1cycpOwogICAgICAgICAgICAgICAgICAgIGlmIChh bHQpIGFsdC5vdXRlckhUTUwgPSBzdGF0dXNJY29uSHRtbChtKTsKICAgICAgICAgICAgICAgIH0K ICAgICAgICAgICAgICAgIHN0YXR1c1phZWhsZXJVcGRhdGVuKCk7CiAgICAgICAgICAgIH0pOwog ICAgICAgIH0pOwogICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5pbXAtY29kZS1z ZWwnKS5mb3JFYWNoKGZ1bmN0aW9uKHNlbCkgewogICAgICAgICAgICBzZWwuYWRkRXZlbnRMaXN0 ZW5lcignY2hhbmdlJywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgaSA9IHBhcnNl SW50KHNlbC5nZXRBdHRyaWJ1dGUoJ2RhdGEtaScpLCAxMCk7CiAgICAgICAgICAgICAgICB2YXIg diA9IHNlbC52YWx1ZTsKICAgICAgICAgICAgICAgIHZhciBtID0gaW1wU3RhdGUuY29kZU1hdGNo ZXNbaV07CiAgICAgICAgICAgICAgICAvLyBTcGV6aWFsZmFsbCAi4p6VIEFscyBuZXVlbiBDb2Rl IGFubGVnZW4iOiBTZWxlY3QtV2VydCBOSUNIVAogICAgICAgICAgICAgICAgLy8gY29tbWl0dGVu IChTbmFwc2hvdC1SZXN0b3JlIHZpYSBtLnppZWwpLCBzdGF0dGRlc3NlbiBJbmxpbmUtCiAgICAg ICAgICAgICAgICAvLyBGb3JtIHVudGVyIGRlciBaZWlsZSBhdWZrbGFwcGVuLiBNb2RhbC1TdGFj ayB2ZXJtZWlkZW4uCiAgICAgICAgICAgICAgICBpZiAodiA9PT0gJ19fbmV3X18nKSB7CiAgICAg ICAgICAgICAgICAgICAgc2VsLnZhbHVlID0gbS56aWVsIHx8ICcnOwogICAgICAgICAgICAgICAg ICAgIG5ldWVyQ29kZUZvcm1aZWlnZW4oaSwgc2VsKTsKICAgICAgICAgICAgICAgICAgICByZXR1 cm47CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBtLnppZWwgPSB2IHx8IG51bGw7 CiAgICAgICAgICAgICAgICBtLnN0YXR1cyA9IHYgPyAnbWFudWVsbCcgOiAnaWdub3JlJzsKICAg ICAgICAgICAgICAgIG0uaGlud2VpcyA9IHYgPyAnTWFudWVsbDog4oaSICcgKyB2IDogJ0lnbm9y aWVydCc7CiAgICAgICAgICAgICAgICAvLyBaZWlsZSB2aXN1ZWxsIHVtZsOkcmJlbiArIFN0YXR1 cy1JY29uICsgQWdncmVnYXQgdXBkYXRlbgogICAgICAgICAgICAgICAgdmFyIHJvdyA9IGRvY3Vt ZW50LnF1ZXJ5U2VsZWN0b3IoJ1tkYXRhLWNvZGUtaT0iJyArIGkgKyAnIl0nKTsKICAgICAgICAg ICAgICAgIGlmIChyb3cpIHsKICAgICAgICAgICAgICAgICAgICByb3cuY2xhc3NMaXN0LnJlbW92 ZSgnaW1wLW9rJywnaW1wLXdhcm4nKTsKICAgICAgICAgICAgICAgICAgICBpZiAodikgcm93LmNs YXNzTGlzdC5hZGQoJ2ltcC1vaycpOwogICAgICAgICAgICAgICAgICAgIHZhciBhbHQgPSByb3cu cXVlcnlTZWxlY3RvcignLmltcC1tYXBwaW5nLXN0YXR1cycpOwogICAgICAgICAgICAgICAgICAg IGlmIChhbHQpIGFsdC5vdXRlckhUTUwgPSBzdGF0dXNJY29uSHRtbChtKTsKICAgICAgICAgICAg ICAgIH0KICAgICAgICAgICAgICAgIHN0YXR1c1phZWhsZXJVcGRhdGVuKCk7CiAgICAgICAgICAg IH0pOwogICAgICAgIH0pOwoKICAgICAgICAvLyBJbmxpbmUtRm9ybSAiTmV1ZW4gU2NoaWNodGNv ZGUgYW5sZWdlbiI6IGtsYXBwdCB1bnRlciBkZXIgWmVpbGUKICAgICAgICAvLyBhdWYsIGtlaW4g TW9kYWwtU3RhY2sgKEhhdXB0LU1vZGFsIGJsZWlidCBvZmZlbikuIEZlbGRlciBhbmFsb2cKICAg ICAgICAvLyB6dSBhZG1pbi5qczoyNTgyLTI1OTMsIGFiZXIga29tcGFrdC4gQmVpIEVyZm9sZyB3 aXJkIGRlciBuZXVlCiAgICAgICAgLy8gQ29kZSBkaXJla3QgaW4gWi5hZG1pbi5zY2hpY2h0Y29k ZXMgZ2VzY2hyaWViZW4gKGFwaVB1dCAvYXBpL2FkbWluKSwKICAgICAgICAvLyBhbGxlIC5pbXAt Y29kZS1zZWwgd2VyZGVuIG5ldSBnZXJlbmRlcnQsIG0uemllbCB3aXJkIGF1ZiBkZW4KICAgICAg ICAvLyBuZXVlbiBDb2RlIGdlc2V0enQgKyBTdGF0dXMgLT4gbWFudWVsbC4KICAgICAgICBmdW5j dGlvbiBuZXVlckNvZGVGb3JtWmVpZ2VuKGksIGF1c2xvZXNlclNlbCkgewogICAgICAgICAgICAv LyBGYWxscyBiZXJlaXRzIGVpbmUgRm9ybSBvZmZlbiBpc3Q6IHNjaGxpZXNzZW4gKG1heC4gZWlu ZQogICAgICAgICAgICAvLyBJbmxpbmUtRm9ybSBnbGVpY2h6ZWl0aWcpLgogICAgICAgICAgICB2 YXIgYWx0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmltcC1uZXVlci1jb2RlLWZvcm0nKTsK ICAgICAgICAgICAgaWYgKGFsdCkgYWx0LnJlbW92ZSgpOwoKICAgICAgICAgICAgdmFyIHJvdyA9 IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ1tkYXRhLWNvZGUtaT0iJyArIGkgKyAnIl0nKTsKICAg ICAgICAgICAgaWYgKCFyb3cpIHJldHVybjsKICAgICAgICAgICAgdmFyIG0gPSBpbXBTdGF0ZS5j b2RlTWF0Y2hlc1tpXTsKICAgICAgICAgICAgdmFyIHF1ZWxsQ29kZSA9IG0uY29kZSB8fCAnJzsK CiAgICAgICAgICAgIHZhciBmb3JtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiAg ICAgICAgICAgIGZvcm0uY2xhc3NOYW1lID0gJ2ltcC1uZXVlci1jb2RlLWZvcm0nOwogICAgICAg ICAgICBmb3JtLnNldEF0dHJpYnV0ZSgnZGF0YS1jb2RlLWknLCBTdHJpbmcoaSkpOwogICAgICAg ICAgICBmb3JtLmlubmVySFRNTCA9CiAgICAgICAgICAgICAgICAnPGRpdiBzdHlsZT0iZGlzcGxh eTpmbGV4O2dhcDo4cHg7ZmxleC13cmFwOndyYXA7YWxpZ24taXRlbXM6ZmxleC1lbmQiPicgKwog ICAgICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJmb3JtLWdydXBwZSIgc3R5bGU9ImZsZXg6 MTttaW4td2lkdGg6MTEwcHgiPjxsYWJlbCBzdHlsZT0iZm9udC1zaXplOjExcHgiPkNvZGUgKFNj aGzDvHNzZWwpPC9sYWJlbD4nICsKICAgICAgICAgICAgICAgICAgICAgICAgJzxpbnB1dCB0eXBl PSJ0ZXh0IiBpZD0iaW1wLW5jLWNvZGUiIGNsYXNzPSJmb3JtLWlucHV0IiB2YWx1ZT0iJyArIGVz Y2FwZUF0dHIocXVlbGxDb2RlKSArICciIG1heGxlbmd0aD0iMTAiPjwvZGl2PicgKwogICAgICAg ICAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJmb3JtLWdydXBwZSIgc3R5bGU9ImZsZXg6MTttaW4t d2lkdGg6MTEwcHgiPjxsYWJlbCBzdHlsZT0iZm9udC1zaXplOjExcHgiPkvDvHJ6ZWwgKEFuemVp Z2UpPC9sYWJlbD4nICsKICAgICAgICAgICAgICAgICAgICAgICAgJzxpbnB1dCB0eXBlPSJ0ZXh0 IiBpZD0iaW1wLW5jLWt1ZXJ6ZWwiIGNsYXNzPSJmb3JtLWlucHV0IiB2YWx1ZT0iJyArIGVzY2Fw ZUF0dHIocXVlbGxDb2RlKSArICciIG1heGxlbmd0aD0iMTAiPjwvZGl2PicgKwogICAgICAgICAg ICAgICAgICAgICc8ZGl2IGNsYXNzPSJmb3JtLWdydXBwZSIgc3R5bGU9ImZsZXg6MjttaW4td2lk dGg6MTgwcHgiPjxsYWJlbCBzdHlsZT0iZm9udC1zaXplOjExcHgiPkJlemVpY2hudW5nPC9sYWJl bD4nICsKICAgICAgICAgICAgICAgICAgICAgICAgJzxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0iaW1w LW5jLWJleiIgY2xhc3M9ImZvcm0taW5wdXQiIHZhbHVlPSIiIG1heGxlbmd0aD0iNjAiIHBsYWNl aG9sZGVyPSJ6LkIuIEZyw7xoZGllbnN0IFNvbmRlcmF1ZmdhYmUiPjwvZGl2PicgKwogICAgICAg ICAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJmb3JtLWdydXBwZSIgc3R5bGU9Im1pbi13aWR0aDo2 NHB4Ij48bGFiZWwgc3R5bGU9ImZvbnQtc2l6ZToxMXB4Ij5IZ3IuPC9sYWJlbD4nICsKICAgICAg ICAgICAgICAgICAgICAgICAgJzxpbnB1dCB0eXBlPSJjb2xvciIgaWQ9ImltcC1uYy1oZyIgY2xh c3M9ImZvcm0taW5wdXQiIHZhbHVlPSIjQjcxQzFDIiBzdHlsZT0iaGVpZ2h0OjM0cHg7cGFkZGlu ZzoycHggNHB4O2N1cnNvcjpwb2ludGVyO3dpZHRoOjU0cHgiPjwvZGl2PicgKwogICAgICAgICAg ICAgICAgICAgICc8ZGl2IGNsYXNzPSJmb3JtLWdydXBwZSIgc3R5bGU9Im1pbi13aWR0aDo2NHB4 Ij48bGFiZWwgc3R5bGU9ImZvbnQtc2l6ZToxMXB4Ij5TY2hyLjwvbGFiZWw+JyArCiAgICAgICAg ICAgICAgICAgICAgICAgICc8aW5wdXQgdHlwZT0iY29sb3IiIGlkPSJpbXAtbmMtc2YiIGNsYXNz PSJmb3JtLWlucHV0IiB2YWx1ZT0iI0ZGRkZGRiIgc3R5bGU9ImhlaWdodDozNHB4O3BhZGRpbmc6 MnB4IDRweDtjdXJzb3I6cG9pbnRlcjt3aWR0aDo1NHB4Ij48L2Rpdj4nICsKICAgICAgICAgICAg ICAgICAgICAnPGRpdiBjbGFzcz0iZm9ybS1ncnVwcGUiIHN0eWxlPSJtaW4td2lkdGg6ODBweCI+ PGxhYmVsIHN0eWxlPSJmb250LXNpemU6MTFweCI+Vm9yc2NoYXU8L2xhYmVsPicgKwogICAgICAg ICAgICAgICAgICAgICAgICAnPGRpdiBpZD0iaW1wLW5jLXZvciIgc3R5bGU9InBhZGRpbmc6NnB4 IDEwcHg7Ym9yZGVyLXJhZGl1czo0cHg7Zm9udC13ZWlnaHQ6NzAwO3RleHQtYWxpZ246Y2VudGVy O2JhY2tncm91bmQ6I0I3MUMxQztjb2xvcjojRkZGRkZGIj4nICsgZXNjYXBlSFRNTChxdWVsbENv ZGUgfHwgJz8nKSArICc8L2Rpdj48L2Rpdj4nICsKICAgICAgICAgICAgICAgICc8L2Rpdj4nICsK ICAgICAgICAgICAgICAgICc8ZGl2IHN0eWxlPSJkaXNwbGF5OmZsZXg7Z2FwOjZweDtqdXN0aWZ5 LWNvbnRlbnQ6ZmxleC1lbmQ7bWFyZ2luLXRvcDo4cHgiPicgKwogICAgICAgICAgICAgICAgICAg ICc8YnV0dG9uIGNsYXNzPSJidG4gYnRuLWtsZWluIiBpZD0iaW1wLW5jLWFiYnJlY2hlbiIgdHlw ZT0iYnV0dG9uIj5BYmJyZWNoZW48L2J1dHRvbj4nICsKICAgICAgICAgICAgICAgICAgICAnPGJ1 dHRvbiBjbGFzcz0iYnRuIGJ0bi1rbGVpbiBidG4tcHJpbWFlciIgaWQ9ImltcC1uYy1hbmxlZ2Vu IiB0eXBlPSJidXR0b24iPkFubGVnZW48L2J1dHRvbj4nICsKICAgICAgICAgICAgICAgICc8L2Rp dj4nOwogICAgICAgICAgICByb3cuaW5zZXJ0QWRqYWNlbnRFbGVtZW50KCdhZnRlcmVuZCcsIGZv cm0pOwoKICAgICAgICAgICAgLy8gTGl2ZS1Wb3JzY2hhdSB3aWUgaW0gU2NoaWNodGNvZGUtRWRp dC1Nb2RhbAogICAgICAgICAgICBmdW5jdGlvbiB2b3JzY2hhdVVwZGF0ZSgpIHsKICAgICAgICAg ICAgICAgIHZhciBoZyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbXAtbmMtaGcnKS52YWx1 ZTsKICAgICAgICAgICAgICAgIHZhciBzZiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbXAt bmMtc2YnKS52YWx1ZTsKICAgICAgICAgICAgICAgIHZhciBrdSA9IGRvY3VtZW50LmdldEVsZW1l bnRCeUlkKCdpbXAtbmMta3VlcnplbCcpLnZhbHVlIHx8IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk KCdpbXAtbmMtY29kZScpLnZhbHVlIHx8ICc/JzsKICAgICAgICAgICAgICAgIHZhciB2ID0gZG9j dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ltcC1uYy12b3InKTsKICAgICAgICAgICAgICAgIHYuc3R5 bGUuYmFja2dyb3VuZCA9IGhnOyB2LnN0eWxlLmNvbG9yID0gc2Y7IHYudGV4dENvbnRlbnQgPSBr dTsKICAgICAgICAgICAgfQogICAgICAgICAgICBbJ2ltcC1uYy1oZycsJ2ltcC1uYy1zZicsJ2lt cC1uYy1rdWVyemVsJywnaW1wLW5jLWNvZGUnXS5mb3JFYWNoKGZ1bmN0aW9uKGlkKSB7CiAgICAg ICAgICAgICAgICB2YXIgZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCk7IGlmIChlbCkg ZWwuYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLCB2b3JzY2hhdVVwZGF0ZSk7CiAgICAgICAgICAg IH0pOwogICAgICAgICAgICAvLyBGb2t1cyBhdWYgQmV6ZWljaG51bmcg4oCUIENvZGUvS3Vlcnpl bCBzaW5kIHZvcmJlbGVndAogICAgICAgICAgICB2YXIgYmV6RWwgPSBkb2N1bWVudC5nZXRFbGVt ZW50QnlJZCgnaW1wLW5jLWJleicpOwogICAgICAgICAgICBpZiAoYmV6RWwpIGJlekVsLmZvY3Vz KCk7CgogICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW1wLW5jLWFiYnJlY2hl bicpLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAg ICBmb3JtLnJlbW92ZSgpOwogICAgICAgICAgICAgICAgLy8gU2VsZWN0IHdhciBvYmVuIGJlcmVp dHMgYXVmIG0uemllbCB6dXJ1ZWNrZ2VzZXR6dCwgbmljaHRzIHdlaXRlciB6dSB0dW4uCiAgICAg ICAgICAgIH0pOwoKICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ltcC1uYy1h bmxlZ2VuJykuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbigpIHsKICAgICAgICAg ICAgICAgIHZhciBkYXRlbiA9IHsKICAgICAgICAgICAgICAgICAgICBjb2RlOiBkb2N1bWVudC5n ZXRFbGVtZW50QnlJZCgnaW1wLW5jLWNvZGUnKS52YWx1ZS50cmltKCksCiAgICAgICAgICAgICAg ICAgICAga3VlcnplbDogZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ltcC1uYy1rdWVyemVsJyku dmFsdWUudHJpbSgpIHx8IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbXAtbmMtY29kZScpLnZh bHVlLnRyaW0oKSwKICAgICAgICAgICAgICAgICAgICBiZXplaWNobnVuZzogZG9jdW1lbnQuZ2V0 RWxlbWVudEJ5SWQoJ2ltcC1uYy1iZXonKS52YWx1ZS50cmltKCksCiAgICAgICAgICAgICAgICAg ICAgaGludGVyZ3J1bmQ6IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbXAtbmMtaGcnKS52YWx1 ZSwKICAgICAgICAgICAgICAgICAgICBzY2hyaWZ0OiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn aW1wLW5jLXNmJykudmFsdWUKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICBpZiAo IWRhdGVuLmNvZGUpIHsgdG9hc3QoJ0NvZGUgaXN0IFBmbGljaHRmZWxkJywgJ3dhcm51bmcnKTsg cmV0dXJuOyB9CiAgICAgICAgICAgICAgICBpZiAoIWRhdGVuLmJlemVpY2hudW5nKSB7IHRvYXN0 KCdCZXplaWNobnVuZyBpc3QgUGZsaWNodGZlbGQnLCAnd2FybnVuZycpOyByZXR1cm47IH0KICAg ICAgICAgICAgICAgIGlmICgoWi5hZG1pbi5zY2hpY2h0Y29kZXMgfHwgW10pLnNvbWUoZnVuY3Rp b24oYykgeyByZXR1cm4gYy5jb2RlID09PSBkYXRlbi5jb2RlOyB9KSkgewogICAgICAgICAgICAg ICAgICAgIHRvYXN0KCdDb2RlIOKAnicgKyBkYXRlbi5jb2RlICsgJyIgZXhpc3RpZXJ0IGJlcmVp dHMnLCAnd2FybnVuZycpOyByZXR1cm47CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg ICB2YXIgbGlzdGUgPSAoWi5hZG1pbi5zY2hpY2h0Y29kZXMgfHwgW10pLnNsaWNlKCk7CiAgICAg ICAgICAgICAgICBsaXN0ZS5wdXNoKGRhdGVuKTsKICAgICAgICAgICAgICAgIGFwaVB1dCgnL2Fw aS9hZG1pbicsIE9iamVjdC5hc3NpZ24oe30sIFouYWRtaW4sIHsgc2NoaWNodGNvZGVzOiBsaXN0 ZSB9KSkudGhlbihmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICBaLmFkbWluLnNjaGlj aHRjb2RlcyA9IGxpc3RlOwogICAgICAgICAgICAgICAgICAgIC8vIGNvZGVNYXAgZnVlciBkYXMg SGF1cHRncmlkIHN5bmNocm9uIGhhbHRlbgogICAgICAgICAgICAgICAgICAgIFouY29kZU1hcCA9 IFouY29kZU1hcCB8fCB7fTsKICAgICAgICAgICAgICAgICAgICBaLmNvZGVNYXBbZGF0ZW4uY29k ZV0gPSB7IGhpbnRlcmdydW5kOiBkYXRlbi5oaW50ZXJncnVuZCwgc2NocmlmdDogZGF0ZW4uc2No cmlmdCwga3VlcnplbDogZGF0ZW4ua3VlcnplbCB8fCBkYXRlbi5jb2RlIH07CiAgICAgICAgICAg ICAgICAgICAgLy8gQWt0aXZlLUNvZGVzLUNsb3N1cmUtTGlzdGUgYWt0dWFsaXNpZXJlbiB1bmQg YWxsZQogICAgICAgICAgICAgICAgICAgIC8vIENvZGUtU2VsZWN0cyBpbSBNb2RhbCBuZXUgcmVu ZGVybiwgZGFtaXQgZGVyIG5ldWUKICAgICAgICAgICAgICAgICAgICAvLyBDb2RlIGluIGplZGVt IERyb3Bkb3duIGF1ZnRhdWNodC4KICAgICAgICAgICAgICAgICAgICBha3RpdmVDb2RlcyA9ICha LmFkbWluLnNjaGljaHRjb2RlcyB8fCBbXSkuZmlsdGVyKGlzdENvZGVBa3RpdikKICAgICAgICAg ICAgICAgICAgICAgICAgLnNsaWNlKCkuc29ydChmdW5jdGlvbihhLCBiKSB7IHJldHVybiAoYS5j b2RlIHx8ICcnKS5sb2NhbGVDb21wYXJlKGIuY29kZSB8fCAnJywgJ2RlJyk7IH0pOwogICAgICAg ICAgICAgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5pbXAtY29kZS1zZWwnKS5m b3JFYWNoKGZ1bmN0aW9uKHMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHNpID0gcGFy c2VJbnQocy5nZXRBdHRyaWJ1dGUoJ2RhdGEtaScpLCAxMCk7CiAgICAgICAgICAgICAgICAgICAg ICAgIHZhciBzbSA9IGltcFN0YXRlLmNvZGVNYXRjaGVzW3NpXTsKICAgICAgICAgICAgICAgICAg ICAgICAgLy8gU2VsZWt0aW9uIGluIGRpZXNlciBaZWlsZSBhdWYgZGVuIG5ldWVuIENvZGUgc2V0 emVuLAogICAgICAgICAgICAgICAgICAgICAgICAvLyBzb25zdCBkaWUgYmVzdGVoZW5kZSB6aWVs LUF1c3dhaGwgYmVpYmVoYWx0ZW4uCiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB6aWVsRnVl ciA9IChzaSA9PT0gaSkgPyBkYXRlbi5jb2RlIDogKHNtICYmIHNtLnppZWwpIHx8ICcnOwogICAg ICAgICAgICAgICAgICAgICAgICBzLmlubmVySFRNTCA9IGNvZGVPcHRzKHppZWxGdWVyKTsKICAg ICAgICAgICAgICAgICAgICAgICAgcy52YWx1ZSA9IHppZWxGdWVyOwogICAgICAgICAgICAgICAg ICAgIH0pOwogICAgICAgICAgICAgICAgICAgIC8vIG0tU3RhdGUgZGVyIEF1c2xvZXNlci1aZWls ZSBha3R1YWxpc2llcmVuCiAgICAgICAgICAgICAgICAgICAgbS56aWVsID0gZGF0ZW4uY29kZTsK ICAgICAgICAgICAgICAgICAgICBtLnN0YXR1cyA9ICdtYW51ZWxsJzsKICAgICAgICAgICAgICAg ICAgICBtLmhpbndlaXMgPSAnTmV1IGFuZ2VsZWd0OiAnICsgZGF0ZW4uY29kZTsKICAgICAgICAg ICAgICAgICAgICAvLyBaZWlsZSB2aXN1ZWxsIHVtZmFlcmJlbiArIEljb24gYXVzdGF1c2NoZW4K ICAgICAgICAgICAgICAgICAgICByb3cuY2xhc3NMaXN0LnJlbW92ZSgnaW1wLXdhcm4nKTsKICAg ICAgICAgICAgICAgICAgICByb3cuY2xhc3NMaXN0LmFkZCgnaW1wLW9rJyk7CiAgICAgICAgICAg ICAgICAgICAgdmFyIGFsdEljID0gcm93LnF1ZXJ5U2VsZWN0b3IoJy5pbXAtbWFwcGluZy1zdGF0 dXMnKTsKICAgICAgICAgICAgICAgICAgICBpZiAoYWx0SWMpIGFsdEljLm91dGVySFRNTCA9IHN0 YXR1c0ljb25IdG1sKG0pOwogICAgICAgICAgICAgICAgICAgIC8vIEFnZ3JlZ2F0LVphZWhsZXIg YWt0dWFsaXNpZXJlbgogICAgICAgICAgICAgICAgICAgIHN0YXR1c1phZWhsZXJVcGRhdGVuKCk7 CiAgICAgICAgICAgICAgICAgICAgZm9ybS5yZW1vdmUoKTsKICAgICAgICAgICAgICAgICAgICB0 b2FzdCgnU2NoaWNodGNvZGUg4oCeJyArIGRhdGVuLmNvZGUgKyAnIiBhbmdlbGVndCcsICdlcmZv bGcnKTsKICAgICAgICAgICAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uKGUpIHsgdG9hc3QoJ0ZlaGxl cjogJyArIChlICYmIGUubWVzc2FnZSB8fCBlKSwgJ2ZlaGxlcicpOyB9KTsKICAgICAgICAgICAg fSk7CiAgICAgICAgfQoKICAgICAgICAvLyAiQWJicmVjaGVuIjogcm9sbHQgaW1wU3RhdGUgYXVm IFNuYXBzaG90IHp1cnVlY2suIEJlaSB2b3JoYW5kZW5lbgogICAgICAgIC8vIEFlbmRlcnVuZ2Vu IChaLm1vZGFsRGlydHk9dHJ1ZSkgZnJhZ3QgZGllIERpcnR5LUJlc3RhZXRpZ3VuZwogICAgICAg IC8vIGF1dG9tYXRpc2NoIG5hY2gg4oCUIGRlciBEaXNjYXJkLUhvb2sgb2JlbiBydWZ0IGRhbm4g ZGVuIFJvbGxiYWNrIGF1Zi4KICAgICAgICAvLyBPaG5lIEFlbmRlcnVuZ2VuIGRpcmVrdCBzY2hs aWVzc2VuLgogICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbXAtbW9kYWwtYWJicmVj aGVuJykuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAg aWYgKFoubW9kYWxEaXJ0eSkgewogICAgICAgICAgICAgICAgbW9kYWxTY2hsaWVzc2VuKCk7CiAg ICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBtb2RhbFNjaGxpZXNzZW4odHJ1ZSk7 CiAgICAgICAgICAgICAgICBpbXBTdGF0dXNSZW5kZXJuKCk7CiAgICAgICAgICAgIH0KICAgICAg ICB9KTsKCiAgICAgICAgLy8gIsOcYmVybmVobWVuIjogYWxsZSBub2NoIG9mZmVuZW4gKG1laHJk ZXV0aWcpIGFscyBpZ25vcmllcnQgbWFya2llcmVuLgogICAgICAgIC8vIERhbWl0IGtvbW10IGRl ciBVc2VyIGF1cyBkZXIgU2Fja2dhc3NlLCB3ZW5uIGVyIE1laHJmYWNodHJlZmZlciBvaG5lCiAg ICAgICAgLy8gRW50c2NoZWlkdW5nIGxhc3NlbiB3aWxsLiAibmV1IiB1bmQgInBhcGllcmtvcmIi IGhhYmVuIERlZmF1bHQtCiAgICAgICAgLy8gVm9yc2NobGFlZ2UgdW5kIHdlcmRlbiBuaWNodCBh bmdlZmFzc3QuIERpcnR5LUJlc3RhZXRpZ3VuZyB3aXJkCiAgICAgICAgLy8gYmV3dXNzdCB1bWdh bmdlbiAobW9kYWxTY2hsaWVzc2VuKHRydWUpKSDigJQgVWViZXJuZWhtZW4gaXN0IGRpZQogICAg ICAgIC8vIGdld3VlbnNjaHRlIENvbW1pdC1Ba3Rpb24uCiAgICAgICAgZG9jdW1lbnQuZ2V0RWxl bWVudEJ5SWQoJ2ltcC1tb2RhbC11ZWJlcm5laG1lbicpLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNr JywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIC8vIFdhcyB3dWVyZGUgIlVlYmVybmVobWVuIiBz dGlsbCB2ZXJ3ZXJmZW4/IE9mZmVuZSBtZWhyZGV1dGlnZQogICAgICAgICAgICAvLyBQZXJzb25l biArIHVuYmVrYW5udGUgQ29kZXMgd2VyZGVuIGF1ZiBpZ25vcmllcnQgZ2VzZXR6dCDigJQgaWhy ZQogICAgICAgICAgICAvLyBEYXRlbiBsYW5kZW4gTklDSFQgaW0gSW1wb3J0LiBGcnVlaGVyIHBh c3NpZXJ0ZSBkYXMgb2huZSBSdWVjay0KICAgICAgICAgICAgLy8gZnJhZ2U7IGpldHp0IHplaWdl biB3aXIgdm9yaGVyIGV4cGxpeml0LCB3YXMgdmVybG9yZW4gZ2VodC4KICAgICAgICAgICAgdmFy IG9mZmVuZVBlcnMgPSBpbXBTdGF0ZS5wZXJzb25lbk1hdGNoZXMuZmlsdGVyKGZ1bmN0aW9uKG0p IHsgcmV0dXJuIG0uc3RhdHVzID09PSAnbWVocmRldXRpZyc7IH0pOwogICAgICAgICAgICB2YXIg b2ZmZW5lQ29kZXMgPSBpbXBTdGF0ZS5jb2RlTWF0Y2hlcy5maWx0ZXIoZnVuY3Rpb24obSkgeyBy ZXR1cm4gbS5zdGF0dXMgPT09ICd1bmJla2FubnQnOyB9KTsKCiAgICAgICAgICAgIGZ1bmN0aW9u IGFud2VuZGVuKCkgewogICAgICAgICAgICAgICAgb2ZmZW5lUGVycy5mb3JFYWNoKGZ1bmN0aW9u KG0pIHsKICAgICAgICAgICAgICAgICAgICBtLnppZWxJZCA9IG51bGw7CiAgICAgICAgICAgICAg ICAgICAgbS5uZXVBbmxlZ2VuID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgbS5zdGF0dXMg PSAnaWdub3JpZXJ0JzsKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgb2ZmZW5l Q29kZXMuZm9yRWFjaChmdW5jdGlvbihtKSB7CiAgICAgICAgICAgICAgICAgICAgbS56aWVsID0g bnVsbDsKICAgICAgICAgICAgICAgICAgICBtLnN0YXR1cyA9ICdpZ25vcmUnOwogICAgICAgICAg ICAgICAgICAgIG0uaGlud2VpcyA9ICdJZ25vcmllcnQnOwogICAgICAgICAgICAgICAgfSk7CiAg ICAgICAgICAgICAgICBtb2RhbFNjaGxpZXNzZW4odHJ1ZSk7CiAgICAgICAgICAgICAgICBpbXBT dGF0dXNSZW5kZXJuKCk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIE5pY2h0cyBPZmZl bmVzIC0+IGRpcmVrdCB1ZWJlcm5laG1lbiAoa2VpbmUgdWViZXJmbHVlc3NpZ2UgUnVlY2tmcmFn ZSkuCiAgICAgICAgICAgIGlmICghb2ZmZW5lUGVycy5sZW5ndGggJiYgIW9mZmVuZUNvZGVzLmxl bmd0aCkgeyBhbndlbmRlbigpOyByZXR1cm47IH0KCiAgICAgICAgICAgIHZhciB0ZWlsZSA9IFtd OwogICAgICAgICAgICBpZiAob2ZmZW5lUGVycy5sZW5ndGgpIHsKICAgICAgICAgICAgICAgIHZh ciBwTmFtZW4gPSBvZmZlbmVQZXJzLm1hcChmdW5jdGlvbihtKSB7IHJldHVybiBtLmV4Y2VsLm5h Y2huYW1lOyB9KS5qb2luKCcsICcpOwogICAgICAgICAgICAgICAgdGVpbGUucHVzaChvZmZlbmVQ ZXJzLmxlbmd0aCArICcgUGVyc29uKGVuKSBibGVpYmVuIHVuenVnZW9yZG5ldCB1bmQgd2VyZGVu IE5JQ0hUIGltcG9ydGllcnQ6XG4nICsgcE5hbWVuKTsKICAgICAgICAgICAgfQogICAgICAgICAg ICBpZiAob2ZmZW5lQ29kZXMubGVuZ3RoKSB7CiAgICAgICAgICAgICAgICB2YXIgemVsbGVuID0g b2ZmZW5lQ29kZXMucmVkdWNlKGZ1bmN0aW9uKHN1bSwgbSkgeyByZXR1cm4gc3VtICsgKG0uYW56 YWhsIHx8IDApOyB9LCAwKTsKICAgICAgICAgICAgICAgIHZhciBjTmFtZW4gPSBvZmZlbmVDb2Rl cy5tYXAoZnVuY3Rpb24obSkgeyByZXR1cm4gbS5jb2RlOyB9KS5qb2luKCcsICcpOwogICAgICAg ICAgICAgICAgdGVpbGUucHVzaChvZmZlbmVDb2Rlcy5sZW5ndGggKyAnIENvZGUocykgYmxlaWJl biB1bnp1Z2VvcmRuZXQg4oCUIGRpZSBiZXRyb2ZmZW5lbiAnICsgemVsbGVuICsgJyBaZWxsZShu KSB3ZXJkZW4gZ2VsZWVydCBzdGF0dCBiZWbDvGxsdDpcbicgKyBjTmFtZW4pOwogICAgICAgICAg ICB9CiAgICAgICAgICAgIGJlc3RhZXRpZ2VuKAogICAgICAgICAgICAgICAgdGVpbGUuam9pbign XG5cbicpICsgJ1xuXG5Ucm90emRlbSDDvGJlcm5laG1lbiB1bmQgZGllc2UgUHVua3RlIGlnbm9y aWVyZW4/JywKICAgICAgICAgICAgICAgIGFud2VuZGVuLAogICAgICAgICAgICAgICAgeyB0aXRl bDogJ09mZmVuZSBadW9yZG51bmdlbiB2ZXJ3ZXJmZW4/JywgamFUZXh0OiAnVHJvdHpkZW0gw7xi ZXJuZWhtZW4nLCBqYURhbmdlcjogdHJ1ZSB9CiAgICAgICAgICAgICk7CiAgICAgICAgfSk7CiAg ICB9CgovLyA9PT09PSBFeHBvcnRzID09PT09CmV4cG9ydCB7CiAgICBpbXBSYW5nUGFyc2VuLCBp bXBFeGNlbFNlcmlhbFRvSXNvLAogICAgaW1wRGF0ZWlWZXJhcmJlaXRlbiwgaW1wRmVobGVyLCBp bXBBbmFseXNpZXJlbiwKICAgIGltcFN0YXR1c1JlbmRlcm4sIGltcFNjaHJlaWJlblN0YXJ0ZW4s CiAgICBpbXBQcm9ncmVzc01vZGFsT2VmZm5lbiwgaW1wUHJvZ3Jlc3NVcGRhdGUsIGltcFByb2dy ZXNzRmVobGVyLCBpbXBQcm9ncmVzc0VyZm9sZywKICAgIGltcFNjaHJlaWJlbkF1c2Z1ZWhyZW4s IGltcFNjaHJlaWJlblBoYXNlMiwgaW1wU2NocmVpYmVuUGhhc2UyVHJhbnNmb3JtLCBpbXBTY2hy ZWliZW5QaGFzZTMsCiAgICBpbXBNYXBwaW5nTW9kYWwsIGltcFRyb2NrZW5sYXVmQmVyZWNobmVu LCBpbXBUcm9ja2VubGF1Zk1vZGFsCn07Cg== ### FILE: js/logbuch.js | 36868 Ly8gPT09IGxvZ2J1Y2guanMgPT09Ci8vIEFlbmRlcnVuZ3MtSGlzdG9yaWUgZGVyIFBsYW51bmcu IFNlcnZlciBzY2hyZWlidCB0ZWNobmlzY2gta29tcGFrdGUKLy8gRWludHJhZWdlICh7YWt0aW9u LCBkZXRhaWxzfSk7IGRpZXNlcyBNb2R1bCBodW1hbmlzaWVydCBzaWUgZnVlciBkaWUKLy8gQW56 ZWlnZSAoQWt0aW9ucy1MYWJlbCwgRGV0YWlsLVRleHQsIEtsYXJuYW1lIHN0YXR0IE5XLUtlbm51 bmcpLgoKaW1wb3J0IHsgWiB9IGZyb20gJy4vY29yZV9zdGF0ZS5qcyc7CmltcG9ydCB7IGVzY2Fw ZUhUTUwsIGVzY2FwZUF0dHIsIGRhdHVtRm9ybWF0REUsIHJlbmRlckVycm9yQm94IH0gZnJvbSAn Li9jb3JlX3V0aWwuanMnOwppbXBvcnQgeyB0b2FzdCwgYmVzdGFldGlnZW4gfSBmcm9tICcuL3Vp X2RpYWxvZy5qcyc7CmltcG9ydCB7IGFwaSwgYXBpUG9zdCwgYXBpUHV0IH0gZnJvbSAnLi9jb3Jl X2FwaS5qcyc7CgovLyBIb29rczogYXBwLmpzIHZlcmRyYWh0ZXQgYGFmdGVyUmVzdG9yZWAgbWl0 IGRhdGVuTGFkZW4oKSwgZGFtaXQgbmFjaAovLyBlaW5lciBXaWVkZXJoZXJzdGVsbHVuZyBkZXIg Z2xvYmFsZSBTdGF0ZSAoWi5wbGFudW5nIGV0Yy4pIHJlZnJlc2hlZCB3aXJkLgpleHBvcnQgdmFy IGxvZ2J1Y2hIb29rcyA9IHsKICAgIGFmdGVyUmVzdG9yZTogbnVsbAp9OwoKLy8gPT09PT0gQWt0 aW9ucy1MYWJlbCA9PT09PQovLyBNYXBwaW5nIHRlY2huaXNjaGVyIEFrdGlvbi1Db2RlcyBhdWYg bWVuc2NoZW5sZXNiYXJlIGRldXRzY2hlIEJlc2NocmlmdHVuZy4KLy8gVW5iZWthbm50ZSBDb2Rl cyB3ZXJkZW4gZ2VuZXJpc2NoIHZvbiAnKi5nZWFlbmRlcnQnIC8gJyouYW5nZWxlZ3QnIGV0Yy4K Ly8gZ2VmYW5nZW4gKHNpZWhlIGFrdGlvbkxhYmVsKCkpLgp2YXIgQUtUSU9OX0xBQkVMID0gewog ICAgJ3plbGxlLmdlYWVuZGVydCc6ICAgICAgICAgICAgICAgICdTY2hpY2h0IGdlw6RuZGVydCcs CiAgICAnemVsbGVuLmJ1bGsuZ2VhZW5kZXJ0JzogICAgICAgICAgJ01laHJlcmUgU2NoaWNodGVu IGdlc2V0enQgKERyYWctRmlsbCknLAogICAgJ2tvbW1lbnRhci5nZWFlbmRlcnQnOiAgICAgICAg ICAgICdLb21tZW50YXIgZ2XDpG5kZXJ0JywKICAgICdwZXJzb24uYW5nZWxlZ3QnOiAgICAgICAg ICAgICAgICAnUGVyc29uIGFuZ2VsZWd0JywKICAgICdwZXJzb24uZ2VhZW5kZXJ0JzogICAgICAg ICAgICAgICAnUGVyc29uIGdlw6RuZGVydCcsCiAgICAncGVyc29uZW4ucmVpaGVuZm9sZ2UuZ2Vh ZW5kZXJ0JzogJ1BlcnNvbmVuLVJlaWhlbmZvbGdlIGdlw6RuZGVydCcsCiAgICAnYWRtaW4uZ2Vh ZW5kZXJ0JzogICAgICAgICAgICAgICAgJ0FkbWluLUtvbmZpZ3VyYXRpb24gZ2XDpG5kZXJ0JywK ICAgICdhZG1pbi5jb25maWcuZ2VhZW5kZXJ0JzogICAgICAgICAnQWRtaW4tS29uZmlndXJhdGlv biBnZcOkbmRlcnQnLAogICAgJ3N1cGVyVXNlci5nZWFlbmRlcnQnOiAgICAgICAgICAgICdTdXBl clVzZXItTGlzdGUgZ2XDpG5kZXJ0JywKICAgICdzdXBlcnVzZXIuZ2VhZW5kZXJ0JzogICAgICAg ICAgICAnU3VwZXJVc2VyLUxpc3RlIGdlw6RuZGVydCcsCiAgICAnZmFjaGF1ZnNpY2h0LmdlYWVu ZGVydCc6ICAgICAgICAgJ0ZhY2hhdWZzaWNodC1MaXN0ZSBnZcOkbmRlcnQnLAogICAgJ2RpcmVr dGlvbnNsZWl0dW5nLmdlYWVuZGVydCc6ICAgICdEaXJla3Rpb25zbGVpdHVuZy1MaXN0ZSBnZcOk bmRlcnQnLAogICAgJ2Z1ZWhydW5nc3N0ZWxsZS5nZWFlbmRlcnQnOiAgICAgICdGw7xocnVuZ3Nz dGVsbGUtTGlzdGUgZ2XDpG5kZXJ0JywKICAgICdiZXplaWNobnVuZ2VuLmdlYWVuZGVydCc6ICAg ICAgICAnQmV6ZWljaG51bmdlbiBnZcOkbmRlcnQnLAogICAgJ2VtYWlsdm9ybGFnZW4uZ2VhZW5k ZXJ0JzogICAgICAgICdFLU1haWwtVm9ybGFnZW4gZ2XDpG5kZXJ0JywKICAgICdlbWFpbHRyaWdn ZXIuZ2VhZW5kZXJ0JzogICAgICAgICAnRS1NYWlsLVRyaWdnZXIgZ2XDpG5kZXJ0JywKICAgICdl aW5zdGVsbHVuZ2VuLmdlYWVuZGVydCc6ICAgICAgICAnRWluc3RlbGx1bmdlbiBnZcOkbmRlcnQn LAogICAgJ2ZlaWVydGFnZS5nZWFlbmRlcnQnOiAgICAgICAgICAgICdGZWllcnRhZ2UgZ2XDpG5k ZXJ0JywKICAgICdmZXJpZW4uZ2VhZW5kZXJ0JzogICAgICAgICAgICAgICAnU2NodWxmZXJpZW4g Z2XDpG5kZXJ0JywKICAgICdzb25kZXJ0ZXJtaW5lLmdlYWVuZGVydCc6ICAgICAgICAnSGlud2Vp c2UgLyBTb25kZXJ0ZXJtaW5lIGdlw6RuZGVydCcsCiAgICAnc3RhbmRvcnRlLmdlYWVuZGVydCc6 ICAgICAgICAgICAgJ1N0YW5kb3J0ZSBnZcOkbmRlcnQnLAogICAgJ3NjaGljaHRjb2Rlcy5nZWFl bmRlcnQnOiAgICAgICAgICdTY2hpY2h0Y29kZXMgZ2XDpG5kZXJ0JywKICAgICdncnVwcGVuLmdl YWVuZGVydCc6ICAgICAgICAgICAgICAnRGllbnN0Z3J1cHBlbiBnZcOkbmRlcnQnLAogICAgJ2Z1 bmt0aW9uZW4uZ2VhZW5kZXJ0JzogICAgICAgICAgICdGdW5rdGlvbmVuIGdlw6RuZGVydCcsCiAg ICAnc2NoaWNodGZvbGdlbi5nZWFlbmRlcnQnOiAgICAgICAgJ1NjaGljaHRmb2xnZW4gZ2XDpG5k ZXJ0JywKICAgICdyb2xsZW4uZ2VhZW5kZXJ0JzogICAgICAgICAgICAgICAnUm9sbGVuIGdlw6Ru ZGVydCcsCiAgICAnYmFja3VwLmVyc3RlbGx0JzogICAgICAgICAgICAgICAgJ0JhY2t1cCBlcnN0 ZWxsdCcsCiAgICAnYmFja3VwLndpZWRlcmhlcmdlc3RlbGx0JzogICAgICAgJ0JhY2t1cCB3aWVk ZXJoZXJnZXN0ZWxsdCcsCiAgICAnYmFja3VwLmdlbG9lc2NodCc6ICAgICAgICAgICAgICAgJ0Jh Y2t1cCBnZWzDtnNjaHQnLAogICAgJ3BsYW51bmcucmVzZXQnOiAgICAgICAgICAgICAgICAgICdQ bGFudW5nIHp1csO8Y2tnZXNldHp0JywKICAgICdwbGFudW5nLmtvbXBsZXR0LWVyc2V0enQnOiAg ICAgICAnUGxhbnVuZyBrb21wbGV0dCBlcnNldHp0IChJbXBvcnQpJywKICAgICdkdW1teWRhdGVu LmVpbmdlc3BpZWx0JzogICAgICAgICAnRHVtbXlkYXRlbiBlaW5nZXNwaWVsdCcsCiAgICAndW50 ZXJiZXNldHp1bmcucXVpdHRpZXJ0JzogICAgICAgJ1VudGVyYmVzZXR6dW5nIHF1aXR0aWVydCcs CiAgICAnbG9jay5mb3JjZSc6ICAgICAgICAgICAgICAgICAgICAgJ0VkaXQtTG9jayDDvGJlcm5v bW1lbicsCiAgICAnaGlud2Vpcy5lcnpldWd0JzogICAgICAgICAgICAgICAgJ0hpbndlaXMgZXJ6 ZXVndCcsCiAgICAnaGlud2Vpcy5rZW5udG5pcyc6ICAgICAgICAgICAgICAgJ0hpbndlaXMgenVy IEtlbm50bmlzIGdlbm9tbWVuJywKICAgICd2ZXJhbnR3b3J0dW5nLmVpbmdlc3BydW5nZW4nOiAg ICAnQXXDn2VycGxhbm3DpMOfaWcgZWluZ2VzcHJ1bmdlbicsCiAgICAvLyBLb21tZW50YXJlOiBT ZXJ2ZXIgc2NocmVpYnQgaGluenVnZWZ1ZWd0L2dlbG9lc2NodCAoTklDSFQgZ2VhZW5kZXJ0KSDi gJQKICAgIC8vIG9obmUgZGllc2UgTGFiZWxzIGxhbmRldGVuIGRpZSBoYWV1Zmlnc3RlbiBLb21t ZW50YXItRWludHJhZWdlIGltCiAgICAvLyBnZW5lcmlzY2hlbiBSb2gtRmFsbGJhY2sgbWl0IHRl Y2huaXNjaGVuIEZlbGRuYW1lbi4KICAgICdrb21tZW50YXIuaGluenVnZWZ1ZWd0JzogICAgICAg ICAnS29tbWVudGFyIGhpbnp1Z2Vmw7xndCcsCiAgICAna29tbWVudGFyLmdlbG9lc2NodCc6ICAg ICAgICAgICAgJ0tvbW1lbnRhciBnZWzDtnNjaHQnLAogICAgJ3BlcnNvbi5pbi5wYXBpZXJrb3Ji JzogICAgICAgICAgICdQZXJzb24gaW4gUGFwaWVya29yYiB2ZXJzY2hvYmVuJywKICAgICdwZXJz b24uZW5kZ3VlbHRpZy5nZWxvZXNjaHQnOiAgICAnUGVyc29uIGVuZGfDvGx0aWcgZ2Vsw7ZzY2h0 JywKICAgICdwcm90b2tvbGwuZ2Vsb2VzY2h0JzogICAgICAgICAgICAnTG9nYnVjaC1Qcm90b2tv bGwgZ2Vsw7ZzY2h0JywKICAgICdtaXR0ZWlsdW5nLmFuZ2VsZWd0JzogICAgICAgICAgICAnTWl0 dGVpbHVuZyBhbmdlbGVndCcsCiAgICAnbWl0dGVpbHVuZy5nZWFlbmRlcnQnOiAgICAgICAgICAg J01pdHRlaWx1bmcgZ2XDpG5kZXJ0JywKICAgICdtaXR0ZWlsdW5nLmdlbG9lc2NodCc6ICAgICAg ICAgICAnTWl0dGVpbHVuZyBnZWzDtnNjaHQnLAogICAgJ21pdHRlaWx1bmcudXBsb2FkJzogICAg ICAgICAgICAgICdNaXR0ZWlsdW5nIOKAlCBEYXRlaSBob2NoZ2VsYWRlbicsCiAgICAnYXZhdGFy Lmdlc2V0enQnOiAgICAgICAgICAgICAgICAgJ0F2YXRhciBnZXNldHp0JywKICAgICdhdmF0YXIu ZW50ZmVybnQnOiAgICAgICAgICAgICAgICAnQXZhdGFyIGVudGZlcm50Jwp9OwoKLy8gTGVzYmFy ZSBCZXplaWNobnVuZ2VuIHBybyBIaW53ZWlzLVR5cCAoU3BpZWdlbCB2b24ganMvaGlud2Vpc2Uu anMKLy8gVFlQX0xBQkVMLCBoaWVyIG1pdCBVbWxhdXRlbiBmdWVyIGRpZSBMb2didWNoLUFuemVp Z2UpLgp2YXIgSElOV0VJU19UWVBfTEFCRUwgPSB7CiAgICBpZGVudGl0YWV0X2dlYWVuZGVydDog ICAgICdJZGVudGl0w6R0IGdlw6RuZGVydCcsCiAgICByb2xsZV9nZWFlbmRlcnQ6ICAgICAgICAg ICdSb2xsZSBnZcOkbmRlcnQnLAogICAgcm9sbGVfdmVyYW50d29ydHVuZzogICAgICAnVmVyYW50 d29ydHVuZ3MtV2VjaHNlbCAoUm9sbGUpJywKICAgIGJhY2t1cF93aWVkZXJoZXJnZXN0ZWxsdDog J0JhY2t1cCB3aWVkZXJoZXJnZXN0ZWxsdCcsCiAgICBwbGFudW5nX3Jlc2V0OiAgICAgICAgICAg ICdQbGFudW5nIHp1csO8Y2tnZXNldHp0JywKICAgIGtyYW5rbWVsZHVuZzogICAgICAgICAgICAg J0tyYW5rbWVsZHVuZycsCiAgICBwZXJzb25fbmV1OiAgICAgICAgICAgICAgICdQZXJzb24gbmV1 IGFuZ2VsZWd0JywKICAgIHBlcnNvbl9pbmFrdGl2OiAgICAgICAgICAgJ1BlcnNvbiBpbmFrdGl2 IGdlc2V0enQnLAogICAgZ2VidXJ0c3RhZzogICAgICAgICAgICAgICAnR2VidXJ0c3RhZycsCiAg ICBzY2hpY2h0X2VkaXRfbmFoZTogICAgICAgICdTY2hpY2h0LcOEbmRlcnVuZyBuYWhlIGFtIERh dHVtJwp9OwpmdW5jdGlvbiBfaGlud2Vpc1R5cExhYmVsKHQpIHsgcmV0dXJuIEhJTldFSVNfVFlQ X0xBQkVMW3RdIHx8ICh0IHx8ICcnKTsgfQoKZnVuY3Rpb24gYWt0aW9uTGFiZWwoY29kZSkgewog ICAgaWYgKCFjb2RlKSByZXR1cm4gJyhvaG5lKSc7CiAgICBpZiAoQUtUSU9OX0xBQkVMW2NvZGVd KSByZXR1cm4gQUtUSU9OX0xBQkVMW2NvZGVdOwogICAgLy8gR2VuZXJpc2NoZXIgRmFsbGJhY2s6 ICdmb28uZ2VhZW5kZXJ0JyAtPiAnRm9vIGdlw6RuZGVydCcKICAgIHZhciB0ZWlsZSA9IGNvZGUu c3BsaXQoJy4nKTsKICAgIGlmICh0ZWlsZS5sZW5ndGggPj0gMikgewogICAgICAgIHZhciBiYXNp cyA9IHRlaWxlWzBdLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgdGVpbGVbMF0uc2xpY2UoMSk7 CiAgICAgICAgdmFyIHJlc3QgPSB0ZWlsZS5zbGljZSgxKS5qb2luKCcuJykKICAgICAgICAgICAg LnJlcGxhY2UoJ2dlYWVuZGVydCcsICdnZcOkbmRlcnQnKQogICAgICAgICAgICAucmVwbGFjZSgn Z2Vsb2VzY2h0JywgJ2dlbMO2c2NodCcpCiAgICAgICAgICAgIC5yZXBsYWNlKCd6dXJ1ZWNrZ2Vz ZXR6dCcsICd6dXLDvGNrZ2VzZXR6dCcpCiAgICAgICAgICAgIC5yZXBsYWNlKCdxdWl0dGllcnQn LCAncXVpdHRpZXJ0Jyk7CiAgICAgICAgcmV0dXJuIGJhc2lzICsgJyAnICsgcmVzdDsKICAgIH0K ICAgIHJldHVybiBjb2RlOwp9CgovLyBBa3Rpb24gLT4gS2F0ZWdvcmllLVNsdWcgZnVlciBkYXMg RmFyYi1QaWxsIGluIGRlciBBa3Rpb24tU3BhbHRlLgovLyBLYXRlZ29yaWVuIGdlYmVuIGVpbmVu IFNjaG5lbGwtTGVzZWZsdXNzOiBncnVlbmUgUGlsbHMgPSBQbGFudW5nLAovLyBibGF1ZSA9IFBl cnNvbiwgb3JhbmdlID0gQWRtaW4tS29uZmlnLCB2aW9sZXR0ID0gSGlud2VpcyB1c3cuCnZhciBB S1RJT05fS0FURUdPUklFID0gewogICAgJ3plbGxlLmdlYWVuZGVydCc6ICAgICAgICAgICAgICAg ICdwbGFudW5nJywKICAgICd6ZWxsZW4uYnVsay5nZWFlbmRlcnQnOiAgICAgICAgICAncGxhbnVu ZycsCiAgICAna29tbWVudGFyLmdlYWVuZGVydCc6ICAgICAgICAgICAgJ3BsYW51bmcnLAogICAg J3VudGVyYmVzZXR6dW5nLnF1aXR0aWVydCc6ICAgICAgICdwbGFudW5nJywKICAgICdsb2NrLmZv cmNlJzogICAgICAgICAgICAgICAgICAgICAnc3lzdGVtJywKICAgICdwZXJzb24uYW5nZWxlZ3Qn OiAgICAgICAgICAgICAgICAncGVyc29uJywKICAgICdwZXJzb24uZ2VhZW5kZXJ0JzogICAgICAg ICAgICAgICAncGVyc29uJywKICAgICdwZXJzb25lbi5yZWloZW5mb2xnZS5nZWFlbmRlcnQnOiAn cGVyc29uJywKICAgICdhZG1pbi5nZWFlbmRlcnQnOiAgICAgICAgICAgICAgICAnYWRtaW4nLAog ICAgJ2FkbWluLmNvbmZpZy5nZWFlbmRlcnQnOiAgICAgICAgICdhZG1pbicsCiAgICAnYWRtaW4u Z3J1cHBlLnVtYmVuYW5udCc6ICAgICAgICAgJ2FkbWluJywKICAgICdhZG1pbi5taWtyb3RlYW1z LmFuZ2VsZWd0JzogICAgICAnYWRtaW4nLAogICAgJ2FkbWluLm1pa3JvdGVhbXMubmV1JzogICAg ICAgICAgICdhZG1pbicsCiAgICAnYmV6ZWljaG51bmdlbi5nZWFlbmRlcnQnOiAgICAgICAgJ2Fk bWluJywKICAgICdlbWFpbHZvcmxhZ2VuLmdlYWVuZGVydCc6ICAgICAgICAnYWRtaW4nLAogICAg J2VtYWlsdHJpZ2dlci5nZWFlbmRlcnQnOiAgICAgICAgICdhZG1pbicsCiAgICAnZWluc3RlbGx1 bmdlbi5nZWFlbmRlcnQnOiAgICAgICAgJ2FkbWluJywKICAgICdmZWllcnRhZ2UuZ2VhZW5kZXJ0 JzogICAgICAgICAgICAnYWRtaW4nLAogICAgJ2Zlcmllbi5nZWFlbmRlcnQnOiAgICAgICAgICAg ICAgICdhZG1pbicsCiAgICAnc29uZGVydGVybWluZS5nZWFlbmRlcnQnOiAgICAgICAgJ2FkbWlu JywKICAgICdzdGFuZG9ydGUuZ2VhZW5kZXJ0JzogICAgICAgICAgICAnYWRtaW4nLAogICAgJ3Nj aGljaHRjb2Rlcy5nZWFlbmRlcnQnOiAgICAgICAgICdhZG1pbicsCiAgICAnZ3J1cHBlbi5nZWFl bmRlcnQnOiAgICAgICAgICAgICAgJ2FkbWluJywKICAgICdmdW5rdGlvbmVuLmdlYWVuZGVydCc6 ICAgICAgICAgICAnYWRtaW4nLAogICAgJ3NjaGljaHRmb2xnZW4uZ2VhZW5kZXJ0JzogICAgICAg ICdhZG1pbicsCiAgICAncm9sbGVuLmdlYWVuZGVydCc6ICAgICAgICAgICAgICAgJ2FkbWluJywK ICAgICdzdXBlclVzZXIuZ2VhZW5kZXJ0JzogICAgICAgICAgICAncm9sbGUnLAogICAgJ3N1cGVy dXNlci5nZWFlbmRlcnQnOiAgICAgICAgICAgICdyb2xsZScsCiAgICAnZmFjaGF1ZnNpY2h0Lmdl YWVuZGVydCc6ICAgICAgICAgJ3JvbGxlJywKICAgICdkaXJla3Rpb25zbGVpdHVuZy5nZWFlbmRl cnQnOiAgICAncm9sbGUnLAogICAgJ2Z1ZWhydW5nc3N0ZWxsZS5nZWFlbmRlcnQnOiAgICAgICdy b2xsZScsCiAgICAnd2FjaGxlaXR1bmcuZ2VhZW5kZXJ0JzogICAgICAgICAgJ3JvbGxlJywKICAg ICdoaW53ZWlzLmVyemV1Z3QnOiAgICAgICAgICAgICAgICAnaGlud2VpcycsCiAgICAnaGlud2Vp cy5rZW5udG5pcyc6ICAgICAgICAgICAgICAgJ2hpbndlaXMnLAogICAgJ3ZlcmFudHdvcnR1bmcu ZWluZ2VzcHJ1bmdlbic6ICAgICdwbGFudW5nJywKICAgICdiYWNrdXAuZXJzdGVsbHQnOiAgICAg ICAgICAgICAgICAnYmFja3VwJywKICAgICdiYWNrdXAud2llZGVyaGVyZ2VzdGVsbHQnOiAgICAg ICAnc3lzdGVtJywKICAgICdiYWNrdXAuZ2Vsb2VzY2h0JzogICAgICAgICAgICAgICAnYmFja3Vw JywKICAgICdwbGFudW5nLnJlc2V0JzogICAgICAgICAgICAgICAgICAnc3lzdGVtJywKICAgICdw bGFudW5nLmtvbXBsZXR0LWVyc2V0enQnOiAgICAgICAnc3lzdGVtJywKICAgICdkdW1teWRhdGVu LmVpbmdlc3BpZWx0JzogICAgICAgICAnc3lzdGVtJywKICAgICdrb21tZW50YXIuaGluenVnZWZ1 ZWd0JzogICAgICAgICAncGxhbnVuZycsCiAgICAna29tbWVudGFyLmdlbG9lc2NodCc6ICAgICAg ICAgICAgJ3BsYW51bmcnLAogICAgJ3BlcnNvbi5pbi5wYXBpZXJrb3JiJzogICAgICAgICAgICdw ZXJzb24nLAogICAgJ3BlcnNvbi5lbmRndWVsdGlnLmdlbG9lc2NodCc6ICAgICdwZXJzb24nLAog ICAgJ3Byb3Rva29sbC5nZWxvZXNjaHQnOiAgICAgICAgICAgICdzeXN0ZW0nLAogICAgJ21pdHRl aWx1bmcuYW5nZWxlZ3QnOiAgICAgICAgICAgICdhZG1pbicsCiAgICAnbWl0dGVpbHVuZy5nZWFl bmRlcnQnOiAgICAgICAgICAgJ2FkbWluJywKICAgICdtaXR0ZWlsdW5nLmdlbG9lc2NodCc6ICAg ICAgICAgICAnYWRtaW4nLAogICAgJ21pdHRlaWx1bmcudXBsb2FkJzogICAgICAgICAgICAgICdh ZG1pbicsCiAgICAnYXZhdGFyLmdlc2V0enQnOiAgICAgICAgICAgICAgICAgJ3BlcnNvbicsCiAg ICAnYXZhdGFyLmVudGZlcm50JzogICAgICAgICAgICAgICAgJ3BlcnNvbicKfTsKZnVuY3Rpb24g YWt0aW9uS2F0ZWdvcmllKGNvZGUpIHsKICAgIGlmIChBS1RJT05fS0FURUdPUklFW2NvZGVdKSBy ZXR1cm4gQUtUSU9OX0tBVEVHT1JJRVtjb2RlXTsKICAgIC8vIEhldXJpc3RpazogcHJhZWZpeCB2 b3IgZGVtIFB1bmt0IGVudHNjaGVpZGV0LgogICAgdmFyIHByZWYgPSAoY29kZSB8fCAnJykuc3Bs aXQoJy4nKVswXTsKICAgIGlmIChwcmVmID09PSAnemVsbGUnIHx8IHByZWYgPT09ICd6ZWxsZW4n IHx8IHByZWYgPT09ICdrb21tZW50YXInKSByZXR1cm4gJ3BsYW51bmcnOwogICAgaWYgKHByZWYg PT09ICdwZXJzb24nIHx8IHByZWYgPT09ICdwZXJzb25lbicpIHJldHVybiAncGVyc29uJzsKICAg IGlmIChwcmVmID09PSAnaGlud2VpcycpIHJldHVybiAnaGlud2Vpcyc7CiAgICBpZiAocHJlZiA9 PT0gJ2JhY2t1cCcpIHJldHVybiAnYmFja3VwJzsKICAgIGlmIChwcmVmID09PSAncGxhbnVuZycg fHwgcHJlZiA9PT0gJ2xvY2snKSByZXR1cm4gJ3N5c3RlbSc7CiAgICByZXR1cm4gJ2FkbWluJzsK fQoKLy8gSW5pdGlhbGVuIGZ1ZXIgZGVuIFVzZXItQXZhdGFyIGltIExvZ2J1Y2guIEFremVwdGll cnQgZGllIGJlcmVpdHMgenVtCi8vIEtsYXJuYW1lbiBhdWZnZWxvZXN0ZSBGb3JtICgiUGhpbGlw cCBSb2VzZ2VuIChGYWNoYXVmc2ljaHQpIiBvZGVyCi8vICJTYW5kcmEgTWVubmVrZSAoZWhlbWFs aWcpIikgdW5kIGZpbHRlcnQgZGllIEtsYW1tZXItQW5ub3RhdGlvbiByYXVzLgpmdW5jdGlvbiBf dXNlckluaXRpYWxlbihuYW1lKSB7CiAgICBpZiAoIW5hbWUpIHJldHVybiAnPyc7CiAgICB2YXIg Y2xlYW4gPSBuYW1lLnJlcGxhY2UoL1xzKlwoLio/XClccyovZywgJycpLnRyaW0oKTsKICAgIHZh ciB0ZWlsZSA9IGNsZWFuLnNwbGl0KC9ccysvKS5maWx0ZXIoQm9vbGVhbik7CiAgICBpZiAoIXRl aWxlLmxlbmd0aCkgcmV0dXJuICc/JzsKICAgIHZhciBpID0gdGVpbGVbMF0uY2hhckF0KDApLnRv VXBwZXJDYXNlKCk7CiAgICBpZiAodGVpbGUubGVuZ3RoID4gMSkgaSArPSB0ZWlsZVt0ZWlsZS5s ZW5ndGggLSAxXS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKTsKICAgIHJldHVybiBpOwp9CgovLyBa ZXJsZWd0ICJZWVlZLU1NLUREIEhIOm1tOnNzIiBpbiB7IGRhdHVtOiAiREQuTU0uWVlZWSIsIHpl aXQ6ICJISDptbSIgfS4KLy8gRnVlciBkYXMgendlaXplaWxpZ2UgVGltZXN0YW1wLUxheW91dCBp biBkZXIgVGFiZWxsZS4KZnVuY3Rpb24gX3plaXRzdGVtcGVsVGVpbGUodHMpIHsKICAgIGlmICgh dHMpIHJldHVybiB7IGRhdHVtOiAnJywgemVpdDogJycgfTsKICAgIHZhciBtID0gU3RyaW5nKHRz KS5tYXRjaCgvXihcZHs0fSktKFxkezJ9KS0oXGR7Mn0pW1xzVF0oXGR7Mn0pOihcZHsyfSkvKTsK ICAgIGlmICghbSkgcmV0dXJuIHsgZGF0dW06IHRzLCB6ZWl0OiAnJyB9OwogICAgcmV0dXJuIHsg ZGF0dW06IG1bM10gKyAnLicgKyBtWzJdICsgJy4nICsgbVsxXSwgemVpdDogbVs0XSArICc6JyAr IG1bNV0gfTsKfQoKLy8gPT09PT0gQmVudXR6ZXItS2xhcm5hbWUgPT09PT0KLy8gU2VydmVyIHNj aHJlaWJ0ICJET01BSU5cXHVzZXJuYW1lIi4gV2lyIGxvZXNlbiBkaWVzZSBOVy1LZW5udW5nIGdl Z2VuIGRpZQovLyBQZXJzb25hbHZlcndhbHR1bmcgYXVmIOKAlCB1bmQgZmFsbHMgZG9ydCBuaWNo dCBnZWZ1bmRlbiwgZ2VnZW4gZGllIEFkbWluLQovLyBMaXN0ZW4gKGZhY2hhdWZzaWNodCwgc3Vw ZXJVc2VyKS4gQXVjaCBpbmFrdGl2ZS9laGVtYWxpZ2UgUGVyc29uZW4gd2VyZGVuCi8vIGJlcnVl Y2tzaWNodGlndC4KCmZ1bmN0aW9uIF9rZW5udW5nVmFyaWFudGVuKHMpIHsKICAgIHZhciBvdXQg PSBbXTsKICAgIGlmICghcykgcmV0dXJuIG91dDsKICAgIHZhciBsID0gcy50b0xvd2VyQ2FzZSgp OwogICAgb3V0LnB1c2gobCk7CiAgICBpZiAobC5pbmRleE9mKCdcXCcpID49IDApIG91dC5wdXNo KGwuc3BsaXQoJ1xcJykucG9wKCkpOwogICAgcmV0dXJuIG91dDsKfQoKZnVuY3Rpb24gYmVudXR6 ZXJLbGFybmFtZShzZXJ2ZXJCZW51dHplcikgewogICAgaWYgKCFzZXJ2ZXJCZW51dHplcikgcmV0 dXJuICcodW5iZWthbm50KSc7CiAgICB2YXIgdmFyaWFudGVuID0gX2tlbm51bmdWYXJpYW50ZW4o c2VydmVyQmVudXR6ZXIpOwoKICAgIC8vIDEpIFBlcnNvbmFsdmVyd2FsdHVuZyDigJQgYXVjaCBp bmFrdGl2ZS9laGVtYWxpZ2UgYmVydWVja3NpY2h0aWdlbi4KICAgIHZhciBwZXJzb25lbiA9ICha LnBsYW51bmcgJiYgWi5wbGFudW5nLnBlcnNvbmVuKSB8fCBbXTsKICAgIGZvciAodmFyIGkgPSAw OyBpIDwgcGVyc29uZW4ubGVuZ3RoOyBpKyspIHsKICAgICAgICB2YXIgcCA9IHBlcnNvbmVuW2ld OwogICAgICAgIGlmICghcC5ud0tlbm51bmcpIGNvbnRpbnVlOwogICAgICAgIHZhciBwSyA9IFN0 cmluZyhwLm53S2VubnVuZykudG9Mb3dlckNhc2UoKTsKICAgICAgICBpZiAodmFyaWFudGVuLmlu ZGV4T2YocEspID49IDApIHsKICAgICAgICAgICAgdmFyIG5hbWUgPSAoKHAudm9ybmFtZSA/IHAu dm9ybmFtZSArICcgJyA6ICcnKSArIChwLm5hbWUgfHwgJycpKS50cmltKCk7CiAgICAgICAgICAg IGlmICghbmFtZSkgbmFtZSA9IHAubndLZW5udW5nOwogICAgICAgICAgICByZXR1cm4gbmFtZSAr IChwLmFrdGl2ID09PSBmYWxzZSA/ICcgKGVoZW1hbGlnKScgOiAnJyk7CiAgICAgICAgfQogICAg fQogICAgLy8gMikgQWRtaW4tTGlzdGVuIEZhY2hhdWZzaWNodCAvIFN1cGVyVXNlcgogICAgdmFy IGZhID0gKFouYWRtaW4gJiYgWi5hZG1pbi5mYWNoYXVmc2ljaHQpIHx8IFtdOwogICAgZm9yICh2 YXIgaiA9IDA7IGogPCBmYS5sZW5ndGg7IGorKykgewogICAgICAgIGlmIChmYVtqXS5ud0tlbm51 bmcgJiYgdmFyaWFudGVuLmluZGV4T2YoU3RyaW5nKGZhW2pdLm53S2VubnVuZykudG9Mb3dlckNh c2UoKSkgPj0gMCkgewogICAgICAgICAgICByZXR1cm4gKGZhW2pdLm5hbWUgfHwgZmFbal0ubndL ZW5udW5nKSArICcgKEZhY2hhdWZzaWNodCknOwogICAgICAgIH0KICAgIH0KICAgIHZhciBzdSA9 IChaLmFkbWluICYmIFouYWRtaW4uc3VwZXJVc2VyKSB8fCBbXTsKICAgIGZvciAodmFyIGsgPSAw OyBrIDwgc3UubGVuZ3RoOyBrKyspIHsKICAgICAgICBpZiAoc3Vba10ubndLZW5udW5nICYmIHZh cmlhbnRlbi5pbmRleE9mKFN0cmluZyhzdVtrXS5ud0tlbm51bmcpLnRvTG93ZXJDYXNlKCkpID49 IDApIHsKICAgICAgICAgICAgcmV0dXJuIChzdVtrXS5uYW1lIHx8IHN1W2tdLm53S2VubnVuZykg KyAnIChTdXBlclVzZXIpJzsKICAgICAgICB9CiAgICB9CiAgICAvLyAzKSBGYWxsYmFjazogUm9o LUtlbm51bmcgYW56ZWlnZW4sIGFiZXIgRG9tYWluIGFic2NobmVpZGVuCiAgICB2YXIgbCA9IHNl cnZlckJlbnV0emVyLnRvTG93ZXJDYXNlKCk7CiAgICByZXR1cm4gbC5pbmRleE9mKCdcXCcpID49 IDAgPyBzZXJ2ZXJCZW51dHplci5zcGxpdCgnXFwnKS5wb3AoKSA6IHNlcnZlckJlbnV0emVyOwp9 CgovLyA9PT09PSBEZXRhaWxzLUZvcm1hdHRlciA9PT09PQoKLy8gTWFwcGluZyB0ZWNobmlzY2hl ciBQZXJzb25lbmZlbGQtS2V5cyBhdWYgZGV1dHNjaGUgTGFiZWxzIGZ1ZXIgZGVuIERpZmYuCnZh ciBGRUxEX0xBQkVMID0gewogICAgbmFtZTogICAgICAgICAnTmFjaG5hbWUnLAogICAgdm9ybmFt ZTogICAgICAnVm9ybmFtZScsCiAgICBkaWVuc3RncmFkOiAgICdEaWVuc3RncmFkJywKICAgIGZ1 bmt0aW9uOiAgICAgJ0Z1bmt0aW9uJywKICAgIHJhbmc6ICAgICAgICAgJ1JhbmcnLAogICAgZ3J1 cHBlOiAgICAgICAnRGllbnN0Z3J1cHBlJywKICAgIG9lOiAgICAgICAgICAgJ09FJywKICAgIGRp ZW5zdG51bW1lcjogJ0RpZW5zdG51bW1lcicsCiAgICB0ZWxlZm9uOiAgICAgICdUZWxlZm9uJywK ICAgIGVtYWlsOiAgICAgICAgJ0UtTWFpbCcsCiAgICBud0tlbm51bmc6ICAgICdOVy1LZW5udW5n JywKICAgIGdlYnVydHNkYXR1bTogJ0dlYnVydHNkYXR1bScsCiAgICBha3RpdjogICAgICAgICdB a3RpdicsCiAgICBwb3NpdGlvbjogICAgICdQb3NpdGlvbicsCiAgICBlZGl0UmVjaHRlOiAgICdF ZGl0LVJlY2h0ZScKfTsKCmZ1bmN0aW9uIF9kaWZmQW56ZWlnZSh2KSB7CiAgICBpZiAodiA9PSBu dWxsIHx8IHYgPT09ICcnKSByZXR1cm4gJyhsZWVyKSc7CiAgICBpZiAodHlwZW9mIHYgPT09ICdi b29sZWFuJykgcmV0dXJuIHYgPyAnSmEnIDogJ05laW4nOwogICAgaWYgKHR5cGVvZiB2ID09PSAn b2JqZWN0JykgewogICAgICAgIHRyeSB7IHJldHVybiBKU09OLnN0cmluZ2lmeSh2KTsgfSBjYXRj aCAoXykgeyByZXR1cm4gU3RyaW5nKHYpOyB9CiAgICB9CiAgICByZXR1cm4gU3RyaW5nKHYpOwp9 CgpmdW5jdGlvbiBfcGVyc29uTGFiZWwocGVyc29uSWQsIHBNYXApIHsKICAgIGlmICghcGVyc29u SWQpIHJldHVybiAnJzsKICAgIHJldHVybiBwTWFwW1N0cmluZyhwZXJzb25JZCldIHx8ICgnUGVy c29uIElEICcgKyBwZXJzb25JZCk7Cn0KCmZ1bmN0aW9uIF9rdWVyemVUZXh0KHMsIG1heCkgewog ICAgaWYgKCFzKSByZXR1cm4gJyc7CiAgICBzID0gU3RyaW5nKHMpLnJlcGxhY2UoL1xzKy9nLCAn ICcpOwogICAgaWYgKHMubGVuZ3RoIDw9IG1heCkgcmV0dXJuIHM7CiAgICByZXR1cm4gcy5zbGlj ZSgwLCBtYXggLSAxKSArICfigKYnOwp9CgovLyBGb3JtYXRpZXJ0IGVpbiBlZGl0UmVjaHRlLU9i amVrdCAoe3BlcnNvbmVuSWRzOltdLGRpZW5zdGdydXBwZW46W10sc3RhbmRvcnRlOltdfSkKLy8g YWxzIEtsYXJ0ZXh0LUxpc3RlLCBzdGF0dCByb2hlbiBKU09OLUR1bXAgenUgemVpZ2VuLiBQZXJz b25lbi1JRHMgd2VyZGVuCi8vIGdlZ2VuIGRpZSBQZXJzb25hbHZlcndhbHR1bmcgYXVmZ2Vsb2Vz dC4gTGVlcmVyIEluaGFsdCA9ICLigJQiLgpmdW5jdGlvbiBfZWRpdFJlY2h0ZUt1cnoob2JqLCBw TWFwKSB7CiAgICBpZiAoIW9iaiB8fCB0eXBlb2Ygb2JqICE9PSAnb2JqZWN0JykgcmV0dXJuICc8 aT7igJQ8L2k+JzsKICAgIHZhciB0ZWlsZSA9IFtdOwogICAgdmFyIHBJZHMgPSBBcnJheS5pc0Fy cmF5KG9iai5wZXJzb25lbklkcykgPyBvYmoucGVyc29uZW5JZHMgOiBbXTsKICAgIHZhciBnciAg ID0gQXJyYXkuaXNBcnJheShvYmouZGllbnN0Z3J1cHBlbikgPyBvYmouZGllbnN0Z3J1cHBlbiA6 IFtdOwogICAgdmFyIHN0ICAgPSBBcnJheS5pc0FycmF5KG9iai5zdGFuZG9ydGUpID8gb2JqLnN0 YW5kb3J0ZSA6IFtdOwogICAgaWYgKHBJZHMubGVuZ3RoKSB7CiAgICAgICAgdmFyIG5hbWVuID0g cElkcy5tYXAoZnVuY3Rpb24oaWQpIHsKICAgICAgICAgICAgdmFyIG4gPSAocE1hcCB8fCB7fSlb U3RyaW5nKGlkKV07CiAgICAgICAgICAgIHJldHVybiBuID8gbi5zcGxpdCgnLCcpWzBdLnRyaW0o KSA6ICcjJyArIGlkOyAgIC8vIG51ciBOYWNobmFtZSwga29tcGFrdAogICAgICAgIH0pOwogICAg ICAgIHRlaWxlLnB1c2gocElkcy5sZW5ndGggKyAnIFBlcnNvbicgKyAocElkcy5sZW5ndGggPT09 IDEgPyAnJyA6ICdlbicpICsKICAgICAgICAgICAgICAgICAgICcgKCcgKyBlc2NhcGVIVE1MKG5h bWVuLmpvaW4oJywgJykpICsgJyknKTsKICAgIH0KICAgIGlmIChnci5sZW5ndGgpIHRlaWxlLnB1 c2goZ3IubGVuZ3RoICsgJyBEaWVuc3RncnVwcGUnICsgKGdyLmxlbmd0aCA9PT0gMSA/ICcnIDog J24nKSArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcgKCcgKyBlc2NhcGVIVE1MKGdy LmpvaW4oJywgJykpICsgJyknKTsKICAgIGlmIChzdC5sZW5ndGgpIHRlaWxlLnB1c2goc3QubGVu Z3RoICsgJyBTdGFuZG9ydCcgKyAoc3QubGVuZ3RoID09PSAxID8gJ2UnIDogJ2UnKSArCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICcgKCcgKyBlc2NhcGVIVE1MKHN0LmpvaW4oJywgJykp ICsgJyknKTsKICAgIGlmICghdGVpbGUubGVuZ3RoKSByZXR1cm4gJzxpPuKAlDwvaT4nOwogICAg cmV0dXJuIHRlaWxlLmpvaW4oJywgJyk7Cn0KZnVuY3Rpb24gX2VkaXRSZWNodGVEaWZmKGFsdCwg bmV1LCBwTWFwKSB7CiAgICByZXR1cm4gX2VkaXRSZWNodGVLdXJ6KGFsdCwgcE1hcCkgKyAnICZy YXJyOyAnICsgX2VkaXRSZWNodGVLdXJ6KG5ldSwgcE1hcCk7Cn0KCi8vIEhlbGZlcjogUGx1cmFs ICJFaW50cmFnL0VpbnRyw6RnZSIgbWl0IGtvcnJla3RlbSBkZXV0c2NoZW4gUGx1cmFsLgpmdW5j dGlvbiBfZWludHJhZ1BsdXJhbChuKSB7CiAgICBpZiAobiA9PSBudWxsKSByZXR1cm4gJyc7CiAg ICBuID0gTnVtYmVyKG4pOwogICAgaWYgKG4gPT09IDEpIHJldHVybiAnMSBFaW50cmFnJzsKICAg IHJldHVybiBuICsgJyBFaW50csOkZ2UnOwp9CgpmdW5jdGlvbiBkZXRhaWxzSHRtbChlLCBwTWFw KSB7CiAgICB2YXIgYWt0aW9uID0gZS5ha3Rpb24gfHwgJyc7CiAgICBpZiAoYWt0aW9uID09PSAn emVsbGUuZ2VhZW5kZXJ0JykgewogICAgICAgIHJldHVybiBfcGVyc29uTGFiZWwoZS5wZXJzb25J ZCwgcE1hcCkgKyAnIGFtICcgKyBkYXR1bUZvcm1hdERFKGUuZGF0dW0pICsKICAgICAgICAgICAg JzogPGNvZGU+JyArIGVzY2FwZUhUTUwoZS5hbHRlcldlcnQgfHwgJyhsZWVyKScpICsgJzwvY29k ZT4gJnJhcnI7IDxjb2RlPicgKyBlc2NhcGVIVE1MKGUubmV1ZXJXZXJ0IHx8ICcobGVlciknKSAr ICc8L2NvZGU+JzsKICAgIH0KICAgIGlmIChha3Rpb24gPT09ICdrb21tZW50YXIuZ2VhZW5kZXJ0 JykgewogICAgICAgIHZhciBhbHQgPSBlLmFsdGVyVGV4dCB8fCBlLnRleHQgfHwgJyc7ICAgLy8g J3RleHQnID0gYWx0ZXMgU2NoZW1hCiAgICAgICAgdmFyIG5ldSA9IGUubmV1ZXJUZXh0IHx8ICcn OwogICAgICAgIHZhciB6aWVsID0gX3BlcnNvbkxhYmVsKGUucGVyc29uSWQsIHBNYXApICsgJyBh bSAnICsgZGF0dW1Gb3JtYXRERShlLmRhdHVtKTsKICAgICAgICBpZiAoIWFsdCAmJiBuZXUpIHJl dHVybiB6aWVsICsgJzogbmV1IOKAnicgKyBlc2NhcGVIVE1MKF9rdWVyemVUZXh0KG5ldSwgODAp KSArICciJzsKICAgICAgICBpZiAoYWx0ICYmICFuZXUpIHJldHVybiB6aWVsICsgJzogZ2Vsw7Zz Y2h0ICh3YXIg4oCeJyArIGVzY2FwZUhUTUwoX2t1ZXJ6ZVRleHQoYWx0LCA4MCkpICsgJyIpJzsK ICAgICAgICBpZiAoYWx0ICYmIG5ldSkgIHJldHVybiB6aWVsICsgJzog4oCeJyArIGVzY2FwZUhU TUwoX2t1ZXJ6ZVRleHQoYWx0LCA2MCkpICsgJyIgJnJhcnI7IOKAnicgKyBlc2NhcGVIVE1MKF9r dWVyemVUZXh0KG5ldSwgNjApKSArICciJzsKICAgICAgICByZXR1cm4gemllbCArICcg4oCUIEtv bW1lbnRhcic7CiAgICB9CiAgICBpZiAoYWt0aW9uID09PSAna29tbWVudGFyLmhpbnp1Z2VmdWVn dCcgfHwgYWt0aW9uID09PSAna29tbWVudGFyLmdlbG9lc2NodCcpIHsKICAgICAgICAvLyBTZXJ2 ZXIgc2NocmVpYnQgbnVyIGVpbmUgVm9yc2NoYXUgKFZvbGx0ZXh0IGJsZWlidCBpbiBwbGFudW5n Lmpzb24pLgogICAgICAgIHZhciBremllbCA9IF9wZXJzb25MYWJlbChlLnBlcnNvbklkLCBwTWFw KSArIChlLmRhdHVtID8gJyBhbSAnICsgZGF0dW1Gb3JtYXRERShlLmRhdHVtKSA6ICcnKTsKICAg ICAgICB2YXIgdm9yc2NoYXUgPSBlLnRleHRWb3JzY2hhdSA/ICfigJ4nICsgZXNjYXBlSFRNTChl LnRleHRWb3JzY2hhdSkgKyAnIicgOiAnJzsKICAgICAgICBpZiAoYWt0aW9uID09PSAna29tbWVu dGFyLmdlbG9lc2NodCcpIHsKICAgICAgICAgICAgcmV0dXJuIGt6aWVsICsgJzogS29tbWVudGFy IGdlbMO2c2NodCcgKyAodm9yc2NoYXUgPyAnICh3YXIgJyArIHZvcnNjaGF1ICsgJyknIDogJycp OwogICAgICAgIH0KICAgICAgICByZXR1cm4ga3ppZWwgKyAnOiBuZXVlciBLb21tZW50YXInICsg KHZvcnNjaGF1ID8gJyAnICsgdm9yc2NoYXUgOiAnJyk7CiAgICB9CiAgICBpZiAoYWt0aW9uID09 PSAncGVyc29uLmluLnBhcGllcmtvcmInKSB7CiAgICAgICAgdmFyIHBrTGFiZWwgPSBlLm5hbWUg PyBlc2NhcGVIVE1MKGUubmFtZSkgOiBfcGVyc29uTGFiZWwoZS5wZXJzb25JZCwgcE1hcCk7CiAg ICAgICAgcmV0dXJuIHBrTGFiZWwgKyAnIGluIGRlbiBQYXBpZXJrb3JiIHZlcnNjaG9iZW4gKHdp ZWRlcmhlcnN0ZWxsYmFyKSc7CiAgICB9CiAgICBpZiAoYWt0aW9uID09PSAncGVyc29uLmVuZGd1 ZWx0aWcuZ2Vsb2VzY2h0JykgewogICAgICAgIHZhciBlZ0xhYmVsID0gZS5uYW1lID8gZXNjYXBl SFRNTChlLm5hbWUpIDogX3BlcnNvbkxhYmVsKGUucGVyc29uSWQsIHBNYXApOwogICAgICAgIHJl dHVybiBlZ0xhYmVsICsgJyBlbmRnw7xsdGlnIGdlbMO2c2NodCc7CiAgICB9CiAgICBpZiAoYWt0 aW9uID09PSAncHJvdG9rb2xsLmdlbG9lc2NodCcpIHsKICAgICAgICB2YXIgYW56ID0gKGUuYW56 YWhsICE9IG51bGwpID8gZS5hbnphaGwgOiAoZS5nZWxvZXNjaHQgIT0gbnVsbCA/IGUuZ2Vsb2Vz Y2h0IDogbnVsbCk7CiAgICAgICAgcmV0dXJuIGFueiAhPSBudWxsID8gKGFueiArICcgUHJvdG9r b2xsLUVpbnRyw6RnZSBnZWzDtnNjaHQnKSA6ICdMb2didWNoLVByb3Rva29sbCBnZWxlZXJ0JzsK ICAgIH0KICAgIGlmIChha3Rpb24gPT09ICdtaXR0ZWlsdW5nLmFuZ2VsZWd0JyB8fCBha3Rpb24g PT09ICdtaXR0ZWlsdW5nLmdlYWVuZGVydCcgfHwgYWt0aW9uID09PSAnbWl0dGVpbHVuZy5nZWxv ZXNjaHQnKSB7CiAgICAgICAgdmFyIG1UaXRlbCA9IGUudGl0ZWwgPyAn4oCeJyArIGVzY2FwZUhU TUwoZS50aXRlbCkgKyAnIicgOiAoZS5pZCAhPSBudWxsID8gJyMnICsgZXNjYXBlSFRNTChTdHJp bmcoZS5pZCkpIDogJycpOwogICAgICAgIHJldHVybiBtVGl0ZWwgfHwgJ01pdHRlaWx1bmcnOwog ICAgfQogICAgaWYgKGFrdGlvbiA9PT0gJ21pdHRlaWx1bmcudXBsb2FkJykgewogICAgICAgIHJl dHVybiAoZS5hcnQgPyBlc2NhcGVIVE1MKGUuYXJ0KSArICc6ICcgOiAnJykgKyBlc2NhcGVIVE1M KGUuZGF0ZWkgfHwgJycpICsKICAgICAgICAgICAgKGUuYnl0ZXMgIT0gbnVsbCA/ICcgKCcgKyBN YXRoLnJvdW5kKGUuYnl0ZXMgLyAxMDI0KSArICcgS0IpJyA6ICcnKTsKICAgIH0KICAgIGlmIChh a3Rpb24gPT09ICdhdmF0YXIuZ2VzZXR6dCcgfHwgYWt0aW9uID09PSAnYXZhdGFyLmVudGZlcm50 JykgewogICAgICAgIHZhciBhdkxhYmVsID0gX3BlcnNvbkxhYmVsKGUucGVyc29uSWQsIHBNYXAp OwogICAgICAgIHJldHVybiBhdkxhYmVsICsgKGFrdGlvbiA9PT0gJ2F2YXRhci5nZXNldHp0JyA/ ICcg4oCUIEF2YXRhciBnZXNldHp0JyA6ICcg4oCUIEF2YXRhciBlbnRmZXJudCcpOwogICAgfQog ICAgaWYgKGFrdGlvbiA9PT0gJ3BlcnNvbi5hbmdlbGVndCcpIHsKICAgICAgICB2YXIgZWlucmVp aHR4dCA9ICcnOwogICAgICAgIGlmIChlLmVpbnJlaWhlbiAmJiBlLmVpbnJlaWhlbiAhPT0gJ3Vu dGVuJykgZWlucmVpaHR4dCA9ICcgKCcgKyBlLmVpbnJlaWhlbiArIChlLnBvc2l0aW9uICE9IG51 bGwgPyAnIFBvc2l0aW9uICcgKyBlLnBvc2l0aW9uIDogJycpICsgJyknOwogICAgICAgIHJldHVy biAnTmV1ZSBQZXJzb246ICcgKyBlc2NhcGVIVE1MKGUubmFtZSB8fCAnKG9obmUgTmFtZW4pJykg KyBlaW5yZWlodHh0OwogICAgfQogICAgaWYgKGFrdGlvbiA9PT0gJ3BlcnNvbi5nZWFlbmRlcnQn KSB7CiAgICAgICAgdmFyIGxhYmVsID0gZS5uYW1lID8gZXNjYXBlSFRNTChlLm5hbWUpIDogX3Bl cnNvbkxhYmVsKGUucGVyc29uSWQsIHBNYXApOwogICAgICAgIGlmIChlLmdlYWVuZGVydCAmJiB0 eXBlb2YgZS5nZWFlbmRlcnQgPT09ICdvYmplY3QnICYmIE9iamVjdC5rZXlzKGUuZ2VhZW5kZXJ0 KS5sZW5ndGgpIHsKICAgICAgICAgICAgdmFyIHRlaWxlID0gT2JqZWN0LmtleXMoZS5nZWFlbmRl cnQpLm1hcChmdW5jdGlvbihmZWxkKSB7CiAgICAgICAgICAgICAgICB2YXIgZCA9IGUuZ2VhZW5k ZXJ0W2ZlbGRdIHx8IHt9OwogICAgICAgICAgICAgICAgdmFyIGZsID0gRkVMRF9MQUJFTFtmZWxk XSB8fCBmZWxkOwogICAgICAgICAgICAgICAgLy8gZWRpdFJlY2h0ZSBpc3QgZWluIE9iamVrdCBt aXQgcGVyc29uZW5JZHMvZGllbnN0Z3J1cHBlbi9zdGFuZG9ydGUg4oCUCiAgICAgICAgICAgICAg ICAvLyBlaW4gcm9oZXIgSlNPTi1EdW1wIHdhZXJlIHVubGVzZXJsaWNoLiBXaXIgdWViZXJzZXR6 ZW4gZGVuCiAgICAgICAgICAgICAgICAvLyBEaWZmIGluIGVpbmUgS2xhcnRleHQtWnVzYW1tZW5m YXNzdW5nIG1pdCBQZXJzb25lbi1OYW1lbi4KICAgICAgICAgICAgICAgIGlmIChmZWxkID09PSAn ZWRpdFJlY2h0ZScpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gJzxiPicgKyBlc2NhcGVI VE1MKGZsKSArICc6PC9iPiAnICsgX2VkaXRSZWNodGVEaWZmKGQuYWx0LCBkLm5ldSwgcE1hcCk7 CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gJzxiPicgKyBlc2NhcGVI VE1MKGZsKSArICc6PC9iPiA8Y29kZT4nICsKICAgICAgICAgICAgICAgICAgICBlc2NhcGVIVE1M KF9kaWZmQW56ZWlnZShkLmFsdCkpICsgJzwvY29kZT4gJnJhcnI7IDxjb2RlPicgKwogICAgICAg ICAgICAgICAgICAgIGVzY2FwZUhUTUwoX2RpZmZBbnplaWdlKGQubmV1KSkgKyAnPC9jb2RlPic7 CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICByZXR1cm4gbGFiZWwgKyAnICZtZGFzaDsgJyAr IHRlaWxlLmpvaW4oJyAmbWlkZG90OyAnKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuICdQZXJz b24gJyArIGxhYmVsICsgJyBnZcOkbmRlcnQnOwogICAgfQogICAgaWYgKGFrdGlvbiA9PT0gJ2hp bndlaXMuZXJ6ZXVndCcpIHsKICAgICAgICB2YXIgdHlwTGFiZWwgPSBfaGlud2Vpc1R5cExhYmVs KGUudHlwKTsKICAgICAgICB2YXIgZW1wZlRleHQgPSAnJzsKICAgICAgICBpZiAodHlwZW9mIGUu ZW1wZmFlbmdlciA9PT0gJ251bWJlcicpIHsKICAgICAgICAgICAgZW1wZlRleHQgPSBlLmVtcGZh ZW5nZXIgKyAnIEVtcGbDpG5nZXInOwogICAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShl LmVtcGZhZW5nZXIpKSB7CiAgICAgICAgICAgIGVtcGZUZXh0ID0gZS5lbXBmYWVuZ2VyLmxlbmd0 aCArICcgRW1wZsOkbmdlcic7CiAgICAgICAgfQogICAgICAgIHZhciB0ZWlsZSA9IFtdOwogICAg ICAgIGlmICh0eXBMYWJlbCkgdGVpbGUucHVzaCgnPGI+JyArIGVzY2FwZUhUTUwodHlwTGFiZWwp ICsgJzwvYj4nKTsKICAgICAgICBpZiAoZW1wZlRleHQpIHRlaWxlLnB1c2goZW1wZlRleHQpOwog ICAgICAgIHJldHVybiB0ZWlsZS5qb2luKCcgJm1kYXNoOyAnKTsKICAgIH0KICAgIGlmIChha3Rp b24gPT09ICd2ZXJhbnR3b3J0dW5nLmVpbmdlc3BydW5nZW4nKSB7CiAgICAgICAgdmFyIHBBdWZy dWVjayA9IF9wZXJzb25MYWJlbChlLnBlcnNvbklkLCBwTWFwKTsKICAgICAgICB2YXIgc0xldHRl ciA9IChlLnNjaGljaHQgfHwgJycpLmNoYXJBdCgwKTsKICAgICAgICB2YXIgc05hbWUgPSB7IEY6 ICdGcsO8aHNjaGljaHQnLCBTOiAnU3DDpHRzY2hpY2h0JywgTjogJ05hY2h0c2NoaWNodCcgfVtz TGV0dGVyXSB8fCBzTGV0dGVyOwogICAgICAgIHZhciBzdHVmZVR4dCA9IGUuc3R1ZmUgPyAoZS5z dHVmZSArICcuIFZlcmFudHdvcnR1bmcnKSA6ICdWZXJhbnR3b3J0dW5nJzsKICAgICAgICB2YXIg ZGF0dW1UeHQgPSBlLmRhdHVtID8gZGF0dW1Gb3JtYXRERShlLmRhdHVtKSA6ICcnOwogICAgICAg IHZhciB2b3JoaW5UeHQgPSAoZS52b3JoZXJXZXJ0ICE9IG51bGwgJiYgZS52b3JoZXJXZXJ0ICE9 PSAnJykKICAgICAgICAgICAgPyAnICh2b3JoZXIgPGNvZGU+JyArIGVzY2FwZUhUTUwoZS52b3Jo ZXJXZXJ0KSArICc8L2NvZGU+KScKICAgICAgICAgICAgOiAnICh2b3JoZXIgbmljaHRzIGVpbmdl dHJhZ2VuKSc7CiAgICAgICAgdmFyIHRlaWxlID0gWyc8Yj4nICsgZXNjYXBlSFRNTChwQXVmcnVl Y2spICsgJzwvYj4nXTsKICAgICAgICB0ZWlsZS5wdXNoKCdhdWZnZXLDvGNrdCBpbiAnICsgc3R1 ZmVUeHQgKyAnICcgKyBlc2NhcGVIVE1MKHNOYW1lKSk7CiAgICAgICAgaWYgKGRhdHVtVHh0KSB0 ZWlsZS5wdXNoKCdhbSAnICsgZXNjYXBlSFRNTChkYXR1bVR4dCkpOwogICAgICAgIHJldHVybiB0 ZWlsZS5qb2luKCcgJykgKyB2b3JoaW5UeHQ7CiAgICB9CiAgICBpZiAoYWt0aW9uID09PSAnaGlu d2Vpcy5rZW5udG5pcycpIHsKICAgICAgICAvLyBXaXIgdmVyc3VjaGVuLCBkZW4gaGlud2Vpc0lk IG5vY2ggaW4gWi5oaW53ZWlzZSAoYWt0dWVsbGUgTGlzdGUpCiAgICAgICAgLy8gYXVmenVsb2Vz ZW4uIFdlbm4gc2Nob24gd2VnZ2VwcnVudCwgZmFsbGVuIHdpciBhdWYgIkhpbndlaXMgI04iIHp1 cnVlY2suCiAgICAgICAgdmFyIHR5cExhYmVsMiA9IF9oaW53ZWlzVHlwTGFiZWwoZS50eXApOwog ICAgICAgIHZhciBoaWQgPSBlLmhpbndlaXNJZCAhPSBudWxsID8gZS5oaW53ZWlzSWQgOiAnJzsK ICAgICAgICBpZiAoIXR5cExhYmVsMiAmJiBoaWQgIT09ICcnKSB7CiAgICAgICAgICAgIHZhciBs aXN0ZSA9IChaLmhpbndlaXNlIHx8IFtdKTsKICAgICAgICAgICAgZm9yICh2YXIgaWggPSAwOyBp aCA8IGxpc3RlLmxlbmd0aDsgaWgrKykgewogICAgICAgICAgICAgICAgaWYgKFN0cmluZyhsaXN0 ZVtpaF0uaWQpID09PSBTdHJpbmcoaGlkKSkgeyB0eXBMYWJlbDIgPSBfaGlud2Vpc1R5cExhYmVs KGxpc3RlW2loXS50eXApOyBicmVhazsgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAg IHZhciBiYXNpcyA9IHR5cExhYmVsMiA/ICgnPGI+JyArIGVzY2FwZUhUTUwodHlwTGFiZWwyKSAr ICc8L2I+JykgOiAnJzsKICAgICAgICBpZiAoaGlkICE9PSAnJykgYmFzaXMgKz0gKGJhc2lzID8g JyAmbWRhc2g7ICcgOiAnJykgKyAnSGlud2VpcyAjJyArIGVzY2FwZUhUTUwoU3RyaW5nKGhpZCkp OwogICAgICAgIHJldHVybiBiYXNpcyB8fCAnSGlud2VpcyBxdWl0dGllcnQnOwogICAgfQogICAg aWYgKGFrdGlvbiA9PT0gJ3plbGxlbi5idWxrLmdlYWVuZGVydCcpIHsKICAgICAgICB2YXIgd2hv ID0gX3BlcnNvbkxhYmVsKGUucGVyc29uSWQsIHBNYXApOwogICAgICAgIHZhciB3ZXJ0VHh0ID0g ZS53ZXJ0ID8gJzxjb2RlPicgKyBlc2NhcGVIVE1MKGUud2VydCkgKyAnPC9jb2RlPicgOiAnPGk+ KGxlZXIpPC9pPic7CiAgICAgICAgdmFyIHNwYW5uZSA9ICcnOwogICAgICAgIGlmIChlLmVyc3Rl clRhZyAmJiBlLmxldHp0ZXJUYWcpIHsKICAgICAgICAgICAgc3Bhbm5lID0gKGUuZXJzdGVyVGFn ID09PSBlLmxldHp0ZXJUYWcpCiAgICAgICAgICAgICAgICA/IGRhdHVtRm9ybWF0REUoZS5lcnN0 ZXJUYWcpCiAgICAgICAgICAgICAgICA6IGRhdHVtRm9ybWF0REUoZS5lcnN0ZXJUYWcpICsgJyBi aXMgJyArIGRhdHVtRm9ybWF0REUoZS5sZXR6dGVyVGFnKTsKICAgICAgICB9CiAgICAgICAgdmFy IHRlaWxlID0gW107CiAgICAgICAgaWYgKHdobykgdGVpbGUucHVzaCh3aG8pOwogICAgICAgIGlm IChlLmFuemFobCAhPSBudWxsKSB0ZWlsZS5wdXNoKGUuYW56YWhsICsgJyBUYWcnICsgKGUuYW56 YWhsICE9PSAxID8gJ2UnIDogJycpKTsKICAgICAgICBpZiAoc3Bhbm5lKSB0ZWlsZS5wdXNoKHNw YW5uZSk7CiAgICAgICAgdGVpbGUucHVzaCgn4oaSICcgKyB3ZXJ0VHh0KTsKICAgICAgICBpZiAo ZS5hYmdlbGVobnQpIHRlaWxlLnB1c2goZS5hYmdlbGVobnQgKyAnIGFiZ2VsZWhudCcpOwogICAg ICAgIHJldHVybiB0ZWlsZS5qb2luKCcgwrcgJyk7CiAgICB9CiAgICBpZiAoYWt0aW9uID09PSAn dW50ZXJiZXNldHp1bmcucXVpdHRpZXJ0JykgewogICAgICAgIHZhciBwID0gX3BlcnNvbkxhYmVs KGUucGVyc29uSWQsIHBNYXApOwogICAgICAgIHZhciBzID0gZS5zY2hpY2h0IHx8ICcnOwogICAg ICAgIHJldHVybiBwICsgJyBhbSAnICsgZGF0dW1Gb3JtYXRERShlLmRhdHVtKSArICcgKCcgKyBl c2NhcGVIVE1MKHMpICsgJykg4oCUICcgKwogICAgICAgICAgICAnPGNvZGU+JyArIGVzY2FwZUhU TUwoZS5hbHRlcldlcnQgfHwgJyhsZWVyKScpICsgJzwvY29kZT4gJnJhcnI7IDxjb2RlPicgKyBl c2NhcGVIVE1MKGUubmV1ZXJXZXJ0IHx8ICcobGVlciknKSArICc8L2NvZGU+JzsKICAgIH0KICAg IGlmIChha3Rpb24gPT09ICdsb2NrLmZvcmNlJykgewogICAgICAgIHJldHVybiBfcGVyc29uTGFi ZWwoZS5wZXJzb25JZCwgcE1hcCkgKyAnIGFtICcgKyBkYXR1bUZvcm1hdERFKGUuZGF0dW0pICsg JyDigJQgRWRpdC1Mb2NrIHBlciAnICsgZXNjYXBlSFRNTChlLnJvbGxlIHx8ICdGb3JjZScpICsg JyDDvGJlcm5vbW1lbic7CiAgICB9CiAgICBpZiAoYWt0aW9uID09PSAnYmFja3VwLmVyc3RlbGx0 JykgewogICAgICAgIHJldHVybiBlc2NhcGVIVE1MKGUuZGF0ZWluYW1lIHx8ICcnKSArIChlLmlu aGFsdCA/ICcgKCcgKyBlc2NhcGVIVE1MKGUuaW5oYWx0KSArICcpJyA6ICcnKTsKICAgIH0KICAg IGlmIChha3Rpb24gPT09ICdiYWNrdXAud2llZGVyaGVyZ2VzdGVsbHQnKSB7CiAgICAgICAgcmV0 dXJuICdBdXMg4oCeJyArIGVzY2FwZUhUTUwoZS5xdWVsbGUgfHwgJycpICsgJyIg4oCUIFNpY2hl cnVuZyDigJ4nICsgZXNjYXBlSFRNTChlLnNpY2hlcnVuZyB8fCAnJykgKyAnIiDigJQgSW5oYWx0 OiAnICsgZXNjYXBlSFRNTChlLmluaGFsdCB8fCAnJyk7CiAgICB9CiAgICBpZiAoYWt0aW9uID09 PSAnYmFja3VwLmdlbG9lc2NodCcpIHsKICAgICAgICByZXR1cm4gZXNjYXBlSFRNTChlLmRhdGVp bmFtZSB8fCAnJyk7CiAgICB9CiAgICBpZiAoYWt0aW9uID09PSAnZmFjaGF1ZnNpY2h0LmdlYWVu ZGVydCcgfHwgYWt0aW9uID09PSAnZGlyZWt0aW9uc2xlaXR1bmcuZ2VhZW5kZXJ0JyB8fAogICAg ICAgIGFrdGlvbiA9PT0gJ2Z1ZWhydW5nc3N0ZWxsZS5nZWFlbmRlcnQnIHx8IGFrdGlvbiA9PT0g J3dhY2hsZWl0dW5nLmdlYWVuZGVydCcpIHsKICAgICAgICBpZiAoZS5hbnphaGwgPT0gbnVsbCkg cmV0dXJuICcnOwogICAgICAgIHJldHVybiBlLmFuemFobCA9PT0gMCA/ICdMaXN0ZSBrb21wbGV0 dCBnZWxlZXJ0JyA6ICdMaXN0ZSBnZXNwZWljaGVydDogJyArIF9laW50cmFnUGx1cmFsKGUuYW56 YWhsKTsKICAgIH0KICAgIGlmIChha3Rpb24gPT09ICdzdXBlclVzZXIuZ2VhZW5kZXJ0JyB8fCBh a3Rpb24gPT09ICdzdXBlcnVzZXIuZ2VhZW5kZXJ0JykgewogICAgICAgIGlmIChlLmFuemFobCA9 PSBudWxsKSByZXR1cm4gJyc7CiAgICAgICAgcmV0dXJuIGUuYW56YWhsID09PSAwID8gJ0xpc3Rl IGtvbXBsZXR0IGdlbGVlcnQnIDogJ0xpc3RlIGdlc3BlaWNoZXJ0OiAnICsgX2VpbnRyYWdQbHVy YWwoZS5hbnphaGwpOwogICAgfQogICAgaWYgKGFrdGlvbiA9PT0gJ2VtYWlsdHJpZ2dlci5nZWFl bmRlcnQnKSB7CiAgICAgICAgaWYgKGUuYW56YWhsX3RyaWdnZXIgPT0gbnVsbCkgcmV0dXJuICcn OwogICAgICAgIHJldHVybiBlLmFuemFobF90cmlnZ2VyICsgJyBUcmlnZ2VyIGdlc3BlaWNoZXJ0 JzsKICAgIH0KICAgIGlmIChha3Rpb24gPT09ICdwbGFudW5nLmtvbXBsZXR0LWVyc2V0enQnKSB7 CiAgICAgICAgdmFyIHRlaWxlID0gW107CiAgICAgICAgaWYgKGUuZWludHJhZWdlICE9IG51bGwp IHRlaWxlLnB1c2goZS5laW50cmFlZ2UgKyAnIEVpbnRyw6RnZScpOwogICAgICAgIGlmIChlLmtv bW1lbnRhcmUgIT0gbnVsbCkgdGVpbGUucHVzaChlLmtvbW1lbnRhcmUgKyAnIEtvbW1lbnRhcmUn KTsKICAgICAgICBpZiAoZS5iYWNrdXApIHRlaWxlLnB1c2goJ1NpY2hlcnVuZzogJyArIGVzY2Fw ZUhUTUwoZS5iYWNrdXApKTsKICAgICAgICByZXR1cm4gdGVpbGUuam9pbignIMK3ICcpOwogICAg fQogICAgaWYgKGFrdGlvbiA9PT0gJ2R1bW15ZGF0ZW4uZWluZ2VzcGllbHQnKSB7CiAgICAgICAg dmFyIHQyID0gW107CiAgICAgICAgaWYgKGUuZWludHJhZWdlICE9IG51bGwpIHQyLnB1c2goZS5l aW50cmFlZ2UgKyAnIEVpbnRyw6RnZScpOwogICAgICAgIGlmIChlLmJhY2t1cCkgdDIucHVzaCgn U2ljaGVydW5nOiAnICsgZXNjYXBlSFRNTChlLmJhY2t1cCkpOwogICAgICAgIHJldHVybiB0Mi5q b2luKCcgwrcgJyk7CiAgICB9CiAgICBpZiAoYWt0aW9uID09PSAncGxhbnVuZy5yZXNldCcpIHsK ICAgICAgICByZXR1cm4gZS5iYWNrdXAgPyAnU2ljaGVydW5nOiAnICsgZXNjYXBlSFRNTChlLmJh Y2t1cCkgOiAnJzsKICAgIH0KICAgIC8vIEdlbmVyaXNjaGVyIEZhbGxiYWNrOiBnZXplaWd0ZSBG ZWxkZXIgYXVzc2VyIGRlbiBTdGFuZGFyZC1XcmFwcGVyLUZlbGRlcm4KICAgIHZhciBza2lwID0g eyBha3Rpb246IDEsIHplaXRzdGVtcGVsOiAxLCBiZW51dHplcjogMSB9OwogICAgdmFyIHBhaXJz ID0gW107CiAgICBPYmplY3Qua2V5cyhlIHx8IHt9KS5mb3JFYWNoKGZ1bmN0aW9uKGspIHsKICAg ICAgICBpZiAoc2tpcFtrXSkgcmV0dXJuOwogICAgICAgIHZhciB2ID0gZVtrXTsKICAgICAgICBp ZiAodiA9PSBudWxsIHx8IHYgPT09ICcnKSByZXR1cm47CiAgICAgICAgaWYgKHR5cGVvZiB2ID09 PSAnb2JqZWN0JykgcmV0dXJuOwogICAgICAgIHBhaXJzLnB1c2goZXNjYXBlSFRNTChrKSArICc6 ICcgKyBlc2NhcGVIVE1MKFN0cmluZyh2KSkpOwogICAgfSk7CiAgICByZXR1cm4gcGFpcnMuam9p bignIMK3ICcpOwp9CgovLyA9PT09PSBSZW5kZXIgPT09PT0KCi8vIEJhY2t3YXJkLUtvbXBhdDog YWVsdGVyZSBQb3dlclNoZWxsLUVpbnRyYWVnZSBoYWJlbiBpaHJlIERldGFpbC1GZWxkZXIKLy8g dW50ZXIgYGRldGFpbHM6IHsgLi4uIH1gIGdlbmVzdGVkLiBXaXIgZmxhY2hlbiBkYXMgYmVpbSBM YWRlbiwgZGFtaXQgZGVyCi8vIERldGFpbC1SZW5kZXJlciBlaW5oZWl0bGljaCBhdWYgZS5mZWxk bmFtZSB6dWdyZWlmZW4ga2Fubi4KZnVuY3Rpb24gX2VpbnRyYWdOb3JtYWxpc2llcmVuKGUpIHsK ICAgIGlmIChlICYmIGUuZGV0YWlscyAmJiB0eXBlb2YgZS5kZXRhaWxzID09PSAnb2JqZWN0JyAm JiAhQXJyYXkuaXNBcnJheShlLmRldGFpbHMpKSB7CiAgICAgICAgT2JqZWN0LmtleXMoZS5kZXRh aWxzKS5mb3JFYWNoKGZ1bmN0aW9uKGspIHsKICAgICAgICAgICAgaWYgKCEoayBpbiBlKSkgZVtr XSA9IGUuZGV0YWlsc1trXTsKICAgICAgICB9KTsKICAgIH0KICAgIHJldHVybiBlOwp9CgovLyBM aWVmZXJ0IEhUTUwgZnVlciBlaW5lbiBXaWVkZXJoZXJzdGVsbGVuLUJ1dHRvbiDigJQgb2RlciBM ZWVyc3RyaW5nLAovLyB3ZW5uIGRlciBFaW50cmFnIG5pY2h0IChzaW5udm9sbCkgenVydWVja2dl bm9tbWVuIHdlcmRlbiBrYW5uLgpmdW5jdGlvbiBfcmVzdG9yZUJ1dHRvbkh0bWwoZSkgewogICAg dmFyIGFrdGlvbiA9IGUuYWt0aW9uOwogICAgdmFyIHJlc3QgPSBudWxsOwogICAgaWYgKGFrdGlv biA9PT0gJ3plbGxlLmdlYWVuZGVydCcgJiYgZS5wZXJzb25JZCAmJiBlLmRhdHVtICYmIGUuYWx0 ZXJXZXJ0ICE9PSB1bmRlZmluZWQpIHsKICAgICAgICByZXN0ID0geyB0eXA6ICd6ZWxsZScsIHBl cnNvbklkOiBlLnBlcnNvbklkLCBkYXR1bTogZS5kYXR1bSwgd2VydDogZS5hbHRlcldlcnQgPT0g bnVsbCA/ICcnIDogU3RyaW5nKGUuYWx0ZXJXZXJ0KSB9OwogICAgfSBlbHNlIGlmIChha3Rpb24g PT09ICd6ZWxsZW4uYnVsay5nZWFlbmRlcnQnICYmIGUuYWx0ZVdlcnRlICYmIHR5cGVvZiBlLmFs dGVXZXJ0ZSA9PT0gJ29iamVjdCcpIHsKICAgICAgICAvLyBhbHRlV2VydGUgPSB7ICI8ZGF0dW0+ fDxwZXJzb25JZD4iOiAiPGFsdGVyV2VydD4iIH0uIEluIGVpbiBBcnJheQogICAgICAgIC8vIHZv biB7IGRhdHVtLCBwZXJzb25JZCwgd2VydCB9IHVtcGFja2VuIOKAlCBkYXMgaXN0IGRlciBCb2R5 LCBkZW4KICAgICAgICAvLyAvYXBpL3BsYW51bmcvemVsbGVuLWJ1bGsgZnJpc3N0LiBMZWVyZSBh bHRlcldlcnQtU3RyaW5ncyBibGVpYmVuCiAgICAgICAgLy8gbGVlciwgZGFtaXQgZGllIFJlc3Rv cmUtTG9naWsgZGllIFplbGxlIHdpZWRlciBsZWVydC4KICAgICAgICB2YXIgZWludHJhZWdlID0g W107CiAgICAgICAgT2JqZWN0LmtleXMoZS5hbHRlV2VydGUpLmZvckVhY2goZnVuY3Rpb24oaykg ewogICAgICAgICAgICB2YXIgc2VwID0gay5pbmRleE9mKCd8Jyk7CiAgICAgICAgICAgIGlmIChz ZXAgPCAwKSByZXR1cm47CiAgICAgICAgICAgIHZhciBkYXR1bSA9IGsuc3Vic3RyaW5nKDAsIHNl cCk7CiAgICAgICAgICAgIHZhciBwaWQgPSBrLnN1YnN0cmluZyhzZXAgKyAxKTsKICAgICAgICAg ICAgdmFyIGFsdGVyV2VydCA9IGUuYWx0ZVdlcnRlW2tdOwogICAgICAgICAgICBlaW50cmFlZ2Uu cHVzaCh7IGRhdHVtOiBkYXR1bSwgcGVyc29uSWQ6IHBpZCwgd2VydDogYWx0ZXJXZXJ0ID09IG51 bGwgPyAnJyA6IFN0cmluZyhhbHRlcldlcnQpIH0pOwogICAgICAgIH0pOwogICAgICAgIGlmIChl aW50cmFlZ2UubGVuZ3RoKSB7CiAgICAgICAgICAgIHJlc3QgPSB7IHR5cDogJ3plbGxlbi1idWxr JywgZWludHJhZWdlOiBlaW50cmFlZ2UsIGFuemFobDogZWludHJhZWdlLmxlbmd0aCB9OwogICAg ICAgIH0KICAgIH0gZWxzZSBpZiAoYWt0aW9uID09PSAna29tbWVudGFyLmdlYWVuZGVydCcgJiYg ZS5wZXJzb25JZCAmJiBlLmRhdHVtKSB7CiAgICAgICAgLy8gJ2FsdGVyVGV4dCcgaXN0IGRhcyBh a3R1ZWxsZSBTY2hlbWEsICd0ZXh0JyBkYXMgYWx0ZSAodm9yIGRlbSBEaWZmLVBhdGNoKS4KICAg ICAgICB2YXIgYWx0VCA9IChlLmFsdGVyVGV4dCAhPT0gdW5kZWZpbmVkKSA/IGUuYWx0ZXJUZXh0 IDogKGUudGV4dCAhPT0gdW5kZWZpbmVkID8gZS50ZXh0IDogbnVsbCk7CiAgICAgICAgaWYgKGFs dFQgPT09IG51bGwpIHJldHVybiAnJzsKICAgICAgICByZXN0ID0geyB0eXA6ICdrb21tZW50YXIn LCBwZXJzb25JZDogZS5wZXJzb25JZCwgZGF0dW06IGUuZGF0dW0sIHRleHQ6IFN0cmluZyhhbHRU IHx8ICcnKSB9OwogICAgfSBlbHNlIGlmIChha3Rpb24gPT09ICdwZXJzb24uZ2VhZW5kZXJ0JyAm JiBlLnBlcnNvbklkICYmIGUuZ2VhZW5kZXJ0ICYmCiAgICAgICAgICAgICAgIHR5cGVvZiBlLmdl YWVuZGVydCA9PT0gJ29iamVjdCcgJiYgT2JqZWN0LmtleXMoZS5nZWFlbmRlcnQpLmxlbmd0aCkg ewogICAgICAgIHZhciBhbHQgPSB7fTsKICAgICAgICBPYmplY3Qua2V5cyhlLmdlYWVuZGVydCku Zm9yRWFjaChmdW5jdGlvbihrKSB7IGFsdFtrXSA9IGUuZ2VhZW5kZXJ0W2tdLmFsdDsgfSk7CiAg ICAgICAgcmVzdCA9IHsgdHlwOiAncGVyc29uJywgcGVyc29uSWQ6IGUucGVyc29uSWQsIGRhdGVu OiBhbHQgfTsKICAgIH0KICAgIGlmICghcmVzdCkgcmV0dXJuICcnOwogICAgcmV0dXJuICc8YnV0 dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImxvZy1yZXN0b3JlLWJ0biIgJyArCiAgICAgICAgICAg J2RhdGEtcmVzdD0iJyArIGVzY2FwZUF0dHIoSlNPTi5zdHJpbmdpZnkocmVzdCkpICsgJyIgJyAr CiAgICAgICAgICAgJ3RpdGxlPSJEaWVzZW4gU3RhbmQgd2llZGVyaGVyc3RlbGxlbiI+PHNwYW4g Y2xhc3M9ImxvZy1yZXN0b3JlLWljb24iPuKGujwvc3Bhbj48c3BhbiBjbGFzcz0ibG9nLXJlc3Rv cmUtdGV4dCI+V2llZGVyaGVyc3RlbGxlbjwvc3Bhbj48L2J1dHRvbj4nOwp9CgpmdW5jdGlvbiBf cmVzdG9yZUNsaWNrKGV2KSB7CiAgICB2YXIgYnRuID0gZXYudGFyZ2V0LmNsb3Nlc3QgJiYgZXYu dGFyZ2V0LmNsb3Nlc3QoJy5sb2ctcmVzdG9yZS1idG4nKTsKICAgIGlmICghYnRuKSByZXR1cm47 CiAgICB2YXIgcmVzdDsKICAgIHRyeSB7IHJlc3QgPSBKU09OLnBhcnNlKGJ0bi5nZXRBdHRyaWJ1 dGUoJ2RhdGEtcmVzdCcpIHx8ICcnKTsgfSBjYXRjaCAoXykgeyByZXR1cm47IH0KICAgIGlmICgh cmVzdCB8fCAhcmVzdC50eXApIHJldHVybjsKCiAgICB2YXIgZnJhZ2U7CiAgICBpZiAocmVzdC50 eXAgPT09ICd6ZWxsZScpICAgICAgICAgICAgICBmcmFnZSA9ICdTY2hpY2h0emVsbGUgd2lya2xp Y2ggYXVmIGRlbiBhbHRlbiBXZXJ0IHp1csO8Y2tzZXR6ZW4/JzsKICAgIGVsc2UgaWYgKHJlc3Qu dHlwID09PSAnemVsbGVuLWJ1bGsnKSAgIGZyYWdlID0gKHJlc3QuYW56YWhsIHx8IHJlc3QuZWlu dHJhZWdlLmxlbmd0aCkgKyAnIFplbGxlbiB3aXJrbGljaCBhdWYgZGllIGFsdGVuIFdlcnRlIHp1 csO8Y2tzZXR6ZW4/XG5cbkplZGUgZWluemVsbmUgWmVsbGUgYmVrb21tdCBkZW4gV2VydCwgZGVu IHNpZSB1bm1pdHRlbGJhciB2b3IgZGllc2VtIERyYWctRmlsbCBoYXR0ZS4gRGllIEFrdGlvbiBz ZWxic3Qgd2FuZGVydCB3aWVkZXIgaW5zIExvZ2J1Y2ggdW5kIGthbm4gZG9ydCBlcm5ldXQgcsO8 Y2tnw6RuZ2lnIGdlbWFjaHQgd2VyZGVuLic7CiAgICBlbHNlIGlmIChyZXN0LnR5cCA9PT0gJ2tv bW1lbnRhcicpICAgICBmcmFnZSA9ICdLb21tZW50YXIgd2lya2xpY2ggYXVmIGRlbiBhbHRlbiBU ZXh0IHp1csO8Y2tzZXR6ZW4/JzsKICAgIGVsc2UgaWYgKHJlc3QudHlwID09PSAncGVyc29uJykg ICAgICAgIGZyYWdlID0gJ1BlcnNvbmVuZGF0ZW4gd2lya2xpY2ggYXVmIGRlbiBhbHRlbiBTdGFu ZCB6dXLDvGNrc2V0emVuPyc7CiAgICBlbHNlIHJldHVybjsKCiAgICBiZXN0YWV0aWdlbihmcmFn ZSwgZnVuY3Rpb24oKSB7CiAgICAgICAgdmFyIHA7CiAgICAgICAgaWYgKHJlc3QudHlwID09PSAn emVsbGUnKSB7CiAgICAgICAgICAgIHAgPSBhcGlQb3N0KCcvYXBpL3BsYW51bmcvemVsbGUnLCB7 IHBlcnNvbklkOiByZXN0LnBlcnNvbklkLCBkYXR1bTogcmVzdC5kYXR1bSwgd2VydDogcmVzdC53 ZXJ0IH0pOwogICAgICAgIH0gZWxzZSBpZiAocmVzdC50eXAgPT09ICd6ZWxsZW4tYnVsaycpIHsK ICAgICAgICAgICAgLy8gRWluIGVpbnppZ2VyIFBPU1QgYW4gL2FwaS9wbGFudW5nL3plbGxlbi1i dWxrIG1pdCBhbGxlbiBhbHRlbgogICAgICAgICAgICAvLyBXZXJ0ZW4gYWxzIEJvZHkg4oCUIGRl ciBFbmRwb2ludCBsb2d0IGF1dG9tYXRpc2NoIGVpbiBuZXVlcwogICAgICAgICAgICAvLyB6ZWxs ZW4uYnVsay5nZWFlbmRlcnQgbWl0IEZSSVNDSEVOIGFsdGVXZXJ0ZSwgZGFkdXJjaCBpc3QgZGll CiAgICAgICAgICAgIC8vIFdpZWRlcmhlcnN0ZWxsdW5nIHNlbGJzdCB3aWVkZXIgcnVlY2tnYWVu Z2lnIHp1IG1hY2hlbi4KICAgICAgICAgICAgcCA9IGFwaVBvc3QoJy9hcGkvcGxhbnVuZy96ZWxs ZW4tYnVsaycsIHsgZWludHJhZWdlOiByZXN0LmVpbnRyYWVnZSB9KTsKICAgICAgICB9IGVsc2Ug aWYgKHJlc3QudHlwID09PSAna29tbWVudGFyJykgewogICAgICAgICAgICBwID0gYXBpUG9zdCgn L2FwaS9wbGFudW5nL2tvbW1lbnRhcicsIHsgcGVyc29uSWQ6IHJlc3QucGVyc29uSWQsIGRhdHVt OiByZXN0LmRhdHVtLCB0ZXh0OiByZXN0LnRleHQgfSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAg ICAgICAgcCA9IGFwaVB1dCgnL2FwaS9wZXJzb25lbi8nICsgcmVzdC5wZXJzb25JZCwgcmVzdC5k YXRlbik7CiAgICAgICAgfQogICAgICAgIHAudGhlbihmdW5jdGlvbihyZXNwKSB7CiAgICAgICAg ICAgIC8vIEJ1bGstUmVzdG9yZTogU2VydmVyIGxpZWZlcnQgeyBvaywgYWJnZWxlaG50IH0uIFdl bm4gZWluIFRlaWwKICAgICAgICAgICAgLy8gYWJnZWxlaG50IHd1cmRlIChQZXJzb24tVmVybHVz dCwgUmVjaHRlLVZlcmx1c3Qgc2VpdCBkZXIKICAgICAgICAgICAgLy8gT3JpZ2luYWwtQWVuZGVy dW5nKSwgVG9hc3QgYWxzIFdhcm51bmcgbWl0IGJlaWRlbiBaYWhsZW4uCiAgICAgICAgICAgIGlm IChyZXN0LnR5cCA9PT0gJ3plbGxlbi1idWxrJyAmJiByZXNwICYmIHR5cGVvZiByZXNwLm9rID09 PSAnbnVtYmVyJykgewogICAgICAgICAgICAgICAgdmFyIG9rWiA9IHJlc3Aub2s7CiAgICAgICAg ICAgICAgICB2YXIgYWJnWiA9IChyZXNwLmFiZ2VsZWhudCAmJiByZXNwLmFiZ2VsZWhudC5sZW5n dGgpIHx8IDA7CiAgICAgICAgICAgICAgICBpZiAoYWJnWiA+IDApIHsKICAgICAgICAgICAgICAg ICAgICB0b2FzdChva1ogKyAnIFplbGxlbiB3aWVkZXJoZXJnZXN0ZWxsdCwgJyArIGFiZ1ogKyAn IGFiZ2VsZWhudCcsICd3YXJudW5nJyk7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAg ICAgICAgICAgICAgIHRvYXN0KG9rWiArICcgWmVsbGVuIHdpZWRlcmhlcmdlc3RlbGx0JywgJ2Vy Zm9sZycpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAg ICAgICAgdG9hc3QoJ1dpZWRlcmhlcmdlc3RlbGx0JywgJ2VyZm9sZycpOwogICAgICAgICAgICB9 CiAgICAgICAgICAgIGlmICh0eXBlb2YgbG9nYnVjaEhvb2tzLmFmdGVyUmVzdG9yZSA9PT0gJ2Z1 bmN0aW9uJykgbG9nYnVjaEhvb2tzLmFmdGVyUmVzdG9yZSgpOwogICAgICAgICAgICBsb2didWNo TGFkZW4oKTsKICAgICAgICB9KS5jYXRjaChmdW5jdGlvbihlcnIpIHsKICAgICAgICAgICAgdG9h c3QoJ0ZlaGxlcjogJyArIChlcnIgJiYgZXJyLm1lc3NhZ2UgPyBlcnIubWVzc2FnZSA6ICd1bmJl a2FubnQnKSwgJ2ZlaGxlcicpOwogICAgICAgIH0pOwogICAgfSwgeyB0aXRlbDogJ1dpZWRlcmhl cnN0ZWxsZW4/JywgamFUZXh0OiAnV2llZGVyaGVyc3RlbGxlbicgfSk7Cn0KCi8vIEthdGVnb3Jp ZS1GaWx0ZXItQ2hpcHMgKGZydWVoZXIgd2FyZW4gZGllIEFrdGlvbi1QaWxscyByZWluIGRla29y YXRpdikuCi8vIFNsdWctUmVpaGVuZm9sZ2Ugc3BpZWdlbHQgZGllIExlc2UtUHJpb3JpdGFldCBp bSBQcm90b2tvbGwuCnZhciBMT0dfS0FURUdPUklFTiA9IFsKICAgIHsga2F0OiAnJywgICAgICAg IGxhYmVsOiAnQWxsZScgfSwKICAgIHsga2F0OiAncGxhbnVuZycsIGxhYmVsOiAnUGxhbnVuZycg fSwKICAgIHsga2F0OiAncGVyc29uJywgIGxhYmVsOiAnUGVyc29uJyB9LAogICAgeyBrYXQ6ICdh ZG1pbicsICAgbGFiZWw6ICdLb25maWd1cmF0aW9uJyB9LAogICAgeyBrYXQ6ICdyb2xsZScsICAg bGFiZWw6ICdSb2xsZW4nIH0sCiAgICB7IGthdDogJ2hpbndlaXMnLCBsYWJlbDogJ0hpbndlaXNl JyB9LAogICAgeyBrYXQ6ICdiYWNrdXAnLCAgbGFiZWw6ICdCYWNrdXBzJyB9LAogICAgeyBrYXQ6 ICdzeXN0ZW0nLCAgbGFiZWw6ICdTeXN0ZW0nIH0KXTsKdmFyIF9sb2dBa3RpdmVLYXQgPSAnJzsK Ci8vIENoaXAtTGVpc3RlIGVpbm1hbGlnIGluIGRlbiBMb2didWNoLUtvcGYgaW5qaXppZXJlbiAo ZGFzIFZpZXctTWFya3VwIGluCi8vIGRhdGEvc2FuaXRpemVyLmh0bWwgYmxlaWJ0IHVuYW5nZXRh c3RldCDigJQgd2lyIGhhZW5nZW4gbnVyIGVpbiBLaW5kIGFuKS4KZnVuY3Rpb24gX2xvZ0NoaXBC YXJTaWNoZXJzdGVsbGVuKCkgewogICAgaWYgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsb2ct a2F0LWNoaXBzJykpIHJldHVybjsKICAgIHZhciBrb3BmID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rv cignI2Fuc2ljaHQtbG9nYnVjaCAuYWRtaW4ta29wZicpOwogICAgaWYgKCFrb3BmKSByZXR1cm47 CiAgICB2YXIgYmFyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiAgICBiYXIuaWQg PSAnbG9nLWthdC1jaGlwcyc7CiAgICBiYXIuY2xhc3NOYW1lID0gJ2xvZy1rYXQtY2hpcHMnOwog ICAgYmFyLmlubmVySFRNTCA9IExPR19LQVRFR09SSUVOLm1hcChmdW5jdGlvbihrKSB7CiAgICAg ICAgcmV0dXJuICc8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImxvZy1rYXQtY2hpcCcgKwog ICAgICAgICAgICAoay5rYXQgPT09IF9sb2dBa3RpdmVLYXQgPyAnIGFrdGl2JyA6ICcnKSArICci IGRhdGEta2F0PSInICsgZXNjYXBlQXR0cihrLmthdCkgKyAnIj4nICsKICAgICAgICAgICAgZXNj YXBlSFRNTChrLmxhYmVsKSArICc8L2J1dHRvbj4nOwogICAgfSkuam9pbignJyk7CiAgICBiYXIu YWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbihlKSB7CiAgICAgICAgdmFyIGNoaXAg PSBlLnRhcmdldC5jbG9zZXN0KCcubG9nLWthdC1jaGlwJyk7CiAgICAgICAgaWYgKCFjaGlwKSBy ZXR1cm47CiAgICAgICAgX2xvZ0FrdGl2ZUthdCA9IGNoaXAuZ2V0QXR0cmlidXRlKCdkYXRhLWth dCcpIHx8ICcnOwogICAgICAgIGJhci5xdWVyeVNlbGVjdG9yQWxsKCcubG9nLWthdC1jaGlwJyku Zm9yRWFjaChmdW5jdGlvbihjKSB7CiAgICAgICAgICAgIGMuY2xhc3NMaXN0LnRvZ2dsZSgnYWt0 aXYnLCAoYy5nZXRBdHRyaWJ1dGUoJ2RhdGEta2F0JykgfHwgJycpID09PSBfbG9nQWt0aXZlS2F0 KTsKICAgICAgICB9KTsKICAgICAgICBfbG9nYnVjaEZpbHRlcm5KZXR6dCgpOwogICAgfSk7CiAg ICBrb3BmLmFwcGVuZENoaWxkKGJhcik7Cn0KCmZ1bmN0aW9uIGxvZ2J1Y2hMYWRlbigpIHsKICAg IHZhciB0Ym9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsb2ctdGJvZHknKTsKICAgIHRi b2R5LmlubmVySFRNTCA9ICc8dHI+PHRkIGNvbHNwYW49IjUiIHN0eWxlPSJ0ZXh0LWFsaWduOmNl bnRlcjtwYWRkaW5nOjIwcHgiPkxhZGUuLi48L3RkPjwvdHI+JzsKICAgIF9sb2dDaGlwQmFyU2lj aGVyc3RlbGxlbigpOwoKICAgIGFwaSgnL2FwaS9sb2didWNoJykudGhlbihmdW5jdGlvbihkYXRl bikgewogICAgICAgIHRyeSB7CiAgICAgICAgICAgIF9sb2didWNoUmVuZGVySW50ZXJuKHRib2R5 LCBkYXRlbik7CiAgICAgICAgfSBjYXRjaCAoZSkgewogICAgICAgICAgICByZW5kZXJFcnJvckJv eChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYW5zaWNodC1sb2didWNoJyksIGUsICdMb2didWNo Jyk7CiAgICAgICAgfQogICAgfSkuY2F0Y2goZnVuY3Rpb24oKSB7CiAgICAgICAgdGJvZHkuaW5u ZXJIVE1MID0gJzx0cj48dGQgY29sc3Bhbj0iNSIgc3R5bGU9InRleHQtYWxpZ246Y2VudGVyO3Bh ZGRpbmc6MjBweCI+RmVobGVyIGJlaW0gTGFkZW48L3RkPjwvdHI+JzsKICAgIH0pOwp9CgpmdW5j dGlvbiBfbG9nYnVjaFJlbmRlckludGVybih0Ym9keSwgZGF0ZW4pIHsKICAgICAgICBpZiAoIWRh dGVuIHx8ICFkYXRlbi5sZW5ndGgpIHsKICAgICAgICAgICAgdGJvZHkuaW5uZXJIVE1MID0gJzx0 cj48dGQgY29sc3Bhbj0iNSI+JyArCiAgICAgICAgICAgICAgICAnPGRpdiBjbGFzcz0iYWRtaW4t ZW1wdHkiPicgKwogICAgICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJhZG1pbi1lbXB0eS10 aXRlbCI+S2VpbmUgTG9nYnVjaC1FaW50csOkZ2U8L2Rpdj4nICsKICAgICAgICAgICAgICAgICAg ICAnPGRpdiBjbGFzcz0iYWRtaW4tZW1wdHktdGV4dCI+U29iYWxkIGplbWFuZCBldHdhcyDDpG5k ZXJ0LCBlcnNjaGVpbnQgaGllciBkaWUgSGlzdG9yaWUuIEZpbHRlciB6dXLDvGNrc2V0emVuLCBm YWxscyBha3Rpdi48L2Rpdj4nICsKICAgICAgICAgICAgICAgICc8L2Rpdj4nICsKICAgICAgICAg ICAgICAgICc8L3RkPjwvdHI+JzsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAg ICAvLyBQZXJzb25lbi1NYXAgIk5hY2huYW1lLCBWb3JuYW1lIiDigJQgYXVjaCBpbmFrdGl2ZSBQ ZXJzb25lbiBhdWZuZWhtZW4sCiAgICAgICAgLy8gZGFtaXQgZGllIEFuemVpZ2UgYXVjaCBmdWVy IGhpc3RvcmlzY2hlIEVpbnRyYWVnZSBiZXN0ZWhlbiBibGVpYnQuCiAgICAgICAgdmFyIHBNYXAg PSB7fTsKICAgICAgICAoWi5wbGFudW5nLnBlcnNvbmVuIHx8IFtdKS5mb3JFYWNoKGZ1bmN0aW9u KHApIHsKICAgICAgICAgICAgdmFyIG4gPSAocC5uYW1lIHx8ICcnKSArIChwLnZvcm5hbWUgPyAn LCAnICsgcC52b3JuYW1lIDogJycpOwogICAgICAgICAgICBwTWFwW1N0cmluZyhwLmlkKV0gPSBu ICsgKHAuYWt0aXYgPT09IGZhbHNlID8gJyAoZWhlbWFsaWcpJyA6ICcnKTsKICAgICAgICB9KTsK CiAgICAgICAgLy8gU2VydmVyIHNjaHJlaWJ0IG5ldWUgRWludHJhZWdlIGFtIEtvcGYgZGVyIExp c3RlIChwcmVwZW5kKSwKICAgICAgICAvLyBhbHNvIGlzdCBkYXRlbiBiZXJlaXRzICJuZXVlc3Rl IHp1ZXJzdCIg4oCUIGRpcmVrdCBzbyByZW5kZXJuLgogICAgICAgIHZhciBodG1sID0gJyc7CiAg ICAgICAgZGF0ZW4uZm9yRWFjaChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIGUgPSBfZWludHJh Z05vcm1hbGlzaWVyZW4oZSk7CiAgICAgICAgICAgIHZhciB0cyA9IF96ZWl0c3RlbXBlbFRlaWxl KGUuemVpdHN0ZW1wZWwpOwogICAgICAgICAgICB2YXIga2F0ID0gYWt0aW9uS2F0ZWdvcmllKGUu YWt0aW9uIHx8ICcnKTsKICAgICAgICAgICAgdmFyIGxibCA9IGFrdGlvbkxhYmVsKGUuYWt0aW9u IHx8ICcnKTsKICAgICAgICAgICAgdmFyIHVzZXIgPSBiZW51dHplcktsYXJuYW1lKGUuYmVudXR6 ZXIpOwogICAgICAgICAgICB2YXIgaW5pdGlhbGVuID0gX3VzZXJJbml0aWFsZW4odXNlcik7CiAg ICAgICAgICAgIGh0bWwgKz0gJzx0ciBjbGFzcz0ibG9nLXplaWxlIiBkYXRhLWthdD0iJyArIGVz Y2FwZUF0dHIoa2F0KSArICciPicgKwogICAgICAgICAgICAgICAgJzx0ZCBjbGFzcz0ibG9nLXpl aXQtemVsbGUiPicgKwogICAgICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJsb2ctemVpdC1k YXR1bSI+JyArIGVzY2FwZUhUTUwodHMuZGF0dW0pICsgJzwvZGl2PicgKwogICAgICAgICAgICAg ICAgICAgICc8ZGl2IGNsYXNzPSJsb2ctemVpdC11aHJ6ZWl0Ij4nICsgZXNjYXBlSFRNTCh0cy56 ZWl0KSArICc8L2Rpdj4nICsKICAgICAgICAgICAgICAgICc8L3RkPicgKwogICAgICAgICAgICAg ICAgJzx0ZCBjbGFzcz0ibG9nLWFrdGlvbi16ZWxsZSI+PHNwYW4gY2xhc3M9ImxvZy1waWxsIGxv Zy1waWxsLScgKyBrYXQgKyAnIj4nICsgZXNjYXBlSFRNTChsYmwpICsgJzwvc3Bhbj48L3RkPicg KwogICAgICAgICAgICAgICAgJzx0ZCBjbGFzcz0ibG9nLWJlbnV0emVyLXplbGxlIj4nICsKICAg ICAgICAgICAgICAgICAgICAnPHNwYW4gY2xhc3M9ImxvZy1iZW51dHplci1hdmF0YXIiPicgKyBl c2NhcGVIVE1MKGluaXRpYWxlbikgKyAnPC9zcGFuPicgKwogICAgICAgICAgICAgICAgICAgICc8 c3BhbiBjbGFzcz0ibG9nLWJlbnV0emVyLW5hbWUiPicgKyBlc2NhcGVIVE1MKHVzZXIpICsgJzwv c3Bhbj4nICsKICAgICAgICAgICAgICAgICc8L3RkPicgKwogICAgICAgICAgICAgICAgJzx0ZCBj bGFzcz0ibG9nLWRldGFpbHMtemVsbGUiPicgKyAoZGV0YWlsc0h0bWwoZSwgcE1hcCkgfHwgJzxz cGFuIGNsYXNzPSJsb2ctZGV0YWlscy1sZWVyIj7igJQ8L3NwYW4+JykgKyAnPC90ZD4nICsKICAg ICAgICAgICAgICAgICc8dGQgY2xhc3M9ImxvZy1yZXN0b3JlLXplbGxlIj4nICsgX3Jlc3RvcmVC dXR0b25IdG1sKGUpICsgJzwvdGQ+JyArCiAgICAgICAgICAgICAgICAnPC90cj4nOwogICAgICAg IH0pOwogICAgICAgIHRib2R5LmlubmVySFRNTCA9IGh0bWw7CiAgICAgICAgLy8gaWRlbXBvdGVu dCDigJQgb25jbGljayB1ZWJlcnNjaHJlaWJ0IHZvcmlnZW4gSGFuZGxlcgogICAgICAgIHRib2R5 Lm9uY2xpY2sgPSBfcmVzdG9yZUNsaWNrOwp9Cgp2YXIgX2xvZ0ZpbHRlclRpbWVyID0gbnVsbDsK ZnVuY3Rpb24gbG9nYnVjaEZpbHRlcm4oKSB7CiAgICAvLyBEZWJvdW5jZTogYmVpIGJpcyB6dSAx MDAwIFplaWxlbiB3dWVyZGUgZWluIEZpbHRlci1EdXJjaGxhdWYgcHJvCiAgICAvLyBUYXN0ZW5k cnVjayAocXVlcnlTZWxlY3RvckFsbCArIHRleHRDb250ZW50IHVlYmVyIGFsbGUgWmVpbGVuKSBy dWNrZWxuLgogICAgLy8gMTIwIG1zIFZlcnpvZWdlcnVuZyBmYXNzdCBzY2huZWxsZSBUYXN0ZW5m b2xnZW4genVzYW1tZW4uCiAgICBpZiAoX2xvZ0ZpbHRlclRpbWVyKSBjbGVhclRpbWVvdXQoX2xv Z0ZpbHRlclRpbWVyKTsKICAgIF9sb2dGaWx0ZXJUaW1lciA9IHNldFRpbWVvdXQoX2xvZ2J1Y2hG aWx0ZXJuSmV0enQsIDEyMCk7Cn0KZnVuY3Rpb24gX2xvZ2J1Y2hGaWx0ZXJuSmV0enQoKSB7CiAg ICB2YXIgZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbG9nLXN1Y2hlJyk7CiAgICBpZiAo IWVsKSByZXR1cm47ICAvLyBhbmRlcmVyIFZpZXctWnVzdGFuZCDigJQgcm9idXN0IHN0YXR0IEV4 Y2VwdGlvbgogICAgdmFyIHN1Y2hlID0gKGVsLnZhbHVlIHx8ICcnKS50b0xvd2VyQ2FzZSgpOwog ICAgdmFyIHplaWxlbiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJyNsb2ctdGJvZHkgdHIn KTsKICAgIHplaWxlbi5mb3JFYWNoKGZ1bmN0aW9uKHRyKSB7CiAgICAgICAgLy8gS2F0ZWdvcmll LUNoaXAgVU5EIFRleHRzdWNoZSBrb21iaW5pZXJ0IChiZWlkZSBtdWVzc2VuIHBhc3NlbikuCiAg ICAgICAgdmFyIGthdE9rID0gIV9sb2dBa3RpdmVLYXQgfHwgdHIuZ2V0QXR0cmlidXRlKCdkYXRh LWthdCcpID09PSBfbG9nQWt0aXZlS2F0OwogICAgICAgIHZhciB0ZXh0T2sgPSAhc3VjaGUgfHwg dHIudGV4dENvbnRlbnQudG9Mb3dlckNhc2UoKS5pbmRleE9mKHN1Y2hlKSA+PSAwOwogICAgICAg IHRyLnN0eWxlLmRpc3BsYXkgPSAoa2F0T2sgJiYgdGV4dE9rKSA/ICcnIDogJ25vbmUnOwogICAg fSk7Cn0KCi8vIEFjaHR1bmc6IGxvZ2J1Y2hIb29rcyBpc3QgYmVyZWl0cyBvYmVuIHZpYSBgZXhw b3J0IHZhciBsb2didWNoSG9va3NgCi8vIGV4cG9ydGllcnQg4oCUIGhpZXIgTklDSFQgZXJuZXV0 IGF1Zmxpc3Rlbiwgc29uc3QgU3ludGF4RXJyb3IuCmV4cG9ydCB7IGxvZ2J1Y2hMYWRlbiwgbG9n YnVjaEZpbHRlcm4sIGFrdGlvbkxhYmVsLCBiZW51dHplcktsYXJuYW1lIH07Cg== ### FILE: js/schichtteam.js | 6164 Ly8gPT09IHNjaGljaHR0ZWFtLmpzID09PQovLyAiTWVpbiBTY2hpY2h0LVRlYW0iIOKAlCAxNC1U YWdlLVVlYmVyc2ljaHQgYWxzIHJlYWQtb25seSBNb2RhbCwgZ2VvZWZmbmV0Ci8vIHVlYmVyIGRl biAiVGVhbSItQnV0dG9uIGltIEhldXRlLUthc3RlbiBkZXIgUGxhbnVuZ3NhbnNpY2h0LgovLwov LyBJZGVlOiBFaW4gREdML01BIHdpbGwgc2NobmVsbCBzZWhlbiwgd2VyIGluIFNFSU5FUiBTY2hp Y2h0IGFyYmVpdGV0LCBvaG5lCi8vIGR1cmNoIGFsbGUgfjQ2IFBlcnNvbmVuIHp1IHNjcm9sbGVu LiBEYXMgVGVhbSB3aXJkIEVJTk1BTCBhbmhhbmQgSEVVVEUKLy8gYmVzdGltbXQgKGFsbGUsIGRp ZSBsYXV0IFJvdGF0aW9uIGhldXRlIGluIGRlcnNlbGJlbiBGL1MvTi1TY2hpY2h0IHNpbmQgd2ll Ci8vIGljaCDigJQgc3RhbmRvcnR1ZWJlcmdyZWlmZW5kLCBpbmtsLiB3ZnIvZGZyLUtvbGxlZ2Vu KSB1bmQgZGFubiB1ZWJlciB2b2xsZQovLyAxNCBUYWdlIG1pdCBkZW4gamV3ZWlsaWdlbiBFaW50 cmFlZ2VuIGdlemVpZ3Qg4oCUIGF1Y2ggd2VubiBkaWUgUm90YXRpb24KLy8gendpc2NoZW5kcmlu IGtpcHB0IChmZXN0ZXMgVGVhbSwgcnVoaWdlIERhcnN0ZWxsdW5nOyBVc2VyLVd1bnNjaCAyMDI2 LTA1LTI3KS4KLy8KLy8gV0QtU29uZGVyZmFsbCAoTm90dGVib2htL0dvdG90LCBQb29sLVN0YW5k b3J0ZSBvaG5lIHNjaGljaHRmb2xnZSk6IGRhIGtlaW5lCi8vIGJlcmVjaGVuYmFyZSBSb3RhdGlv biBleGlzdGllcnQsIGJlc3RpbW10IGRpZSB0YXRzYWVjaGxpY2ggZWluZ2V0cmFnZW5lCi8vIFRh Z2Vzc2NoaWNodCAoRi1ER0wvUy1ER0wvTi1ER0wgaGV1dGUpICJtZWluZSBTY2hpY2h0Ii4KCmlt cG9ydCB7IFogfSBmcm9tICcuL2NvcmVfc3RhdGUuanMnOwppbXBvcnQgewogICAgZXNjYXBlSFRN TCwgZXNjYXBlQXR0ciwgZGF0dW1TdHIsIGRhdHVtRm9ybWF0REUsIGRhdHVtS3VyekRFLAogICAg d29jaGVudGFnS3VyeiwgaXN0V29jaGVuZW5kZSwgYXZhdGFyS3JlaXNIdG1sLCBwZXJzb25TY2hp Y2h0QW0KfSBmcm9tICcuL2NvcmVfdXRpbC5qcyc7CmltcG9ydCB7IG1vZGFsWmVpZ2VuLCBtb2Rh bFNjaGxpZXNzZW4sIHRvYXN0IH0gZnJvbSAnLi91aV9kaWFsb2cuanMnOwoKdmFyIFNDSElDSFRf TkFNRSA9IHsgRjogJ0Zyw7xoZGllbnN0JywgUzogJ1Nww6R0ZGllbnN0JywgTjogJ05hY2h0ZGll bnN0JyB9OwoKLy8gRWluZ2V0cmFnZW5lIFNjaGljaHQgYXVzIGVpbmVtIENvZGUgYWJsZWl0ZW46 ICJGLS4uLiIvIlMtLi4uIi8iTi0uLi4iIC0+IEYvUy9OLgovLyBEZWNrdCBGLURHTC9TLURHTC9O LURHTCwgRi1XREYsIEYtRkJQLCAuLi4gYWIuIFVybC9rci93ZnIvZGZyLy4uLiAtPiBudWxsLgpm dW5jdGlvbiBzY2hpY2h0QXVzQ29kZShjb2RlKSB7CiAgICBpZiAoIWNvZGUgfHwgdHlwZW9mIGNv ZGUgIT09ICdzdHJpbmcnIHx8IGNvZGUuY2hhckF0KDEpICE9PSAnLScpIHJldHVybiBudWxsOwog ICAgdmFyIGMgPSBjb2RlLmNoYXJBdCgwKTsKICAgIHJldHVybiAoYyA9PT0gJ0YnIHx8IGMgPT09 ICdTJyB8fCBjID09PSAnTicpID8gYyA6IG51bGw7Cn0KCi8vIFNjaGljaHQgZWluZXIgUGVyc29u IGFuIGVpbmVtIFRhZzogenVlcnN0IFJvdGF0aW9uIChpZ25vcmllcnQgZGVuIEVpbnRyYWcsCi8v IGVyZmFzc3QgYWxzbyB3ZnIvZGZyLUtvbGxlZ2VuIGtvcnJla3QpLCBzb25zdCBkaWUgZWluZ2V0 cmFnZW5lIFRhZ2Vzc2NoaWNodAovLyAoV0QtRmFsbCksIHNvbnN0IG51bGwuCmZ1bmN0aW9uIHNj aGljaHRWb24ocGVyc29uLCBkYXR1bSkgewogICAgdmFyIHMgPSBwZXJzb25TY2hpY2h0QW0ocGVy c29uLCBkYXR1bSk7CiAgICBpZiAocykgcmV0dXJuIHM7CiAgICB2YXIgZSA9IChaLnBsYW51bmcu ZWludHJhZWdlIHx8IHt9KVtkYXR1bV0gfHwge307CiAgICByZXR1cm4gc2NoaWNodEF1c0NvZGUo ZVtTdHJpbmcocGVyc29uLmlkKV0gfHwgJycpOwp9CgpleHBvcnQgZnVuY3Rpb24gc2NoaWNodFRl YW1Nb2RhbE9lZmZuZW4oKSB7CiAgICB2YXIgbWUgPSAoWi5wZXJzb25lbiB8fCBbXSkuZmluZChm dW5jdGlvbihwKSB7IHJldHVybiBTdHJpbmcocC5pZCkgPT09IFN0cmluZyhaLm1laW5lUGVyc29u SWQpOyB9KTsKICAgIGlmIChaLm1laW5lUGVyc29uSWQgPT0gbnVsbCB8fCAhbWUpIHsKICAgICAg ICB0b2FzdCgnS2VpbmUgUGVyc29uIHp1Z2VvcmRuZXQg4oCUIFNjaGljaHQtVGVhbSBuaWNodCBh YmxlaXRiYXIuJywgJ2luZm8nKTsKICAgICAgICByZXR1cm47CiAgICB9CiAgICB2YXIgaGV1dGUg PSBaLmhldXRlU3RyOwogICAgdmFyIHppZWwgPSBzY2hpY2h0Vm9uKG1lLCBoZXV0ZSk7CiAgICBp ZiAoIXppZWwpIHsKICAgICAgICB0b2FzdCgnRsO8ciBoZXV0ZSBpc3Qga2VpbmUgU2NoaWNodCBo aW50ZXJsZWd0IOKAlCBTY2hpY2h0LVRlYW0gbmljaHQgYWJsZWl0YmFyLicsICdpbmZvJyk7CiAg ICAgICAgcmV0dXJuOwogICAgfQoKICAgIC8vIFRlYW0gZWlubWFsaWcgYW5oYW5kIEhFVVRFIGJl c3RpbW1lbi4gWi5wZXJzb25lbiBpc3QgYmVyZWl0cyBuYWNoCiAgICAvLyBHcnVwcGVuLVJhbmcg KyBwb3NpdGlvbiBzb3J0aWVydCDigJQgUmVpaGVuZm9sZ2UgdWViZXJuZWhtZW4uCiAgICB2YXIg dGVhbSA9IChaLnBlcnNvbmVuIHx8IFtdKS5maWx0ZXIoZnVuY3Rpb24ocCkgeyByZXR1cm4gc2No aWNodFZvbihwLCBoZXV0ZSkgPT09IHppZWw7IH0pOwogICAgaWYgKHRlYW0uaW5kZXhPZihtZSkg PCAwKSB0ZWFtLnVuc2hpZnQobWUpOyAvLyBTaWNoZXJoZWl0cy1OZXR6CgogICAgLy8gMTQgVGFn ZSBhYiBoZXV0ZS4KICAgIHZhciBzdGFydCA9IG5ldyBEYXRlKGhldXRlICsgJ1QwMDowMDowMCcp OwogICAgdmFyIHRhZ2UgPSBbXTsKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTQ7IGkrKykgewog ICAgICAgIHZhciBkID0gbmV3IERhdGUoc3RhcnQpOwogICAgICAgIGQuc2V0RGF0ZShzdGFydC5n ZXREYXRlKCkgKyBpKTsKICAgICAgICB0YWdlLnB1c2goZCk7CiAgICB9CgogICAgLy8gLS0tLS0g S29wZnplaWxlIC0tLS0tCiAgICB2YXIga29wZiA9ICc8dGggY2xhc3M9InN0LXRoLW5hbWUiPlBl cnNvbjwvdGg+JzsKICAgIHRhZ2UuZm9yRWFjaChmdW5jdGlvbihkKSB7CiAgICAgICAgdmFyIHdl ID0gaXN0V29jaGVuZW5kZShkKSA/ICcgc3Qtd2UnIDogJyc7CiAgICAgICAga29wZiArPSAnPHRo IGNsYXNzPSJzdC10aC10YWcnICsgd2UgKyAnIj4nICsKICAgICAgICAgICAgJzxkaXYgY2xhc3M9 InN0LXRoLWRhdHVtIj4nICsgZXNjYXBlSFRNTChkYXR1bUt1cnpERShkKSkgKyAnPC9kaXY+JyAr CiAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJzdC10aC13dGFnIj4nICsgZXNjYXBlSFRNTCh3b2No ZW50YWdLdXJ6KGQpKSArICc8L2Rpdj4nICsKICAgICAgICAgICAgJzwvdGg+JzsKICAgIH0pOwoK ICAgIC8vIC0tLS0tIFBlcnNvbmVuLVplaWxlbiAtLS0tLQogICAgdmFyIHplaWxlbiA9ICcnOwog ICAgdGVhbS5mb3JFYWNoKGZ1bmN0aW9uKHApIHsKICAgICAgICB2YXIgaXN0SWNoID0gU3RyaW5n KHAuaWQpID09PSBTdHJpbmcoWi5tZWluZVBlcnNvbklkKTsKICAgICAgICB2YXIgbWV0YSA9IChw LmdydXBwZSB8fCAnPycpICsgKHAub2UgPyAnIMK3ICcgKyBwLm9lIDogJycpOwogICAgICAgIHZh ciBuYW1lWmVsbGUgPSAnPHRkIGNsYXNzPSJzdC10ZC1uYW1lIj4nICsKICAgICAgICAgICAgJzxk aXYgY2xhc3M9InN0LXBlcnNvbiI+JyArCiAgICAgICAgICAgICAgICBhdmF0YXJLcmVpc0h0bWwo cCwgMjIpICsKICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJzdC1wZXJzb24tdHh0Ij4nICsK ICAgICAgICAgICAgICAgICAgICAnPGRpdiBjbGFzcz0ic3QtcGVyc29uLW5hbWUiPicgKyBlc2Nh cGVIVE1MKHAubmFtZSB8fCAnJykgKwogICAgICAgICAgICAgICAgICAgICAgICAocC52b3JuYW1l ID8gJyAnICsgZXNjYXBlSFRNTChwLnZvcm5hbWUpIDogJycpICsgJzwvZGl2PicgKwogICAgICAg ICAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJzdC1wZXJzb24tbWV0YSI+JyArIGVzY2FwZUhUTUwo bWV0YSkgKyAnPC9kaXY+JyArCiAgICAgICAgICAgICAgICAnPC9kaXY+JyArCiAgICAgICAgICAg ICc8L2Rpdj48L3RkPic7CgogICAgICAgIHZhciB6ZWxsZW4gPSAnJzsKICAgICAgICB0YWdlLmZv ckVhY2goZnVuY3Rpb24oZCkgewogICAgICAgICAgICB2YXIgZFN0ciA9IGRhdHVtU3RyKGQpOwog ICAgICAgICAgICB2YXIgZSA9IChaLnBsYW51bmcuZWludHJhZWdlIHx8IHt9KVtkU3RyXSB8fCB7 fTsKICAgICAgICAgICAgdmFyIHdlcnQgPSBlW1N0cmluZyhwLmlkKV0gfHwgJyc7CiAgICAgICAg ICAgIHZhciBmYXJiZW4gPSBaLmNvZGVNYXBbd2VydF0gfHwge307CiAgICAgICAgICAgIHZhciB3 ZSA9IGlzdFdvY2hlbmVuZGUoZCkgPyAnIHN0LXdlJyA6ICcnOwogICAgICAgICAgICB2YXIgc3R5 bGUgPSAnJzsKICAgICAgICAgICAgdmFyIGFuemVpZ2UgPSAnJzsKICAgICAgICAgICAgaWYgKHdl cnQgJiYgZmFyYmVuLmhpbnRlcmdydW5kKSB7CiAgICAgICAgICAgICAgICBzdHlsZSA9ICcgc3R5 bGU9ImJhY2tncm91bmQtY29sb3I6JyArIGVzY2FwZUF0dHIoZmFyYmVuLmhpbnRlcmdydW5kKSAr CiAgICAgICAgICAgICAgICAgICAgICAgICc7Y29sb3I6JyArIGVzY2FwZUF0dHIoZmFyYmVuLnNj aHJpZnQgfHwgJyMwMDAnKSArICciJzsKICAgICAgICAgICAgICAgIGFuemVpZ2UgPSBlc2NhcGVI VE1MKGZhcmJlbi5rdWVyemVsIHx8IHdlcnQpOwogICAgICAgICAgICB9IGVsc2UgaWYgKHdlcnQp IHsKICAgICAgICAgICAgICAgIGFuemVpZ2UgPSBlc2NhcGVIVE1MKHdlcnQpOwogICAgICAgICAg ICB9CiAgICAgICAgICAgIHplbGxlbiArPSAnPHRkIGNsYXNzPSJzdC10ZC10YWcnICsgd2UgKyAn IicgKyBzdHlsZSArICcgdGl0bGU9IicgKyBlc2NhcGVBdHRyKHdlcnQpICsgJyI+JyArIGFuemVp Z2UgKyAnPC90ZD4nOwogICAgICAgIH0pOwoKICAgICAgICB6ZWlsZW4gKz0gJzx0ciBjbGFzcz0i c3QtemVpbGUnICsgKGlzdEljaCA/ICcgc3QtemVpbGUtaWNoJyA6ICcnKSArICciPicgKyBuYW1l WmVsbGUgKyB6ZWxsZW4gKyAnPC90cj4nOwogICAgfSk7CgogICAgdmFyIGtvZXJwZXIgPQogICAg ICAgICc8ZGl2IGNsYXNzPSJzdC1rb3BmaW5mbyI+JyArCiAgICAgICAgICAgICc8c3BhbiBjbGFz cz0ic3QtYmFkZ2Ugc3QtYmFkZ2UtJyArIHppZWwgKyAnIj4nICsgZXNjYXBlSFRNTChTQ0hJQ0hU X05BTUVbemllbF0gfHwgemllbCkgKyAnPC9zcGFuPicgKwogICAgICAgICAgICAnPHNwYW4gY2xh c3M9InN0LXplaXRyYXVtIj4xNCBUYWdlIGFiICcgKyBlc2NhcGVIVE1MKGRhdHVtRm9ybWF0REUo aGV1dGUpKSArICcgwrcgJyArCiAgICAgICAgICAgICAgICB0ZWFtLmxlbmd0aCArICcgUGVyc29u ZW48L3NwYW4+JyArCiAgICAgICAgICAgICc8c3BhbiBjbGFzcz0ic3QtaGlud2VpcyI+VGVhbSBi ZXN0aW1tdCBuYWNoIGhldXRpZ2VyIFNjaGljaHQgKGlua2wuIFdhY2hmcmVpL0RpZW5zdGZyZWkg bGF1dCBSb3RhdGlvbikuPC9zcGFuPicgKwogICAgICAgICc8L2Rpdj4nICsKICAgICAgICAnPGRp diBjbGFzcz0ic3Qtc2Nyb2xsIj48dGFibGUgY2xhc3M9InN0LXRhYmVsbGUiPjx0aGVhZD48dHI+ JyArIGtvcGYgKyAnPC90cj48L3RoZWFkPicgKwogICAgICAgICc8dGJvZHk+JyArIHplaWxlbiAr ICc8L3Rib2R5PjwvdGFibGU+PC9kaXY+JzsKCiAgICB2YXIgZnVzcyA9ICc8YnV0dG9uIGNsYXNz PSJidG4iIGlkPSJzdC1zY2hsaWVzc2VuIiB0eXBlPSJidXR0b24iPlNjaGxpZcOfZW48L2J1dHRv bj4nOwoKICAgIG1vZGFsWmVpZ2VuKCdNZWluIFNjaGljaHQtVGVhbScsIGtvZXJwZXIsIGZ1c3Ms IG51bGwsIG51bGwsIHsgcmVpbmVyRGlhbG9nOiB0cnVlIH0pOwogICAgdmFyIG1JbmhhbHQgPSBk b2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjbW9kYWwtb3ZlcmxheSAubW9kYWwtaW5oYWx0Jyk7CiAg ICBpZiAobUluaGFsdCkgbUluaGFsdC5jbGFzc0xpc3QuYWRkKCdtb2RhbC1pbmhhbHQtZ3Jvc3Mn KTsKICAgIHZhciBidG4gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3Qtc2NobGllc3Nlbicp OwogICAgaWYgKGJ0bikgYnRuLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgbW9kYWxTY2hsaWVz c2VuKTsKfQo= ### FILE: js/statistik.js | 122035 Ly8gPT09IHN0YXRpc3Rpay5qcyA9PT0KLy8gU3RhdGlzdGlrLVRhYjogS1BJcywgc29ydGllcmJh cmUgQmFsa2VuLUNoYXJ0cyBwcm8gUGVyc29uLCBGYWlybmVzcy0KLy8gQW56ZWlnZSwgTXVzdGVy LUFuYWx5c2UsIEFid2VzZW5oZWl0cy1LYWNoZWxuLCBEZXRhaWwtVGFiZWxsZSwgUHJvc2EtVGV4 dC4KCmltcG9ydCB7IFogfSBmcm9tICcuL2NvcmVfc3RhdGUuanMnOwppbXBvcnQgewogICAgZXNj YXBlSFRNTCwgZXNjYXBlQXR0ciwKICAgIGRhdHVtU3RyLCBkYXR1bUZvcm1hdERFLCBkYXR1bUt1 cnpERSwKICAgIF9wZXJzb25BbnplaWdlLCByZW5kZXJFcnJvckJveAp9IGZyb20gJy4vY29yZV91 dGlsLmpzJzsKaW1wb3J0IHsgdG9hc3QsIG1vZGFsWmVpZ2VuLCBtb2RhbFNjaGxpZXNzZW4sIGxh ZGVPdmVybGF5WmVpZ2VuLCBsYWRlT3ZlcmxheVZlcnN0ZWNrZW4gfSBmcm9tICcuL3VpX2RpYWxv Zy5qcyc7CmltcG9ydCB7IGFwaSB9IGZyb20gJy4vY29yZV9hcGkuanMnOwppbXBvcnQgeyBkYXJm U3RhdGlzdGlrU3ViIH0gZnJvbSAnLi9jb3JlX3Blcm1pc3Npb25zLmpzJzsKaW1wb3J0IHsgZmVh dHVyZUlzdEFrdGl2IH0gZnJvbSAnLi9hZG1pbi5qcyc7Ci8vIGFrdGl2ZUZ1ZWhydW5nIGxpZWZl cnQgcHJvIFRhZytTY2hpY2h0IGRpZSBUb3AtMiBuYWNoIEZ1bmt0aW9ucy1SYW5nCi8vICsgUG9z aXRpb24g4oCUIGFsc28gZ2VuYXUgZGllIHNjaHJhZmZpZXJ0IGRhcmdlc3RlbGx0ZW4gMS4vMi4g VkkzLURHTC4KaW1wb3J0IHsgYWt0aXZlRnVlaHJ1bmcgfSBmcm9tICcuL2dyaWRfZWRpdG9yLmpz JzsKaW1wb3J0IHsgYXVzd2VydGVuIH0gZnJvbSAnLi9zdGF0aXN0aWtfZW5naW5lLmpzJzsKaW1w b3J0IHsgZGlhZ3JhbW1SZW5kZXJuIH0gZnJvbSAnLi9zdGF0aXN0aWtfY2hhcnRzLmpzJzsKCiAg ICAvLyA9PT09PSBTdGF0aXN0aWsgPT09PT0KCiAgICB2YXIgc3RhdEZpbHRlciA9ICdhbGxlJzsK CiAgICAvLyBBbm9ueW1pc2llcnVuZ3MtTWFwcGluZyAoQ2hlcnJ5LVBpY2sgMWFlZmUyNiwgaGlu dGVyIFRvZ2dsZQogICAgLy8gYGZlYXR1cmVzLnN0YXRpc3Rpa0Fub255bWApLiBXaXJkIHp1IEJl Z2lubiBqZWRlcyBzdGF0aXN0aWtSZW5kZXJuKCkKICAgIC8vIG5ldSBhdWZnZWJhdXQ6IGplZGVy IHMubmFtZSAtPiAiUGVyc29uIE4iIGdlbWFlc3MgUmVpaGVuZm9sZ2UgaW4gc3RhdHMuCiAgICAv LyBfc3RhdEFuemVpZ2VOYW1lKHMpIGxpZWZlcnQgZGVuIGFuenV6ZWlnZW5kZW4gTmFtZW4g4oCU IGJlaSBkZWFrdGl2ZW0KICAgIC8vIEZlYXR1cmUgaXN0IGRhcyBlaW5mYWNoIHMubmFtZS4KICAg IHZhciBfc3RhdEFub25Ba3RpdiA9IGZhbHNlOwogICAgdmFyIF9zdGF0QW5vbk1hcCAgID0ge307 CiAgICBmdW5jdGlvbiBfc3RhdEFuemVpZ2VOYW1lKHMpIHsKICAgICAgICBpZiAoX3N0YXRBbm9u QWt0aXYpIHJldHVybiBfc3RhdEFub25NYXBbcy5uYW1lXSB8fCBzLm5hbWU7CiAgICAgICAgLy8g U2VydmVyIGxpZWZlcnQgIk5hY2huYW1lLCBWb3JuYW1lIi4gV2VubiBkZXIgVm9ybmFtZSBsZWVy IGlzdCwKICAgICAgICAvLyBibGVpYnQgZWluIGhhZW5nZW5kZXMgS29tbWEg4oCUIGFic2NobmVp ZGVuLgogICAgICAgIHZhciBuID0gcy5uYW1lIHx8ICcnOwogICAgICAgIHZhciBrID0gbi5pbmRl eE9mKCcsJyk7CiAgICAgICAgaWYgKGsgPCAwKSByZXR1cm4gbjsKICAgICAgICB2YXIgbmFjaCA9 IG4uc3Vic3RyaW5nKGsgKyAxKS50cmltKCk7CiAgICAgICAgaWYgKCFuYWNoKSByZXR1cm4gbi5z dWJzdHJpbmcoMCwgaykudHJpbSgpOwogICAgICAgIHJldHVybiBuOwogICAgfQoKICAgIC8vIEth dGVnb3JpZS1TdGF0ZSBmdWVyIGRpZSBCYWxrZW4tQW5zaWNodC4gU2Vzc2lvbnMtbG9rYWwuCiAg ICAvLyBBa3RpdmUgS2F0ZWdvcmllIGJlc3RpbW10LCB3ZWxjaGUgU2VnbWVudGUgZGVyIEJhbGtl biB6ZWlndCB1bmQgbmFjaAogICAgLy8gd2VsY2hlbSBTdW1tZW4tRmVsZCBzb3J0aWVydCB3aXJk LgogICAgdmFyIF9zdGF0S2F0ZWdvcmllICAgID0gJ3NjaGljaHRlbic7CiAgICB2YXIgX3N0YXRT b3J0UmljaHR1bmcgPSAnZGVzYyc7CgogICAgLy8gS2F0ZWdvcmllLURlZmluaXRpb246IHBybyBL YXRlZ29yaWUgZWluZSBMaXN0ZSB2b24gU2VnbWVudGVuCiAgICAvLyAoRmVsZCwgTGFiZWwsIEZh cmJlKSB1bmQgZGFzIFN1bW1lbi1GZWxkIGZ1ZXIgZGllIFNvcnRpZXJ1bmcuCiAgICAvLyBLcmFu ayAoa3IpIGlzdCBCRVdVU1NUIG5pY2h0IGVudGhhbHRlbiDigJQgRGF0ZW5zY2h1dHotQW5mb3Jk ZXJ1bmcsCiAgICAvLyBlcnNjaGVpbnQgbnVyIGluIGRlciBEZXRhaWwtVGFiZWxsZSBnYW56IHVu dGVuLgogICAgdmFyIFNUQVRfS0FURUdPUklFTiA9IHsKICAgICAgICBzY2hpY2h0ZW46IHsKICAg ICAgICAgICAgbGFiZWw6ICdTY2hpY2h0ZW4nLAogICAgICAgICAgICBzZWdtZW50ZTogWwogICAg ICAgICAgICAgICAgeyBmZWxkOiAnZnJ1ZWgnLCAgICAgICAgbGFiZWw6ICdGcsO8aCcsICAgIGZh cmJlOiAndmFyKC0tZmFyYmUtZnJ1ZWgpJyB9LAogICAgICAgICAgICAgICAgeyBmZWxkOiAnc3Bh ZXQnLCAgICAgICAgbGFiZWw6ICdTcMOkdCcsICAgIGZhcmJlOiAndmFyKC0tZmFyYmUtc3BhZXQp JyB9LAogICAgICAgICAgICAgICAgeyBmZWxkOiAnbmFjaHQnLCAgICAgICAgbGFiZWw6ICdOYWNo dCcsICAgZmFyYmU6ICd2YXIoLS1mYXJiZS1uYWNodCknIH0sCiAgICAgICAgICAgICAgICB7IGZl bGQ6ICdzb25kZXJkaWVuc3QnLCBsYWJlbDogJ1NEJywgICAgICBmYXJiZTogJ3ZhcigtLXN0YXQt c2QpJyB9CiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIHNvcnRGZWxkOiAnZ2VzYW10JywKICAg ICAgICAgICAgc29ydExhYmVsOiAnzqMgRGllbnN0ZScKICAgICAgICB9LAogICAgICAgIHdvY2hl bmVuZGU6IHsKICAgICAgICAgICAgbGFiZWw6ICdXb2NoZW5lbmRkaWVuc3RlJywKICAgICAgICAg ICAgc2VnbWVudGU6IFsKICAgICAgICAgICAgICAgIHsgZmVsZDogJ3NhbXN0YWdEaWVuc3RlJywg IGxhYmVsOiAnU2EnLCAgICAgICBmYXJiZTogJ3ZhcigtLXN0YXQtc2Ftc3RhZyknIH0sCiAgICAg ICAgICAgICAgICB7IGZlbGQ6ICdzb25udGFnRGllbnN0ZScsICBsYWJlbDogJ1NvJywgICAgICAg ZmFyYmU6ICd2YXIoLS1zdGF0LXNvbm50YWcpJyB9LAogICAgICAgICAgICAgICAgeyBmZWxkOiAn ZmVpZXJ0YWdEaWVuc3RlJywgbGFiZWw6ICdGZWllcnRhZycsIGZhcmJlOiAndmFyKC0tc3RhdC1m ZWllcnRhZyknIH0KICAgICAgICAgICAgXSwKICAgICAgICAgICAgLy8gS29tcGxldHRlIFdFIHdp cmQgYWxzIHp1c2FldHpsaWNoZSBLZW5uemFobCByZWNodHMgZ2V6ZWlndAogICAgICAgICAgICBl eHRyYTogeyBmZWxkOiAna29tcGxldHRlV0UnLCBsYWJlbDogJ0tvbXBsZXR0ZSBXRScsIGZhcmJl OiAndmFyKC0tc3RhdC1rb21wbGV0dGUtd2UpJyB9LAogICAgICAgICAgICAvLyBTdW1tZSB1ZWJl ciBTYStTbytGZWllcnRhZyAoY29tcHV0ZWQpCiAgICAgICAgICAgIHNvcnRMYWJlbDogJ86jIFdF K0ZlaWVydGFnJwogICAgICAgIH0sCiAgICAgICAgZm9ydGJpbGR1bmc6IHsKICAgICAgICAgICAg bGFiZWw6ICdGb3J0YmlsZHVuZycsCiAgICAgICAgICAgIHNlZ21lbnRlOiBbCiAgICAgICAgICAg ICAgICB7IGZlbGQ6ICdmb3J0YmlsZHVuZycsICAgICAgbGFiZWw6ICdBdUYvRVRNL1NlbS9UVC9U ekYnLCBmYXJiZTogJ3ZhcigtLXN0YXQtZm9ydGJpbGR1bmctMSknIH0sCiAgICAgICAgICAgICAg ICB7IGZlbGQ6ICdkaWVuc3R1bnRlcnJpY2h0JywgbGFiZWw6ICdEVScsICAgICAgICAgICAgICAg ICAgZmFyYmU6ICd2YXIoLS1zdGF0LWZvcnRiaWxkdW5nLTIpJyB9LAogICAgICAgICAgICAgICAg eyBmZWxkOiAnbGVocmdhbmdMYW5nJywgICAgIGxhYmVsOiAnTEcnLCAgICAgICAgICAgICAgICAg IGZhcmJlOiAndmFyKC0tc3RhdC1mb3J0YmlsZHVuZy0zKScgfQogICAgICAgICAgICBdLAogICAg ICAgICAgICBzb3J0TGFiZWw6ICfOoyBGb3J0YmlsZHVuZycKICAgICAgICB9LAogICAgICAgIGFi d2VzZW5oZWl0OiB7CiAgICAgICAgICAgIGxhYmVsOiAnQWJ3ZXNlbmhlaXQnLAogICAgICAgICAg ICAvLyBLcmFuayBiZXd1c3N0IGF1c2dlbm9tbWVuIChEYXRlbnNjaHV0eikuIFVybGF1YiArIEt1 ciArIFNvbmRlcnVybGF1YgogICAgICAgICAgICAvLyBzaW5kIGRpZSBmYWlyZW4gVmVyZ2xlaWNo c3dlcnRlLgogICAgICAgICAgICBzZWdtZW50ZTogWwogICAgICAgICAgICAgICAgeyBmZWxkOiAn dXJsYXViJywgICAgICAgbGFiZWw6ICdVcmxhdWInLCAgICAgICBmYXJiZTogJ3ZhcigtLXN0YXQt dXJsYXViKScgfSwKICAgICAgICAgICAgICAgIHsgZmVsZDogJ2t1cicsICAgICAgICAgIGxhYmVs OiAnS3VyJywgICAgICAgICAgZmFyYmU6ICd2YXIoLS1zdGF0LWt1ciknIH0sCiAgICAgICAgICAg ICAgICB7IGZlbGQ6ICdzb25kZXJ1cmxhdWInLCBsYWJlbDogJ1NvbmRlcnVybGF1YicsIGZhcmJl OiAndmFyKC0tc3RhdC1zb25kZXJ1cmxhdWIpJyB9CiAgICAgICAgICAgIF0sCiAgICAgICAgICAg IHNvcnRMYWJlbDogJ86jIEFid2VzZW5oZWl0JwogICAgICAgIH0sCiAgICAgICAgZWluZ2VzcHJ1 bmdlbjogewogICAgICAgICAgICBsYWJlbDogJ0Vpbmdlc3BydW5nZW4nLAogICAgICAgICAgICAv LyBBdXNzZXJwbGFubWFlc3NpZ2UgQXVmcnVlY2t1bmdlbiBpbiBkaWUgMS4vMi4gVkkzLURHTC0K ICAgICAgICAgICAgLy8gVmVyYW50d29ydHVuZyBpbm5lcmhhbGIgZGVyIDE0LVRhZ2UtVmVyYmlu ZGxpY2hrZWl0LiBQcm8KICAgICAgICAgICAgLy8gU2NoaWNodCAoRi9TL04pIGF1Zmdlc2NobHVl c3NlbHQgLS0gZ2xlaWNoZSBGYXJicGFsZXR0ZSB3aWUKICAgICAgICAgICAgLy8gZGllIFNjaGlj aHRlbi1LYXRlZ29yaWUsIGRhbWl0IGRlciBCZXp1ZyBvcHRpc2NoIGtsYXIgaXN0LgogICAgICAg ICAgICBiZXNjaHJlaWJ1bmc6ICdIaWVyIHdlcmRlbiBkaWUgTWl0YXJiZWl0ZW5kZW4gYXVmZ2Vm w7xocnQsIGRpZSA8Yj5hdcOfZXJwbGFubcOkw59pZyBpbm5lcmhhbGIgZGVyIDE0LVRhZ2UtVmVy YmluZGxpY2hrZWl0IGVpbmdlc3BydW5nZW48L2I+IHNpbmQgdW5kIGluIGRpZSAxLiBvZGVyIDIu IFZJMy1ER0wtVmVyYW50d29ydHVuZyBlaW5lciBTY2hpY2h0IGF1ZmdlcsO8Y2t0IHNpbmQg4oCU IGVudHdlZGVyIGR1cmNoIFNldHp1bmcgZHVyY2ggZGllIFZlcmFudHdvcnRsaWNoZW4gKE1haWwt RGlhbG9nKSBvZGVyIGR1cmNoIFNlbGJzdGVpbnRyYWd1bmcgYXVzIHdhY2hmcmVpIC8gQWJ3ZXNl bmhlaXQgaGVyYXVzLicsCiAgICAgICAgICAgIHNlZ21lbnRlOiBbCiAgICAgICAgICAgICAgICB7 IGZlbGQ6ICdlaW5nZXNwcnVuZ2VuX2YnLCBsYWJlbDogJ0Zyw7xoJywgIGZhcmJlOiAndmFyKC0t ZmFyYmUtZnJ1ZWgpJyB9LAogICAgICAgICAgICAgICAgeyBmZWxkOiAnZWluZ2VzcHJ1bmdlbl9z JywgbGFiZWw6ICdTcMOkdCcsICBmYXJiZTogJ3ZhcigtLWZhcmJlLXNwYWV0KScgfSwKICAgICAg ICAgICAgICAgIHsgZmVsZDogJ2Vpbmdlc3BydW5nZW5fbicsIGxhYmVsOiAnTmFjaHQnLCBmYXJi ZTogJ3ZhcigtLWZhcmJlLW5hY2h0KScgfQogICAgICAgICAgICBdLAogICAgICAgICAgICBzb3J0 RmVsZDogICdlaW5nZXNwcnVuZ2VuJywKICAgICAgICAgICAgc29ydExhYmVsOiAnzqMgRWluc3By w7xuZ2UnCiAgICAgICAgfQogICAgfTsKCiAgICAvLyBTdW1tZSBkZXIgS2F0ZWdvcmllLVNlZ21l bnRlIGZ1ZXIgZWluZSBQZXJzb24gZXJtaXR0ZWxuLgogICAgZnVuY3Rpb24gX3N0YXRLYXRTdW1t ZShzLCBrYXQpIHsKICAgICAgICBpZiAoa2F0LnNvcnRGZWxkKSByZXR1cm4gc1trYXQuc29ydEZl bGRdIHx8IDA7CiAgICAgICAgdmFyIHN1bSA9IDA7CiAgICAgICAga2F0LnNlZ21lbnRlLmZvckVh Y2goZnVuY3Rpb24oc2VnKSB7IHN1bSArPSBzW3NlZy5mZWxkXSB8fCAwOyB9KTsKICAgICAgICBy ZXR1cm4gc3VtOwogICAgfQoKICAgIGZ1bmN0aW9uIHN0YXRpc3Rpa0ZpbHRlckZ1ZWxsZW4oKSB7 CiAgICAgICAgLy8gR3J1cHBlbi1Ecm9wZG93biBhdXMgZGVtIGFrdHVlbGxlbiBhZG1pbi5ncnVw cGVuIGF1ZmJhdWVuIOKAlCBzb25zdCBrb2VubmVuCiAgICAgICAgLy8gdW1iZW5hbm50ZSBHcnVw cGVuIG5pY2h0IG1laHIgZ2VmaWx0ZXJ0IHdlcmRlbi4gTGFiZWwgb2huZSBLdWVyemVsLAogICAg ICAgIC8vIG51ciBkaWUgQmV6ZWljaG51bmcgKEZhbGxiYWNrIGF1ZiBkYXMgS3VlcnplbCB3ZW5u IGtlaW5lIEJlemVpY2hudW5nKS4KICAgICAgICB2YXIgc2VsID0gZG9jdW1lbnQuZ2V0RWxlbWVu dEJ5SWQoJ3N0YXRzLWdydXBwZW4tZmlsdGVyJyk7CiAgICAgICAgaWYgKCFzZWwpIHJldHVybjsK ICAgICAgICB2YXIgYWt0dWVsbCA9IHNlbC52YWx1ZSB8fCAnYWxsZSc7CiAgICAgICAgdmFyIGh0 bWwgPSAnPG9wdGlvbiB2YWx1ZT0iYWxsZSI+QWxsZSBEaWVuc3RncnVwcGVuPC9vcHRpb24+JzsK ICAgICAgICAoWi5hZG1pbi5ncnVwcGVuIHx8IFtdKS5mb3JFYWNoKGZ1bmN0aW9uKGdyKSB7CiAg ICAgICAgICAgIHZhciBsYWJlbCA9IGdyLmJlemVpY2hudW5nIHx8IGdyLm5hbWU7CiAgICAgICAg ICAgIGh0bWwgKz0gJzxvcHRpb24gdmFsdWU9IicgKyBlc2NhcGVBdHRyKGdyLm5hbWUpICsgJyI+ JyArIGVzY2FwZUhUTUwobGFiZWwpICsgJzwvb3B0aW9uPic7CiAgICAgICAgfSk7CiAgICAgICAg c2VsLmlubmVySFRNTCA9IGh0bWw7CiAgICAgICAgc2VsLnZhbHVlID0gYWt0dWVsbDsKICAgIH0K CiAgICBmdW5jdGlvbiBzdGF0aXN0aWtMYWRlbigpIHsKICAgICAgICBzdGF0aXN0aWtGaWx0ZXJG dWVsbGVuKCk7CiAgICAgICAgLy8gUGFrZXQtQyAoMjAyNi0wNS0yOSk6IFNvZm9ydC1TcGlubmVy LCBkYW1pdCBkZXIgVXNlciBiZWltIFRhYi1XZWNoc2VsCiAgICAgICAgLy8gbmljaHQgYXVmIGVp bmVuIGxlZXJlbiBCZXJlaWNoIHN0YXJydCB3YWVocmVuZCBhcGkoKSBsYWV1ZnQuIFdpcmQKICAg ICAgICAvLyBpbSB0aGVuL2NhdGNoIHdpZWRlciB3ZWdnZW5vbW1lbiwgZGFuYWNoIHVlYmVybmlt bXQgZGllIGJlc3RlaGVuZGUKICAgICAgICAvLyBTa2VsZXRvbi1SZW5kZXItU2Nocml0dC1Mb2dp ayAoc2VxdWVudGllbGxlcyBSZW5kZXJuIG1pdCBHbG93KS4KICAgICAgICBsYWRlT3ZlcmxheVpl aWdlbignYW5zaWNodC1zdGF0aXN0aWsnLCAnU3RhdGlzdGlrIHdpcmQgYmVyZWNobmV0IOKApicp OwogICAgICAgIGFwaSgnL2FwaS9zdGF0aXN0aWsnKS50aGVuKGZ1bmN0aW9uKGRhdGVuKSB7CiAg ICAgICAgICAgIFouc3RhdGlzdGlrID0gZGF0ZW47CiAgICAgICAgICAgIGxhZGVPdmVybGF5VmVy c3RlY2tlbignYW5zaWNodC1zdGF0aXN0aWsnKTsKICAgICAgICAgICAgc3RhdGlzdGlrUmVuZGVy bigpOwogICAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgbGFkZU92ZXJs YXlWZXJzdGVja2VuKCdhbnNpY2h0LXN0YXRpc3RpaycpOwogICAgICAgICAgICB0b2FzdCgnRmVo bGVyIGJlaW0gTGFkZW4gZGVyIFN0YXRpc3RpazogJyArIGUubWVzc2FnZSwgJ2ZlaGxlcicpOwog ICAgICAgIH0pOwogICAgfQoKICAgIGZ1bmN0aW9uIHN0YXRGaWx0ZXJuKHN0YXRzKSB7CiAgICAg ICAgaWYgKHN0YXRGaWx0ZXIgPT09ICdhbGxlJykgcmV0dXJuIHN0YXRzOwogICAgICAgIHJldHVy biBzdGF0cy5maWx0ZXIoZnVuY3Rpb24ocykgeyByZXR1cm4gcy5ncnVwcGUgPT09IHN0YXRGaWx0 ZXI7IH0pOwogICAgfQoKICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgLy8gPT09PT0gTm9Db2RlLVN0YXRpc3Rpay1C YXVrYXN0ZW4gKyBMYXlvdXQtUmFzdGVyID09PT09PT09PT09CiAgICAvLyA9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgIC8vIFNl bGJzdGdlYmF1dGUgS2FjaGVsbiAoWi5hZG1pbi5zdGF0aXN0aWtLYWNoZWxuKSBlcnNjaGVpbmVu IGFscwogICAgLy8genVzYWV0emxpY2hlIC5zdGF0cy1wYW5lbCBpbSAjc3RhdHMtZ3JpZC4gUmVp aGVuZm9sZ2UvQnJlaXRlL1NpY2h0YmFya2VpdAogICAgLy8gQUxMRVIgVGlsZXMgKGZlc3RlIFBh bmVscyArIEJhdWthc3Rlbikgc3RldWVydCBaLmFkbWluLnN0YXRpc3Rpa0xheW91dC4KICAgIC8v IEJhdWVuIGRhcmYgbnVyIFN1cGVyVXNlciArIEdlc2FtdHZlcmFudHdvcnRsaWNoIChCdWlsZGVy IGxlYnQgaGllciBpbQogICAgLy8gU3RhdGlzdGlrLVRhYik7IGRhcyBSYXN0ZXItQW5vcmRuZW4g bGVidCBpbSBBZG1pbiAoYWRtaW5fc3RhdGlzdGlrLmpzKS4KICAgIC8vCiAgICAvLyBXaWNodGln OiBCYXVrYXN0ZW4tS2FjaGVsbiB0cmFnZW4gaWhyZW4gRUlHRU5FTiAiV2VyIi1GaWx0ZXIgdW5k IHJlY2huZW4KICAgIC8vIGJld3Vzc3QgZ2VnZW4gZGllIFZPTExFIFouc3RhdGlzdGlrIChuaWNo dCBnZWdlbiBkZW4gZ2xvYmFsZW4gR3J1cHBlbi0KICAgIC8vIEZpbHRlciBvYmVuKSDigJQgZWlu ZSBnZXNwZWljaGVydGUgS2FjaGVsIGlzdCBnbG9iYWwgdW5kIHNlbGJzdC1lcmtsYWVyZW5kLgoK ICAgIHZhciBCUkVJVEVfU1BBTiAgPSB7IHZvbGw6IDYsIGhhbGI6IDMsIGRyaXR0ZWw6IDIgfTsK ICAgIHZhciBCUkVJVEVfUkFORyAgPSB7IGRyaXR0ZWw6IDAsIGhhbGI6IDEsIHZvbGw6IDIgfTsK CiAgICAvLyBGZXN0ZSBQYW5lbHM6IGlkICg9IGRhdGEtdGlsZS1pZCBpbSBIVE1MKSwgU3RhbmRh cmQtIHVuZCBNaW5kZXN0YnJlaXRlLgogICAgLy8gU2Nod2VyZSBUYWJlbGxlbi1QYW5lbHMgZHVl cmZlbiBuaWNodCB1bnRlciAidm9sbCIgKHNvbnN0IGJyZWNoZW4KICAgIC8vIEhlYXRtYXAvVGFn ZXNhbnRlaWxlL1Byb3NhKS4gdmVydGVpbHVuZy9mYWlybmVzcyBzaW5kIGZyZWkgd2FlaGxiYXIu CiAgICB2YXIgQlVJTFRJTl9USUxFUyA9IFsKICAgICAgICB7IGlkOiAndmVydGVpbHVuZycsICAg dGl0ZWw6ICdTY2hpY2h0dmVydGVpbHVuZycsICAgICAgICAgICAgICAgIGRlZmF1bHRCcmVpdGU6 ICdoYWxiJywgbWluQnJlaXRlOiAnZHJpdHRlbCcgfSwKICAgICAgICB7IGlkOiAnZmFpcm5lc3Mn LCAgICAgdGl0ZWw6ICdXRS0gJiBGVC1GYWlybmVzcycsICAgICAgICAgICAgICAgIGRlZmF1bHRC cmVpdGU6ICdoYWxiJywgbWluQnJlaXRlOiAnZHJpdHRlbCcgfSwKICAgICAgICB7IGlkOiAnbWlr cm90ZWFtcycsICAgdGl0ZWw6ICdNaWtyb3RlYW1zIOKAlCBWZXJmw7xnYmFya2VpdCcsICAgICAg IGRlZmF1bHRCcmVpdGU6ICd2b2xsJywgbWluQnJlaXRlOiAndm9sbCcgfSwKICAgICAgICB7IGlk OiAnbmViZW53YWNoZW4nLCAgdGl0ZWw6ICdOZWJlbndhY2hlbi1WZXJhbnR3b3J0dW5nJywgICAg ICAgIGRlZmF1bHRCcmVpdGU6ICd2b2xsJywgbWluQnJlaXRlOiAndm9sbCcgfSwKICAgICAgICB7 IGlkOiAndGFnZXNhbnRlaWxlJywgdGl0ZWw6ICdUYWdlcy1BbnRlaWxlIHBybyBUZWFtJywgICAg ICAgICAgIGRlZmF1bHRCcmVpdGU6ICd2b2xsJywgbWluQnJlaXRlOiAndm9sbCcgfSwKICAgICAg ICB7IGlkOiAncHJvc2EnLCAgICAgICAgdGl0ZWw6ICdEZXRhaWxhbmFseXNlIHBybyBQZXJzb24n LCAgICAgICAgIGRlZmF1bHRCcmVpdGU6ICd2b2xsJywgbWluQnJlaXRlOiAndm9sbCcgfQogICAg XTsKCiAgICAvLyBNZXRyaWstS2F0YWxvZyBmdWVyIGRlbiBCYXVrYXN0ZW4uIGZuKHMpIC0+IFph aGxlbndlcnQgcHJvIFBlcnNvbi4KICAgIC8vIEtSQU5LIGlzdCBiZXd1c3N0IE5JQ0hUIGVudGhh bHRlbiAoRGF0ZW5zY2h1dHosIHdpZSB1ZWJlcmFsbCBzb25zdCkuCiAgICB2YXIgQkFVS0FTVEVO X01FVFJJS0VOID0gWwogICAgICAgIHsga2V5OidnZXNhbXQnLCAgICAgICAgICBncnVwcGU6J1Nj aGljaHRlbicsICAgICAgICAgICAgbGFiZWw6J0RpZW5zdGUgZ2VzYW10JywgICAgICAgICAgZWlu aGVpdDonRGllbnN0ZScsIGZuOmZ1bmN0aW9uKHMpe3JldHVybiBzLmdlc2FtdHx8MDt9IH0sCiAg ICAgICAgeyBrZXk6J2ZydWVoJywgICAgICAgICAgIGdydXBwZTonU2NoaWNodGVuJywgICAgICAg ICAgICBsYWJlbDonRnLDvGhkaWVuc3RlJywgICAgICAgICAgICAgZWluaGVpdDonRGllbnN0ZScs IGZuOmZ1bmN0aW9uKHMpe3JldHVybiBzLmZydWVofHwwO30gfSwKICAgICAgICB7IGtleTonc3Bh ZXQnLCAgICAgICAgICAgZ3J1cHBlOidTY2hpY2h0ZW4nLCAgICAgICAgICAgIGxhYmVsOidTcMOk dGRpZW5zdGUnLCAgICAgICAgICAgICBlaW5oZWl0OidEaWVuc3RlJywgZm46ZnVuY3Rpb24ocyl7 cmV0dXJuIHMuc3BhZXR8fDA7fSB9LAogICAgICAgIHsga2V5OiduYWNodCcsICAgICAgICAgICBn cnVwcGU6J1NjaGljaHRlbicsICAgICAgICAgICAgbGFiZWw6J05hY2h0ZGllbnN0ZScsICAgICAg ICAgICAgZWluaGVpdDonRGllbnN0ZScsIGZuOmZ1bmN0aW9uKHMpe3JldHVybiBzLm5hY2h0fHww O30gfSwKICAgICAgICB7IGtleTonc29uZGVyZGllbnN0JywgICAgZ3J1cHBlOidTY2hpY2h0ZW4n LCAgICAgICAgICAgIGxhYmVsOidTb25kZXJkaWVuc3RlIChTRC9TRSknLCAgIGVpbmhlaXQ6J0Rp ZW5zdGUnLCBmbjpmdW5jdGlvbihzKXtyZXR1cm4gcy5zb25kZXJkaWVuc3R8fDA7fSB9LAogICAg ICAgIHsga2V5OidkZ2wnLCAgICAgICAgICAgICBncnVwcGU6J1NjaGljaHRlbicsICAgICAgICAg ICAgbGFiZWw6J0RHTC1FaW5zw6R0emUnLCAgICAgICAgICAgIGVpbmhlaXQ6J0VpbnPDpHR6ZScs IGZuOmZ1bmN0aW9uKHMpe3JldHVybiBzLmRnbHx8MDt9IH0sCiAgICAgICAgeyBrZXk6J3dkZics ICAgICAgICAgICAgIGdydXBwZTonU2NoaWNodGVuJywgICAgICAgICAgICBsYWJlbDonV0RGLUVp bnPDpHR6ZScsICAgICAgICAgICAgZWluaGVpdDonRWluc8OkdHplJywgZm46ZnVuY3Rpb24ocyl7 cmV0dXJuIHMud2RmfHwwO30gfSwKICAgICAgICB7IGtleTonZmJwJywgICAgICAgICAgICAgZ3J1 cHBlOidTY2hpY2h0ZW4nLCAgICAgICAgICAgIGxhYmVsOidGQlAtRWluc8OkdHplJywgICAgICAg ICAgICBlaW5oZWl0OidFaW5zw6R0emUnLCBmbjpmdW5jdGlvbihzKXtyZXR1cm4gcy5mYnB8fDA7 fSB9LAoKICAgICAgICB7IGtleTond2VfZnRfZ2VzYW10JywgICAgZ3J1cHBlOidXb2NoZW5lbmRl ICYgRmVpZXJ0YWcnLCBsYWJlbDonV0UtICYgRmVpZXJ0YWdzZGllbnN0ZScsICBlaW5oZWl0OidE aWVuc3RlJywgZm46ZnVuY3Rpb24ocyl7cmV0dXJuIChzLnNhbXN0YWdEaWVuc3RlfHwwKSsocy5z b25udGFnRGllbnN0ZXx8MCkrKHMuZmVpZXJ0YWdEaWVuc3RlfHwwKTt9IH0sCiAgICAgICAgeyBr ZXk6J3NhbXN0YWdEaWVuc3RlJywgIGdydXBwZTonV29jaGVuZW5kZSAmIEZlaWVydGFnJywgbGFi ZWw6J1NhbXN0YWdzZGllbnN0ZScsICAgICAgICAgZWluaGVpdDonRGllbnN0ZScsIGZuOmZ1bmN0 aW9uKHMpe3JldHVybiBzLnNhbXN0YWdEaWVuc3RlfHwwO30gfSwKICAgICAgICB7IGtleTonc29u bnRhZ0RpZW5zdGUnLCAgZ3J1cHBlOidXb2NoZW5lbmRlICYgRmVpZXJ0YWcnLCBsYWJlbDonU29u bnRhZ3NkaWVuc3RlJywgICAgICAgICBlaW5oZWl0OidEaWVuc3RlJywgZm46ZnVuY3Rpb24ocyl7 cmV0dXJuIHMuc29ubnRhZ0RpZW5zdGV8fDA7fSB9LAogICAgICAgIHsga2V5OidmZWllcnRhZ0Rp ZW5zdGUnLCBncnVwcGU6J1dvY2hlbmVuZGUgJiBGZWllcnRhZycsIGxhYmVsOidGZWllcnRhZ3Nk aWVuc3RlJywgICAgICAgIGVpbmhlaXQ6J0RpZW5zdGUnLCBmbjpmdW5jdGlvbihzKXtyZXR1cm4g cy5mZWllcnRhZ0RpZW5zdGV8fDA7fSB9LAogICAgICAgIHsga2V5Oidrb21wbGV0dGVXRScsICAg ICBncnVwcGU6J1dvY2hlbmVuZGUgJiBGZWllcnRhZycsIGxhYmVsOidLb21wbGV0dGUgV29jaGVu ZW5kZW4nLCAgIGVpbmhlaXQ6J1dFJywgICAgICBmbjpmdW5jdGlvbihzKXtyZXR1cm4gcy5rb21w bGV0dGVXRXx8MDt9IH0sCiAgICAgICAgeyBrZXk6J3dvY2hlbmVuZFRhZ2UnLCAgIGdydXBwZTon V29jaGVuZW5kZSAmIEZlaWVydGFnJywgbGFiZWw6J1dFLVRhZ2UgaW0gRGllbnN0JywgICAgICAg ZWluaGVpdDonVGFnZScsICAgIGZuOmZ1bmN0aW9uKHMpe3JldHVybiBzLndvY2hlbmVuZFRhZ2V8 fDA7fSB9LAogICAgICAgIHsga2V5Oid3ZVRhZ2VWZXJmdWVnYmFyJyxncnVwcGU6J1dvY2hlbmVu ZGUgJiBGZWllcnRhZycsIGxhYmVsOidGcmVpZSBXRS1UYWdlICh2ZXJmw7xnYmFyKScsZWluaGVp dDonVGFnZScsICAgZm46ZnVuY3Rpb24ocyl7cmV0dXJuIHMud2VUYWdlVmVyZnVlZ2Jhcnx8MDt9 IH0sCgogICAgICAgIHsga2V5OidlaW5nZXNwcnVuZ2VuJywgICBncnVwcGU6J0VpbnNwcmluZ2Vu JywgICAgICAgICAgbGFiZWw6J0VpbnNwcsO8bmdlIGdlc2FtdCcsICAgICAgIGVpbmhlaXQ6J0Vp bnNwcsO8bmdlJywgZm46ZnVuY3Rpb24ocyl7cmV0dXJuIHMuZWluZ2VzcHJ1bmdlbnx8MDt9IH0s CiAgICAgICAgeyBrZXk6J2Vpbmdlc3BydW5nZW5fZicsIGdydXBwZTonRWluc3ByaW5nZW4nLCAg ICAgICAgICBsYWJlbDonRWluc3Byw7xuZ2UgRnLDvGgnLCAgICAgICAgIGVpbmhlaXQ6J0VpbnNw csO8bmdlJywgZm46ZnVuY3Rpb24ocyl7cmV0dXJuIHMuZWluZ2VzcHJ1bmdlbl9mfHwwO30gfSwK ICAgICAgICB7IGtleTonZWluZ2VzcHJ1bmdlbl9zJywgZ3J1cHBlOidFaW5zcHJpbmdlbicsICAg ICAgICAgIGxhYmVsOidFaW5zcHLDvG5nZSBTcMOkdCcsICAgICAgICAgZWluaGVpdDonRWluc3By w7xuZ2UnLCBmbjpmdW5jdGlvbihzKXtyZXR1cm4gcy5laW5nZXNwcnVuZ2VuX3N8fDA7fSB9LAog ICAgICAgIHsga2V5OidlaW5nZXNwcnVuZ2VuX24nLCBncnVwcGU6J0VpbnNwcmluZ2VuJywgICAg ICAgICAgbGFiZWw6J0VpbnNwcsO8bmdlIE5hY2h0JywgICAgICAgIGVpbmhlaXQ6J0VpbnNwcsO8 bmdlJywgZm46ZnVuY3Rpb24ocyl7cmV0dXJuIHMuZWluZ2VzcHJ1bmdlbl9ufHwwO30gfSwKCiAg ICAgICAgeyBrZXk6J3VybGF1YicsICAgICAgICAgIGdydXBwZTonQWJ3ZXNlbmhlaXQgJiBGcmVp JywgICBsYWJlbDonVXJsYXVic3RhZ2UnLCAgICAgICAgICAgICBlaW5oZWl0OidUYWdlJywgZm46 ZnVuY3Rpb24ocyl7cmV0dXJuIHMudXJsYXVifHwwO30gfSwKICAgICAgICB7IGtleTona3VyJywg ICAgICAgICAgICAgZ3J1cHBlOidBYndlc2VuaGVpdCAmIEZyZWknLCAgIGxhYmVsOidLdXItVGFn ZScsICAgICAgICAgICAgICAgIGVpbmhlaXQ6J1RhZ2UnLCBmbjpmdW5jdGlvbihzKXtyZXR1cm4g cy5rdXJ8fDA7fSB9LAogICAgICAgIHsga2V5Oidzb25kZXJ1cmxhdWInLCAgICBncnVwcGU6J0Fi d2VzZW5oZWl0ICYgRnJlaScsICAgbGFiZWw6J1NvbmRlcnVybGF1YicsICAgICAgICAgICAgZWlu aGVpdDonVGFnZScsIGZuOmZ1bmN0aW9uKHMpe3JldHVybiBzLnNvbmRlcnVybGF1Ynx8MDt9IH0s CiAgICAgICAgeyBrZXk6J3BhcmFncmFwaDIxJywgICAgIGdydXBwZTonQWJ3ZXNlbmhlaXQgJiBG cmVpJywgICBsYWJlbDonwqcyMSAvIDIxYS1UYWdlJywgICAgICAgICAgZWluaGVpdDonVGFnZScs IGZuOmZ1bmN0aW9uKHMpe3JldHVybiBzLnBhcmFncmFwaDIxfHwwO30gfSwKICAgICAgICB7IGtl eTonYXpBdXNnbGVpY2hSZWluJywgZ3J1cHBlOidBYndlc2VuaGVpdCAmIEZyZWknLCAgIGxhYmVs OidBWi1BdXNnbGVpY2gnLCAgICAgICAgICAgIGVpbmhlaXQ6J1RhZ2UnLCBmbjpmdW5jdGlvbihz KXtyZXR1cm4gcy5hekF1c2dsZWljaFJlaW58fDA7fSB9LAogICAgICAgIHsga2V5Oid3YWNoZnJl aScsICAgICAgICBncnVwcGU6J0Fid2VzZW5oZWl0ICYgRnJlaScsICAgbGFiZWw6J1dhY2hmcmVp ICh3ZnIpJywgICAgICAgICAgZWluaGVpdDonVGFnZScsIGZuOmZ1bmN0aW9uKHMpe3JldHVybiBz LndhY2hmcmVpfHwwO30gfSwKICAgICAgICB7IGtleTonZGllbnN0ZnJlaVRhZycsICAgZ3J1cHBl OidBYndlc2VuaGVpdCAmIEZyZWknLCAgIGxhYmVsOidEaWVuc3RmcmVpIChkZnIpJywgICAgICAg IGVpbmhlaXQ6J1RhZ2UnLCBmbjpmdW5jdGlvbihzKXtyZXR1cm4gcy5kaWVuc3RmcmVpVGFnfHww O30gfSwKCiAgICAgICAgeyBrZXk6J2ZvcnRiaWxkdW5nJywgICAgIGdydXBwZTonQXVzLSAmIEZv cnRiaWxkdW5nJywgICBsYWJlbDonRm9ydGJpbGR1bmcgKEF1Ri9FVE0vU2VtL1RUL1R6RiknLCBl aW5oZWl0OidUYWdlJywgZm46ZnVuY3Rpb24ocyl7cmV0dXJuIHMuZm9ydGJpbGR1bmd8fDA7fSB9 LAogICAgICAgIHsga2V5OidkaWVuc3R1bnRlcnJpY2h0JyxncnVwcGU6J0F1cy0gJiBGb3J0Ymls ZHVuZycsICAgbGFiZWw6J0RpZW5zdHVudGVycmljaHQgKERVKScsICAgZWluaGVpdDonVGFnZScs IGZuOmZ1bmN0aW9uKHMpe3JldHVybiBzLmRpZW5zdHVudGVycmljaHR8fDA7fSB9LAogICAgICAg IHsga2V5OidsZWhyZ2FuZ0xhbmcnLCAgICBncnVwcGU6J0F1cy0gJiBGb3J0YmlsZHVuZycsICAg bGFiZWw6J0xlaHJnYW5nIChMRyknLCAgICAgICAgICAgZWluaGVpdDonVGFnZScsIGZuOmZ1bmN0 aW9uKHMpe3JldHVybiBzLmxlaHJnYW5nTGFuZ3x8MDt9IH0sCiAgICAgICAgeyBrZXk6J2xlaHJn YW5nJywgICAgICAgIGdydXBwZTonQXVzLSAmIEZvcnRiaWxkdW5nJywgICBsYWJlbDonTGVocmdh bmcgKyBGb3J0YmlsZHVuZyBnZXNhbXQnLCBlaW5oZWl0OidUYWdlJywgZm46ZnVuY3Rpb24ocyl7 cmV0dXJuIHMubGVocmdhbmd8fDA7fSB9CiAgICBdOwoKICAgIGZ1bmN0aW9uIF9hbGxlS2FjaGVs bigpIHsKICAgICAgICB2YXIgYXJyID0gKFouYWRtaW4gJiYgWi5hZG1pbi5zdGF0aXN0aWtLYWNo ZWxuKSB8fCBbXTsKICAgICAgICByZXR1cm4gQXJyYXkuaXNBcnJheShhcnIpID8gYXJyIDogW107 CiAgICB9CiAgICBmdW5jdGlvbiBfbGF5b3V0TGlzdGUoKSB7CiAgICAgICAgdmFyIGFyciA9ICha LmFkbWluICYmIFouYWRtaW4uc3RhdGlzdGlrTGF5b3V0KSB8fCBbXTsKICAgICAgICByZXR1cm4g QXJyYXkuaXNBcnJheShhcnIpID8gYXJyIDogW107CiAgICB9CiAgICBmdW5jdGlvbiBtZXRyaWtG aW5kZW4oa2V5KSB7CiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBCQVVLQVNURU5fTUVUUklL RU4ubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgaWYgKEJBVUtBU1RFTl9NRVRSSUtFTltpXS5r ZXkgPT09IGtleSkgcmV0dXJuIEJBVUtBU1RFTl9NRVRSSUtFTltpXTsKICAgICAgICB9CiAgICAg ICAgcmV0dXJuIG51bGw7CiAgICB9CiAgICBmdW5jdGlvbiBfZGVmYXVsdEJyZWl0ZShpZCkgewog ICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgQlVJTFRJTl9USUxFUy5sZW5ndGg7IGkrKykgewog ICAgICAgICAgICBpZiAoQlVJTFRJTl9USUxFU1tpXS5pZCA9PT0gaWQpIHJldHVybiBCVUlMVElO X1RJTEVTW2ldLmRlZmF1bHRCcmVpdGU7CiAgICAgICAgfQogICAgICAgIHJldHVybiAnaGFsYic7 IC8vIEJhdWthc3Rlbi1LYWNoZWxuOiBEZWZhdWx0IGhhbGJlIEJyZWl0ZQogICAgfQogICAgZnVu Y3Rpb24gX2JyZWl0ZUNsYW1wKGJyZWl0ZSwgbWluQnJlaXRlKSB7CiAgICAgICAgaWYgKCFCUkVJ VEVfU1BBTlticmVpdGVdKSBicmVpdGUgPSAndm9sbCc7CiAgICAgICAgaWYgKCFCUkVJVEVfU1BB TlttaW5CcmVpdGVdKSBtaW5CcmVpdGUgPSAnZHJpdHRlbCc7CiAgICAgICAgcmV0dXJuIChCUkVJ VEVfUkFOR1ticmVpdGVdIDwgQlJFSVRFX1JBTkdbbWluQnJlaXRlXSkgPyBtaW5CcmVpdGUgOiBi cmVpdGU7CiAgICB9CgogICAgLy8gIldlciItRmlsdGVyIGVpbmVyIEthY2hlbCBhbndlbmRlbi4K ICAgIGZ1bmN0aW9uIF9rYWNoZWxGaWx0ZXJuKHN0YXRzLCB3ZXIpIHsKICAgICAgICB3ZXIgPSB3 ZXIgfHwgeyB0eXA6ICdhbGxlJyB9OwogICAgICAgIGlmICh3ZXIudHlwID09PSAnZ3J1cHBlJykg ICByZXR1cm4gc3RhdHMuZmlsdGVyKGZ1bmN0aW9uKHMpeyByZXR1cm4gcy5ncnVwcGUgPT09IHdl ci53ZXJ0OyB9KTsKICAgICAgICBpZiAod2VyLnR5cCA9PT0gJ2Z1bmt0aW9uJykgcmV0dXJuIHN0 YXRzLmZpbHRlcihmdW5jdGlvbihzKXsgcmV0dXJuIFN0cmluZyhzLmZ1bmt0aW9uIHx8ICcnKSA9 PT0gU3RyaW5nKHdlci53ZXJ0KTsgfSk7CiAgICAgICAgcmV0dXJuIHN0YXRzOwogICAgfQogICAg ZnVuY3Rpb24gX3dlckxhYmVsKHdlcikgewogICAgICAgIHdlciA9IHdlciB8fCB7IHR5cDogJ2Fs bGUnIH07CiAgICAgICAgaWYgKHdlci50eXAgPT09ICdncnVwcGUnKSB7CiAgICAgICAgICAgIHZh ciBnID0gKChaLmFkbWluLmdydXBwZW4gfHwgW10pLmZpbHRlcihmdW5jdGlvbih4KXsgcmV0dXJu IHgubmFtZSA9PT0gd2VyLndlcnQ7IH0pWzBdKTsKICAgICAgICAgICAgcmV0dXJuICdHcnVwcGUg JyArIChnID8gKGcuYmV6ZWljaG51bmcgfHwgZy5uYW1lKSA6IHdlci53ZXJ0KTsKICAgICAgICB9 CiAgICAgICAgaWYgKHdlci50eXAgPT09ICdmdW5rdGlvbicpIHJldHVybiAnRnVua3Rpb24gJyAr IHdlci53ZXJ0OwogICAgICAgIHJldHVybiAnQWxsZSc7CiAgICB9CgogICAgLy8gSG9yaXpvbnRh bGVzIEJhbGtlbi1SYW5raW5nIGVpbmVyIEJhdWthc3Rlbi1LYWNoZWwgcmVuZGVybiAocmVpbmUK ICAgIC8vIEhUTUwtRXJ6ZXVndW5nLCB3aWVkZXJ2ZXJ3ZW5kZXQgZGllIGJlc3RlaGVuZGVuIC5z dGF0cy1iYWxrZW4tKi1TdGlsZSkuCiAgICBmdW5jdGlvbiBfa2FjaGVsRXJnZWJuaXNIdG1sKGth Y2hlbCwgc3RhdHMpIHsKICAgICAgICB2YXIgbWV0cmlrID0gbWV0cmlrRmluZGVuKGthY2hlbC5t ZXRyaWspOwogICAgICAgIGlmICghbWV0cmlrKSB7CiAgICAgICAgICAgIHJldHVybiAnPGRpdiBj bGFzcz0iYWRtaW4tZW1wdHkiPjxkaXYgY2xhc3M9ImFkbWluLWVtcHR5LXRleHQiPlVuYmVrYW5u dGUgTWV0cmlrIOKAnicgKyBlc2NhcGVIVE1MKGthY2hlbC5tZXRyaWsgfHwgJycpICsgJyIuPC9k aXY+PC9kaXY+JzsKICAgICAgICB9CiAgICAgICAgaWYgKCFzdGF0cyB8fCAhc3RhdHMubGVuZ3Ro KSB7CiAgICAgICAgICAgIHJldHVybiAnPGRpdiBjbGFzcz0iYWRtaW4tZW1wdHkiPjxkaXYgY2xh c3M9ImFkbWluLWVtcHR5LXRleHQiPk5vY2gga2VpbmUgU3RhdGlzdGlrLURhdGVuIGdlbGFkZW4u PC9kaXY+PC9kaXY+JzsKICAgICAgICB9CiAgICAgICAgdmFyIHJvd3MgPSBfa2FjaGVsRmlsdGVy bihzdGF0cywga2FjaGVsLndlcikubWFwKGZ1bmN0aW9uKHMpeyByZXR1cm4geyBzOiBzLCB3ZXJ0 OiBtZXRyaWsuZm4ocykgfHwgMCB9OyB9KTsKICAgICAgICB2YXIgc29ydCA9IGthY2hlbC5zb3J0 IHx8ICdkZXNjJzsKICAgICAgICByb3dzLnNvcnQoZnVuY3Rpb24oYSwgYil7CiAgICAgICAgICAg IGlmIChzb3J0ID09PSAnbmFtZScpIHJldHVybiBfc3RhdEFuemVpZ2VOYW1lKGEucykubG9jYWxl Q29tcGFyZShfc3RhdEFuemVpZ2VOYW1lKGIucyksICdkZScpOwogICAgICAgICAgICBpZiAoYS53 ZXJ0ICE9PSBiLndlcnQpIHJldHVybiBzb3J0ID09PSAnYXNjJyA/IGEud2VydCAtIGIud2VydCA6 IGIud2VydCAtIGEud2VydDsKICAgICAgICAgICAgcmV0dXJuIF9zdGF0QW56ZWlnZU5hbWUoYS5z KS5sb2NhbGVDb21wYXJlKF9zdGF0QW56ZWlnZU5hbWUoYi5zKSwgJ2RlJyk7CiAgICAgICAgfSk7 CiAgICAgICAgdmFyIHRvcE4gPSBrYWNoZWwudG9wTiB8fCAwOwogICAgICAgIGlmICh0b3BOID4g MCkgcm93cyA9IHJvd3Muc2xpY2UoMCwgdG9wTik7CiAgICAgICAgaWYgKCFyb3dzLmxlbmd0aCkg ewogICAgICAgICAgICByZXR1cm4gJzxkaXYgY2xhc3M9ImFkbWluLWVtcHR5Ij48ZGl2IGNsYXNz PSJhZG1pbi1lbXB0eS10ZXh0Ij5LZWluZSBQZXJzb25lbiBpbSBnZXfDpGhsdGVuIEZpbHRlci48 L2Rpdj48L2Rpdj4nOwogICAgICAgIH0KICAgICAgICB2YXIgbWF4ViA9IE1hdGgubWF4LmFwcGx5 KG51bGwsIHJvd3MubWFwKGZ1bmN0aW9uKHIpeyByZXR1cm4gci53ZXJ0OyB9KSkgfHwgMTsKICAg ICAgICB2YXIga29wZiA9ICc8ZGl2IGNsYXNzPSJzdGF0cy1iYWxrZW4ta29wZiI+JyArCiAgICAg ICAgICAgICc8ZGl2IGNsYXNzPSJzdGF0cy1iYWxrZW4tbmFtZSI+PC9kaXY+JyArCiAgICAgICAg ICAgICc8ZGl2IGNsYXNzPSJzdGF0cy1iYWxrZW4tYmFyLXdyYXAiPjxzcGFuIGNsYXNzPSJzdGF0 cy1iYWxrZW4ta29wZi1sYWJlbCI+JyArIGVzY2FwZUhUTUwobWV0cmlrLmxhYmVsKSArICc8L3Nw YW4+PC9kaXY+JyArCiAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJzdGF0cy1iYWxrZW4tdG90YWwi PjxzcGFuIGNsYXNzPSJzdGF0cy1iYWxrZW4ta29wZi1sYWJlbCI+JyArIGVzY2FwZUhUTUwobWV0 cmlrLmVpbmhlaXQgfHwgJycpICsgKHNvcnQgPT09ICdhc2MnID8gJyDihpEnIDogJyDihpMnKSAr ICc8L3NwYW4+PC9kaXY+JyArCiAgICAgICAgICAgICc8L2Rpdj4nOwogICAgICAgIHZhciByYW5n ID0gMDsKICAgICAgICB2YXIgemVpbGVuID0gcm93cy5tYXAoZnVuY3Rpb24ocil7CiAgICAgICAg ICAgIHJhbmcrKzsKICAgICAgICAgICAgdmFyIGJyZWl0ZSA9IChyLndlcnQgLyBtYXhWKSAqIDEw MDsKICAgICAgICAgICAgcmV0dXJuICc8ZGl2IGNsYXNzPSJzdGF0cy1iYWxrZW4temVpbGUiPicg KwogICAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9InN0YXRzLWJhbGtlbi1uYW1lIiB0aXRsZT0i JyArIGVzY2FwZUF0dHIoX3N0YXRBbnplaWdlTmFtZShyLnMpKSArICciPjxzcGFuIGNsYXNzPSJz dGF0cy1iay1yYW5nIj4nICsgcmFuZyArICcuPC9zcGFuPiAnICsgZXNjYXBlSFRNTChfc3RhdEFu emVpZ2VOYW1lKHIucykpICsgJzwvZGl2PicgKwogICAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9 InN0YXRzLWJhbGtlbi1iYXItd3JhcCI+PGRpdiBjbGFzcz0ic3RhdHMtYmFsa2VuLXNlZ21lbnQi IHN0eWxlPSJ3aWR0aDonICsgYnJlaXRlICsgJyU7YmFja2dyb3VuZDp2YXIoLS1iZy1wcmltYXJ5 KSIgdGl0bGU9IicgKyBlc2NhcGVBdHRyKG1ldHJpay5sYWJlbCArICc6ICcgKyByLndlcnQpICsg JyI+JyArIChyLndlcnQgPiAwID8gci53ZXJ0IDogJycpICsgJzwvZGl2PjwvZGl2PicgKwogICAg ICAgICAgICAgICAgJzxkaXYgY2xhc3M9InN0YXRzLWJhbGtlbi10b3RhbCI+JyArIHIud2VydCAr ICc8L2Rpdj4nICsKICAgICAgICAgICAgICAgICc8L2Rpdj4nOwogICAgICAgIH0pLmpvaW4oJycp OwogICAgICAgIHJldHVybiAnPGRpdiBjbGFzcz0ic3RhdHMtYmFsa2VuLWNvbnRhaW5lciI+JyAr IGtvcGYgKyB6ZWlsZW4gKyAnPC9kaXY+JzsKICAgIH0KCiAgICAvLyBCYXVrYXN0ZW4tUGFuZWxz IGltICNzdGF0cy1ncmlkIGFubGVnZW4vYWt0dWFsaXNpZXJlbi9lbnRmZXJuZW4uCiAgICBmdW5j dGlvbiBjdXN0b21LYWNoZWxuUmVuZGVybigpIHsKICAgICAgICB2YXIgZ3JpZCA9IGRvY3VtZW50 LmdldEVsZW1lbnRCeUlkKCdzdGF0cy1ncmlkJyk7CiAgICAgICAgaWYgKCFncmlkKSByZXR1cm47 CiAgICAgICAgdmFyIHN0YXRzID0gWi5zdGF0aXN0aWsgfHwgW107CiAgICAgICAgdmFyIGthY2hl bG4gPSBfYWxsZUthY2hlbG4oKTsKICAgICAgICB2YXIgZ2V3b2xsdCA9IHt9OwogICAgICAgIGth Y2hlbG4uZm9yRWFjaChmdW5jdGlvbihrKXsgaWYgKGsgJiYgay5pZCkgZ2V3b2xsdFtrLmlkXSA9 IHRydWU7IH0pOwogICAgICAgIC8vIFZlcndhaXN0ZSBDdXN0b20tUGFuZWxzIGVudGZlcm5lbiAo S2FjaGVsIGdlbG9lc2NodCkuCiAgICAgICAgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZ3Jp ZC5xdWVyeVNlbGVjdG9yQWxsKCcuc3RhdHMtcGFuZWxbZGF0YS1rYWNoZWw9IjEiXScpKS5mb3JF YWNoKGZ1bmN0aW9uKHApewogICAgICAgICAgICBpZiAoIWdld29sbHRbcC5nZXRBdHRyaWJ1dGUo J2RhdGEtdGlsZS1pZCcpXSkgcC5yZW1vdmUoKTsKICAgICAgICB9KTsKICAgICAgICBrYWNoZWxu LmZvckVhY2goZnVuY3Rpb24oayl7CiAgICAgICAgICAgIGlmICghayB8fCAhay5pZCkgcmV0dXJu OwogICAgICAgICAgICB2YXIgcGFuZWwgPSBudWxsOwogICAgICAgICAgICB2YXIgdm9yaGFuZGVu ZSA9IGdyaWQucXVlcnlTZWxlY3RvckFsbCgnLnN0YXRzLXBhbmVsW2RhdGEta2FjaGVsPSIxIl0n KTsKICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB2b3JoYW5kZW5lLmxlbmd0aDsgaSsr KSB7CiAgICAgICAgICAgICAgICBpZiAodm9yaGFuZGVuZVtpXS5nZXRBdHRyaWJ1dGUoJ2RhdGEt dGlsZS1pZCcpID09PSBrLmlkKSB7IHBhbmVsID0gdm9yaGFuZGVuZVtpXTsgYnJlYWs7IH0KICAg ICAgICAgICAgfQogICAgICAgICAgICBpZiAoIXBhbmVsKSB7CiAgICAgICAgICAgICAgICBwYW5l bCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogICAgICAgICAgICAgICAgcGFuZWwu Y2xhc3NOYW1lID0gJ3N0YXRzLXBhbmVsJzsKICAgICAgICAgICAgICAgIHBhbmVsLnNldEF0dHJp YnV0ZSgnZGF0YS10aWxlLWlkJywgay5pZCk7CiAgICAgICAgICAgICAgICBwYW5lbC5zZXRBdHRy aWJ1dGUoJ2RhdGEta2FjaGVsJywgJzEnKTsKICAgICAgICAgICAgICAgIHBhbmVsLnNldEF0dHJp YnV0ZSgnZGF0YS1taW4tYnJlaXRlJywgJ2RyaXR0ZWwnKTsKICAgICAgICAgICAgICAgIGdyaWQu YXBwZW5kQ2hpbGQocGFuZWwpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHZhciBpc3RWMiA9 IChrLmRpYWdyYW1tICE9IG51bGwpOwogICAgICAgICAgICB2YXIgdW50ZXJ6ZWlsZSA9IGlzdFYy ID8gJycgOiBfd2VyTGFiZWwoay53ZXIpOwogICAgICAgICAgICBwYW5lbC5pbm5lckhUTUwgPQog ICAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9InN0YXRzLXBhbmVsLWtvcGYiPicgKwogICAgICAg ICAgICAgICAgICAgICc8aDM+PHNwYW4gY2xhc3M9InN0YXRzLWJrLWJhZGdlIiB0aXRsZT0iU2Vs YnN0Z2ViYXV0ZSBTdGF0aXN0aWstS2FjaGVsIj5CYXVrYXN0ZW48L3NwYW4+ICcgKyBlc2NhcGVI VE1MKGsudGl0ZWwgfHwgJ0VpZ2VuZSBTdGF0aXN0aWsnKSArICc8L2gzPicgKwogICAgICAgICAg ICAgICAgICAgICh1bnRlcnplaWxlID8gJzxzcGFuIGNsYXNzPSJzdGF0cy1iay13ZXIiPicgKyBl c2NhcGVIVE1MKHVudGVyemVpbGUpICsgJzwvc3Bhbj4nIDogJycpICsKICAgICAgICAgICAgICAg ICc8L2Rpdj4nICsKICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJzdGF0cy1jaGFydC1hcmVh Ij4nICsgKGlzdFYyID8gX2thY2hlbFYySHRtbChrKSA6IF9rYWNoZWxFcmdlYm5pc0h0bWwoaywg c3RhdHMpKSArICc8L2Rpdj4nOwogICAgICAgIH0pOwogICAgfQoKICAgIC8vIFNwZWMtdjItS2Fj aGVsIChtZWhyZGltZW5zaW9uYWwpIHVlYmVyIEVuZ2luZSArIG5hdGl2ZSBTVkctQ2hhcnRzIHJl bmRlcm4uCiAgICBmdW5jdGlvbiBfa2FjaGVsVjJIdG1sKGspIHsKICAgICAgICB0cnkgewogICAg ICAgICAgICB2YXIgZXJnID0gYXVzd2VydGVuKGspOwogICAgICAgICAgICBpZiAoX3N0YXRBbm9u QWt0aXYpIGVyZyA9IF9hbm9uRXJnZWJuaXMoZXJnKTsKICAgICAgICAgICAgcmV0dXJuIGRpYWdy YW1tUmVuZGVybihrLmRpYWdyYW1tLCBlcmcsIGspOwogICAgICAgIH0gY2F0Y2ggKGUpIHsKICAg ICAgICAgICAgdHJ5IHsgY29uc29sZS5lcnJvcignW3N0YXRpc3Rpay1rYWNoZWxdJywgZSk7IH0g Y2F0Y2ggKF8pIHt9CiAgICAgICAgICAgIHJldHVybiAnPGRpdiBjbGFzcz0iYWRtaW4tZW1wdHki PjxkaXYgY2xhc3M9ImFkbWluLWVtcHR5LXRleHQiPkZlaGxlciBiZWltIEJhdWVuOiAnICsgZXNj YXBlSFRNTChlLm1lc3NhZ2UgfHwgU3RyaW5nKGUpKSArICc8L2Rpdj48L2Rpdj4nOwogICAgICAg IH0KICAgIH0KICAgIC8vIFBlcnNvbmVuLUxhYmVscyBpbSBFcmdlYm5pcyBhbm9ueW1pc2llcmVu IChzdGF0aXN0aWtBbm9ueW0pLiBHcmVpZnQgbnVyCiAgICAvLyBiZWkgUGVyc29uZW4tRGltZW5z aW9uL1NjYXR0ZXIg4oCUIGFuZGVyZSBMYWJlbHMgc2luZCBuaWNodCBpbiBfc3RhdEFub25NYXAu CiAgICBmdW5jdGlvbiBfYW5vbkVyZ2VibmlzKGVyZykgewogICAgICAgIGZ1bmN0aW9uIG0obCkg eyByZXR1cm4gX3N0YXRBbm9uTWFwW2xdIHx8IGw7IH0KICAgICAgICBpZiAoZXJnLmthdGVnb3Jp ZW4pIGVyZy5rYXRlZ29yaWVuID0gZXJnLmthdGVnb3JpZW4ubWFwKGZ1bmN0aW9uKGMpeyByZXR1 cm4geyBrZXk6IGMua2V5LCBsYWJlbDogbShjLmxhYmVsKSB9OyB9KTsKICAgICAgICBpZiAoZXJn LnNlcmllbikgICAgIGVyZy5zZXJpZW4gICAgID0gZXJnLnNlcmllbi5tYXAoZnVuY3Rpb24ocyl7 IHJldHVybiB7IG5hbWU6IG0ocy5uYW1lKSwgd2VydGU6IHMud2VydGUgfTsgfSk7CiAgICAgICAg aWYgKGVyZy5wdW5rdGUpICAgICBlcmcucHVua3RlICAgICA9IGVyZy5wdW5rdGUubWFwKGZ1bmN0 aW9uKHApeyByZXR1cm4geyBsYWJlbDogbShwLmxhYmVsKSwgeDogcC54LCB5OiBwLnkgfTsgfSk7 CiAgICAgICAgcmV0dXJuIGVyZzsKICAgIH0KCiAgICAvLyBSZWloZW5mb2xnZSArIEJyZWl0ZSAr IFNpY2h0YmFya2VpdCBhbGxlciBUaWxlcyBhdXMgc3RhdGlzdGlrTGF5b3V0CiAgICAvLyBhbndl bmRlbi4gUmVjaHRlLWJhc2llcnRlcyBWZXJzdGVja2VuIChpbmxpbmUgZGlzcGxheTpub25lLCBp bgogICAgLy8gX3N0YXRpc3Rpa1JlbmRlcm5JbnRlcm4gZ2VzZXR6dCkgYmxlaWJ0IHVuYW5nZXRh c3RldCDigJQgZGFzIFNVLUxheW91dAogICAgLy8gZGFyZiBlaW4gcmVjaHRlLWdlc3BlcnJ0ZXMg UGFuZWwgTklDSFQgc2ljaHRiYXIgc2NoYWx0ZW47IGRlc2hhbGIgbGFldWZ0CiAgICAvLyBkaWUg TGF5b3V0LVNpY2h0YmFya2VpdCB1ZWJlciBkaWUgS2xhc3NlIC50aWxlLXZlcnN0ZWNrdC4KICAg IGZ1bmN0aW9uIGxheW91dEFud2VuZGVuKCkgewogICAgICAgIHZhciBncmlkID0gZG9jdW1lbnQu Z2V0RWxlbWVudEJ5SWQoJ3N0YXRzLWdyaWQnKTsKICAgICAgICBpZiAoIWdyaWQpIHJldHVybjsK ICAgICAgICB2YXIgbGF5b3V0ID0gX2xheW91dExpc3RlKCk7CiAgICAgICAgdmFyIGJyZWl0ZVZv biA9IHt9LCBzaWNodGJhclZvbiA9IHt9OwogICAgICAgIGxheW91dC5mb3JFYWNoKGZ1bmN0aW9u KGUpewogICAgICAgICAgICBpZiAoIWUgfHwgIWUuaWQpIHJldHVybjsKICAgICAgICAgICAgYnJl aXRlVm9uW2UuaWRdICAgPSBlLmJyZWl0ZTsKICAgICAgICAgICAgc2ljaHRiYXJWb25bZS5pZF0g PSAoZS5zaWNodGJhciAhPT0gZmFsc2UpOwogICAgICAgIH0pOwogICAgICAgIHZhciBhbGxlID0g QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZ3JpZC5xdWVyeVNlbGVjdG9yQWxsKCcuc3RhdHMt cGFuZWwnKSk7CiAgICAgICAgdmFyIGJ5SWQgPSB7fTsKICAgICAgICBhbGxlLmZvckVhY2goZnVu Y3Rpb24ocCl7IGJ5SWRbcC5nZXRBdHRyaWJ1dGUoJ2RhdGEtdGlsZS1pZCcpXSA9IHA7IH0pOwog ICAgICAgIC8vIDEpIEdlbGlzdGV0ZSBQYW5lbHMgaW4gTGF5b3V0LVJlaWhlbmZvbGdlIGFucyBF bmRlIHNjaGllYmVuLgogICAgICAgIHZhciBnZXNldHp0ID0ge307CiAgICAgICAgbGF5b3V0LmZv ckVhY2goZnVuY3Rpb24oZSl7CiAgICAgICAgICAgIHZhciBwID0gYnlJZFtlLmlkXTsKICAgICAg ICAgICAgaWYgKHApIHsgZ3JpZC5hcHBlbmRDaGlsZChwKTsgZ2VzZXR6dFtlLmlkXSA9IHRydWU7 IH0KICAgICAgICB9KTsKICAgICAgICAvLyAyKSBOaWNodC1nZWxpc3RldGUgKG5ldWUgS2FjaGVs IC8gRXJzdHN0YXJ0KSBpbiBET00tUmVpaGVuZm9sZ2UgZGFoaW50ZXIuCiAgICAgICAgYWxsZS5m b3JFYWNoKGZ1bmN0aW9uKHApewogICAgICAgICAgICB2YXIgaWQgPSBwLmdldEF0dHJpYnV0ZSgn ZGF0YS10aWxlLWlkJyk7CiAgICAgICAgICAgIGlmICghZ2VzZXR6dFtpZF0pIGdyaWQuYXBwZW5k Q2hpbGQocCk7CiAgICAgICAgfSk7CiAgICAgICAgLy8gMykgQnJlaXRlICsgU2ljaHRiYXJrZWl0 IHNldHplbi4KICAgICAgICBhbGxlLmZvckVhY2goZnVuY3Rpb24ocCl7CiAgICAgICAgICAgIHZh ciBpZCA9IHAuZ2V0QXR0cmlidXRlKCdkYXRhLXRpbGUtaWQnKTsKICAgICAgICAgICAgdmFyIG1p bkIgPSBwLmdldEF0dHJpYnV0ZSgnZGF0YS1taW4tYnJlaXRlJykgfHwgJ2RyaXR0ZWwnOwogICAg ICAgICAgICB2YXIgYnJlaXRlID0gX2JyZWl0ZUNsYW1wKGJyZWl0ZVZvbltpZF0gfHwgX2RlZmF1 bHRCcmVpdGUoaWQpLCBtaW5CKTsKICAgICAgICAgICAgcC5zdHlsZS5ncmlkQ29sdW1uID0gJ3Nw YW4gJyArIEJSRUlURV9TUEFOW2JyZWl0ZV07CiAgICAgICAgICAgIHAuc2V0QXR0cmlidXRlKCdk YXRhLWJyZWl0ZScsIGJyZWl0ZSk7CiAgICAgICAgICAgIHZhciBzaWNodGJhciA9IChpZCBpbiBz aWNodGJhclZvbikgPyBzaWNodGJhclZvbltpZF0gOiB0cnVlOwogICAgICAgICAgICBpZiAoc2lj aHRiYXIpIHAuY2xhc3NMaXN0LnJlbW92ZSgndGlsZS12ZXJzdGVja3QnKTsKICAgICAgICAgICAg ZWxzZSBwLmNsYXNzTGlzdC5hZGQoJ3RpbGUtdmVyc3RlY2t0Jyk7CiAgICAgICAgfSk7CiAgICB9 CgogICAgLy8gVGlsZS1VZWJlcnNpY2h0IGZ1ZXIgZGFzIEFkbWluLUxheW91dC1SYXN0ZXIgKGZl c3RlIFBhbmVscyArIEJhdWthc3RlbiksCiAgICAvLyBqZXdlaWxzIHtpZCwgdGl0ZWwsIG1pbkJy ZWl0ZSwgaXN0S2FjaGVsfS4gYWRtaW5fc3RhdGlzdGlrLmpzIG1pc2NodCBkYXMKICAgIC8vIG1p dCBaLmFkbWluLnN0YXRpc3Rpa0xheW91dCAoUmVpaGVuZm9sZ2UvQnJlaXRlL1NpY2h0YmFya2Vp dCkuCiAgICBmdW5jdGlvbiBzdGF0aXN0aWtUaWxlc0FsbGUoKSB7CiAgICAgICAgdmFyIG91dCA9 IEJVSUxUSU5fVElMRVMubWFwKGZ1bmN0aW9uKHQpewogICAgICAgICAgICByZXR1cm4geyBpZDog dC5pZCwgdGl0ZWw6IHQudGl0ZWwsIG1pbkJyZWl0ZTogdC5taW5CcmVpdGUsIGRlZmF1bHRCcmVp dGU6IHQuZGVmYXVsdEJyZWl0ZSwgaXN0S2FjaGVsOiBmYWxzZSB9OwogICAgICAgIH0pOwogICAg ICAgIF9hbGxlS2FjaGVsbigpLmZvckVhY2goZnVuY3Rpb24oayl7CiAgICAgICAgICAgIG91dC5w dXNoKHsgaWQ6IGsuaWQsIHRpdGVsOiAoay50aXRlbCB8fCAnRWlnZW5lIFN0YXRpc3RpaycpLCBt aW5CcmVpdGU6ICdkcml0dGVsJywgZGVmYXVsdEJyZWl0ZTogJ2hhbGInLCBpc3RLYWNoZWw6IHRy dWUgfSk7CiAgICAgICAgfSk7CiAgICAgICAgcmV0dXJuIG91dDsKICAgIH0KCiAgICBmdW5jdGlv biBzdGF0aXN0aWtSZW5kZXJuKCkgewogICAgICAgIGlmICghWi5zdGF0aXN0aWspIHJldHVybjsK ICAgICAgICB0cnkgewogICAgICAgICAgICBfc3RhdGlzdGlrUmVuZGVybkludGVybigpOwogICAg ICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICAgICAgcmVuZGVyRXJyb3JCb3goZG9jdW1lbnQuZ2V0 RWxlbWVudEJ5SWQoJ2Fuc2ljaHQtc3RhdGlzdGlrJyksIGUsICdTdGF0aXN0aWsnKTsKICAgICAg ICB9CiAgICB9CiAgICBmdW5jdGlvbiBfc3RhdGlzdGlrUmVuZGVybkludGVybigpIHsKICAgICAg ICAvLyBDYWNoZSBmdWVyIF90ZWFtRGF0ZW4oKSBpbnZhbGlkaWVyZW4g4oCUIEZpbHRlci9TdGFi LVdlY2hzZWwKICAgICAgICAvLyBrb2VubmVuIGRpZSBEYXRlbiBiZWVpbmZsdXNzZW4uIElubmVy aGFsYiBkZXMgUmVuZGVyLUxhdWZzIHdpcmQKICAgICAgICAvLyBkYW5uIG51ciBlaW5tYWwgYmVy ZWNobmV0IHVuZCBhbiBtaWtyb3RlYW0gKyBwcm9zYSBhdXNnZWdlYmVuLgogICAgICAgIF9zdGF0 VGVhbURhdGVuQ2FjaGUgPSBudWxsOwogICAgICAgIHZhciBzdGF0cyA9IHN0YXRGaWx0ZXJuKFou c3RhdGlzdGlrKTsKCiAgICAgICAgLy8gQW5vbnltaXNpZXJ1bmdzLU1hcHBpbmcgYXVmYmF1ZW4s IGZhbGxzIFRvZ2dsZSBha3Rpdi4gSW5kZXggYmFzaWVydAogICAgICAgIC8vIGF1ZiBnZWZpbHRl cnRlciBSZWloZW5mb2xnZSwgZGFtaXQgUGVyc29uLU51bW1lcm4gYXVjaCBiZWkKICAgICAgICAv LyBHcnVwcGVuZmlsdGVyIGtvbnNpc3RlbnQgZHVyY2hnZXphZWhsdCBzaW5kLgogICAgICAgIF9z dGF0QW5vbkFrdGl2ID0gZmVhdHVyZUlzdEFrdGl2KCdzdGF0aXN0aWtBbm9ueW0nKTsKICAgICAg ICBfc3RhdEFub25NYXAgPSB7fTsKICAgICAgICBpZiAoX3N0YXRBbm9uQWt0aXYpIHsKICAgICAg ICAgICAgc3RhdHMuZm9yRWFjaChmdW5jdGlvbihzLCBpZHgpIHsgX3N0YXRBbm9uTWFwW3MubmFt ZV0gPSAnUGVyc29uICcgKyAoaWR4ICsgMSk7IH0pOwogICAgICAgIH0KCiAgICAgICAgLy8gS1BJ LVN1bW1lbiBlaW5tYWwgdm9yYWIg4oCUIHdpcmQgZ2xlaWNoIHZvbSBLUEktU2Nocml0dCBnZW51 dHp0LgogICAgICAgIHZhciBzdW1GID0gMCwgc3VtUyA9IDAsIHN1bU4gPSAwLCBzdW1Tb24gPSAw OwogICAgICAgIHZhciBzdW1EZ2wgPSAwLCBzdW1XZGYgPSAwLCBzdW1GYnAgPSAwOwogICAgICAg IHZhciBzdW1VcmwgPSAwLCBzdW1XRSA9IDAsIHN1bUdlcyA9IDA7CiAgICAgICAgdmFyIHN1bUxn ID0gMCwgc3VtQXphID0gMDsKICAgICAgICBzdGF0cy5mb3JFYWNoKGZ1bmN0aW9uKHMpIHsKICAg ICAgICAgICAgc3VtRiArPSBzLmZydWVoOyBzdW1TICs9IHMuc3BhZXQ7IHN1bU4gKz0gcy5uYWNo dDsKICAgICAgICAgICAgc3VtU29uICs9IChzLnNvbmRlcmRpZW5zdCB8fCAwKTsKICAgICAgICAg ICAgc3VtRGdsICs9IChzLmRnbCB8fCAwKTsgc3VtV2RmICs9IChzLndkZiB8fCAwKTsgc3VtRmJw ICs9IChzLmZicCB8fCAwKTsKICAgICAgICAgICAgc3VtVXJsICs9IHMudXJsYXViOwogICAgICAg ICAgICBzdW1XRSArPSBzLndvY2hlbmVuZFRhZ2U7IHN1bUdlcyArPSBzLmdlc2FtdDsKICAgICAg ICAgICAgc3VtTGcgKz0gcy5sZWhyZ2FuZzsgc3VtQXphICs9IChzLmF6QXVzZ2xlaWNoIHx8IDAp OwogICAgICAgIH0pOwoKICAgICAgICAvLyBTaWNodGJhcmtlaXQvUmVjaHRlIGplIFBhbmVsIGlt IFZvcmF1cyBiZXN0aW1tZW4uCiAgICAgICAgdmFyIGtwaUVsICAgICAgID0gZG9jdW1lbnQuZ2V0 RWxlbWVudEJ5SWQoJ3N0YXRzLWtwaXMnKTsKICAgICAgICB2YXIgYmFsa2VuRWwgICAgPSBkb2N1 bWVudC5nZXRFbGVtZW50QnlJZCgnc3RhdHMtY2hhcnQtYmFsa2VuJyk7CiAgICAgICAgdmFyIGZh aXJuZXNzRWwgID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3N0YXRzLWZhaXJuZXNzJyk7CiAg ICAgICAgdmFyIHRlYW1FbCAgICAgID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3N0YXRzLXRl YW0taGVhdG1hcCcpOwogICAgICAgIHZhciBuZWJlbkVsICAgICA9IGRvY3VtZW50LmdldEVsZW1l bnRCeUlkKCdzdGF0cy10ZWFtLWhlYXRtYXAtbmViZW4nKTsKICAgICAgICB2YXIgdGVhbUJhbGtl bkVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3N0YXRzLXRlYW0tYmFsa2VuJyk7CiAgICAg ICAgdmFyIHByb3NhRWwgICAgID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3N0YXRzLXByb3Nh Jyk7CiAgICAgICAgdmFyIGRldGFpbEVsICAgID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLnN0 YXRzLWRldGFpbHMnKTsKCiAgICAgICAgdmFyIGtwaU9uICAgICAgICA9ICEha3BpRWwgICAgICAm JiBkYXJmU3RhdGlzdGlrU3ViKCdzdGF0S3BpcycpOwogICAgICAgIHZhciB2ZXJ0ZWlsdW5nT24g PSAhIWJhbGtlbkVsICAgJiYgZGFyZlN0YXRpc3Rpa1N1Yignc3RhdFNjaGljaHR2ZXJ0ZWlsdW5n Jyk7CiAgICAgICAgdmFyIGZhaXJuZXNzT24gICA9ICEhZmFpcm5lc3NFbCAmJiBmZWF0dXJlSXN0 QWt0aXYoJ2ZhaXJuZXNzQW56ZWlnZScpICYmIGRhcmZTdGF0aXN0aWtTdWIoJ3N0YXRGYWlybmVz cycpOwogICAgICAgIHZhciB0ZWFtT24gICAgICAgPSAhIXRlYW1FbCAgICAgJiYgZGFyZlN0YXRp c3Rpa1N1Yignc3RhdEFid2VzZW5oZWl0Jyk7CiAgICAgICAgdmFyIGRldGFpbE9uICAgICA9ICEh ZGV0YWlsRWwgICAmJiBmZWF0dXJlSXN0QWt0aXYoJ2RldGFpbFRhYmVsbGUnKSAgICYmIGRhcmZT dGF0aXN0aWtTdWIoJ3N0YXREZXRhaWxUYWJlbGxlJyk7CgogICAgICAgIC8vIFBhbmVsLVNpY2h0 YmFya2VpdCBzb2ZvcnQgc2V0emVuIChkaXNwbGF5Om5vbmUgZnVlciBnZXNwZXJydGUgUGFuZWxz KS4KICAgICAgICBmdW5jdGlvbiBzZXRQYW5lbERpc3BsYXkoZWwsIG9uKSB7CiAgICAgICAgICAg IGlmICghZWwpIHJldHVybjsKICAgICAgICAgICAgdmFyIHBhbmVsID0gZWwuY2xvc2VzdCA/IGVs LmNsb3Nlc3QoJy5zdGF0cy1wYW5lbCcpIDogbnVsbDsKICAgICAgICAgICAgaWYgKHBhbmVsKSBw YW5lbC5zdHlsZS5kaXNwbGF5ID0gb24gPyAnJyA6ICdub25lJzsKICAgICAgICB9CiAgICAgICAg aWYgKGtwaUVsKSBrcGlFbC5zdHlsZS5kaXNwbGF5ID0ga3BpT24gPyAnJyA6ICdub25lJzsKICAg ICAgICBzZXRQYW5lbERpc3BsYXkoYmFsa2VuRWwsICAgIHZlcnRlaWx1bmdPbik7CiAgICAgICAg c2V0UGFuZWxEaXNwbGF5KGZhaXJuZXNzRWwsICBmYWlybmVzc09uKTsKICAgICAgICBzZXRQYW5l bERpc3BsYXkodGVhbUVsLCAgICAgIHRlYW1Pbik7CiAgICAgICAgc2V0UGFuZWxEaXNwbGF5KG5l YmVuRWwsICAgICB0ZWFtT24pOwogICAgICAgIHNldFBhbmVsRGlzcGxheSh0ZWFtQmFsa2VuRWws IHRlYW1Pbik7CiAgICAgICAgaWYgKGRldGFpbEVsKSBkZXRhaWxFbC5zdHlsZS5kaXNwbGF5ID0g ZGV0YWlsT24gPyAnJyA6ICdub25lJzsKCiAgICAgICAgLy8gPT09PT0gU2VxdWVudGllbGxlcyBS ZW5kZXJuIG1pdCBTa2VsZXRvbi1IaW50ICsgR2xvdyA9PT09PQogICAgICAgIC8vCiAgICAgICAg Ly8gSGludGVyZ3J1bmQ6IGRhcyBTdGF0aXN0aWstTW9kdWwgbGFldWZ0IGF1ZiBzY2h3YWNoZW4g QmVob2VyZGVuLQogICAgICAgIC8vIFJlY2huZXJuIChpNS04NTAwLCA4R0IgUkFNLCBwYXJhbGxl bCBPZmZpY2UpLiBXdWVyZGVuIGFsbGUgUGFuZWxzCiAgICAgICAgLy8gc3luY2hyb24gaW4gZWlu ZW0gRnJhbWUgcmVuZGVybiwgYmxvY2tpZXJ0IGRpZSBVSSBiaXMgenUgMS0yIHMuCiAgICAgICAg Ly8gU3RhdHRkZXNzZW4gZ2ViZW4gd2lyIG5hY2ggamVkZW0gUGFuZWwgZGVuIE1haW4tVGhyZWFk IGZyZWkKICAgICAgICAvLyAoc2V0VGltZW91dCAzMCBtcyksIGRhbWl0IEJyb3dzZXIgKyBhbmRl cmUgQXBwcyBhdG1lbiBrb2VubmVuLgogICAgICAgIC8vIERlciBVc2VyIHNpZWh0IHNvZm9ydCBl aW5lIFNrZWxldG9uLU5hY2hyaWNodCB1bmQgZGFubiBwcm8gUGFuZWwKICAgICAgICAvLyBlaW5l biBrdXJ6ZW4gR2xvdy1FZmZla3QsIHdlbm4gZGllIERhdGVuIHJlaW5rb21tZW4uCiAgICAgICAg dmFyIHNjaHJpdHRlID0gW107CiAgICAgICAgaWYgKGtwaU9uKSAgICAgICAgc2Nocml0dGUucHVz aCh7IGVsOiBrcGlFbCwgICAgcGFuZWw6IGtwaUVsLCAgICAgICAgICAgICAgICAgICBoaW50OiAn S2VubnphaGxlbiB3ZXJkZW4gZXJtaXR0ZWx04oCmJywKICAgICAgICAgICAgYXVzZnVlaHJlbjog ZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBrcGlFbC5pbm5lckhUTUwgPQogICAgICAgICAg ICAgICAgICAgIGtwaUthcnRlKHN0YXRzLmxlbmd0aCwgJ1BlcnNvbmVuJywgJ3ZhcigtLXRleHQt aGVhZGluZyknKSArCiAgICAgICAgICAgICAgICAgICAga3BpS2FydGUoc3VtR2VzLCAnRGllbnN0 ZSBnZXNhbXQnLCAndmFyKC0tdGV4dC1oZWFkaW5nKScpICsKICAgICAgICAgICAgICAgICAgICBr cGlLYXJ0ZShzdW1GLCAnRnLDvGhkaWVuc3RlJywgJ3ZhcigtLWZhcmJlLWZydWVoKScpICsKICAg ICAgICAgICAgICAgICAgICBrcGlLYXJ0ZShzdW1TLCAnU3DDpHRkaWVuc3RlJywgJ3ZhcigtLWZh cmJlLXNwYWV0KScpICsKICAgICAgICAgICAgICAgICAgICBrcGlLYXJ0ZShzdW1OLCAnTmFjaHRk aWVuc3RlJywgJ3ZhcigtLWZhcmJlLW5hY2h0KScpICsKICAgICAgICAgICAgICAgICAgICBrcGlL YXJ0ZShzdW1Tb24sICdTb25kZXJkaWVuc3RlJywgJ3ZhcigtLXN0YXQtc2QpJykgKwogICAgICAg ICAgICAgICAgICAgIGtwaUthcnRlKHN1bVdFLCAnV0UtRGllbnN0ZScsICd2YXIoLS1zdGF0LXNh bXN0YWcpJykgKwogICAgICAgICAgICAgICAgICAgIGtwaUthcnRlKHN1bVVybCwgJ1VybGF1YnN0 YWdlJywgJ3ZhcigtLXN0YXQtdXJsYXViKScpOwogICAgICAgICAgICB9CiAgICAgICAgfSk7CiAg ICAgICAgaWYgKHZlcnRlaWx1bmdPbikgc2Nocml0dGUucHVzaCh7IGVsOiBiYWxrZW5FbCwgcGFu ZWw6IGJhbGtlbkVsLmNsb3Nlc3QoJy5zdGF0cy1wYW5lbCcpLCAgaGludDogJ1NjaGljaHR2ZXJ0 ZWlsdW5nIHdpcmQgZ2VyZW5kZXJ04oCmJywKICAgICAgICAgICAgYXVzZnVlaHJlbjogZnVuY3Rp b24oKSB7IGJhbGtlblNvcnRMaXN0ZW5lclNpY2hlcm4oKTsgYmFsa2VuUmVuZGVybihzdGF0cyk7 IH0KICAgICAgICB9KTsKICAgICAgICBpZiAoZmFpcm5lc3NPbikgICBzY2hyaXR0ZS5wdXNoKHsg ZWw6IGZhaXJuZXNzRWwsIHBhbmVsOiBmYWlybmVzc0VsLmNsb3Nlc3QoJy5zdGF0cy1wYW5lbCcp LCBoaW50OiAnRmFpcm5lc3MtUXVvdGVuIHdlcmRlbiBiZXJlY2huZXTigKYnLAogICAgICAgICAg ICBhdXNmdWVocmVuOiBmdW5jdGlvbigpIHsgZmFpcm5lc3NSZW5kZXJuKHN0YXRzKTsgfQogICAg ICAgIH0pOwogICAgICAgIGlmICh0ZWFtT24pICAgICAgIHNjaHJpdHRlLnB1c2goeyBlbDogdGVh bUVsLCBwYW5lbDogdGVhbUVsLmNsb3Nlc3QoJy5zdGF0cy1wYW5lbCcpLCAgICBoaW50OiAnTWlr cm90ZWFtLcOcYmVyc2ljaHQgd2lyZCBhdWZnZWJhdXQgKGRhcyBrYW5uIGVpbmVuIE1vbWVudCBk YXVlcm4p4oCmJywKICAgICAgICAgICAgZXh0cmFFbHM6IFtuZWJlbkVsLCB0ZWFtQmFsa2VuRWxd LmZpbHRlcihCb29sZWFuKSwKICAgICAgICAgICAgZXh0cmFQYW5lbHM6IFtuZWJlbkVsLCB0ZWFt QmFsa2VuRWxdLmZpbHRlcihCb29sZWFuKS5tYXAoZnVuY3Rpb24oZSkgeyByZXR1cm4gZS5jbG9z ZXN0KCcuc3RhdHMtcGFuZWwnKTsgfSksCiAgICAgICAgICAgIGF1c2Z1ZWhyZW46IGZ1bmN0aW9u KCkgeyBtaWtyb3RlYW1SZW5kZXJuKCk7IH0KICAgICAgICB9KTsKICAgICAgICBpZiAocHJvc2FF bCkgICAgICBzY2hyaXR0ZS5wdXNoKHsgZWw6IHByb3NhRWwsIHBhbmVsOiBwcm9zYUVsLmNsb3Nl c3QoJy5zdGF0cy1wYW5lbCcpLCAgaGludDogJ0RldGFpbGFuYWx5c2UgcHJvIFBlcnNvbiB3aXJk IGZvcm11bGllcnTigKYnLAogICAgICAgICAgICBhdXNmdWVocmVuOiBmdW5jdGlvbigpIHsgcHJv c2FSZW5kZXJuKHN0YXRzKTsgfQogICAgICAgIH0pOwogICAgICAgIGlmIChkZXRhaWxPbikgICAg IHNjaHJpdHRlLnB1c2goeyBlbDogZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3N0YXRzLXRib2R5 JyksIHBhbmVsOiBkZXRhaWxFbCwgaGludDogJ0RldGFpbHRhYmVsbGUgd2lyZCB2b3JiZXJlaXRl dOKApicsCiAgICAgICAgICAgIGF1c2Z1ZWhyZW46IGZ1bmN0aW9uKCkgeyBkZXRhaWxUYWJlbGxl UmVuZGVybihzdGF0cyk7IH0KICAgICAgICB9KTsKCiAgICAgICAgLy8gQmF1a2FzdGVuLUthY2hl bG4gKHN5bmNocm9uLCBndWVuc3RpZykgKyBMYXlvdXQtUmFzdGVyIChSZWloZW5mb2xnZS8KICAg ICAgICAvLyBCcmVpdGUvU2ljaHRiYXJrZWl0IGFsbGVyIFRpbGVzKSBhbndlbmRlbiwgQkVWT1Ig ZGllIFRvZ2dsZS1Ib29rcwogICAgICAgIC8vIGdyZWlmZW4gKGRhbWl0IGF1Y2ggQ3VzdG9tLVBh bmVscyBlaW4tL2F1c2tsYXBwYmFyIHNpbmQpLgogICAgICAgIGN1c3RvbUthY2hlbG5SZW5kZXJu KCk7CiAgICAgICAgbGF5b3V0QW53ZW5kZW4oKTsKICAgICAgICBwYW5lbFRvZ2dsZUhvb2tzKCk7 CiAgICAgICAgcGlwZWxpbmVTdGFydGVuKHNjaHJpdHRlLCArK19zdGF0UmVuZGVyUnVuSWQpOwog ICAgfQoKICAgIC8vIE1hY2h0IGplZGVuIC5zdGF0cy1wYW5lbCBlaW56ZWxuIGVpbi0vYXVza2xh cHBiYXIuIERlZmF1bHQ6IGFsbGUgYXVmLgogICAgLy8gS2xpY2sgYXVmIGRlbiBQYW5lbC1Lb3Bm IChoMyBvZGVyIGZyZWllIFN0ZWxsZSkgdG9nZ2VsdDsgS2xpY2tzIGF1ZgogICAgLy8gZGVuIGkt QnV0dG9uIG9kZXIgZGllIFNvcnQtQnV0dG9ucyB3ZXJkZW4gdWViZXIgc3RvcFByb3BhZ2F0aW9u IGluCiAgICAvLyBkZW4gamV3ZWlsaWdlbiBIYW5kbGVybiBhYmdlZmFuZ2VuIOKAlCBoaWVyIGZp bHRlcm4gd2lyIGRlZmVuc2l2LgogICAgZnVuY3Rpb24gcGFuZWxUb2dnbGVIb29rcygpIHsKICAg ICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcjYW5zaWNodC1zdGF0aXN0aWsgLnN0YXRz LXBhbmVsJykuZm9yRWFjaChmdW5jdGlvbihwYW5lbCkgewogICAgICAgICAgICB2YXIga29wZiA9 IHBhbmVsLnF1ZXJ5U2VsZWN0b3IoJy5zdGF0cy1wYW5lbC1rb3BmJyk7CiAgICAgICAgICAgIGlm ICgha29wZiB8fCBrb3BmLmRhdGFzZXQudG9nZ2xlRmVydGlnKSByZXR1cm47CiAgICAgICAgICAg IC8vIFBmZWlsLUluZGlrYXRvciB2b3IgZGVtIGgzIGVpbnNldHplbiAoZWlubWFsaWcpLgogICAg ICAgICAgICB2YXIgaDMgPSBrb3BmLnF1ZXJ5U2VsZWN0b3IoJ2gzJyk7CiAgICAgICAgICAgIGlm IChoMyAmJiAhaDMucXVlcnlTZWxlY3RvcignLnN0YXRzLXBhbmVsLXRvZ2dsZScpKSB7CiAgICAg ICAgICAgICAgICB2YXIgcGZlaWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7CiAg ICAgICAgICAgICAgICBwZmVpbC5jbGFzc05hbWUgPSAnc3RhdHMtcGFuZWwtdG9nZ2xlJzsKICAg ICAgICAgICAgICAgIHBmZWlsLnRleHRDb250ZW50ID0gJ+KWvic7CiAgICAgICAgICAgICAgICBo My5pbnNlcnRCZWZvcmUocGZlaWwsIGgzLmZpcnN0Q2hpbGQpOwogICAgICAgICAgICB9CiAgICAg ICAgICAgIGtvcGYuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbihlKSB7CiAgICAg ICAgICAgICAgICAvLyBTdWItS2xpY2tzIChJbmZvLUJ1dHRvbiwgU29ydC1CdXR0b25zLCBGaWx0 ZXIpIHNvbGxlbiBkZW4KICAgICAgICAgICAgICAgIC8vIFRvZ2dsZSBuaWNodCBhdXNsb2VzZW4u CiAgICAgICAgICAgICAgICBpZiAoZS50YXJnZXQuY2xvc2VzdCgnLnN0YXRzLWluZm8tYnRuJykp IHJldHVybjsKICAgICAgICAgICAgICAgIGlmIChlLnRhcmdldC5jbG9zZXN0KCcuc3RhdHMta2F0 LWJ0bicpKSAgcmV0dXJuOwogICAgICAgICAgICAgICAgaWYgKGUudGFyZ2V0LmNsb3Nlc3QoJy5z dGF0cy1zb3J0LXJpY2h0dW5nJykpIHJldHVybjsKICAgICAgICAgICAgICAgIGlmIChlLnRhcmdl dC5jbG9zZXN0KCdidXR0b246bm90KC5zdGF0cy1wYW5lbC10b2dnbGUpJykpIHJldHVybjsKICAg ICAgICAgICAgICAgIHBhbmVsLmNsYXNzTGlzdC50b2dnbGUoJ3p1Z2VrbGFwcHQnKTsKICAgICAg ICAgICAgICAgIHZhciBwID0gaDMgJiYgaDMucXVlcnlTZWxlY3RvcignLnN0YXRzLXBhbmVsLXRv Z2dsZScpOwogICAgICAgICAgICAgICAgaWYgKHApIHAudGV4dENvbnRlbnQgPSBwYW5lbC5jbGFz c0xpc3QuY29udGFpbnMoJ3p1Z2VrbGFwcHQnKSA/ICfilrgnIDogJ+KWvic7CiAgICAgICAgICAg IH0pOwogICAgICAgICAgICBrb3BmLmRhdGFzZXQudG9nZ2xlRmVydGlnID0gJzEnOwogICAgICAg IH0pOwogICAgfQoKICAgIC8vIE1vZHVsLVN0YXRlIFJlbmRlci1QaXBlbGluZS4gQnJpY2h0IGxh dWZlbmRlIFNlcXVlbnogYWIsIHdlbm4gZWluCiAgICAvLyBuZXVlciBSZW5kZXJuLUF1ZnJ1ZiAo ei5CLiBTb3J0LS9GaWx0ZXItV2VjaHNlbCkgcmVpbmtvbW10LgogICAgdmFyIF9zdGF0UmVuZGVy UnVuSWQgPSAwOwoKICAgIGZ1bmN0aW9uIHBpcGVsaW5lU3RhcnRlbihzY2hyaXR0ZSwgcnVuSWQp IHsKICAgICAgICAvLyBQaGFzZSAxOiBhbGxlIFNrZWxldG9ucyBzeW5jaHJvbiBzZXR6ZW4sIGRh bWl0IGRlciBVc2VyIHNvZm9ydAogICAgICAgIC8vIHNpZWh0LCBkYXNzIGV0d2FzIHBhc3NpZXJ0 LiBleHRyYUVscyBzaW5kIHdlaXRlcmUgQ29udGFpbmVyLCBkaWUKICAgICAgICAvLyBpbSBzZWxi ZW4gU2Nocml0dCBiZWZ1ZWxsdCB3ZXJkZW4gKFRlYW0tU2Nocml0dCByZW5kZXJ0IEhlYXRtYXAK ICAgICAgICAvLyArIE5lYmVud2FjaGVuICsgVGFnZXMtQW50ZWlsZSBpbiBlaW5lbSBSdXRzY2gp LgogICAgICAgIHNjaHJpdHRlLmZvckVhY2goZnVuY3Rpb24ocykgewogICAgICAgICAgICBpZiAo cy5lbCkgcy5lbC5pbm5lckhUTUwgPSAnPGRpdiBjbGFzcz0ic3RhdHMtbG9hZGluZyI+JyArIGVz Y2FwZUhUTUwocy5oaW50KSArICc8L2Rpdj4nOwogICAgICAgICAgICAocy5leHRyYUVscyB8fCBb XSkuZm9yRWFjaChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICBpZiAoZSkgZS5pbm5lckhU TUwgPSAnPGRpdiBjbGFzcz0ic3RhdHMtbG9hZGluZyI+JyArIGVzY2FwZUhUTUwocy5oaW50KSAr ICc8L2Rpdj4nOwogICAgICAgICAgICB9KTsKICAgICAgICB9KTsKICAgICAgICAvLyBQaGFzZSAy OiBTY2hyaXR0IGZ1ZXIgU2Nocml0dCByZW5kZXJuLCBZaWVsZCB6d2lzY2hlbiBkZW4gU2Nocml0 dGVuLgogICAgICAgIC8vCiAgICAgICAgLy8gc2V0VGltZW91dCBzdGF0dCByZXF1ZXN0QW5pbWF0 aW9uRnJhbWU6IHJBRi1DYWxsYmFja3MgbGF1ZmVuIFZPUgogICAgICAgIC8vIGRlbSBQYWludCBp bSBzZWxiZW4gRnJhbWUg4oCUIGRlciBTa2VsZXRvbiB3dWVyZGUgbmllIHNpY2h0YmFyCiAgICAg ICAgLy8gd2VyZGVuLiBBdXNzZXJkZW0gcGF1c2llcnQgckFGIGluIEhpbnRlcmdydW5kLVRhYnMg a29tcGxldHQuCiAgICAgICAgLy8KICAgICAgICAvLyBUaW1pbmcgKDIwMjYtMDYtMTUgUmVzcG9u c2l2aXRhZXRzLUF1ZGl0KTogZGllIGZydWVoZXJlIGt1ZW5zdGxpY2hlCiAgICAgICAgLy8gVmVy em9lZ2VydW5nICg4MDAgbXMgaW5pdGlhbCArIDYwMCBtcyBqZSBQYW5lbCDiiYggMyw4IHMgcmVp bmUgV2FydGUtCiAgICAgICAgLy8gemVpdCkgaXN0IGVudGZlcm50LiBEaWUgQmVyZWNobnVuZyBk YXVlcnQgTWlsbGlzZWt1bmRlbiDigJQgZGVyIFVzZXIKICAgICAgICAvLyBzb2xsIGRpZSBTdGF0 aXN0aWsgcHJha3Rpc2NoIHNvZm9ydCBzZWhlbi4gRWluIEtMRUlORVIgU3RhZ2dlcgogICAgICAg IC8vIChqZSA1MCBtcykgYmxlaWJ0LCBkYW1pdCBkZXIgU2tlbGV0b24ga3VyeiBzaWNodGJhciBp c3QsIGRlcgogICAgICAgIC8vIEpTLVRocmVhZCB6d2lzY2hlbiBkZW4gUGFuZWxzIHlpZWxkZXQg KFJlc3BvbnNpdmVuZXNzKSB1bmQgZGllCiAgICAgICAgLy8gR2xvdy1LYXNrYWRlIGFscyBkZXpl bnRlIFdlbGxlIGVya2VubmJhciBibGVpYnQuCiAgICAgICAgZnVuY3Rpb24gc3RlcChpKSB7CiAg ICAgICAgICAgIGlmIChpID49IHNjaHJpdHRlLmxlbmd0aCkgcmV0dXJuOwogICAgICAgICAgICBp ZiAocnVuSWQgIT09IF9zdGF0UmVuZGVyUnVuSWQpIHJldHVybjsgICAgIC8vIG5ldWVyIExhdWYg dWViZXJob2x0CiAgICAgICAgICAgIHZhciBzID0gc2Nocml0dGVbaV07CiAgICAgICAgICAgIHRy eSB7IHMuYXVzZnVlaHJlbigpOyB9IGNhdGNoIChlKSB7IGNvbnNvbGUuZXJyb3IoJ1N0YXRpc3Rp ay1SZW5kZXItRmVobGVyOicsIGUpOyB9CiAgICAgICAgICAgIGZ1bmN0aW9uIGdsb3cocCkgewog ICAgICAgICAgICAgICAgaWYgKCFwKSByZXR1cm47CiAgICAgICAgICAgICAgICBwLmNsYXNzTGlz dC5yZW1vdmUoJ3N0YXRzLWdsb3cnKTsKICAgICAgICAgICAgICAgIC8vIHZvaWQtUmVmbG93IGRh bWl0IGRpZSBBbmltYXRpb24gbmV1IHN0YXJ0ZXQKICAgICAgICAgICAgICAgIHZvaWQgcC5vZmZz ZXRXaWR0aDsKICAgICAgICAgICAgICAgIHAuY2xhc3NMaXN0LmFkZCgnc3RhdHMtZ2xvdycpOwog ICAgICAgICAgICB9CiAgICAgICAgICAgIGdsb3cocy5wYW5lbCk7CiAgICAgICAgICAgIChzLmV4 dHJhUGFuZWxzIHx8IFtdKS5mb3JFYWNoKGdsb3cpOwogICAgICAgICAgICBzZXRUaW1lb3V0KGZ1 bmN0aW9uKCkgeyBzdGVwKGkgKyAxKTsgfSwgNTApOwogICAgICAgIH0KICAgICAgICBzZXRUaW1l b3V0KGZ1bmN0aW9uKCkgeyBzdGVwKDApOyB9LCA2MCk7CiAgICB9CgogICAgLy8gPT09PT0gUHJv c2EtRGV0YWlsYW5hbHlzZSA9PT09PQogICAgLy8KICAgIC8vIEVyemV1Z3QgcHJvIFBlcnNvbiBl aW5lbiBrdXJ6ZW4gRmxpZcOfdGV4dCBhdXMgUmVnZWwtQmVkaW5ndW5nZW4uIEtlaW5lCiAgICAv LyBTZXJ2ZXItQWJoYWVuZ2lna2VpdCDigJQgYXJiZWl0ZXQgbnVyIGF1ZiBkZW4gYmVyZWl0cyBn ZWxhZGVuZW4gU3RhdHMuCiAgICBmdW5jdGlvbiBwcm9zYVJlbmRlcm4oc3RhdHMpIHsKICAgICAg ICB2YXIgZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3RhdHMtcHJvc2EnKTsKICAgICAg ICBpZiAoIWVsKSByZXR1cm47CiAgICAgICAgaWYgKCFzdGF0cy5sZW5ndGgpIHsgZWwuaW5uZXJI VE1MID0gJzxwIGNsYXNzPSJ0ZXh0LW11dGVkIiBzdHlsZT0icGFkZGluZzoxMnB4Ij5LZWluZSBE YXRlbi48L3A+JzsgcmV0dXJuOyB9CgogICAgICAgIC8vIER1cmNoc2Nobml0dGUgdWViZXIgZGll IGFrdHVlbGwgZ2VmaWx0ZXJ0ZSBTdGF0cy1NZW5nZQogICAgICAgIHZhciBuID0gc3RhdHMubGVu Z3RoOwogICAgICAgIHZhciBhdmcgPSB7IGdlc2FtdDowLCBmcnVlaDowLCBzcGFldDowLCBuYWNo dDowLCBzb246MCwgd2RmOjAsIGZicDowLCBkZ2w6MCwKICAgICAgICAgICAgICAgICAgICB3ZTow LCBmdDowLCB1cmxhdWI6MCwgbGc6MCwgYXphOjAsCiAgICAgICAgICAgICAgICAgICAga29tcGxl dHRlV0U6MCwgZmVpZXJ0YWdEaWVuc3RlOjAsIGt1cjowIH07CiAgICAgICAgc3RhdHMuZm9yRWFj aChmdW5jdGlvbihzKSB7CiAgICAgICAgICAgIGF2Zy5nZXNhbXQgKz0gcy5nZXNhbXQ7CiAgICAg ICAgICAgIGF2Zy5mcnVlaCAgKz0gcy5mcnVlaDsKICAgICAgICAgICAgYXZnLnNwYWV0ICArPSBz LnNwYWV0OwogICAgICAgICAgICBhdmcubmFjaHQgICs9IHMubmFjaHQ7CiAgICAgICAgICAgIGF2 Zy5zb24gICAgKz0gKHMuc29uZGVyZGllbnN0IHx8IDApOwogICAgICAgICAgICBhdmcuZGdsICAg ICs9IChzLmRnbCB8fCAwKTsKICAgICAgICAgICAgYXZnLndkZiAgICArPSAocy53ZGYgfHwgMCk7 CiAgICAgICAgICAgIGF2Zy5mYnAgICAgKz0gKHMuZmJwIHx8IDApOwogICAgICAgICAgICBhdmcu d2UgICAgICs9IHMud29jaGVuZW5kVGFnZTsKICAgICAgICAgICAgYXZnLmZ0ICAgICArPSBzLmZl aWVydGFnVGFnZTsKICAgICAgICAgICAgYXZnLnVybGF1YiArPSBzLnVybGF1YjsKICAgICAgICAg ICAgYXZnLmxnICAgICArPSBzLmxlaHJnYW5nOwogICAgICAgICAgICBhdmcuYXphICAgICs9IChz LmF6QXVzZ2xlaWNoIHx8IDApOwogICAgICAgICAgICBhdmcua29tcGxldHRlV0UgICAgICs9IChz LmtvbXBsZXR0ZVdFIHx8IDApOwogICAgICAgICAgICBhdmcuZmVpZXJ0YWdEaWVuc3RlICs9IChz LmZlaWVydGFnRGllbnN0ZSB8fCAwKTsKICAgICAgICAgICAgYXZnLmt1ciAgICAgICAgICAgICAr PSAocy5rdXIgfHwgMCk7CiAgICAgICAgfSk7CiAgICAgICAgT2JqZWN0LmtleXMoYXZnKS5mb3JF YWNoKGZ1bmN0aW9uKGspIHsgYXZnW2tdID0gYXZnW2tdIC8gbjsgfSk7CgogICAgICAgIC8vIE1p a3JvdGVhbS1EYXRlbiBlaW5tYWwgYXVmYmF1ZW4g4oCUIGZ1ZXIgQmV6dWctQmF1c3RlaW5lIChQ b29sLVNwcmluZ2VyLAogICAgICAgIC8vIFRlYW0tTHVlY2tlbikuIFBybyBQZXJzb24gbWVya2Vu IHdpciB1bnMgZGFzIE1pa3JvdGVhbSB1bmQgZGllCiAgICAgICAgLy8gYWdncmVnaWVydGVuIFBv b2wtU3RhdHMuCiAgICAgICAgdmFyIHRlYW1EYXRhID0gKFouYWRtaW4gJiYgWi5hZG1pbi5taWty b3RlYW1zICYmIFouYWRtaW4ubWlrcm90ZWFtcy5sZW5ndGgpID8gX3RlYW1EYXRlbkdlZmlsdGVy dCgpIDogW107CiAgICAgICAgdmFyIHRlYW1CeVBpZCA9IHt9OyAgICAgICAgLy8gcGVyc29uSWQg LT4geyB0ZWFtLCBzcHJpbmdlclRhZ2UgfQogICAgICAgIHRlYW1EYXRhLmZvckVhY2goZnVuY3Rp b24odCkgewogICAgICAgICAgICB2YXIgcG9vbCA9IF9pc3RQb29sVGVhbSh0KTsKICAgICAgICAg ICAgLy8gUG9vbC1TcHJpbmdlci1UYWdlIHBybyBQZXJzb24gemFlaGxlbiAobnVyIGZ1ZXIgTEQv U08gcmVsZXZhbnQpCiAgICAgICAgICAgIHZhciBzcHJpbmdlciA9IDA7CiAgICAgICAgICAgIGlm IChwb29sKSB7CiAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyh0LnRhZ2UpLmZvckVhY2goZnVu Y3Rpb24oZCkgewogICAgICAgICAgICAgICAgICAgIGlmICh0LnRhZ2VbZF0uaXN0U3ByaW5nZXIp IHNwcmluZ2VyKys7CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgfQogICAgICAgICAg ICB0LnBlcnNvbklkcy5mb3JFYWNoKGZ1bmN0aW9uKHBpZCkgewogICAgICAgICAgICAgICAgdGVh bUJ5UGlkW3BpZF0gPSB7IHRlYW06IHQsIHNwcmluZ2VyVGFnZTogc3ByaW5nZXIgfTsKICAgICAg ICAgICAgfSk7CiAgICAgICAgfSk7CgogICAgICAgIC8vIFNvcnRpZXJ1bmcgZmVzdCBuYWNoIFN0 YW5kb3J0ICsgRGllbnN0Z3J1cHBlLCBkYW5uIE5hbWUuIFNvIGxhc3NlbgogICAgICAgIC8vIHNp Y2ggZGllIFBlcnNvbmVuIGVpbmVyIFdhY2hlIHp1c2FtbWVuIGxlc2VuIOKAlCBlbnRzcHJpY2h0 IGRlcgogICAgICAgIC8vIFJlaWhlbmZvbGdlIGRlciBNaWtyb3RlYW0tSGVhdG1hcCBvYmVuLgog ICAgICAgIHZhciBwZXJzb25NYXAgPSB7fTsKICAgICAgICAoWi5wbGFudW5nICYmIFoucGxhbnVu Zy5wZXJzb25lbiB8fCBbXSkuZm9yRWFjaChmdW5jdGlvbihwKSB7IHBlcnNvbk1hcFtwLmlkXSA9 IHA7IH0pOwogICAgICAgIHZhciBzb3J0aWVydCA9IHN0YXRzLnNsaWNlKCkuc29ydChmdW5jdGlv bihhLCBiKSB7CiAgICAgICAgICAgIHZhciBwYSA9IHBlcnNvbk1hcFthLnBlcnNvbklkXSB8fCB7 fSwgcGIgPSBwZXJzb25NYXBbYi5wZXJzb25JZF0gfHwge307CiAgICAgICAgICAgIHZhciBrYSA9 IChwYS5vZSB8fCAnWlonKSArICd8JyArIChwYS5ncnVwcGUgfHwgJ1onKTsKICAgICAgICAgICAg dmFyIGtiID0gKHBiLm9lIHx8ICdaWicpICsgJ3wnICsgKHBiLmdydXBwZSB8fCAnWicpOwogICAg ICAgICAgICBpZiAoa2EgIT09IGtiKSByZXR1cm4ga2EubG9jYWxlQ29tcGFyZShrYiwgJ2RlJyk7 CiAgICAgICAgICAgIHJldHVybiAoYS5uYW1lIHx8ICcnKS5sb2NhbGVDb21wYXJlKGIubmFtZSB8 fCAnJywgJ2RlJyk7CiAgICAgICAgfSk7CgogICAgICAgIHZhciBodG1sID0gJyc7CiAgICAgICAg c29ydGllcnQuZm9yRWFjaChmdW5jdGlvbihzKSB7CiAgICAgICAgICAgIHZhciB0eHQgPSBwcm9z YVRleHQocywgYXZnLCB0ZWFtQnlQaWRbcy5wZXJzb25JZF0pOwogICAgICAgICAgICBpZiAoIXR4 dCkgcmV0dXJuOwogICAgICAgICAgICBodG1sICs9ICc8ZGl2IGNsYXNzPSJzdGF0cy1wcm9zYS16 ZWlsZSI+JyArCiAgICAgICAgICAgICAgICAnPGRpdiBjbGFzcz0ic3RhdHMtcHJvc2EtbmFtZSI+ JyArIGVzY2FwZUhUTUwocHJvc2FBbnJlZGUocykpICsgJzwvZGl2PicgKwogICAgICAgICAgICAg ICAgJzxkaXYgY2xhc3M9InN0YXRzLXByb3NhLXRleHQiPicgKyB0eHQgKyAnPC9kaXY+JyArCiAg ICAgICAgICAgICc8L2Rpdj4nOwogICAgICAgIH0pOwogICAgICAgIGVsLmlubmVySFRNTCA9IGh0 bWwgfHwgJzxwIGNsYXNzPSJ0ZXh0LW11dGVkIiBzdHlsZT0icGFkZGluZzoxMnB4Ij5LZWluZSBh dWZmw6RsbGlnZW4gTXVzdGVyLjwvcD4nOwogICAgfQoKICAgIC8vIEJpbGRldCAiUEhLIE5hY2hu YW1lIiAobWl0IG9wdGlvbmFsZW0gVm9ybmFtZW4pLiBzZXJ2ZXIgbGllZmVydCBuYW1lID0gIk5h Y2huYW1lLCBWb3JuYW1lIi4KICAgIC8vIEJlaSBha3RpdmVtIEFub255bWlzaWVydW5ncy1Ub2dn bGUgd2lyZCAiUGVyc29uIE4iIHp1cnVlY2tnZWdlYmVuLgogICAgZnVuY3Rpb24gcHJvc2FBbnJl ZGUocykgewogICAgICAgIGlmIChfc3RhdEFub25Ba3RpdikgcmV0dXJuIF9zdGF0QW56ZWlnZU5h bWUocyk7CiAgICAgICAgdmFyIHRlaWxlID0gKHMubmFtZSB8fCAnJykuc3BsaXQoJywnKTsKICAg ICAgICB2YXIgbm4gPSAodGVpbGVbMF0gfHwgJycpLnRyaW0oKTsKICAgICAgICB2YXIgdm4gPSAo dGVpbGVbMV0gfHwgJycpLnRyaW0oKTsKICAgICAgICB2YXIgZGcgPSBzLmRpZW5zdGdyYWQgfHwg Jyc7CiAgICAgICAgdmFyIGEgPSAoZGcgPyBkZyArICcgJyA6ICcnKSArIG5uOwogICAgICAgIHJl dHVybiB2biA/IGEgKyAnLCAnICsgdm4gOiBhOwogICAgfQoKICAgIC8vIFJlZ2VsLWJhc2llcnRl IFRleHQtQmF1c3RlaW5lLiBBbGxlIEJlZGluZ3VuZ2VuIHNpbmQgcmVsYXRpdiB6dW0gRHVyY2gt CiAgICAvLyBzY2huaXR0LCBkYW1pdCBkaWUgQW5hbHlzZSBiZWkgamVkZXIgR3J1cHBlbi0vRmls dGVyLUtvbWJpbmF0aW9uIHNpbm52b2xsCiAgICAvLyBibGVpYnQuIGB0ZWFtSW5mb2AgaXN0IG9w dGlvbmFsOiB7IHRlYW0sIHNwcmluZ2VyVGFnZSB9IGF1cyBfdGVhbURhdGVuKCkuCiAgICAvLyBS dWVja2dhYmU6IEhUTUwtU3RyaW5nIChlaW4gU2F0eikgb2RlciBsZWVyLgogICAgZnVuY3Rpb24g cHJvc2FUZXh0KHMsIGF2ZywgdGVhbUluZm8pIHsKICAgICAgICBpZiAocy5nZXNhbXQgPCAzKSBy ZXR1cm4gJyc7ICAvLyB6dSB3ZW5pZ2UgRGF0ZW4gZnVlciBlaW5lIEF1c3NhZ2UKICAgICAgICB2 YXIgZ2VzID0gcy5nZXNhbXQgfHwgMTsKICAgICAgICB2YXIgc2FldHplID0gW107CgogICAgICAg IC8vIEdlc2FtdC1BdXNsYXN0dW5nCiAgICAgICAgaWYgKGF2Zy5nZXNhbXQgPiAzKSB7CiAgICAg ICAgICAgIGlmIChzLmdlc2FtdCA+IGF2Zy5nZXNhbXQgKiAxLjIpICAgICAgIHNhZXR6ZS5wdXNo KCdtYWNodCBtZWhyIERpZW5zdGUgYWxzIMO8YmxpY2ggKCcgKyBzLmdlc2FtdCArICcgdnMuIMOY ICcgKyBNYXRoLnJvdW5kKGF2Zy5nZXNhbXQpICsgJyknKTsKICAgICAgICAgICAgZWxzZSBpZiAo cy5nZXNhbXQgPCBhdmcuZ2VzYW10ICogMC43KSAgc2FldHplLnB1c2goJ2hhdCB1bnRlcmR1cmNo c2Nobml0dGxpY2ggd2VuaWdlIERpZW5zdGUgKCcgKyBzLmdlc2FtdCArICcgdnMuIMOYICcgKyBN YXRoLnJvdW5kKGF2Zy5nZXNhbXQpICsgJyknKTsKICAgICAgICB9CgogICAgICAgIC8vIFNjaGlj aHQtU2NoaWVmbGFnZW4gKEFudGVpbGUgc3RhdHQgYWJzb2x1dGUgWmFobGVuLCBkYW1pdCBmYWly IHZlcmdsZWljaGJhcikKICAgICAgICB2YXIgZkEgPSBzLmZydWVoIC8gZ2VzLCBzQSA9IHMuc3Bh ZXQgLyBnZXMsIG5BID0gcy5uYWNodCAvIGdlczsKICAgICAgICB2YXIgYXZnRkEgPSBhdmcuZ2Vz YW10ID8gYXZnLmZydWVoIC8gYXZnLmdlc2FtdCA6IDA7CiAgICAgICAgdmFyIGF2Z1NBID0gYXZn Lmdlc2FtdCA/IGF2Zy5zcGFldCAvIGF2Zy5nZXNhbXQgOiAwOwogICAgICAgIHZhciBhdmdOQSA9 IGF2Zy5nZXNhbXQgPyBhdmcubmFjaHQgLyBhdmcuZ2VzYW10IDogMDsKCiAgICAgICAgZnVuY3Rp b24gc2NoaWNodFBocmFzZSgpIHsKICAgICAgICAgICAgdmFyIHRlaWxlID0gW107CiAgICAgICAg ICAgIGlmIChuQSA+IGF2Z05BICogMS4zICYmIHMubmFjaHQgPiA1KSAgIHRlaWxlLnB1c2goJ3Zl cm1laHJ0IE5hY2h0ZGllbnN0Jyk7CiAgICAgICAgICAgIGlmIChmQSA+IGF2Z0ZBICogMS4zICYm IHMuZnJ1ZWggPiA1KSAgIHRlaWxlLnB1c2goJ8O8YmVycHJvcG9ydGlvbmFsIHZpZWxlIEZyw7xo ZGllbnN0ZScpOwogICAgICAgICAgICBpZiAoc0EgPiBhdmdTQSAqIDEuMyAmJiBzLnNwYWV0ID4g NSkgICB0ZWlsZS5wdXNoKCfDvGJlcnByb3BvcnRpb25hbCB2aWVsZSBTcMOkdGRpZW5zdGUnKTsK ICAgICAgICAgICAgcmV0dXJuIHRlaWxlLmpvaW4oJyB1bmQgJyk7CiAgICAgICAgfQogICAgICAg IHZhciBzY2hpY2h0ID0gc2NoaWNodFBocmFzZSgpOwogICAgICAgIGlmIChzY2hpY2h0KSBzYWV0 emUucHVzaCgnbWFjaHQgJyArIHNjaGljaHQpOwoKICAgICAgICAvLyBGcsO8aC9TcMOkdC1CYWxh bmNlCiAgICAgICAgdmFyIGZzRGlmZiA9IChzLmZydWVoICsgcy5zcGFldCkgPiAwID8gTWF0aC5h YnMocy5mcnVlaCAtIHMuc3BhZXQpIC8gKHMuZnJ1ZWggKyBzLnNwYWV0KSA6IDA7CiAgICAgICAg aWYgKChzLmZydWVoICsgcy5zcGFldCkgPj0gMTAgJiYgZnNEaWZmIDwgMC4xNSkgc2FldHplLnB1 c2goJ2lzdCBpbiBGcsO8aC0gdW5kIFNww6R0ZGllbnN0ZW4gYXVzZ2VnbGljaGVuJyk7CgogICAg ICAgIC8vIEZ1bmt0aW9ucy1Sb2xsZW4gKERHTC9XREYvRkJQKSDigJQga29udGV4dHVhbGlzaWVy dCBtaXQgZGVyIHByaW1hZXJlbgogICAgICAgIC8vIEZ1bmt0aW9uIGRlciBQZXJzb24gKFoucGxh bnVuZy5wZXJzb25lblsqXS5mdW5rdGlvbikuIE51ciBDcm9zcy0KICAgICAgICAvLyBGdW5rdGlv bnMtRWluc2FldHplIHNpbmQgaW50ZXJlc3NhbnQ6IGVpbiBwcmltYWVyZXIgREdMLCBkZXIgREdM CiAgICAgICAgLy8gbWFjaHQsIGlzdCBSb3V0aW5lLiBFaW4gMy4tTWFubiBvZGVyIFdERiBhbHMg REdMID0gcmVsZXZhbnQuCiAgICAgICAgdmFyIGZrdCA9IChzLmZ1bmt0aW9uIHx8ICcnKS50b0xv d2VyQ2FzZSgpLnRyaW0oKTsKICAgICAgICB2YXIgcHJpbURnbCAgICA9IChma3QgPT09ICdkZ2wn IHx8IGZrdCA9PT0gJ2RnbGluJyk7CiAgICAgICAgdmFyIHByaW1XZGYgICAgPSAoZmt0ID09PSAn d2RmJyB8fCBma3QgPT09ICd3ZGZpbicpOwogICAgICAgIHZhciBwcmltVmVyYW50ID0gcHJpbURn bCB8fCBwcmltV2RmOyAgIC8vIDEuLzIuIFZJMy1ER0wtVmVyYW50d29ydGxpY2hlCgogICAgICAg IGlmICghcHJpbURnbCAmJiAocy5kZ2wgfHwgMCkgPj0gMyAmJiAocy5kZ2wgfHwgMCkgPiBhdmcu ZGdsICogMC41KQogICAgICAgICAgICBzYWV0emUucHVzaCgnd3VyZGUgJyArIHMuZGdsICsgJ8OX IGFscyBER0wgZWluZ2VzZXR6dCAobmljaHQgcHJpbcOkcmUgRnVua3Rpb24pJyk7CiAgICAgICAg aWYgKCFwcmltV2RmICYmIChzLndkZiB8fCAwKSA+PSAzICYmIChzLndkZiB8fCAwKSAvIGdlcyA+ IDAuMiAmJiAocy53ZGYgfHwgMCkgPiBhdmcud2RmICogMC43KQogICAgICAgICAgICBzYWV0emUu cHVzaCgnd3VyZGUgJyArIHMud2RmICsgJ8OXIGFscyBXREYgaW0gRnVua3Rpb25zYmVzZXR6dW5n c3BsYW4gZWluZ2VzZXR6dCcpOwogICAgICAgIGlmIChwcmltVmVyYW50ICYmIChzLmZicCB8fCAw KSA+PSAzKSB7CiAgICAgICAgICAgIHZhciByb2xsZVN0ciA9IHByaW1EZ2wgPyAncHJpbcOkciBE R0wnIDogJ3ByaW3DpHIgV0RGJzsKICAgICAgICAgICAgc2FldHplLnB1c2goJ3d1cmRlICcgKyBz LmZicCArICfDlyBhbHMgRkJQIGVpbmdlc2V0enQgKCcgKyByb2xsZVN0ciArICcpJyk7CiAgICAg ICAgfSBlbHNlIGlmICghcHJpbVZlcmFudCAmJiBhdmcuZmJwID4gMSAmJiAocy5mYnAgfHwgMCkg PiBhdmcuZmJwICogMS41KSB7CiAgICAgICAgICAgIHNhZXR6ZS5wdXNoKCdpc3Qgw7xiZXJkdXJj aHNjaG5pdHRsaWNoIG9mdCBGQlAgKCcgKyBzLmZicCArICfDlyknKTsKICAgICAgICB9CiAgICAg ICAgaWYgKGF2Zy5zb24gPiAxICYmIChzLnNvbmRlcmRpZW5zdCB8fCAwKSA+IGF2Zy5zb24gKiAx LjUpCiAgICAgICAgICAgIHNhZXR6ZS5wdXNoKCfDvGJlcm5pbW10IHZpZWxlIFNvbmRlcmRpZW5z dGUgKFNEL1NFOiAnICsgcy5zb25kZXJkaWVuc3QgKyAnw5cpJyk7CgogICAgICAgIC8vIFdFLUJl bGFzdHVuZwogICAgICAgIGlmIChhdmcud2UgPiAzICYmIHMud29jaGVuZW5kVGFnZSA+IGF2Zy53 ZSAqIDEuMykKICAgICAgICAgICAgc2FldHplLnB1c2goJ2hhdCDDvGJlcmR1cmNoc2Nobml0dGxp Y2ggdmllbGUgV29jaGVuZW5kZGllbnN0ZSAoJyArIHMud29jaGVuZW5kVGFnZSArICcgdnMuIMOY ICcgKyBNYXRoLnJvdW5kKGF2Zy53ZSkgKyAnKScpOwogICAgICAgIGVsc2UgaWYgKHMud29jaGVu ZW5kVGFnZSA9PT0gMCAmJiBzLmdlc2FtdCA+IDEwKQogICAgICAgICAgICBzYWV0emUucHVzaCgn bGVpc3RldCBrZWluZW4gV29jaGVuZW5kZGllbnN0Jyk7CgogICAgICAgIC8vIEtvbXBsZXR0ZSBX b2NoZW5lbmRlbiDigJQgQmVsYXN0dW5ncy1EaWNodGUuIEhvaGVyIFdlcnQgYmVkZXV0ZXQ6CiAg ICAgICAgLy8gUGVyc29uIGhhdHRlIG1laHJmYWNoIFNhK1NvIGFtIFN0dWVjay4gU2Nod2VsbGUg NCBpc3QgcHJhZ21hdGlzY2guCiAgICAgICAgdmFyIGt3ID0gcy5rb21wbGV0dGVXRSB8fCAwOwog ICAgICAgIGlmIChrdyA+PSA0ICYmIGt3ID4gYXZnLmtvbXBsZXR0ZVdFICogMS4zKQogICAgICAg ICAgICBzYWV0emUucHVzaCgnaGF0ICcgKyBrdyArICcga29tcGxldHRlIFdvY2hlbmVuZGVuIOKA lCBob2hlIEJlbGFzdHVuZ3MtRGljaHRlJyk7CgogICAgICAgIC8vIEZlaWVydGFnLURpZW5zdGUK ICAgICAgICB2YXIgZmQgPSBzLmZlaWVydGFnRGllbnN0ZSB8fCAwOwogICAgICAgIGlmIChmZCA+ PSAzICYmIGZkID4gYXZnLmZlaWVydGFnRGllbnN0ZSAqIDEuMykKICAgICAgICAgICAgc2FldHpl LnB1c2goZmQgKyAnIEZlaWVydGFnZSBnZWFyYmVpdGV0ICjDvGJlcmR1cmNoc2Nobml0dGxpY2gp Jyk7CgogICAgICAgIC8vIFBvb2wtU3ByaW5nZXIgKG51ciBMRC9TTyk6IEFuemFobCBTcHJpbmdl ci1UYWdlIGhlcnZvcmhlYmVuLgogICAgICAgIGlmICh0ZWFtSW5mbyAmJiB0ZWFtSW5mby50ZWFt ICYmIF9pc3RQb29sVGVhbSh0ZWFtSW5mby50ZWFtKSAmJiB0ZWFtSW5mby5zcHJpbmdlclRhZ2Ug PiAwKSB7CiAgICAgICAgICAgIHZhciB6aWVsZSA9IChQT09MX1JFTEFUSU9OW3RlYW1JbmZvLnRl YW0uc3RhbmRvcnRdIHx8IFtdKS5qb2luKCcvJyk7CiAgICAgICAgICAgIHNhZXR6ZS5wdXNoKCdz cHJpbmd0ICcgKyB0ZWFtSW5mby5zcHJpbmdlclRhZ2UgKyAnw5cgZsO8ciAnICsgemllbGUgKyAn IGVpbicpOwogICAgICAgIH0KICAgICAgICAvLyBNaWtyb3RlYW0tQmV6dWcgZnVlciByZWd1bGFl cmUgVGVhbXM6IHdlbm4gZGFzIGVpZ2VuZSBUZWFtIGhhZXVmaWcKICAgICAgICAvLyByb3QgaXN0 ICg+PSAyMCUgZGVyIFRhZ2UpLCBhbHMgS29udGV4dCBlaW5ibGVuZGVuLgogICAgICAgIGVsc2Ug aWYgKHRlYW1JbmZvICYmIHRlYW1JbmZvLnRlYW0gJiYgIV9pc3RQb29sVGVhbSh0ZWFtSW5mby50 ZWFtKSkgewogICAgICAgICAgICB2YXIgdHMgPSB0ZWFtSW5mby50ZWFtLnN0YXQgfHwge307CiAg ICAgICAgICAgIHZhciBhbnRlaWwgPSB0cy50b3RhbCA/IHRzLnJvdCAvIHRzLnRvdGFsIDogMDsK ICAgICAgICAgICAgaWYgKGFudGVpbCA+PSAwLjIgJiYgdHMucm90ID49IDUpIHsKICAgICAgICAg ICAgICAgIHNhZXR6ZS5wdXNoKCdNaWtyb3RlYW0gJyArIHRlYW1JbmZvLnRlYW0ubmFtZSArICcg aGF0dGUgJyArIHRzLnJvdCArICcgTMO8Y2tlbnRhZ2UgaW0gWmVpdHJhdW0nKTsKICAgICAgICAg ICAgfQogICAgICAgIH0KCiAgICAgICAgLy8gQWJ3ZXNlbmhlaXRlbiDigJQgS3Jhbmsgd2lyZCBo aWVyIGJld3Vzc3QgbmljaHQgZXJ3YWVobnQgKERhdGVuc2NodXR6KS4KICAgICAgICBpZiAocy51 cmxhdWIgPiAoYXZnLnVybGF1YiAqIDEuNCkgJiYgYXZnLnVybGF1YiA+IDUpIHNhZXR6ZS5wdXNo KHMudXJsYXViICsgJyBVcmxhdWJzdGFnZSAow7xiZXJkdXJjaHNjaG5pdHRsaWNoKScpOwogICAg ICAgIGlmICgocy5rdXIgfHwgMCkgPiAwKSAgICAgICAgICBzYWV0emUucHVzaCgocy5rdXIpICsg JyBUYWdlIGluIEt1cicpOwogICAgICAgIGlmIChzLmxlaHJnYW5nID4gNSkgICAgICAgICAgICBz YWV0emUucHVzaChzLmxlaHJnYW5nICsgJyBMZWhyZ2FuZ3MtL0ZvcnRiaWxkdW5nc3RhZ2UnKTsK ICAgICAgICBpZiAoKHMuYXpBdXNnbGVpY2ggfHwgMCkgPiA1KSAgc2FldHplLnB1c2gocy5hekF1 c2dsZWljaCArICcgQVotQXVzZ2xlaWNoc3RhZ2UnKTsKCiAgICAgICAgaWYgKCFzYWV0emUubGVu Z3RoKSByZXR1cm4gJyc7ICAvLyBuaWNodHMgQXVmZsOkbGxpZ2VzCiAgICAgICAgLy8gRXJzdGUg UGhyYXNlIG1pdCAiIOKAlCAiIGFiZ2V0cmVubnQgdm9tIFJlc3QsIGRhbWl0IGRlciBTYXR6IGxp ZXN0IHdpZQogICAgICAgIC8vICJQSEsgWCDigJQgbWFjaHQgbWVociBEaWVuc3RlLCBpc3QgYXVz Z2VnbGljaGVuLCDigKYiCiAgICAgICAgdmFyIHNhdHpUZXh0ID0gc2FldHplLmpvaW4oJywgJykg KyAnLic7CiAgICAgICAgc2F0elRleHQgPSBzYXR6VGV4dC5jaGFyQXQoMCkudG9VcHBlckNhc2Uo KSArIHNhdHpUZXh0LnNsaWNlKDEpOwogICAgICAgIHJldHVybiBlc2NhcGVIVE1MKHNhdHpUZXh0 KTsKICAgIH0KCiAgICAvLyA9PT09PSBTdGF0aXN0aWs6IEluZm8tTW9kYWxzID09PT09CgogICAg Ly8gRXJrbGFlcnVuZ3MtSW5oYWx0ZSBwcm8gUGFuZWwuIFdpcmQgdm9tIChpKS1CdXR0b24gaW0g UGFuZWwtS29wZgogICAgLy8gZ2VvZWZmbmV0LCB6ZWlndCB3ZWxjaGUgQ29kZXMgd2llIGdlemFl aGx0IHdlcmRlbi4KICAgIHZhciBTVEFUX0lORk9TID0gewogICAgICAgIHZlcnRlaWx1bmc6IHsK ICAgICAgICAgICAgdGl0ZWw6ICdTY2hpY2h0dmVydGVpbHVuZycsCiAgICAgICAgICAgIGh0bWw6 CiAgICAgICAgICAgICAgICAnPHA+QmFsa2VuIHBybyBQZXJzb24gbWl0IEZyw7xoL1Nww6R0L05h Y2h0L1NvbmRlcmRpZW5zdC1BbnRlaWxlbi4gU29ydGllcmJhciDDvGJlciBkYXMgRHJvcGRvd24g b2JlbiByZWNodHMuPC9wPicgKwogICAgICAgICAgICAgICAgJzxoND5aZWl0cmF1bTwvaDQ+JyAr CiAgICAgICAgICAgICAgICAnPHA+TnVyIDxiPjAxLjAxLiBkZXMgUGxhbnVuZ3NqYWhyZXM8L2I+ IGJpcyA8Yj5oZXV0ZSArIDE0IFRhZ2U8L2I+IHdlcmRlbiBnZXrDpGhsdCDigJQgVm9yYXVzLUVp bnRyYWd1bmdlbiB3ZWl0ZXIgaW4gZGVyIFp1a3VuZnQgZmxpZXNzZW4gPGk+bmljaHQ8L2k+IGVp biwgZGFtaXQgZGVyIFZlcmdsZWljaCBmYWlyIGJsZWlidC48L3A+JyArCiAgICAgICAgICAgICAg ICAnPGg0PlBlcnNvbmVua3JlaXM8L2g0PicgKwogICAgICAgICAgICAgICAgJzxwPlN0YW5kYXJk OiBhbGxlIERpZW5zdGdydXBwZW4gYXVzIGRlbSBEcm9wZG93biBvYmVuLiBOdXIgZWluZSBiZXN0 aW1tdGUgR3J1cHBlIGFuc2NoYXVlbj8gSW0gRHJvcGRvd24gYXVzd8OkaGxlbiDigJQgS1BJcywg TWlrcm90ZWFtLUhlYXRtYXAgdW5kIERldGFpbC1UYWJlbGxlIGZpbHRlcm4gc2ljaCBkYW5uIGdl bWVpbnNhbS48L3A+JyArCiAgICAgICAgICAgICAgICAnPGg0PldlbGNoZSBDb2RlcyB6w6RobGVu IHdvaGluPzwvaDQ+JyArCiAgICAgICAgICAgICAgICAnPHVsPicgKwogICAgICAgICAgICAgICAg JzxsaT48Yj5GcsO8aGRpZW5zdDwvYj46IGFsbGUgQ29kZXMgbWl0IDxjb2RlPkYtPC9jb2RlPi1Q cmVmaXggKEYtREdMLCBGLURHTE4sIEYtREdMUywgRi1XREYsIEYtV0RGTiwgRi1XREZTLCBGLUZC UCkuPC9saT4nICsKICAgICAgICAgICAgICAgICc8bGk+PGI+U3DDpHRkaWVuc3Q8L2I+OiBhbGxl IENvZGVzIG1pdCA8Y29kZT5TLTwvY29kZT4tUHJlZml4LjwvbGk+JyArCiAgICAgICAgICAgICAg ICAnPGxpPjxiPk5hY2h0ZGllbnN0PC9iPjogYWxsZSBDb2RlcyBtaXQgPGNvZGU+Ti08L2NvZGU+ LVByZWZpeC48L2xpPicgKwogICAgICAgICAgICAgICAgJzxsaT48Yj5Tb25kZXJkaWVuc3Q8L2I+ IChlaWdlbmVzIFNlZ21lbnQpOiA8Y29kZT5TRDwvY29kZT4sIDxjb2RlPlNFPC9jb2RlPi48L2xp PicgKwogICAgICAgICAgICAgICAgJzwvdWw+JyArCiAgICAgICAgICAgICAgICAnPHA+PGI+zqMg R2VzYW10PC9iPiA9IEZyw7xoICsgU3DDpHQgKyBOYWNodCArIFNvbmRlcmRpZW5zdC48L3A+JyAr CiAgICAgICAgICAgICAgICAnPGg0PldlaXRlcmUgU29ydGllci1GZWxkZXI8L2g0PicgKwogICAg ICAgICAgICAgICAgJzx1bD4nICsKICAgICAgICAgICAgICAgICc8bGk+PGI+U2Ftc3RhZ2UgLyBT b25udGFnZTwvYj46IERpZW5zdGUgYW4gU2EgYnp3LiBTbyDigJQgRmVpZXJ0YWdlIHrDpGhsZW4g c2VwYXJhdCB1bnRlciA8Yj5GZWllcnRhZ2U8L2I+LCBuaWNodCBkb3BwZWx0LjwvbGk+JyArCiAg ICAgICAgICAgICAgICAnPGxpPjxiPktvbXBsZXR0ZSBXb2NoZW5lbmRlbjwvYj46IFNhIDxpPnVu ZDwvaT4gU28gZGVyc2VsYmVuIFdvY2hlIGpld2VpbHMgbWl0IERpZW5zdC48L2xpPicgKwogICAg ICAgICAgICAgICAgJzxsaT48Yj5Gb3J0YmlsZHVuZzwvYj46IEF1RiwgRVRNLCBTZW0sIFRULCBU ekYuIDxiPkRpZW5zdHVudGVycmljaHQ8L2I+OiBEVS4gPGI+TGVocmdhbmc8L2I+OiBMRy48L2xp PicgKwogICAgICAgICAgICAgICAgJzxsaT48Yj5XYWNoZnJlaTwvYj46IHdmci4gPGI+RGllbnN0 ZnJlaTwvYj46IGRmci4gPGI+V2ljaHRpZ2UgZnJlaTwvYj46IMKnMjEgKyAyMWEuIDxiPkFaLUF1 c2dsZWljaDwvYj46IEFaQS4gPGI+U29uZGVydXJsYXViPC9iPjogU1UuPC9saT4nICsKICAgICAg ICAgICAgICAgICc8L3VsPicKICAgICAgICB9LAogICAgICAgIGZhaXJuZXNzOiB7CiAgICAgICAg ICAgIHRpdGVsOiAnV0UtICYgRlQtRmFpcm5lc3MnLAogICAgICAgICAgICBodG1sOgogICAgICAg ICAgICAgICAgJzxwPlZlcmdsZWljaHQgZGllIEJlbGFzdHVuZyBkdXJjaCA8Yj5Xb2NoZW5lbmQt PC9iPiB1bmQgPGI+RmVpZXJ0YWdzZGllbnN0ZTwvYj4gcHJvIFBlcnNvbiBtaXQgZGVtIEdydXBw ZW5kdXJjaHNjaG5pdHQuPC9wPicgKwogICAgICAgICAgICAgICAgJzxoND5aZWl0cmF1bTwvaDQ+ JyArCiAgICAgICAgICAgICAgICAnPHA+R2xlaWNoZXIgQ3V0IHdpZSDDvGJlcmFsbDogPGI+MDEu MDEuIGRlcyBQbGFudW5nc2phaHJlcyBiaXMgaGV1dGUgKyAxNCBUYWdlPC9iPiAoVmVyYmluZGxp Y2hrZWl0c2VuZGUpLiBWb3JhdXMtRWludHJhZ3VuZ2VuIGplbnNlaXRzIGRhdm9uIGZsaWXDn2Vu IG5pY2h0IGVpbi48L3A+JyArCiAgICAgICAgICAgICAgICAnPGg0PldFLURpZW5zdC1RdW90ZSAo SGF1cHRtZXRyaWspPC9oND4nICsKICAgICAgICAgICAgICAgICc8cD5aZWlndCwgd2VsY2hlbiA8 Yj5BbnRlaWwgZGVyIHZlcmbDvGdiYXJlbiBTYStTby1UYWdlPC9iPiBkaWUgUGVyc29uIERpZW5z dCBnZXNjaG9iZW4gaGF0LiBEYXMgbWFjaHQgUGVyc29uZW4gbWl0IHVudGVyc2NoaWVkbGljaCB2 aWVsIFVybGF1YiB2ZXJnbGVpY2hiYXIg4oCUIGplZGVyIGhhdCBkZW5zZWxiZW4gU09MTC1Qb29s LCBhYmVyIHVudGVyc2NoaWVkbGljaGUgSVNULVZlcmbDvGdiYXJrZWl0LjwvcD4nICsKICAgICAg ICAgICAgICAgICc8dWw+JyArCiAgICAgICAgICAgICAgICAnPGxpPjxiPlNPTEwtUG9vbDwvYj46 IGFsbGUgU2ErU28tVGFnZSBpbSBDdXQtWmVpdHJhdW0sIGRpZSA8aT5rZWluPC9pPiBGZWllcnRh ZyBzaW5kLiBGw7xyIGFsbGUgUGVyc29uZW4gaWRlbnRpc2NoLjwvbGk+JyArCiAgICAgICAgICAg ICAgICAnPGxpPjxiPlZlcmbDvGdiYXI8L2I+OiBTT0xMLVBvb2wgbWludXMgZWlnZW5lIEFid2Vz ZW5oZWl0ZW4gYW0gV0UgKFVybCwga3IsIEt1ciwgU1UsIExHLCBBdUYsIEVUTSwgU2VtLCBUVCwg VHpGLCBEVSkuPC9saT4nICsKICAgICAgICAgICAgICAgICc8bGk+PGI+UXVvdGU8L2I+ID0gU2Er U28tRGllbnN0ZSAvIHZlcmbDvGdiYXIuIEJlaXNwaWVsOiAyNSB2b24gMzggPSA2NiAlLjwvbGk+ JyArCiAgICAgICAgICAgICAgICAnPGxpPkZyZWktQ29kZXMgKHdmciwgZGZyLCDCpzIxLCAyMWEs IEFaQSkgesOkaGxlbiA8Yj5uaWNodDwvYj4gYWxzIEFid2VzZW5oZWl0IOKAlCBzaWUgc2luZCDi gJ52ZXJmw7xnYmFyLCBhYmVyIGZyZWlnZXN0ZWxsdCIgdW5kIGdlbmF1IGRhcyBtYWNodCBkaWUg UXVvdGUgc2ljaHRiYXIuPC9saT4nICsKICAgICAgICAgICAgICAgICc8L3VsPicgKwogICAgICAg ICAgICAgICAgJzxoND5XRSBkdXJjaGdlYXJiZWl0ZXQ8L2g0PicgKwogICAgICAgICAgICAgICAg JzxwPk1pbmktU3BhbHRlIHJlY2h0czogd2llIHZpZWxlIFdvY2hlbmVuZGVuIGhhdHRlIGRpZSBQ ZXJzb24gU2EgPGk+dW5kPC9pPiBTbyBiZWlkZSBEaWVuc3QuIFplaWd0IERpY2h0ZSAoZHVyY2hn ZWhlbmQgYmVsYXN0ZXQpIHZzLiBWZXJ0ZWlsdW5nICgxIFRhZy9XRSkuPC9wPicgKwogICAgICAg ICAgICAgICAgJzxoND5GVC1UYWdlPC9oND4nICsKICAgICAgICAgICAgICAgICc8cD5EaWVuc3Qg YW4gZWluZW0gRmVpZXJ0YWcgKGVnYWwgb2IgV29jaGVudGFnIG9kZXIgV0UpLiBLYXJmcmVpdGFn LVNhIHrDpGhsdCBudXIgaGllciwgbmljaHQgZG9wcGVsdCBpbiBXRS48L3A+JyArCiAgICAgICAg ICAgICAgICAnPGg0PlBlcnNvbmVua3JlaXM8L2g0PicgKwogICAgICAgICAgICAgICAgJzxwPkR5 bmFtaXNjaDogUGVyc29uZW4gbWl0IDxiPuKJpSAxMCAlIGRlciBkdXJjaHNjaG5pdHRsaWNoZW4g R2VzYW10ZGllbnN0ZTwvYj4gKG1pbi4gMykuIFJlaW5lIFZvcmF1c3BsYW5lciB1bmQgTGFuZ3pl aXQtQWJ3ZXNlbmRlIGZhbGxlbiBhdXRvbWF0aXNjaCByYXVzLjwvcD4nICsKICAgICAgICAgICAg ICAgICc8aDQ+RmFyYnNrYWxhIChBYndlaWNodW5nIHZvbSDDmCk8L2g0PicgKwogICAgICAgICAg ICAgICAgJzx1bD4nICsKICAgICAgICAgICAgICAgICc8bGk+PGI+R3LDvG48L2I+OiBpbm5lcmhh bGIgwrEyMCAlLjwvbGk+JyArCiAgICAgICAgICAgICAgICAnPGxpPjxiPkdlbGI8L2I+OiDCsTIw 4oCTNTAgJS48L2xpPicgKwogICAgICAgICAgICAgICAgJzxsaT48Yj5Sb3Q8L2I+OiDDvGJlciDC sTUwICUg4oCUIHdlciBoaWVyIGF1ZnRhdWNodCwgdHLDpGd0IGRldXRsaWNoIG1laHIgb2RlciB3 ZW5pZ2VyIGFscyBkaWUgR3J1cHBlLjwvbGk+JyArCiAgICAgICAgICAgICAgICAnPC91bD4nCiAg ICAgICAgfSwKICAgICAgICBtaWtyb3RlYW1zOiB7CiAgICAgICAgICAgIHRpdGVsOiAnTWlrcm90 ZWFtcyDigJQgZ2VtZWluc2FtZSBWZXJmw7xnYmFya2VpdCcsCiAgICAgICAgICAgIGh0bWw6CiAg ICAgICAgICAgICAgICAnPHA+UHJvIE1pa3JvdGVhbSAoU3RhbmRvcnQgw5cgRGllbnN0Z3J1cHBl LCB6LiBCLiA8aT5LYW1lbi1BPC9pPikgd2lyZCBmw7xyIGplZGVuIFRhZyBpbSBaZWl0cmF1bSBn ZXplaWd0LCB3aWUgdmllbGUgTWl0Z2xpZWRlciBpbSBEaWVuc3Qgd2FyZW4uPC9wPicgKwogICAg ICAgICAgICAgICAgJzxoND5GYXJiZW48L2g0PicgKwogICAgICAgICAgICAgICAgJzx1bD4nICsK ICAgICAgICAgICAgICAgICc8bGk+PGI+Um90PC9iPjogbmllbWFuZCBpbSBEaWVuc3QgdW5kIG1p bmQuIGVpbmUgUGVyc29uIGhhdCBlaW5lbiBGcmVpLUNvZGUgKHdmci9kZnIvwqcyMS8yMWEvQVpB KSDigJQgZGFzIFRlYW0gd29sbHRlIGtvbXBsZXR0IGZyZWkgaGFiZW4uPC9saT4nICsKICAgICAg ICAgICAgICAgICc8bGk+PGI+R3JhdTwvYj46IG5pZW1hbmQgaW0gRGllbnN0LCBhYmVyIG1pbmQu IGVpbmUgUGVyc29uIGlzdCBsZWdpdGltIGFid2VzZW5kIChVcmwva3IvS3VyL1NVL0xlaHJnYW5n L0ZvcnRiaWxkdW5nL0JWL2FiZy9CQU8vSE8pLiBLZWluZSBMw7xja2UgaW0gbmVnYXRpdmVuIFNp bm4uPC9saT4nICsKICAgICAgICAgICAgICAgICc8bGk+PGI+TmV1dHJhbDwvYj46IDEgUGVyc29u IGltIERpZW5zdC48L2xpPicgKwogICAgICAgICAgICAgICAgJzxsaT48Yj5HcsO8bjwvYj46IDIr IFBlcnNvbmVuIGltIERpZW5zdCAob2RlciBQb29sLVNwcmluZ2VyIGFrdGl2KS48L2xpPicgKwog ICAgICAgICAgICAgICAgJzxsaT48Yj5Hb2xkPC9iPjogYWxsZSBUZWFtLU1pdGdsaWVkZXIgaW0g RGllbnN0LjwvbGk+JyArCiAgICAgICAgICAgICAgICAnPC91bD4nICsKICAgICAgICAgICAgICAg ICc8aDQ+4oCeSW0gRGllbnN0IjwvaDQ+JyArCiAgICAgICAgICAgICAgICAnPHA+TnVyIEYtL1Mt L04tQ29kZXMgdW5kIFNvbmRlcmRpZW5zdCAoU0QvU0UpLiBGcmVpLVRhZ2UgKHdmci9kZnIvwqcy MS8yMWEvQVpBKSwgVXJsYXViLCBLcmFuaywgS3VyLCBMZWhyZ2FuZyBldGMuIHrDpGhsZW4gPGI+ bmljaHQ8L2I+IGFscyDigJ5kYSIuPC9wPicgKwogICAgICAgICAgICAgICAgJzxoND5TcGFsdGVu a29wZi1NYXJraWVydW5nZW48L2g0PicgKwogICAgICAgICAgICAgICAgJzx1bD4nICsKICAgICAg ICAgICAgICAgICc8bGk+PGI+V29jaGVuZW5kZW48L2I+IChTYS9Tbyk6IGdyYXVlciBIaW50ZXJn cnVuZC48L2xpPicgKwogICAgICAgICAgICAgICAgJzxsaT48Yj5GZWllcnRhZ2U8L2I+OiByb3Rl ciBTdHJlaWZlbiwgVG9vbHRpcCBtaXQgRmVpZXJ0YWdzbmFtZW4uPC9saT4nICsKICAgICAgICAg ICAgICAgICc8bGk+PGI+RmVyaWVuPC9iPjogYmxhdWVyIFN0cmVpZmVuLCBUb29sdGlwIG1pdCBG ZXJpZW4tQmV6ZWljaG51bmcuPC9saT4nICsKICAgICAgICAgICAgICAgICc8bGk+PGI+4pqgIFNv bmRlcnRlcm1pbjwvYj46IFdhcm5kcmVpZWNrIGltIFNwYWx0ZW5rb3BmLiBLbGljayDDtmZmbmV0 IGRpZSBCZXNjaHJlaWJ1bmcuPC9saT4nICsKICAgICAgICAgICAgICAgICc8L3VsPicgKwogICAg ICAgICAgICAgICAgJzxoND5LbGljay1Ba3Rpb25lbjwvaDQ+JyArCiAgICAgICAgICAgICAgICAn PHVsPicgKwogICAgICAgICAgICAgICAgJzxsaT48Yj5LbGljayBhdWYgVGVhbS1OYW1lPC9iPjog a2xhcHB0IGRpZSBEZXRhaWwtWmVpbGVuIG1pdCBkZW4gZWluemVsbmVuIFBlcnNvbmVuIGF1Zi96 dS4gVGFnZXN6ZWxsZW4gemVpZ2VuIGRhbm4gZGVuIGpld2VpbGlnZW4gQ29kZSAoRi1ER0wsIFVy bCwga3IsIOKApikuPC9saT4nICsKICAgICAgICAgICAgICAgICc8bGk+PGI+S2xpY2sgYXVmIOKa oDwvYj46IHplaWd0IGRpZSBTb25kZXJ0ZXJtaW4tRGV0YWlscy48L2xpPicgKwogICAgICAgICAg ICAgICAgJzwvdWw+JyArCiAgICAgICAgICAgICAgICAnPHA+PGk+RGllIE5lYmVud2FjaGVuLVZl cmFudHdvcnR1bmcgdW5kIGRpZSBUYWdlcy1BbnRlaWxlIHBybyBUZWFtIGhhYmVuIGpldHp0IGVp Z2VuZSBLbGFwcGJsw7Zja2UgdW50ZXJoYWxiIOKAlCBzaWVoZSBkZXJlbiBlaWdlbmUgaS1CdXR0 b25zIGbDvHIgRGV0YWlscy48L2k+PC9wPicKICAgICAgICB9LAogICAgICAgIG5lYmVud2FjaGVu OiB7CiAgICAgICAgICAgIHRpdGVsOiAnVkkzLURHTC1WZXJhbnR3b3J0dW5nIE5lYmVud2FjaGVu JywKICAgICAgICAgICAgaHRtbDoKICAgICAgICAgICAgICAgICc8cD5adXPDpHR6bGljaGUgSGVh dG1hcCBmw7xyIGRpZSBkcmVpIE5lYmVud2FjaGVuIChCb2NodW0sIEFybnNiZXJnLCBGcmV1ZGVu YmVyZykgw5cgQS9CL0MuPC9wPicgKwogICAgICAgICAgICAgICAgJzxoND5XYW5uIHdpcmQgZWlu ZSBaZWxsZSBncsO8bj88L2g0PicgKwogICAgICAgICAgICAgICAgJzxwPkVpbmUgWmVsbGUgd2ly ZCA8Yj5ncsO8bjwvYj4sIHdlbm4gYW4gZGVtIFRhZyBtaW5kZXN0ZW5zIGVpbiBNaXRnbGllZCBk aWVzZXMgVGVhbXMgaW4gZGVyIDxiPjEuIG9kZXIgMi4gVkkzLURHTC1WZXJhbnR3b3J0dW5nPC9i PiBlaW5lciBTY2hpY2h0IChGcsO8aC9TcMOkdC9OYWNodCkgc3RlaHQg4oCUIGFsc28gc2NocmFm ZmllcnQgZGFyZ2VzdGVsbHQgd8OkcmUuIFNvbnN0IGJsZWlidCBkaWUgWmVsbGUgPGI+Z3JhdTwv Yj4uPC9wPicgKwogICAgICAgICAgICAgICAgJzxwPkRpZSBWZXJhbnR3b3J0dW5nIHdpcmQgZHlu YW1pc2NoIG5hY2ggPGI+RnVua3Rpb25zLVJhbmc8L2I+IChER0wvREdMaW4gJmd0OyAzLiBNYW5u L0ZyYXUgJmd0OyBXYWNobGVpdHVuZykgdW5kIDxiPlBvc2l0aW9uPC9iPiBkZXIgamV3ZWlscyBk aWVuc3QtbGVpc3RlbmRlbiBER0wtUGVyc29uZW4gZXJtaXR0ZWx0IOKAlCBpZGVudGlzY2ggenVy IEdyaWQtTG9naWsuIERhIGRpZSBIYXVwdHdhY2hlbiBLYW1lbiB1bmQgSGFnZW4gZGllIFZlcmFu dHdvcnR1bmcgbm9ybWFsZXJ3ZWlzZSBzdGVsbGVuLCBzaW5kIGdyw7xuZSBUYWdlIGF1ZiBkZW4g TmViZW53YWNoZW4gZWluIEluZGlrYXRvciBmw7xyIGVpbmUgU29uZGVyLUtvbnN0ZWxsYXRpb24g KEzDvGNrZSBhdWYgZGVyIEhhdXB0d2FjaGUsIENyb3NzLVdhY2hlbi1FaW5zYXR6KS48L3A+Jwog ICAgICAgIH0sCiAgICAgICAgdGFnZXNhbnRlaWxlOiB7CiAgICAgICAgICAgIHRpdGVsOiAnVGFn ZXMtQW50ZWlsZSBwcm8gVGVhbScsCiAgICAgICAgICAgIGh0bWw6CiAgICAgICAgICAgICAgICAn PHA+VGFnZXMtQW50ZWlsZSBwcm8gVGVhbSBhbHMgZ2VzdGFwZWx0ZXIgMTAwJS1CYWxrZW46IHJv dCAvIGdyYXUgLyBuZXV0cmFsIC8gZ3LDvG4gLyBnb2xkLjwvcD4nICsKICAgICAgICAgICAgICAg ICc8aDQ+U29ydGllci1PcHRpb25lbjwvaDQ+JyArCiAgICAgICAgICAgICAgICAnPHVsPicgKwog ICAgICAgICAgICAgICAgJzxsaT48Yj5SZWloZW5mb2xnZTwvYj46IFN0YW5kYXJkLVJlaWhlbmZv bGdlIGF1cyBkZXIgQWRtaW4tS29uZmlndXJhdGlvbi48L2xpPicgKwogICAgICAgICAgICAgICAg JzxsaT48Yj5Mw7xja2VuIHp1ZXJzdDwvYj46IHByb2JsZW1hdGlzY2hlIFRlYW1zICh2aWVsZSBy b3RlIFRhZ2UpIHp1ZXJzdC48L2xpPicgKwogICAgICAgICAgICAgICAgJzxsaT48Yj5Hb2xkIHp1 ZXJzdDwvYj46IGJlc3QgZ2VzdGVsbHRlIFRlYW1zIChhbGxlIE1pdGdsaWVkZXIgaMOkdWZpZyBn bGVpY2h6ZWl0aWcgaW0gRGllbnN0KS48L2xpPicgKwogICAgICAgICAgICAgICAgJzxsaT48Yj5N aW5kLiAxIGRhPC9iPjogUXVvdGUgZGVyIFRhZ2UgbWl0IEFiZGVja3VuZyAobWluZC4gMSBQZXJz b24gaW0gRGllbnN0KS48L2xpPicgKwogICAgICAgICAgICAgICAgJzwvdWw+JyArCiAgICAgICAg ICAgICAgICAnPHA+RGllIDxiPkFiZGVja3VuZyAlPC9iPiByZWNodHMgaXN0IGRlciBBbnRlaWwg ZGVyIFRhZ2UgbWl0IG1pbmRlc3RlbnMgMSBQZXJzb24gaW0gRGllbnN0LjwvcD4nICsKICAgICAg ICAgICAgICAgICc8cD5Qb29sLVRlYW1zIChMRC1XRCwgU08tV0QpIHdlcmRlbiBhdXNnZWtsYW1t ZXJ0IOKAlCBzaWUgaGFiZW4gbnVyIDEgUGVyc29uIHVuZCBrZWluZW4gc2lubnZvbGxlbiBUYWdl cy1BbnRlaWwuPC9wPicKICAgICAgICB9LAogICAgICAgIGFid2VzZW5oZWl0OiB7CiAgICAgICAg ICAgIHRpdGVsOiAnQWJ3ZXNlbmhlaXRlbicsCiAgICAgICAgICAgIGh0bWw6CiAgICAgICAgICAg ICAgICAnPHA+w5xiZXJzaWNodCBkZXIgTmljaHQtRGllbnN0LUNvZGVzLiBLbGljayBhdWYgZWlu ZSBLYWNoZWwgemVpZ3QgZGllIFRvcC1QZXJzb25lbi48L3A+JyArCiAgICAgICAgICAgICAgICAn PHA+PGI+SGlud2Vpczo8L2I+IEtyYW5raGVpdHN0YWdlICg8Y29kZT5rcjwvY29kZT4pIHdlcmRl biBoaWVyIGJld3Vzc3QgbmljaHQgYXVzZ2V3ZXJ0ZXQuIFNpZSBzaW5kIG51ciBpbiBkZXIgRGV0 YWlsdGFiZWxsZSBnYW56IHVudGVuIHNpY2h0YmFyLjwvcD4nICsKICAgICAgICAgICAgICAgICc8 aDQ+S2F0ZWdvcmllbjwvaDQ+JyArCiAgICAgICAgICAgICAgICAnPHVsPicgKwogICAgICAgICAg ICAgICAgJzxsaT48Yj5LdXI8L2I+OiA8Y29kZT5LdXI8L2NvZGU+IOKAlCBTcG9ydGt1cmVuLCBl aWdlbnN0w6RuZGlnZSBLYXRlZ29yaWUuPC9saT4nICsKICAgICAgICAgICAgICAgICc8bGk+PGI+ VXJsYXViPC9iPjogPGNvZGU+VXJsPC9jb2RlPi48L2xpPicgKwogICAgICAgICAgICAgICAgJzxs aT48Yj5MZWhyZ2FuZyAvIEZvcnRiaWxkdW5nPC9iPjogPGNvZGU+TEc8L2NvZGU+LCA8Y29kZT5U VDwvY29kZT4sIDxjb2RlPkF1RjwvY29kZT4sIDxjb2RlPkZCPC9jb2RlPiwgPGNvZGU+U2VtPC9j b2RlPiwgPGNvZGU+RVRNPC9jb2RlPiwgPGNvZGU+RFU8L2NvZGU+LjwvbGk+JyArCiAgICAgICAg ICAgICAgICAnPGxpPjxiPkFaLUF1c2dsZWljaCAoMjFlci1UYWdlKTwvYj46IDxjb2RlPsKnMjE8 L2NvZGU+LCA8Y29kZT4yMWE8L2NvZGU+LCA8Y29kZT5BWkE8L2NvZGU+LjwvbGk+JyArCiAgICAg ICAgICAgICAgICAnPC91bD4nCiAgICAgICAgfSwKICAgICAgICBwcm9zYTogewogICAgICAgICAg ICB0aXRlbDogJ0RldGFpbGFuYWx5c2UgcHJvIFBlcnNvbicsCiAgICAgICAgICAgIGh0bWw6CiAg ICAgICAgICAgICAgICAnPHA+RsO8ciBqZWRlIFBlcnNvbiB3aXJkIGVpbiBrdXJ6ZXIgVGV4dCBh dXMgUmVnZWwtQmF1c3RlaW5lbiBnZW5lcmllcnQuIERpZSBSZWdlbG4gc2luZCByZWxhdGl2IHp1 bSBEdXJjaHNjaG5pdHQgZGVyIGFrdHVlbGxlbiBBdXN3YWhsIChHcnVwcGVuLUZpbHRlciArIFN0 YWItVG9nZ2xlIHdpcmtlbikuIFNvcnRpZXJ1bmc6IG5hY2ggPGI+U3RhbmRvcnQgKyBEaWVuc3Rn cnVwcGU8L2I+IChLYW1lbi1BIOKGkiBTb2VzdC1XRCkuPC9wPicgKwogICAgICAgICAgICAgICAg JzxoND5TY2hpY2h0IC8gRnVua3Rpb248L2g0PicgKwogICAgICAgICAgICAgICAgJzx1bD4nICsK ICAgICAgICAgICAgICAgICc8bGk+PGI+R2VzYW10ICZndDsgMSwyw5fDmDwvYj4g4oaSIOKAnm1l aHIgRGllbnN0ZSBhbHMgw7xibGljaCIgwrcgPGI+Jmx0OyAwLDfDl8OYPC9iPiDihpIg4oCedW50 ZXJkdXJjaHNjaG5pdHRsaWNoIHdlbmlnZSIuPC9saT4nICsKICAgICAgICAgICAgICAgICc8bGk+ PGI+TmFjaHQtIC8gRnLDvGgtIC8gU3DDpHRhbnRlaWwgJmd0OyAxLDPDlyDDmC1BbnRlaWw8L2I+ IOKGkiDigJ52ZXJtZWhydCDigKYiLjwvbGk+JyArCiAgICAgICAgICAgICAgICAnPGxpPjxiPnxm cnVlaCDiiJIgc3BhZXR8IC8gKGZydWVoICsgc3BhZXQpICZsdDsgMCwxNTwvYj4g4oaSIOKAnmlu IEZyw7xoIHVuZCBTcMOkdCBhdXNnZWdsaWNoZW4iLjwvbGk+JyArCiAgICAgICAgICAgICAgICAn PGxpPjxiPkRHTCAmZ3Q7IDEsMsOXw5g8L2I+LCA8Yj5XREYgJmd0OyAzMCAlICZhbXA7ICZndDsg MSwyw5fDmDwvYj4sIDxiPkZCUCAmZ3Q7IDEsNcOXw5g8L2I+LCA8Yj5Tb25kZXJkaWVuc3QgJmd0 OyAxLDXDl8OYPC9iPi48L2xpPicgKwogICAgICAgICAgICAgICAgJzwvdWw+JyArCiAgICAgICAg ICAgICAgICAnPGg0PldvY2hlbmVuZGUgLyBGZWllcnRhZyAvIEJlbGFzdHVuZ3MtRGljaHRlPC9o ND4nICsKICAgICAgICAgICAgICAgICc8dWw+JyArCiAgICAgICAgICAgICAgICAnPGxpPjxiPldF LURpZW5zdGUgJmd0OyAxLDPDl8OYPC9iPiBvZGVyIDxiPj0gMDwvYj4gYmVpICZndDsgMTAgR2Vz YW10ZGllbnN0ZW4uPC9saT4nICsKICAgICAgICAgICAgICAgICc8bGk+PGI+V0UgZHVyY2hnZWFy YmVpdGV0IOKJpSA0IHVuZCAmZ3Q7IDEsM8OXw5g8L2I+IOKGkiDigJ5ob2hlIEJlbGFzdHVuZ3Mt RGljaHRlIi48L2xpPicgKwogICAgICAgICAgICAgICAgJzxsaT48Yj5GZWllcnRhZy1EaWVuc3Rl IOKJpSAzIHVuZCAmZ3Q7IDEsM8OXw5g8L2I+IOKGkiDigJ7DvGJlcmR1cmNoc2Nobml0dGxpY2gi LjwvbGk+JyArCiAgICAgICAgICAgICAgICAnPC91bD4nICsKICAgICAgICAgICAgICAgICc8aDQ+ TWlrcm90ZWFtLUJlenVnPC9oND4nICsKICAgICAgICAgICAgICAgICc8dWw+JyArCiAgICAgICAg ICAgICAgICAnPGxpPjxiPlBvb2wtUGVyc29uIChMRC9TTyk8L2I+OiBBbnphaGwgU3ByaW5nZXIt VGFnZSBmw7xyIFppZWwtU3RhbmRvcnQuPC9saT4nICsKICAgICAgICAgICAgICAgICc8bGk+PGI+ UmVndWzDpHJlcyBUZWFtIG1pdCDiiaUgMjAgJSBMw7xja2VudGFnZW48L2I+OiBIaW53ZWlzIGFs cyBLb250ZXh0LjwvbGk+JyArCiAgICAgICAgICAgICAgICAnPC91bD4nICsKICAgICAgICAgICAg ICAgICc8aDQ+QWJ3ZXNlbmhlaXRlbjwvaDQ+JyArCiAgICAgICAgICAgICAgICAnPHVsPicgKwog ICAgICAgICAgICAgICAgJzxsaT48Yj5VcmxhdWIgJmd0OyAxLDTDl8OYPC9iPiwgPGI+TGVocmdh bmcgJmd0OyA1PC9iPiwgPGI+QVpBICZndDsgNTwvYj4g4oaSIGpld2VpbHMgRXJ3w6RobnVuZy48 L2xpPicgKwogICAgICAgICAgICAgICAgJzxsaT48Yj5LdXIgJmd0OyAwPC9iPiDihpIgSGlud2Vp cyBhbHMgSW5mbyAoa2VpbiBXYXJuc2lnbmFsKS48L2xpPicgKwogICAgICAgICAgICAgICAgJzxs aT48Yj5LcmFuazwvYj4gd2lyZCBoaWVyIDxiPm5pY2h0PC9iPiBlcnfDpGhudCAoRGF0ZW5zY2h1 dHopLjwvbGk+JyArCiAgICAgICAgICAgICAgICAnPC91bD4nICsKICAgICAgICAgICAgICAgICc8 cD5QZXJzb25lbiBtaXQgd2VuaWdlciBhbHMgMyBHZXNhbXRkaWVuc3RlbiB3ZXJkZW4gw7xiZXJz cHJ1bmdlbiAoenUgd2VuaWcgRGF0ZW5iYXNpcykuPC9wPicKICAgICAgICB9CiAgICB9OwoKICAg IGZ1bmN0aW9uIHN0YXRJbmZvWmVpZ2VuKHNjaGx1ZXNzZWwpIHsKICAgICAgICB2YXIgaW5mbyA9 IFNUQVRfSU5GT1Nbc2NobHVlc3NlbF07CiAgICAgICAgaWYgKCFpbmZvKSByZXR1cm47CiAgICAg ICAgdmFyIGZ1c3MgPSAnPGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1wcmltYWVyIiBpZD0ic3RhdHMt aW5mby1zY2hsaWVzc2VuIj5WZXJzdGFuZGVuPC9idXR0b24+JzsKICAgICAgICBtb2RhbFplaWdl bignSW5mbzogJyArIGluZm8udGl0ZWwsIGluZm8uaHRtbCwgZnVzcywgbnVsbCk7CiAgICAgICAg ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3N0YXRzLWluZm8tc2NobGllc3NlbicpLmFkZEV2ZW50 TGlzdGVuZXIoJ2NsaWNrJywgbW9kYWxTY2hsaWVzc2VuKTsKICAgIH0KCiAgICBmdW5jdGlvbiBr cGlLYXJ0ZSh3ZXJ0LCBsYWJlbCwgZmFyYmUpIHsKICAgICAgICByZXR1cm4gJzxkaXYgY2xhc3M9 InN0YXRzLWtwaSI+JyArCiAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJzdGF0cy1rcGktd2VydCIg c3R5bGU9ImNvbG9yOicgKyBmYXJiZSArICciPicgKyB3ZXJ0ICsgJzwvZGl2PicgKwogICAgICAg ICAgICAnPGRpdiBjbGFzcz0ic3RhdHMta3BpLWxhYmVsIj4nICsgbGFiZWwgKyAnPC9kaXY+PC9k aXY+JzsKICAgIH0KCiAgICAvLyBCYWxrZW4tQW5zaWNodDogcHJvIFBlcnNvbiBlaW4gZ2VzdGFw ZWx0ZXIgQmFsa2VuLCBkZXNzZW4gU2VnbWVudGUKICAgIC8vIHNpY2ggbmFjaCBkZXIgYWt0dWVs bCBha3RpdmVuIEthdGVnb3JpZSByaWNodGVuIChTY2hpY2h0ZW4gLwogICAgLy8gV29jaGVuZW5k ZGllbnN0ZSAvIEZvcnRiaWxkdW5nIC8gQWJ3ZXNlbmhlaXQpLiBTb3J0aWVydW5nIG5hY2ggZGVy CiAgICAvLyBLYXRlZ29yaWUtU3VtbWUsIFJpY2h0dW5nIHVtc2NoYWx0YmFyLgogICAgLy8KICAg IC8vIEtSQU5LIGlzdCBiZXd1c3N0IG5pcmdlbmR3byBlbnRoYWx0ZW4g4oCUIERhdGVuc2NodXR6 LUFuZm9yZGVydW5nLgogICAgZnVuY3Rpb24gYmFsa2VuUmVuZGVybihzdGF0cykgewogICAgICAg IHZhciBlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzdGF0cy1jaGFydC1iYWxrZW4nKTsK ICAgICAgICBpZiAoIWVsKSByZXR1cm47CiAgICAgICAgaWYgKCFzdGF0cy5sZW5ndGgpIHsKICAg ICAgICAgICAgZWwuaW5uZXJIVE1MID0gJzxkaXYgY2xhc3M9ImFkbWluLWVtcHR5Ij4nICsKICAg ICAgICAgICAgICAgICcnICsKICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJhZG1pbi1lbXB0 eS10aXRlbCI+S2VpbmUgU3RhdGlzdGlrLURhdGVuPC9kaXY+JyArCiAgICAgICAgICAgICAgICAn PGRpdiBjbGFzcz0iYWRtaW4tZW1wdHktdGV4dCI+SW0gYWt0dWVsbGVuIEZpbHRlciBzaW5kIGtl aW5lIFBlcnNvbmVuIG1pdCBFaW50cmFlZ2VuLiBGaWx0ZXIgenVydWVja3NldHplbiBvZGVyIERh dGVuIGVyZmFzc2VuLjwvZGl2PicgKwogICAgICAgICAgICAgICAgJzwvZGl2Pic7CiAgICAgICAg ICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgIHZhciBrYXQgPSBTVEFUX0tBVEVHT1JJRU5b X3N0YXRLYXRlZ29yaWVdIHx8IFNUQVRfS0FURUdPUklFTi5zY2hpY2h0ZW47CiAgICAgICAgdmFy IHJpY2h0dW5nID0gX3N0YXRTb3J0UmljaHR1bmc7CgogICAgICAgIC8vIFNvcnRpZXItS29waWUu IEJlaSBHbGVpY2hzdGFuZCBhbHBoYWJldGlzY2ggbmFjaCBOYW1lIGFscyBUaWVicmVha2VyLgog ICAgICAgIHZhciByb3dzID0gc3RhdHMuc2xpY2UoKS5zb3J0KGZ1bmN0aW9uKGEsIGIpIHsKICAg ICAgICAgICAgdmFyIGF2ID0gX3N0YXRLYXRTdW1tZShhLCBrYXQpLCBidiA9IF9zdGF0S2F0U3Vt bWUoYiwga2F0KTsKICAgICAgICAgICAgaWYgKGF2ICE9PSBidikgcmV0dXJuIHJpY2h0dW5nID09 PSAnZGVzYycgPyBidiAtIGF2IDogYXYgLSBidjsKICAgICAgICAgICAgcmV0dXJuIChhLm5hbWUg fHwgJycpLmxvY2FsZUNvbXBhcmUoYi5uYW1lIHx8ICcnLCAnZGUnKTsKICAgICAgICB9KTsKCiAg ICAgICAgLy8gU2thbGllcnVuZyBkZXMgSGF1cHRiYWxrZW5zIGF1ZiBkaWUgbWF4aW1hbGUgS2F0 ZWdvcmllLVN1bW1lLgogICAgICAgIHZhciBtYXhTdW0gPSBNYXRoLm1heC5hcHBseShudWxsLCBy b3dzLm1hcChmdW5jdGlvbihzKSB7IHJldHVybiBfc3RhdEthdFN1bW1lKHMsIGthdCk7IH0pKSB8 fCAxOwogICAgICAgIC8vIEV4dHJhLVNwYWx0ZSAoei5CLiBrb21wbGV0dGUgV0UpOiBlaWdlbmUg U2thbGllcnVuZwogICAgICAgIHZhciBtYXhFeHRyYSA9IDE7CiAgICAgICAgaWYgKGthdC5leHRy YSkgewogICAgICAgICAgICBtYXhFeHRyYSA9IE1hdGgubWF4LmFwcGx5KG51bGwsIHJvd3MubWFw KGZ1bmN0aW9uKHMpIHsgcmV0dXJuIHNba2F0LmV4dHJhLmZlbGRdIHx8IDA7IH0pKSB8fCAxOwog ICAgICAgIH0KCiAgICAgICAgLy8gU3BhbHRlbi1Lb3BmemVpbGU6IFNlZ21lbnQtTGFiZWxzICsg U3VtbWVuLUxhYmVsICsgZ2dmLiBFeHRyYQogICAgICAgIHZhciBzZWdMYWJlbHMgPSBrYXQuc2Vn bWVudGUubWFwKGZ1bmN0aW9uKHNlZykgewogICAgICAgICAgICByZXR1cm4gJzxzcGFuIGNsYXNz PSJzdGF0cy1iYWxrZW4tc2VnLWxhYmVsIiBzdHlsZT0iY29sb3I6JyArIGVzY2FwZUF0dHIoc2Vn LmZhcmJlKSArICciPicgKyBlc2NhcGVIVE1MKHNlZy5sYWJlbCkgKyAnPC9zcGFuPic7CiAgICAg ICAgfSkuam9pbignIMK3ICcpOwogICAgICAgIC8vIM6jLUxhYmVsOiBkYXMgZ2VzYW10ZSDOoy1M YWJlbCAoei5CLiAizqMgRGllbnN0ZSIpIGlzdCBrbGlja2JhciB1bmQKICAgICAgICAvLyBvZWZm bmV0IGRhcyBJbmZvLU1vZGFsLiBGcnVlaGVyIGdhYiBlcyBlaW4genVzYWV0emxpY2hlcyAoPykt SWNvbgogICAgICAgIC8vIOKAlCBlbnRmZXJudCwgd2VpbCBkaWUgZG90dGVkLVVuZGVybGluZS1B ZmZvcmRhbmNlIHBsdXMgZGVyIGdlc2FtdGUKICAgICAgICAvLyBrbGlja2JhcmUgVGV4dCBhbHMg SGlud2VpcyBhdXNyZWljaGVuLgogICAgICAgIHZhciBzaWdtYVRpcCA9ICfOoyA9IFN1bW1lLiBL bGljayDDtmZmbmV0IGRpZSBFcmtsw6RydW5nLic7CiAgICAgICAgdmFyIHNvcnRMYWJlbEh0bWwg PSAnPHNwYW4gY2xhc3M9InN0YXRzLXNpZ21hLWhpbGZlIiBkYXRhLXNpZ21hLWluZm89IjEiIHRp dGxlPSInICsgZXNjYXBlQXR0cihzaWdtYVRpcCkgKyAnIj4nICsgZXNjYXBlSFRNTChrYXQuc29y dExhYmVsKSArICc8L3NwYW4+JzsKICAgICAgICAvLyBLYXRlZ29yaWUtQmVzY2hyZWlidW5nIChv cHRpb25hbCwgbnVyIGZ1ZXIgS2F0ZWdvcmllbiBtaXQga29udGV4dHVlbGxlcgogICAgICAgIC8v IEVybGFldXRlcnVuZyAtLSB6LkIuICJFaW5nZXNwcnVuZ2VuIjogd2FzIHdpcmQgZWlnZW50bGlj aCBnZXphZWhsdD8pLgogICAgICAgIHZhciBiZXNjaHJlaWJ1bmdIdG1sID0gJyc7CiAgICAgICAg aWYgKGthdC5iZXNjaHJlaWJ1bmcpIHsKICAgICAgICAgICAgYmVzY2hyZWlidW5nSHRtbCA9ICc8 cCBjbGFzcz0ic3RhdHMta2F0LWJlc2NocmVpYnVuZyI+JyArIGthdC5iZXNjaHJlaWJ1bmcgKyAn PC9wPic7CiAgICAgICAgfQogICAgICAgIHZhciBrb3BmID0gYmVzY2hyZWlidW5nSHRtbCArICc8 ZGl2IGNsYXNzPSJzdGF0cy1iYWxrZW4ta29wZiI+JyArCiAgICAgICAgICAgICc8ZGl2IGNsYXNz PSJzdGF0cy1iYWxrZW4tbmFtZSI+PC9kaXY+JyArCiAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJz dGF0cy1iYWxrZW4tYmFyLXdyYXAiPjxzcGFuIGNsYXNzPSJzdGF0cy1iYWxrZW4ta29wZi1sYWJl bCI+JyArIHNlZ0xhYmVscyArICc8L3NwYW4+PC9kaXY+JyArCiAgICAgICAgICAgICc8ZGl2IGNs YXNzPSJzdGF0cy1iYWxrZW4tdG90YWwiPjxzcGFuIGNsYXNzPSJzdGF0cy1iYWxrZW4ta29wZi1s YWJlbCI+JyArIHNvcnRMYWJlbEh0bWwgKyAnICcgKyAocmljaHR1bmcgPT09ICdkZXNjJyA/ICfi hpMnIDogJ+KGkScpICsgJzwvc3Bhbj48L2Rpdj4nICsKICAgICAgICAgICAgKGthdC5leHRyYSA/ ICc8ZGl2IGNsYXNzPSJzdGF0cy1iYWxrZW4tZXh0cmEiPjxzcGFuIGNsYXNzPSJzdGF0cy1iYWxr ZW4ta29wZi1sYWJlbCIgc3R5bGU9ImNvbG9yOicgKyBlc2NhcGVBdHRyKGthdC5leHRyYS5mYXJi ZSkgKyAnIj4nICsgZXNjYXBlSFRNTChrYXQuZXh0cmEubGFiZWwpICsgJzwvc3Bhbj48L2Rpdj4n IDogJycpICsKICAgICAgICAgICAgJzwvZGl2Pic7CgogICAgICAgIHZhciBodG1sID0gJyc7CiAg ICAgICAgcm93cy5mb3JFYWNoKGZ1bmN0aW9uKHMpIHsKICAgICAgICAgICAgdmFyIHN1bW1lID0g X3N0YXRLYXRTdW1tZShzLCBrYXQpOwogICAgICAgICAgICAvLyBTZWdtZW50ZSBiYXVlbgogICAg ICAgICAgICB2YXIgc2VnSHRtbCA9ICcnOwogICAgICAgICAgICBrYXQuc2VnbWVudGUuZm9yRWFj aChmdW5jdGlvbihzZWcpIHsKICAgICAgICAgICAgICAgIHZhciB2ID0gc1tzZWcuZmVsZF0gfHwg MDsKICAgICAgICAgICAgICAgIGlmICh2ID09PSAwKSByZXR1cm47CiAgICAgICAgICAgICAgICB2 YXIgYnJlaXRlID0gKHYgLyBtYXhTdW0pICogMTAwOwogICAgICAgICAgICAgICAgc2VnSHRtbCAr PSAnPGRpdiBjbGFzcz0ic3RhdHMtYmFsa2VuLXNlZ21lbnQiIHN0eWxlPSJ3aWR0aDonICsgYnJl aXRlICsgJyU7YmFja2dyb3VuZDonICsgZXNjYXBlQXR0cihzZWcuZmFyYmUpICsgJyIgdGl0bGU9 IicgKyBlc2NhcGVBdHRyKHNlZy5sYWJlbCArICc6ICcgKyB2KSArICciPicgKyB2ICsgJzwvZGl2 Pic7CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICAvLyBFeHRyYS1TcGFsdGUgKGtvbXBsZXR0 ZSBXRSkKICAgICAgICAgICAgdmFyIGV4dHJhSHRtbCA9ICcnOwogICAgICAgICAgICBpZiAoa2F0 LmV4dHJhKSB7CiAgICAgICAgICAgICAgICB2YXIgZXYgPSBzW2thdC5leHRyYS5mZWxkXSB8fCAw OwogICAgICAgICAgICAgICAgdmFyIGViID0gKGV2IC8gbWF4RXh0cmEpICogMTAwOwogICAgICAg ICAgICAgICAgZXh0cmFIdG1sID0gJzxkaXYgY2xhc3M9InN0YXRzLWJhbGtlbi1leHRyYSIgdGl0 bGU9IicgKyBlc2NhcGVBdHRyKGthdC5leHRyYS5sYWJlbCArICc6ICcgKyBldikgKyAnIj4nICsK ICAgICAgICAgICAgICAgICAgICAnPGRpdiBjbGFzcz0ic3RhdHMtYmFsa2VuLWtvbnRleHQtYmFy Ij48ZGl2IGNsYXNzPSJzdGF0cy1iYWxrZW4ta29udGV4dC1maWxsIiBzdHlsZT0id2lkdGg6JyAr IGViICsgJyU7YmFja2dyb3VuZDonICsgZXNjYXBlQXR0cihrYXQuZXh0cmEuZmFyYmUpICsgJyI+ PC9kaXY+PC9kaXY+JyArCiAgICAgICAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9InN0YXRzLWJh bGtlbi1rb250ZXh0LXdlcnQiPicgKyBldiArICc8L2Rpdj4nICsKICAgICAgICAgICAgICAgICAg ICAnPC9kaXY+JzsKICAgICAgICAgICAgfQogICAgICAgICAgICBodG1sICs9ICc8ZGl2IGNsYXNz PSJzdGF0cy1iYWxrZW4temVpbGUiPicgKwogICAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9InN0 YXRzLWJhbGtlbi1uYW1lIiB0aXRsZT0iJyArIGVzY2FwZUF0dHIoX3N0YXRBbnplaWdlTmFtZShz KSkgKyAnIj4nICsgZXNjYXBlSFRNTChfc3RhdEFuemVpZ2VOYW1lKHMpKSArICc8L2Rpdj4nICsK ICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJzdGF0cy1iYWxrZW4tYmFyLXdyYXAiPicgKyBz ZWdIdG1sICsgJzwvZGl2PicgKwogICAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9InN0YXRzLWJh bGtlbi10b3RhbCIgdGl0bGU9IicgKyBlc2NhcGVBdHRyKGthdC5zb3J0TGFiZWwgKyAnOiAnICsg c3VtbWUpICsgJyI+JyArIHN1bW1lICsgJzwvZGl2PicgKwogICAgICAgICAgICAgICAgZXh0cmFI dG1sICsKICAgICAgICAgICAgICAgICc8L2Rpdj4nOwogICAgICAgIH0pOwoKICAgICAgICBlbC5p bm5lckhUTUwgPSAnPGRpdiBjbGFzcz0ic3RhdHMtYmFsa2VuLWNvbnRhaW5lciI+JyArIGtvcGYg KyBodG1sICsgJzwvZGl2Pic7CiAgICAgICAgLy8gS2xpY2sgYXVmIM6jLVNwYW4gaW0gS29wZiDD tmZmbmV0IGVpbiBrbmFwcGVzIEVya2zDpHJ1bmdzLU1vZGFsLgogICAgICAgIGVsLnF1ZXJ5U2Vs ZWN0b3JBbGwoJ1tkYXRhLXNpZ21hLWluZm9dJykuZm9yRWFjaChmdW5jdGlvbihzcCkgewogICAg ICAgICAgICBzcC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIF96ZWlnZVNpZ21hSW5mbyk7CiAg ICAgICAgfSk7CiAgICB9CgogICAgZnVuY3Rpb24gX3plaWdlU2lnbWFJbmZvKCkgewogICAgICAg IHZhciBodG1sID0KICAgICAgICAgICAgJzxwPjxiPs6jPC9iPiBpc3QgZGVyIGdyaWVjaGlzY2hl IEdyb8OfYnVjaHN0YWJlIFNpZ21hIHVuZCBzdGVodCBpbiBkZXIgTWF0aGVtYXRpayBmw7xyIGVp bmUgPGI+U3VtbWU8L2I+LjwvcD4nICsKICAgICAgICAgICAgJzxwPkluIGRpZXNlciBTdGF0aXN0 aWsgYmVkZXV0ZXQgPGNvZGU+zqMgRGllbnN0ZTwvY29kZT4gei5CLiDigJ5TdW1tZSBhbGxlciBE aWVuc3RlIiAoRnLDvGggKyBTcMOkdCArIE5hY2h0ICsgU29uZGVyZGllbnN0KS4gRW50c3ByZWNo ZW5kOjwvcD4nICsKICAgICAgICAgICAgJzx1bD4nICsKICAgICAgICAgICAgJzxsaT48Yj7OoyBX RStGZWllcnRhZzwvYj46IFNhK1NvLURpZW5zdGUgKyBGZWllcnRhZ3MtRGllbnN0ZSBwcm8gUGVy c29uLjwvbGk+JyArCiAgICAgICAgICAgICc8bGk+PGI+zqMgRm9ydGJpbGR1bmc8L2I+OiBGb3J0 YmlsZHVuZyArIERpZW5zdHVudGVycmljaHQgKyBMZWhyZ2FuZy48L2xpPicgKwogICAgICAgICAg ICAnPGxpPjxiPs6jIEFid2VzZW5oZWl0PC9iPjogVXJsYXViICsgS3VyICsgU29uZGVydXJsYXVi LjwvbGk+JyArCiAgICAgICAgICAgICc8L3VsPicgKwogICAgICAgICAgICAnPHA+RGllIFNwYWx0 ZSBnYW56IHJlY2h0cyBpbiBqZWRlciBQZXJzb24tWmVpbGUgemVpZ3QgZGllc2VuIFN1bW1lbndl cnQuPC9wPic7CiAgICAgICAgdmFyIGZ1c3MgPSAnPGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1wcmlt YWVyIiBpZD0ic2lnbWEtaW5mby1zY2hsaWVzc2VuIj5WZXJzdGFuZGVuPC9idXR0b24+JzsKICAg ICAgICBtb2RhbFplaWdlbignV2FzIGJlZGV1dGV0IM6jPycsIGh0bWwsIGZ1c3MsIG51bGwpOwog ICAgICAgIHZhciBidG4gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2lnbWEtaW5mby1zY2hs aWVzc2VuJyk7CiAgICAgICAgaWYgKGJ0bikgYnRuLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywg bW9kYWxTY2hsaWVzc2VuKTsKICAgIH0KCiAgICAvLyBJZGVtcG90ZW50ZXIgTGlzdGVuZXItSG9v ayBmdWVyIEthdGVnb3JpZS1CdXR0b25zICsgUmljaHR1bmdzLUtub3BmLgogICAgLy8gV2lyZCBh dXMgc3RhdGlzdGlrUmVuZGVybigpIGJlaSBqZWRlbSBSZW5kZXJuIGF1ZmdlcnVmZW4sIHJlZ2lz dHJpZXJ0CiAgICAvLyBkaWUgSGFuZGxlciBhYmVyIG51ciBiZWltIGVyc3RlbiBUcmVmZmVyIChk YXRhLWZlcnRpZykuCiAgICBmdW5jdGlvbiBiYWxrZW5Tb3J0TGlzdGVuZXJTaWNoZXJuKCkgewog ICAgICAgIC8vIE51ciBCdXR0b25zIG1pdCBkYXRhLXN0YXRzLWthdCAoPSBTY2hpY2h0dmVydGVp bHVuZ3MtS2F0ZWdvcmllbikKICAgICAgICAvLyBhZHJlc3NpZXJlbiDigJQgc29uc3QgZ3JlaWZ0 IGRlciBIYW5kbGVyIGF1Y2ggYXVmIGRpZSBNaWtyb3RlYW0tCiAgICAgICAgLy8gU29ydC1CdXR0 b25zIHp1LCBkaWUgZGllc2VsYmUgS2xhc3NlIC5zdGF0cy1rYXQtYnRuIG51dHplbi4KICAgICAg ICB2YXIgYnRucyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1tkYXRhLXN0YXRzLWthdF0n KTsKICAgICAgICBidG5zLmZvckVhY2goZnVuY3Rpb24oYikgewogICAgICAgICAgICBpZiAoYi5k YXRhc2V0LmZlcnRpZykgcmV0dXJuOwogICAgICAgICAgICBiLmFkZEV2ZW50TGlzdGVuZXIoJ2Ns aWNrJywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBfc3RhdEthdGVnb3JpZSA9IGIuZ2V0 QXR0cmlidXRlKCdkYXRhLXN0YXRzLWthdCcpIHx8ICdzY2hpY2h0ZW4nOwogICAgICAgICAgICAg ICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnW2RhdGEtc3RhdHMta2F0XScpLmZvckVhY2go ZnVuY3Rpb24oeCkgeyB4LmNsYXNzTGlzdC5yZW1vdmUoJ2FrdGl2Jyk7IH0pOwogICAgICAgICAg ICAgICAgYi5jbGFzc0xpc3QuYWRkKCdha3RpdicpOwogICAgICAgICAgICAgICAgaWYgKFouc3Rh dGlzdGlrKSBiYWxrZW5SZW5kZXJuKHN0YXRGaWx0ZXJuKFouc3RhdGlzdGlrKSk7CiAgICAgICAg ICAgIH0pOwogICAgICAgICAgICBiLmRhdGFzZXQuZmVydGlnID0gJzEnOwogICAgICAgIH0pOwog ICAgICAgIHZhciBidG4gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3RhdHMtc29ydC1yaWNo dHVuZycpOwogICAgICAgIGlmIChidG4gJiYgIWJ0bi5kYXRhc2V0LmZlcnRpZykgewogICAgICAg ICAgICBidG4uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbigpIHsKICAgICAgICAg ICAgICAgIF9zdGF0U29ydFJpY2h0dW5nID0gKF9zdGF0U29ydFJpY2h0dW5nID09PSAnZGVzYycp ID8gJ2FzYycgOiAnZGVzYyc7CiAgICAgICAgICAgICAgICB2YXIgcGZlaWwgPSBidG4ucXVlcnlT ZWxlY3RvcignLnN0YXRzLXNvcnQtcGZlaWwnKTsKICAgICAgICAgICAgICAgIGlmIChwZmVpbCkg cGZlaWwudGV4dENvbnRlbnQgPSAoX3N0YXRTb3J0UmljaHR1bmcgPT09ICdkZXNjJykgPyAn4oaT JyA6ICfihpEnOwogICAgICAgICAgICAgICAgaWYgKFouc3RhdGlzdGlrKSBiYWxrZW5SZW5kZXJu KHN0YXRGaWx0ZXJuKFouc3RhdGlzdGlrKSk7CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICBi dG4uZGF0YXNldC5mZXJ0aWcgPSAnMSc7CiAgICAgICAgfQogICAgfQoKICAgIC8vIFdFL0ZULUZh aXJuZXNzIOKAlCB2aXN1YWxpc2llcnQgZGllIFZlcnRlaWx1bmcgdm9uIFdvY2hlbmVuZC0gdW5k CiAgICAvLyBGZWllcnRhZ3NkaWVuc3RlbiBnZWdlbiBkZW4gR3J1cHBlbi1EdXJjaHNjaG5pdHQu CiAgICAvLwogICAgLy8gRGlzanVua3Qgc2VpdCAyMDI2LTA1OiBXRSA9IFNhK1NvIE9ITkUgRmVp ZXJ0YWdlLCBGVCA9IEZlaWVydGFnZQogICAgLy8gKGVnYWwgb2IgV29jaGVudGFnIG9kZXIgV0Up LiBFaW4gS2FyZnJlaXRhZy1TYSB6YWVobHQgbnVyIGluIEZULgogICAgLy8KICAgIC8vIEZpbHRl ci1TY2h3ZWxsZSBkeW5hbWlzY2g6IG1heCgzLCAxMCAlIHZvbSBBdmctR2VzYW10KS4gU2thbGll cnQKICAgIC8vIG1pdCBkZW0gQ3V0LVplaXRyYXVtICgwMS4wMS4gLSBoZXV0ZSsxNFQgPSBWZXJi aW5kbGljaGtlaXRzZW5kZSkuCiAgICBmdW5jdGlvbiBmYWlybmVzc1JlbmRlcm4oc3RhdHMpIHsK ICAgICAgICB2YXIgYWt0aXZlID0gc3RhdHMuZmlsdGVyKGZ1bmN0aW9uKHMpIHsgcmV0dXJuIHMu Z2VzYW10ID4gMDsgfSk7CiAgICAgICAgaWYgKGFrdGl2ZS5sZW5ndGggPT09IDApIHsKICAgICAg ICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3N0YXRzLWZhaXJuZXNzJykuaW5uZXJIVE1M ID0gJzxwIGNsYXNzPSJ0ZXh0LW11dGVkIiBzdHlsZT0icGFkZGluZzoxNnB4O3RleHQtYWxpZ246 Y2VudGVyIj5OaWNodCBnZW7DvGdlbmQgRGF0ZW48L3A+JzsKICAgICAgICAgICAgcmV0dXJuOwog ICAgICAgIH0KICAgICAgICB2YXIgc3VtR2VzID0gMDsKICAgICAgICBha3RpdmUuZm9yRWFjaChm dW5jdGlvbihzKSB7IHN1bUdlcyArPSBzLmdlc2FtdDsgfSk7CiAgICAgICAgdmFyIGF2Z0dlc2Ft dCA9IHN1bUdlcyAvIGFrdGl2ZS5sZW5ndGg7CiAgICAgICAgdmFyIHNjaHdlbGxlICA9IE1hdGgu bWF4KDMsIGF2Z0dlc2FtdCAqIDAuMTApOwogICAgICAgIHZhciByZWxldmFudCAgPSBha3RpdmUu ZmlsdGVyKGZ1bmN0aW9uKHMpIHsgcmV0dXJuIHMuZ2VzYW10ID49IHNjaHdlbGxlOyB9KTsKICAg ICAgICBpZiAocmVsZXZhbnQubGVuZ3RoID09PSAwKSB7CiAgICAgICAgICAgIGRvY3VtZW50Lmdl dEVsZW1lbnRCeUlkKCdzdGF0cy1mYWlybmVzcycpLmlubmVySFRNTCA9ICc8cCBjbGFzcz0idGV4 dC1tdXRlZCIgc3R5bGU9InBhZGRpbmc6MTZweDt0ZXh0LWFsaWduOmNlbnRlciI+TmljaHQgZ2Vu w7xnZW5kIERhdGVuPC9wPic7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAg IC8vIERpc2p1bmt0ZSBXZXJ0ZTogV0UgPSByZWluZXMgU2ErU28gKG9obmUgRmVpZXJ0YWcpLCBG VCA9IEZlaWVydGFnCiAgICAgICAgZnVuY3Rpb24gd2VXZXJ0KHMpICAgeyByZXR1cm4gKHMuc2Ft c3RhZ0RpZW5zdGUgfHwgMCkgKyAocy5zb25udGFnRGllbnN0ZSB8fCAwKTsgfQogICAgICAgIGZ1 bmN0aW9uIGZ0V2VydChzKSAgIHsgcmV0dXJuIHMuZmVpZXJ0YWdEaWVuc3RlIHx8IDA7IH0KICAg ICAgICBmdW5jdGlvbiBrd1dlcnQocykgICB7IHJldHVybiBzLmtvbXBsZXR0ZVdFIHx8IDA7IH0K ICAgICAgICAvLyBXRS1EaWVuc3QtUXVvdGU6IEFudGVpbCBEaWVuc3QgYW4gdmVyZnVlZ2JhcmVu IFdFLVRhZ2VuLgogICAgICAgIC8vIE1hY2h0IFBlcnNvbmVuIG1pdCB2aWVsL3dlbmlnIFVybGF1 YiB2ZXJnbGVpY2hiYXIuCiAgICAgICAgZnVuY3Rpb24gd2VRdW90ZShzKSB7CiAgICAgICAgICAg IHZhciB2ZXJmID0gcy53ZVRhZ2VWZXJmdWVnYmFyIHx8IDA7CiAgICAgICAgICAgIGlmICh2ZXJm ID09PSAwKSByZXR1cm4gMDsKICAgICAgICAgICAgcmV0dXJuIHdlV2VydChzKSAvIHZlcmY7CiAg ICAgICAgfQoKICAgICAgICB2YXIgc3VtUXVvdGUgPSAwLCBzdW1GVCA9IDA7CiAgICAgICAgcmVs ZXZhbnQuZm9yRWFjaChmdW5jdGlvbihzKSB7IHN1bVF1b3RlICs9IHdlUXVvdGUocyk7IHN1bUZU ICs9IGZ0V2VydChzKTsgfSk7CiAgICAgICAgdmFyIGF2Z1F1b3RlID0gc3VtUXVvdGUgLyByZWxl dmFudC5sZW5ndGg7CiAgICAgICAgdmFyIGF2Z0ZUICAgID0gc3VtRlQgLyByZWxldmFudC5sZW5n dGg7CiAgICAgICAgdmFyIG1heEZUICAgID0gTWF0aC5tYXguYXBwbHkobnVsbCwgcmVsZXZhbnQu bWFwKGZ0V2VydCkpIHx8IDE7CiAgICAgICAgdmFyIG1heEtXICAgID0gTWF0aC5tYXguYXBwbHko bnVsbCwgcmVsZXZhbnQubWFwKGt3V2VydCkpIHx8IDE7CgogICAgICAgIGZ1bmN0aW9uIGZLbGFz c2UodywgYXZnKSB7CiAgICAgICAgICAgIGlmIChhdmcgPT09IDApIHJldHVybiAnZmFpcm5lc3Mt bmV1dHJhbCc7CiAgICAgICAgICAgIHZhciByID0gTWF0aC5hYnModyAtIGF2ZykgLyBhdmc7CiAg ICAgICAgICAgIHJldHVybiByIDw9IDAuMiA/ICdmYWlybmVzcy1vaycgOiByIDw9IDAuNSA/ICdm YWlybmVzcy13YXJudW5nJyA6ICdmYWlybmVzcy1rcml0aXNjaCc7CiAgICAgICAgfQoKICAgICAg ICAvLyBaZWlsZW4tQmF1ZXIgZnVlciBkaWUgRlQtU2VrdGlvbiAoMyBTcGFsdGVuOiBOYW1lIHwg QmFyIHwgV2VydCkuCiAgICAgICAgZnVuY3Rpb24gemVpbGVCYXVlbihzLCB3ZXJ0Rm4sIG1heCwg YXZnKSB7CiAgICAgICAgICAgIHZhciB2ID0gd2VydEZuKHMpOwogICAgICAgICAgICB2YXIgcGN0 ICAgID0gbWF4ID4gMCA/ICh2ICAgLyBtYXgpICogMTAwIDogMDsKICAgICAgICAgICAgdmFyIGF2 Z1BjdCA9IG1heCA+IDAgPyAoYXZnIC8gbWF4KSAqIDEwMCA6IDA7CiAgICAgICAgICAgIHJldHVy biAnPGRpdiBjbGFzcz0iZmFpcm5lc3Mtcm93Ij4nICsKICAgICAgICAgICAgICAgICc8ZGl2IGNs YXNzPSJmYWlybmVzcy1yb3ctbmFtZSIgdGl0bGU9IicgKyBlc2NhcGVBdHRyKF9zdGF0QW56ZWln ZU5hbWUocykpICsgJyI+JyArIGVzY2FwZUhUTUwoX3N0YXRBbnplaWdlTmFtZShzKSkgKyAnPC9k aXY+JyArCiAgICAgICAgICAgICAgICAnPGRpdiBjbGFzcz0iZmFpcm5lc3Mtcm93LWJhciI+PGRp diBjbGFzcz0iZmFpcm5lc3Mtcm93LWF2ZyIgc3R5bGU9ImxlZnQ6JyArIGF2Z1BjdCArICclIj48 L2Rpdj4nICsKICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJmYWlybmVzcy1yb3ctZmlsbCAn ICsgZktsYXNzZSh2LCBhdmcpICsgJyIgc3R5bGU9IndpZHRoOicgKyBwY3QgKyAnJSI+PC9kaXY+ PC9kaXY+JyArCiAgICAgICAgICAgICAgICAnPGRpdiBjbGFzcz0iZmFpcm5lc3Mtcm93LXZhbCI+ JyArIHYgKyAnPC9kaXY+PC9kaXY+JzsKICAgICAgICB9CiAgICAgICAgLy8gWmVpbGVuLUJhdWVy IGZ1ZXIgZGllIFdFLVNla3Rpb246IFF1b3Rlbi1iYXNpZXJ0LgogICAgICAgIC8vIFF1b3RlID0g V0UtRGllbnN0ZSAvIHZlcmZ1ZWdiYXJlIFdFLVRhZ2UgKFNPTEwtUG9vbCBtaW51cyBwZXJzb2Vu bGljaGUKICAgICAgICAvLyBBYndlc2VuaGVpdCBhbSBXRSkuIE1hY2h0IFBlcnNvbmVuIG1pdCB1 bnRlcnNjaGllZGxpY2hlbSBVcmxhdWIKICAgICAgICAvLyB2ZXJnbGVpY2hiYXIuIEJhbmdlbWFu biAyNS8zOCA9IDY2JSwgR2VuZGlnIDIwLzM2ID0gNTYlLgogICAgICAgIGZ1bmN0aW9uIHplaWxl QmF1ZW5XRShzKSB7CiAgICAgICAgICAgIHZhciB2ICAgICA9IHdlV2VydChzKTsKICAgICAgICAg ICAgdmFyIHZlcmYgID0gcy53ZVRhZ2VWZXJmdWVnYmFyIHx8IDA7CiAgICAgICAgICAgIHZhciBx dW90ZSA9IHdlUXVvdGUocyk7CiAgICAgICAgICAgIHZhciBwY3QgICAgPSBNYXRoLm1pbigxMDAs IHF1b3RlICogMTAwKTsKICAgICAgICAgICAgdmFyIGF2Z1BjdCA9IE1hdGgubWluKDEwMCwgYXZn UXVvdGUgKiAxMDApOwogICAgICAgICAgICB2YXIga3cgICAgID0ga3dXZXJ0KHMpOwogICAgICAg ICAgICB2YXIga3dQY3QgID0gbWF4S1cgPiAwID8gKGt3IC8gbWF4S1cpICogMTAwIDogMDsKICAg ICAgICAgICAgdmFyIHRpcCA9ICdEaWVuc3RlIGFtIFdFOiAnICsgdiArICcgdm9uICcgKyB2ZXJm ICsgJyB2ZXJmXHUwMEZDZ2JhcmVuIFRhZ2VuID0gJyArIE1hdGgucm91bmQocXVvdGUgKiAxMDAp ICsgJyAlJzsKICAgICAgICAgICAgcmV0dXJuICc8ZGl2IGNsYXNzPSJmYWlybmVzcy1yb3cgZmFp cm5lc3Mtcm93LXdlIiB0aXRsZT0iJyArIGVzY2FwZUF0dHIodGlwKSArICciPicgKwogICAgICAg ICAgICAgICAgJzxkaXYgY2xhc3M9ImZhaXJuZXNzLXJvdy1uYW1lIiB0aXRsZT0iJyArIGVzY2Fw ZUF0dHIoX3N0YXRBbnplaWdlTmFtZShzKSkgKyAnIj4nICsgZXNjYXBlSFRNTChfc3RhdEFuemVp Z2VOYW1lKHMpKSArICc8L2Rpdj4nICsKICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJmYWly bmVzcy1yb3ctYmFyIj48ZGl2IGNsYXNzPSJmYWlybmVzcy1yb3ctYXZnIiBzdHlsZT0ibGVmdDon ICsgYXZnUGN0ICsgJyUiPjwvZGl2PicgKwogICAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9ImZh aXJuZXNzLXJvdy1maWxsICcgKyBmS2xhc3NlKHF1b3RlLCBhdmdRdW90ZSkgKyAnIiBzdHlsZT0i d2lkdGg6JyArIHBjdCArICclIj48L2Rpdj48L2Rpdj4nICsKICAgICAgICAgICAgICAgICc8ZGl2 IGNsYXNzPSJmYWlybmVzcy1yb3ctdmFsIj4nICsgTWF0aC5yb3VuZChxdW90ZSAqIDEwMCkgKyAn JTxicj48c3BhbiBjbGFzcz0iZmFpcm5lc3Mtcm93LXN1YiI+JyArIHYgKyAnLycgKyB2ZXJmICsg Jzwvc3Bhbj48L2Rpdj4nICsKICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJmYWlybmVzcy1y b3cta3ciIHRpdGxlPSInICsgZXNjYXBlQXR0cignS29tcGxldHRlIFdvY2hlbmVuZGVuIChTYStT byBiZWlkZSBEaWVuc3QpOiAnICsga3cpICsgJyI+JyArCiAgICAgICAgICAgICAgICAgICAgJzxk aXYgY2xhc3M9ImZhaXJuZXNzLXJvdy1rdy1iYXIiPjxkaXYgY2xhc3M9ImZhaXJuZXNzLXJvdy1r dy1maWxsIiBzdHlsZT0id2lkdGg6JyArIGt3UGN0ICsgJyUiPjwvZGl2PjwvZGl2PicgKwogICAg ICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJmYWlybmVzcy1yb3cta3ctdmFsIj4nICsga3cg KyAnPC9kaXY+JyArCiAgICAgICAgICAgICAgICAnPC9kaXY+JyArCiAgICAgICAgICAgICAgICAn PC9kaXY+JzsKICAgICAgICB9CgogICAgICAgIC8vIFN1YnRpdGxlIG9iZXJoYWxiIGRlciBXRS1U YWJlbGxlIChlaW56ZWlsaWcsIGVyc3BhcnQgZWluZSBicmVpdGUKICAgICAgICAvLyBLb3BmemVp bGUgaW4gZGVyIFRhYmVsbGUgc2VsYnN0KS4KICAgICAgICB2YXIgaHRtbCA9ICc8ZGl2IGNsYXNz PSJmYWlybmVzcy1zdWJ0aXRsZSI+V0UtRGllbnN0LVF1b3RlIFx1MjAxNCBBbnRlaWwgZGVyIHZl cmZcdTAwRkNnYmFyZW4gU2ErU28tVGFnZSAob2huZSBGZWllcnRhZ2UpPC9kaXY+JzsKICAgICAg ICBodG1sICs9ICc8ZGl2IGNsYXNzPSJmYWlybmVzcy1jb21wYWN0Ij4nOwogICAgICAgIGh0bWwg Kz0gJzxkaXYgY2xhc3M9ImZhaXJuZXNzLXJvdyBmYWlybmVzcy1yb3ctd2UgZmFpcm5lc3MtaGVh ZGVyIj4nICsKICAgICAgICAgICAgICAgICc8c3Bhbj5XRS1EaWVuc3QtUXVvdGU8L3NwYW4+JyAr CiAgICAgICAgICAgICAgICAnPHNwYW4gc3R5bGU9InRleHQtYWxpZ246Y2VudGVyIj5cdTAwRDgg JyArIE1hdGgucm91bmQoYXZnUXVvdGUgKiAxMDApICsgJyAlPC9zcGFuPicgKwogICAgICAgICAg ICAgICAgJzxzcGFuPjwvc3Bhbj4nICsKICAgICAgICAgICAgICAgICc8c3BhbiBjbGFzcz0iZmFp cm5lc3Mta3cta29wZiI+V0UgZHVyY2hnZWFyYmVpdGV0PC9zcGFuPicgKwogICAgICAgICAgICAg ICAgJzwvZGl2Pic7CiAgICAgICAgcmVsZXZhbnQuc2xpY2UoKS5zb3J0KGZ1bmN0aW9uKGEsIGIp IHsgcmV0dXJuIHdlUXVvdGUoYikgLSB3ZVF1b3RlKGEpOyB9KQogICAgICAgICAgICAgICAgLmZv ckVhY2goZnVuY3Rpb24ocykgeyBodG1sICs9IHplaWxlQmF1ZW5XRShzKTsgfSk7CgogICAgICAg IGh0bWwgKz0gJzxkaXYgY2xhc3M9ImZhaXJuZXNzLXJvdyBmYWlybmVzcy1oZWFkZXIiIHN0eWxl PSJtYXJnaW4tdG9wOjhweCI+PHNwYW4+RlQtVGFnZSAoRGllbnN0IGFtIEZlaWVydGFnKTwvc3Bh bj48c3BhbiBzdHlsZT0idGV4dC1hbGlnbjpjZW50ZXIiPlx1MDBEOCAnICsgYXZnRlQudG9GaXhl ZCgxKSArICc8L3NwYW4+PHNwYW4+PC9zcGFuPjwvZGl2Pic7CiAgICAgICAgcmVsZXZhbnQuc2xp Y2UoKS5zb3J0KGZ1bmN0aW9uKGEsIGIpIHsgcmV0dXJuIGZ0V2VydChiKSAtIGZ0V2VydChhKTsg fSkKICAgICAgICAgICAgICAgIC5mb3JFYWNoKGZ1bmN0aW9uKHMpIHsgaHRtbCArPSB6ZWlsZUJh dWVuKHMsIGZ0V2VydCwgbWF4RlQsIGF2Z0ZUKTsgfSk7CgogICAgICAgIGh0bWwgKz0gJzwvZGl2 Pic7CiAgICAgICAgLy8gRnVzcy1IaW53ZWlzOiBha3R1ZWxsZSBTY2h3ZWxsZSB0cmFuc3BhcmVu dCBtYWNoZW4uCiAgICAgICAgaHRtbCArPSAnPGRpdiBjbGFzcz0iZmFpcm5lc3MtZnVzcyI+QmVy XHUwMEZDY2tzaWNodGlndDogJyArIHJlbGV2YW50Lmxlbmd0aCArICcgUGVyc29uZW4gbWl0IFx1 MjI2NSAnICsgTWF0aC5yb3VuZChzY2h3ZWxsZSkgKyAnIERpZW5zdGVuIGltIFplaXRyYXVtLjwv ZGl2Pic7CiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3N0YXRzLWZhaXJuZXNzJyku aW5uZXJIVE1MID0gaHRtbDsKICAgIH0KCiAgICAvLyA9PT09PSBNaWtyb3RlYW0tSGVhdG1hcCA9 PT09PQogICAgLy8KICAgIC8vIExvZXN0IGRpZSBhbHRlbiBBYndlc2VuaGVpdHMtS2FjaGVsbiBh Yi4gUHJvIGtvbmZpZ3VyaWVydGVtIE1pa3JvdGVhbQogICAgLy8gKGFkbWluLmpzb24ubWlrcm90 ZWFtcykgd2lyZCBmdWVyIGplZGVuIFRhZyBpbSBDdXQgZGllIEFuemFobCBkZXIKICAgIC8vIGFy YmVpdGVuZGVuIFBlcnNvbmVuIGVybWl0dGVsdC4gRmFyYmNvZGU6CiAgICAvLyAgIHJvdCAgID0g MCBpbSBEaWVuc3QKICAgIC8vICAgZ2VsYiAgPSAxIGltIERpZW5zdAogICAgLy8gICBncsO8biAg PSAyIGltIERpZW5zdCAob2RlciBtZWhyLCBhYmVyIG5pY2h0IGFsbGUpCiAgICAvLyAgIGdvbGQg ID0gYWxsZSBUZWFtLU1pdGdsaWVkZXIgaW0gRGllbnN0CiAgICAvLyAiSW0gRGllbnN0IiA9IEYt L1MtL04tQ29kZSBvZGVyIFNEL1NFLiBGcmVpLUNvZGVzIHVuZCBBYndlc2VuaGVpdAogICAgLy8g emFlaGxlbiBuaWNodCBhbHMgImRhIiAoVXNlci1Wb3JnYWJlKS4KCiAgICAvLyBNb2R1bC1TdGF0 ZSBNaWtyb3RlYW0tSGVhdG1hcAogICAgdmFyIF9zdGF0VGVhbUV4cGFuZGVkID0ge307ICAgICAg Ly8gdGVhbUlkIC0+IGJvb2wgKERldGFpbC1aZWlsZW4gc2ljaHRiYXIpCiAgICB2YXIgX3N0YXRU ZWFtQmFsa2VuU29ydCA9ICdyZWloZW5mb2xnZSc7CgogICAgLy8gQ2FjaGUgZnVlciBfdGVhbURh dGVuKCkgaW5uZXJoYWxiIGVpbmVzIHN0YXRpc3Rpa1JlbmRlcm4oKS1MYXVmcy4KICAgIC8vIG1p a3JvdGVhbVJlbmRlcm4oKSB1bmQgcHJvc2FSZW5kZXJuKCkgZ3JlaWZlbiBiZWlkZSBhdWYgZGll IGdsZWljaGVuCiAgICAvLyBEYXRlbiB6dSDigJQgQ2FjaGUgdmVybWVpZGV0IGRpZSBkb3BwZWx0 ZSBPKFRlYW1zKlRhZ2UqUGVyc29uZW4pLUJlcmVjaG51bmcKICAgIC8vICh+MzAtNjAgbXMgYXVm IGRlbSBCZWhvZXJkZW4tUEMpLiBXaXJkIGFtIEFuZmFuZyB2b24gc3RhdGlzdGlrUmVuZGVybigp CiAgICAvLyBpbnZhbGlkaWVydCwgZGFtaXQgRmlsdGVyLS9TdGFiLVdlY2hzZWwgZnJpc2NoZSBE YXRlbiBiZWtvbW1lbi4KICAgIHZhciBfc3RhdFRlYW1EYXRlbkNhY2hlID0gbnVsbDsKICAgIGZ1 bmN0aW9uIF90ZWFtRGF0ZW5Ib2xlbigpIHsKICAgICAgICBpZiAoIV9zdGF0VGVhbURhdGVuQ2Fj aGUpIF9zdGF0VGVhbURhdGVuQ2FjaGUgPSBfdGVhbURhdGVuKCk7CiAgICAgICAgcmV0dXJuIF9z dGF0VGVhbURhdGVuQ2FjaGU7CiAgICB9CgogICAgLy8gV2llIF90ZWFtRGF0ZW5Ib2xlbigpLCBh YmVyIHJlc3Bla3RpZXJ0IGRlbiBEcm9wZG93bi1HcnVwcGVuLUZpbHRlcjoKICAgIC8vIGJlaSBl aW5lciBleHBsaXppdGVuIEdydXBwZW4tQXVzd2FobCB3ZXJkZW4gbnVyIE1pa3JvdGVhbXMgZGll c2VyCiAgICAvLyBHcnVwcGUgenVydWVja2dlZ2ViZW4uIFdpcmQgZnVlciBkaWUgSGVhdG1hcCwg ZGllIEJhbGtlbi1TdWItU2VrdGlvbgogICAgLy8gdW5kIGRpZSBQcm9zYS1EZXRhaWxhbmFseXNl IGdlbnV0enQg4oCUIGRpZSBLUElzL0RldGFpbC1UYWJlbGxlIGZpbHRlcm4KICAgIC8vIGJlcmVp dHMgdWViZXIgc3RhdEZpbHRlcm4oKSBkZW4gU3RhdHMtRGF0ZW5zYXR6IHVuZCBicmF1Y2hlbiBk YXMgbmljaHQuCiAgICBmdW5jdGlvbiBfdGVhbURhdGVuR2VmaWx0ZXJ0KCkgewogICAgICAgIHZh ciBkYXRhID0gX3RlYW1EYXRlbkhvbGVuKCk7CiAgICAgICAgaWYgKHN0YXRGaWx0ZXIgPT09ICdh bGxlJykgcmV0dXJuIGRhdGE7CiAgICAgICAgcmV0dXJuIGRhdGEuZmlsdGVyKGZ1bmN0aW9uKHQp IHsgcmV0dXJuIHQuZ3J1cHBlID09PSBzdGF0RmlsdGVyOyB9KTsKICAgIH0KCiAgICAvLyBLb250 ZXh0LCBkZW4gZGllIEhlYXRtYXAgbmFjaCBkZW0gUmVuZGVyIGZlc3RoYWVsdCwgZGFtaXQgRXhw YW5kLS8KICAgIC8vIENvbGxhcHNlLUtsaWNrcyBkaWUgRGV0YWlsLVplaWxlbiBkaXJla3QgYW0g RE9NIGVpbmZ1ZWdlbi9lbnRmZXJuZW4KICAgIC8vIGtvZW5uZW4g4oCUIG9obmUgZGllIGtvbXBs ZXR0ZSBUYWJlbGxlIG5ldSB6dSByZW5kZXJuLiBTcGFydCAxMDAtMjAwIG1zCiAgICAvLyBwcm8g S2xpY2sgYXVmIGRlbSBCZWhvZXJkZW4tUEMuCiAgICB2YXIgX2hlYXRtYXBLb250ZXh0ID0gbnVs bDsKCiAgICAvLyBQdXJlIEhlbHBlciBmdWVyIFNwYWx0ZW4tS2xhc3NlbiBlaW5lciBIZWF0bWFw LVNwYWx0ZS4gRnJ1ZWhlciBDbG9zdXJlCiAgICAvLyBpbiBfcmVuZGVyVGVhbUhlYXRtYXA7IHJh dXNnZXpvZ2VuIGRhbWl0IGRlciBEZXRhaWwtWmVpbGVuLUhlbHBlciBzaWUKICAgIC8vIG9obmUg Q2xvc3VyZS1DYXB0dXJlIG51dHplbiBrYW5uIChnbGVpY2hlciBIZWxwZXIgd2lyZCBiZWltIFJl bmRlciBVTkQKICAgIC8vIGJlaW0gT24tRGVtYW5kLUluc2VydCBuYWNoIEV4cGFuZC1LbGljayB2 ZXJ3ZW5kZXQpLgogICAgZnVuY3Rpb24gX3NwYWx0ZW5LbGFzc2VuKHRhZ01ldGEsIGQpIHsKICAg ICAgICB2YXIgbSA9IHRhZ01ldGFbZF0gfHwge307CiAgICAgICAgdmFyIGMgPSBbXTsKICAgICAg ICBpZiAobS5pc3RXRSkgICAgICAgICAgICAgICAgICAgICAgIGMucHVzaCgnaG0td2UnKTsKICAg ICAgICBpZiAobS5mZWllcnRhZ2UgJiYgbS5mZWllcnRhZ2UubGVuZ3RoKSAgICAgICAgIGMucHVz aCgnaG0tZmVpZXInKTsKICAgICAgICBpZiAobS5mZXJpZW4gJiYgbS5mZXJpZW4ubGVuZ3RoKSAg ICAgICAgICAgICAgIGMucHVzaCgnaG0tZmVyaWVuJyk7CiAgICAgICAgaWYgKG0uc29uZGVydGVy bWluZSAmJiBtLnNvbmRlcnRlcm1pbmUubGVuZ3RoKSBjLnB1c2goJ2htLXNvbmRlcnRlcm1pbicp OwogICAgICAgIHJldHVybiBjOwogICAgfQoKICAgIC8vIEJhdXQgZGllIERldGFpbC1aZWlsZW4t SFRNTCBmdWVyIEVJTiBleHBhbmRpZXJ0ZXMgVGVhbS4gV2lyZCBzb3dvaGwKICAgIC8vIGJlaW0g SW5pdGlhbC1SZW5kZXIgZ2VudXR6dCAoZnVlciBUZWFtcywgZGllIHNjaG9uIGV4cGFuZGVkIHNp bmQpIGFscwogICAgLy8gYXVjaCBiZWltIEtsaWNrLUhhbmRsZXIgKE9uLURlbWFuZC1JbnNlcnQg b2huZSBGdWxsLVJlcmVuZGVyKS4gY3R4ID0KICAgIC8vIHsgdGFnZSwgdGFnTWV0YSwgcGVyc29u TWFwLCBlaW50cmFlZ2UgfSDigJQgcGFzc3QgenUgX2hlYXRtYXBLb250ZXh0LgogICAgZnVuY3Rp b24gX2J1aWxkVGVhbURldGFpbFJvd3ModCwgY3R4KSB7CiAgICAgICAgcmV0dXJuIHQucGVyc29u SWRzLm1hcChmdW5jdGlvbihwaWQpIHsKICAgICAgICAgICAgdmFyIHAgPSBjdHgucGVyc29uTWFw W3BpZF0gfHwge307CiAgICAgICAgICAgIHZhciBuYW1lS3VyeiA9IChwLnZvcm5hbWUgPyBwLnZv cm5hbWUuY2hhckF0KDApICsgJy4gJyA6ICcnKSArIChwLm5hbWUgfHwgKCcjJyArIHBpZCkpOwog ICAgICAgICAgICByZXR1cm4gJzx0ciBjbGFzcz0idGVhbS1obS1yb3cgdGVhbS1obS1yb3ctZGV0 YWlsIiBkYXRhLXRlYW0tZGV0YWlsLWZvcj0iJyArIGVzY2FwZUF0dHIodC5pZCkgKyAnIj4nICsK ICAgICAgICAgICAgICAgICc8dGggY2xhc3M9InRlYW0taG0tbmFtZSB0ZWFtLWhtLW5hbWUtZGV0 YWlsIj7ihrMgJyArIGVzY2FwZUhUTUwobmFtZUt1cnopICsgJzwvdGg+JyArCiAgICAgICAgICAg ICAgICBjdHgudGFnZS5tYXAoZnVuY3Rpb24oZCkgewogICAgICAgICAgICAgICAgICAgIHZhciBj b2RlID0gKGN0eC5laW50cmFlZ2VbZF0gfHwge30pW3BpZF0gfHwgJyc7CiAgICAgICAgICAgICAg ICAgICAgdmFyIGlzRGllbnN0ID0gX2lzdERpZW5zdENvZGUoY29kZSk7CiAgICAgICAgICAgICAg ICAgICAgdmFyIGNscyA9IFsndGVhbS1obS1jZWxsJywgJ3RlYW0taG0tY2VsbC1kZXRhaWwnXS5j b25jYXQoX3NwYWx0ZW5LbGFzc2VuKGN0eC50YWdNZXRhLCBkKSk7CiAgICAgICAgICAgICAgICAg ICAgaWYgKGlzRGllbnN0KSBjbHMucHVzaCgndGVhbS1obS1jZWxsLWRldGFpbC1kaWVuc3QnKTsK ICAgICAgICAgICAgICAgICAgICByZXR1cm4gJzx0ZCBjbGFzcz0iJyArIGNscy5qb2luKCcgJykg KyAnIiB0aXRsZT0iJyArIGVzY2FwZUF0dHIoZCArICc6ICcgKyAoY29kZSB8fCAn4oCUJykpICsg JyI+JyArIChjb2RlID8gZXNjYXBlSFRNTChjb2RlLnN1YnN0cigwLCAzKSkgOiAnJykgKyAnPC90 ZD4nOwogICAgICAgICAgICAgICAgfSkuam9pbignJykgKwogICAgICAgICAgICAgICAgJzwvdHI+ JzsKICAgICAgICB9KS5qb2luKCcnKTsKICAgIH0KICAgIHZhciBNT05BVFNOQU1FTl9URUFNID0g WydKYW51YXInLCdGZWJydWFyJywnTcOkcnonLCdBcHJpbCcsJ01haScsJ0p1bmknLCdKdWxpJywn QXVndXN0JywnU2VwdGVtYmVyJywnT2t0b2JlcicsJ05vdmVtYmVyJywnRGV6ZW1iZXInXTsKICAg IHZhciBNT05BVFNOQU1FTl9LVVJaID0gWydKYW4nLCdGZWInLCdNw6RyJywnQXByJywnTWFpJywn SnVuJywnSnVsJywnQXVnJywnU2VwJywnT2t0JywnTm92JywnRGV6J107CgogICAgLy8gUG9vbC1C ZXppZWh1bmdlbjogPFBvb2wtU3RhbmRvcnQ+IC0+IDxMaXN0ZSBkZXIgWmllbC1TdGFuZG9ydGUs IGZ1ZXIgZGllIGRlcgogICAgLy8gUG9vbCBlaW5zcHJpbmd0Pi4gUG9vbC1UZWFtcyBzaW5kIDEt UGVyc29uZW4tV2FjaGVuIChMRC1XRCwgU08tV0QpLiBXZW5uCiAgICAvLyBkaWUgUG9vbC1QZXJz b24gaW0gRGllbnN0IGlzdCB1bmQgbWluZC4gZWluIE1pa3JvdGVhbSBkZXMgWmllbC1TdGFuZG9y dHMKICAgIC8vIGFuIGRlbSBUYWcgcm90IGlzdCAoa2VpbmVyIGRhKSwgd2lyZCBkaWUgUG9vbC1a ZWxsZSBncnVlbiDigJQgYWxzCiAgICAvLyBJbmRpa2F0b3IsIGRhc3MgZGVyIFBvb2wgZmFjaGxp Y2ggZWluc3ByaW5ndC4gUG9vbC1UZWFtcyB3ZXJkZW4gYXVzc2VyZGVtCiAgICAvLyBhdXMgZGVy IEJhbGtlbi1TdGF0aXN0aWsgYXVzZ2VrbGFtbWVydCAoMSBQZXJzb24sIGtlaW4gTWl0dGVsd2Vy dCBtb2VnbGljaCkuCiAgICB2YXIgUE9PTF9SRUxBVElPTiA9IHsgJ0xEJzogWydGUiddLCAnU08n OiBbJ0FSJ10gfTsKICAgIGZ1bmN0aW9uIF9pc3RQb29sVGVhbSh0KSB7IHJldHVybiB0ICYmIFBP T0xfUkVMQVRJT05bdC5zdGFuZG9ydF0gIT09IHVuZGVmaW5lZDsgfQoKICAgIC8vIENvZGUtS2xh c3NlbiBmdWVyIGRpZSBNaWtyb3RlYW0tQW1wZWwtQmVyZWNobnVuZzoKICAgIC8vIEZSRUkgICAg PSB3ZnIvZGZyL8KnMjEvMjFhL0FaQSDigJQgZGllIFBlcnNvbiB3YWVyZSBwcmluemlwaWVsbCB2 ZXJmdWVnYmFyCiAgICAvLyAgICAgICAgICAgZ2V3ZXNlbiwgaGF0IGFiZXIgRnJlaS4gV2VubiBB TExFIHNvIHdhcyBoYWJlbiB1bmQgbmllbWFuZAogICAgLy8gICAgICAgICAgIGxlZ2l0aW0gYWJ3 ZXNlbmQgaXN0IC0+IHJvdCAoUHJvYmxlbTogYWxsZSB3b2xsZW4gZnJlaSBoYWJlbikuCiAgICAv LyBBQldFU0VORCA9IFVybC9rci9LdXIvU1UvTEcvRm9ydGJpbGR1bmcvQlYvYWJnL0JBTy9ITyDi gJQgUGVyc29uIGlzdAogICAgLy8gICAgICAgICAgIGxlZ2l0aW0gbmljaHQgdmVyZnVlZ2Jhci4g U2NobHVja3QgZGVuIHJvdGVuIFN0YXR1cy4KICAgIHZhciBURUFNX0ZSRUlfQ09ERVMgICAgID0g eyAnd2ZyJzoxLCAnZGZyJzoxLCAnwqcyMSc6MSwgJzIxYSc6MSwgJ0FaQSc6MSB9OwogICAgdmFy IFRFQU1fQUJXRVNFTkRfQ09ERVMgPSB7ICdVcmwnOjEsICdrcic6MSwgJ0t1cic6MSwgJ1NVJzox LCAnTEcnOjEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0F1Ric6MSwgJ0VUTSc6 MSwgJ1NlbSc6MSwgJ1RUJzoxLCAnVHpGJzoxLCAnRFUnOjEsCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgJ0JWJzoxLCAnYWJnJzoxLCAnQkFPJzoxLCAnSE8nOjEgfTsKICAgIGZ1bmN0 aW9uIF9pc3RGcmVpQ29kZShjKSAgICAgeyByZXR1cm4gISEoYyAmJiBURUFNX0ZSRUlfQ09ERVNb Y10pOyB9CiAgICBmdW5jdGlvbiBfaXN0QWJ3ZXNlbmRDb2RlKGMpIHsgcmV0dXJuICEhKGMgJiYg VEVBTV9BQldFU0VORF9DT0RFU1tjXSk7IH0KCiAgICBmdW5jdGlvbiBfaXN0RGllbnN0Q29kZShj b2RlKSB7CiAgICAgICAgaWYgKCFjb2RlKSByZXR1cm4gZmFsc2U7CiAgICAgICAgaWYgKGNvZGUu bGVuZ3RoID49IDIgJiYgY29kZS5jaGFyQXQoMSkgPT09ICctJykgewogICAgICAgICAgICB2YXIg cCA9IGNvZGUuY2hhckF0KDApOwogICAgICAgICAgICBpZiAocCA9PT0gJ0YnIHx8IHAgPT09ICdT JyB8fCBwID09PSAnTicpIHJldHVybiB0cnVlOwogICAgICAgIH0KICAgICAgICByZXR1cm4gY29k ZSA9PT0gJ1NEJyB8fCBjb2RlID09PSAnU0UnOwogICAgfQoKICAgIC8vIExpZWZlcnQgJ0YnLydT Jy8nTicgd2VubiBkZXIgQ29kZSBlaW5lIERHTC1TY2hpY2h0IChGLURHTC9TLURHTC9OLURHTCkK ICAgIC8vIGlzdCwgc29uc3QgbnVsbC4gV2lyZCBmdWVyIGRpZSBQb29sLVNwcmluZ2VyLUxvZ2lr IGdlbnV0enQ6IGVpbiBMRC9TTy0KICAgIC8vIERHTCBzcHJpbmd0IG51ciBkYW5uIGFscyBER0wt VmVydHJldHVuZyBmdWVyIEZSL0FSIGVpbiwgd2VubiBlciBpbiBkZXIKICAgIC8vIGdsZWljaGVu IFNjaGljaHQgc2VsYnN0IGRpZSBER0wtUm9sbGUgbWFjaHQg4oCUIEYtRkJQL1MtRkJQL04tRkJQ IHphZWhsdAogICAgLy8gTklDSFQgYWxzIEVpbnNwcmluZ2VuIChDb2RlIGlzdCBkYW5uIGZ1ZXIg ZGllIE1pdGFyYmVpdGVyIGRhKS4KICAgIGZ1bmN0aW9uIF9kZ2xTY2hpY2h0Vm9uKGNvZGUpIHsK ICAgICAgICBpZiAoIWNvZGUgfHwgY29kZS5sZW5ndGggPCA1KSByZXR1cm4gbnVsbDsKICAgICAg ICB2YXIgcCA9IGNvZGUuY2hhckF0KDApOwogICAgICAgIGlmIChwICE9PSAnRicgJiYgcCAhPT0g J1MnICYmIHAgIT09ICdOJykgcmV0dXJuIG51bGw7CiAgICAgICAgcmV0dXJuIGNvZGUuc3Vic3Ry aW5nKDIsIDUpID09PSAnREdMJyA/IHAgOiBudWxsOwogICAgfQoKICAgIC8vIExpZWZlcnQgJ0Yn LydTJy8nTicgZnVlciBKRURFTiBTY2hpY2h0LURpZW5zdGNvZGUgKEYtREdMLCBGLVdERiwKICAg IC8vIEYtRkJQLCBTLURHTCwgLi4uKSwgc29uc3QgbnVsbC4gV2lyZCBmdWVyIGRpZSBMdWVja2Ut UHJ1ZWZ1bmcgZGVyCiAgICAvLyBQb29sLVNwcmluZ2VyLUxvZ2lrIGdlbnV0enQ6IGRhcyBaaWVs LU1pa3JvdGVhbSAoRlIvQVIpIGdpbHQgYWxzCiAgICAvLyAibHVlY2tlIiBpbiBlaW5lciBTY2hp Y2h0IG51ciB3ZW5uIGRvcnQgbmllbWFuZCB1ZWJlcmhhdXB0IGVpbmVuCiAgICAvLyBTY2hpY2h0 LURpZW5zdCBtYWNodCDigJQgZWdhbCBvYiBER0wvV0RGL0ZCUC4gV2VubiB6LkIuIGVpbiBGLUZC UCBkYQogICAgLy8gaXN0LCBpc3QgZGllIFNjaGljaHQgaW4gZGVyIFdhY2hlIHBlcnNvbmVsbCBi ZWRlY2t0LCBHb3RvL05vdHRlYm9obQogICAgLy8gbXVlc3NlbiBuaWNodCBlaW5zcHJpbmdlbi4K ICAgIGZ1bmN0aW9uIF9zY2hpY2h0Vm9uKGNvZGUpIHsKICAgICAgICBpZiAoIWNvZGUgfHwgY29k ZS5sZW5ndGggPCAyIHx8IGNvZGUuY2hhckF0KDEpICE9PSAnLScpIHJldHVybiBudWxsOwogICAg ICAgIHZhciBwID0gY29kZS5jaGFyQXQoMCk7CiAgICAgICAgaWYgKHAgIT09ICdGJyAmJiBwICE9 PSAnUycgJiYgcCAhPT0gJ04nKSByZXR1cm4gbnVsbDsKICAgICAgICByZXR1cm4gcDsKICAgIH0K CiAgICBmdW5jdGlvbiBfdGVhbUN1dFRhZ2UoKSB7CiAgICAgICAgdmFyIGphaHIgPSAoWi5hZG1p biAmJiBaLmFkbWluLmphaHIpIHx8IG5ldyBEYXRlKCkuZ2V0RnVsbFllYXIoKTsKICAgICAgICB2 YXIgZCA9IG5ldyBEYXRlKGphaHIgKyAnLTAxLTAxVDAwOjAwOjAwJyk7CiAgICAgICAgdmFyIGhl dXRlID0gbmV3IERhdGUoKTsgaGV1dGUuc2V0SG91cnMoMCwwLDAsMCk7CiAgICAgICAgdmFyIGVu ZGUgID0gbmV3IERhdGUoaGV1dGUpOyBlbmRlLnNldERhdGUoZW5kZS5nZXREYXRlKCkgKyAxNCk7 CiAgICAgICAgdmFyIG91dCA9IFtdOwogICAgICAgIHdoaWxlIChkIDw9IGVuZGUpIHsKICAgICAg ICAgICAgLy8gTG9rYWxlIElTTy1EYXR1bXMtUmVwcmFlc2VudGF0aW9uIChrZWluIHRvSVNPU3Ry aW5nIOKAlCBkZXIgd2lyZnQKICAgICAgICAgICAgLy8gVVRDIHVuZCBraXBwdCBiZWkgWmVpdHpv bmVuLVZlcnNhdHogdW0gZWluZW4gVGFnKS4KICAgICAgICAgICAgdmFyIHkgPSBkLmdldEZ1bGxZ ZWFyKCk7CiAgICAgICAgICAgIHZhciBtID0gU3RyaW5nKGQuZ2V0TW9udGgoKSArIDEpLnBhZFN0 YXJ0KDIsICcwJyk7CiAgICAgICAgICAgIHZhciB0ID0gU3RyaW5nKGQuZ2V0RGF0ZSgpKS5wYWRT dGFydCgyLCAnMCcpOwogICAgICAgICAgICBvdXQucHVzaCh5ICsgJy0nICsgbSArICctJyArIHQp OwogICAgICAgICAgICBkLnNldERhdGUoZC5nZXREYXRlKCkgKyAxKTsKICAgICAgICB9CiAgICAg ICAgcmV0dXJuIG91dDsKICAgIH0KCiAgICBmdW5jdGlvbiBfdGVhbUZhcmJlKGltRGllbnN0LCB0 b3RhbCkgewogICAgICAgIGlmIChpbURpZW5zdCA9PT0gMCkgICAgICAgIHJldHVybiAndGVhbS1y JzsKICAgICAgICBpZiAoaW1EaWVuc3QgPj0gdG90YWwpICAgICByZXR1cm4gJ3RlYW0tZ29sZCc7 CiAgICAgICAgaWYgKGltRGllbnN0ID09PSAxKSAgICAgICAgcmV0dXJuICd0ZWFtLXknOwogICAg ICAgIHJldHVybiAndGVhbS1nJzsKICAgIH0KCiAgICAvLyBUYWctTWV0YWRhdGVuOiBXb2NoZW5l bmRlLCBGZWllcnRhZywgRmVyaWVuLCBTb25kZXJ0ZXJtaW5lLgogICAgLy8gQ2FjaGUgd2lyZCBl aW5tYWwgcHJvIFJlbmRlciBhdWZnZWJhdXQgKGtsZWluZSBEYXRlbm1lbmdlIOKAlCBrZWluIE1l bW8pLgogICAgZnVuY3Rpb24gX3RlYW1UYWdNZXRhKHRhZ2UpIHsKICAgICAgICB2YXIgbWV0YSA9 IHt9OwogICAgICAgIHZhciBmZWllcnRhZ2UgPSAoKFouYWRtaW4gJiYgWi5hZG1pbi5mZWllcnRh Z2UpIHx8IFtdKS5maWx0ZXIoZnVuY3Rpb24oZikgeyByZXR1cm4gZi5ha3RpdiAhPT0gZmFsc2U7 IH0pOwogICAgICAgIHZhciBmdE1hcCA9IHt9OwogICAgICAgIGZlaWVydGFnZS5mb3JFYWNoKGZ1 bmN0aW9uKGYpIHsgKGZ0TWFwW2YuZGF0dW1dID0gZnRNYXBbZi5kYXR1bV0gfHwgW10pLnB1c2go Zik7IH0pOwogICAgICAgIHZhciBmZXJpZW4gPSAoWi5hZG1pbiAmJiBaLmFkbWluLmZlcmllbikg fHwgW107CiAgICAgICAgdmFyIHNvbmRlcnRlcm1pbmUgPSAoWi5hZG1pbiAmJiBaLmFkbWluLnNv bmRlcnRlcm1pbmUpIHx8IFtdOwoKICAgICAgICB0YWdlLmZvckVhY2goZnVuY3Rpb24oZCkgewog ICAgICAgICAgICB2YXIgZHQgPSBuZXcgRGF0ZShkICsgJ1QwMDowMDowMCcpOwogICAgICAgICAg ICB2YXIgd3QgPSBkdC5nZXREYXkoKTsKICAgICAgICAgICAgdmFyIGZlciA9IGZlcmllbi5maWx0 ZXIoZnVuY3Rpb24oZikgeyByZXR1cm4gZCA+PSBmLnZvbiAmJiBkIDw9IGYuYmlzOyB9KTsKICAg ICAgICAgICAgdmFyIHN0ICA9IHNvbmRlcnRlcm1pbmUuZmlsdGVyKGZ1bmN0aW9uKHMpIHsKICAg ICAgICAgICAgICAgIHZhciBiaXMgPSBzLmRhdHVtQmlzIHx8IHMuZGF0dW07CiAgICAgICAgICAg ICAgICByZXR1cm4gZCA+PSBzLmRhdHVtICYmIGQgPD0gYmlzOwogICAgICAgICAgICB9KTsKICAg ICAgICAgICAgbWV0YVtkXSA9IHsKICAgICAgICAgICAgICAgIGlzdFdFOiAgICAgICh3dCA9PT0g MCB8fCB3dCA9PT0gNiksCiAgICAgICAgICAgICAgICB3b2NoZW50YWc6ICB3dCwKICAgICAgICAg ICAgICAgIGZlaWVydGFnZTogIGZ0TWFwW2RdIHx8IFtdLAogICAgICAgICAgICAgICAgZmVyaWVu OiAgICAgZmVyLAogICAgICAgICAgICAgICAgc29uZGVydGVybWluZTogc3QKICAgICAgICAgICAg fTsKICAgICAgICB9KTsKICAgICAgICByZXR1cm4gbWV0YTsKICAgIH0KCiAgICBmdW5jdGlvbiBf dGVhbURhdGVuKCkgewogICAgICAgIHZhciB0ZWFtcyA9IChaLmFkbWluICYmIFouYWRtaW4ubWlr cm90ZWFtcykgfHwgW107CiAgICAgICAgdmFyIGVpbnRyYWVnZSA9IChaLnBsYW51bmcgJiYgWi5w bGFudW5nLmVpbnRyYWVnZSkgfHwge307CiAgICAgICAgdmFyIHBlcnNvbmVuID0gKFoucGxhbnVu ZyAmJiBaLnBsYW51bmcucGVyc29uZW4pIHx8IFtdOwogICAgICAgIHZhciBwZXJzb25NYXAgPSB7 fTsKICAgICAgICBwZXJzb25lbi5mb3JFYWNoKGZ1bmN0aW9uKHApIHsgcGVyc29uTWFwW3AuaWRd ID0gcDsgfSk7CiAgICAgICAgdmFyIHRhZ2UgPSBfdGVhbUN1dFRhZ2UoKTsKCiAgICAgICAgLy8g UGhhc2UgMTogYWxsZSBUZWFtcyBiZXJlY2huZW4uCiAgICAgICAgLy8gUHJvIFRhZyB6YWVobGVu IHdpciBkaXNqdW5rdDogaW1EaWVuc3QgLyBmcmVpICh3ZnIvZGZyL8KnMjEvQVpBKSAvCiAgICAg ICAgLy8gYWJ3ZXNlbmQgKFVybC9rci9LdXIvTGVocmdhbmcvLi4uKSAvIHNvbnN0aWdlICh6LkIu IFNEL1NFIGJlcmVpdHMKICAgICAgICAvLyBpbiBpbURpZW5zdCwgbGVlcmVyIEVpbnRyYWcgPSAi dW5rbGFyIiB6YWVobHQgbmljaHQpLgogICAgICAgIHZhciBkYXRhID0gdGVhbXMubWFwKGZ1bmN0 aW9uKHQpIHsKICAgICAgICAgICAgdmFyIHBpZHMgPSB0LnBlcnNvbklkcyB8fCBbXTsKICAgICAg ICAgICAgdmFyIHBlclRhZyA9IHt9OwogICAgICAgICAgICB0YWdlLmZvckVhY2goZnVuY3Rpb24o ZCkgewogICAgICAgICAgICAgICAgdmFyIGFueiA9IDAsIGZyZWlBbnogPSAwLCBhYndBbnogPSAw LCBkZXRhaWxzID0gW107CiAgICAgICAgICAgICAgICBwaWRzLmZvckVhY2goZnVuY3Rpb24ocGlk KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGNvZGUgPSAoZWludHJhZWdlW2RdIHx8IHt9KVtw aWRdIHx8ICcnOwogICAgICAgICAgICAgICAgICAgIHZhciBwID0gcGVyc29uTWFwW3BpZF07CiAg ICAgICAgICAgICAgICAgICAgdmFyIG5tID0gcCA/IChwLm5hbWUgfHwgKCcjJyArIHBpZCkpIDog KCcjJyArIHBpZCk7CiAgICAgICAgICAgICAgICAgICAgZGV0YWlscy5wdXNoKHsgcGlkOiBwaWQs IG5hbWU6IG5tLCBjb2RlOiBjb2RlIH0pOwogICAgICAgICAgICAgICAgICAgIGlmIChfaXN0RGll bnN0Q29kZShjb2RlKSkgICAgICAgICBhbnorKzsKICAgICAgICAgICAgICAgICAgICBlbHNlIGlm IChfaXN0RnJlaUNvZGUoY29kZSkpICAgICAgZnJlaUFueisrOwogICAgICAgICAgICAgICAgICAg IGVsc2UgaWYgKF9pc3RBYndlc2VuZENvZGUoY29kZSkpICBhYndBbnorKzsKICAgICAgICAgICAg ICAgIH0pOwogICAgICAgICAgICAgICAgcGVyVGFnW2RdID0gewogICAgICAgICAgICAgICAgICAg IGltRGllbnN0OiBhbnosIGZyZWk6IGZyZWlBbnosIGFid2VzZW5kOiBhYndBbnosCiAgICAgICAg ICAgICAgICAgICAgdG90YWw6IHBpZHMubGVuZ3RoLCBkZXRhaWxzOiBkZXRhaWxzLCBpc3RTcHJp bmdlcjogZmFsc2UKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIH0pOwogICAgICAgICAg ICByZXR1cm4geyBpZDogdC5pZCwgbmFtZTogdC5uYW1lLCBzdGFuZG9ydDogdC5zdGFuZG9ydCwg Z3J1cHBlOiB0LmdydXBwZSwgcGVyc29uSWRzOiBwaWRzLCB0YWdlOiBwZXJUYWcgfTsKICAgICAg ICB9KTsKCiAgICAgICAgLy8gUGhhc2UgMjogU3ByaW5nZXItTWFya2llcnVuZyBmdWVyIFBvb2wt VGVhbXMuCiAgICAgICAgLy8KICAgICAgICAvLyBFaW4gTEQvU08tREdMICJzcHJpbmd0IiBmYWNo bGljaCBkYW5uIGZ1ZXIgRlIvQVIgZWluLCB3ZW5uOgogICAgICAgIC8vICAgMS4gRXIgYW4gZGVt IFRhZyBlaW5lIERHTC1TY2hpY2h0IG1hY2h0IChGLURHTC9TLURHTC9OLURHTCkKICAgICAgICAv LyAgICAgIFVORCBpbiBkaWVzZXIgU2NoaWNodCBhdWNoIGluIGRlciAxLi8yLiBWSTMtREdMLVZl cmFudHdvcnR1bmcKICAgICAgICAvLyAgICAgIChUb3AtMiBuYWNoIEZ1bmt0aW9ucy1SYW5nK1Bv c2l0aW9uIGF1cyBha3RpdmVGdWVocnVuZykgc3RlaHQuCiAgICAgICAgLy8gICAgICBSZWluZSBD b2RlLUVpbnRyYWd1bmcgRi1ER0wgcmVpY2h0IE5JQ0hUIOKAlCBzb25zdCB6YWVobHRlCiAgICAg ICAgLy8gICAgICBlaW4gbmljaHQtdmVyYW50d29ydGxpY2hlciBMRC9TTy1ER0wgZmFlbHNjaGxp Y2ggYWxzIFNwcmluZ2VyCiAgICAgICAgLy8gICAgICAoVXNlci1Lb3JyZWt0dXIgMjAyNi0wNS0y NSkuIFVORAogICAgICAgIC8vICAgMi4gZGllIFppZWwtV2FjaGUgYW4gZGVtIFRhZyBpbiBnZW5h dSBkaWVzZXIgU2NoaWNodCB1ZWJlcmhhdXB0CiAgICAgICAgLy8gICAgICBOSUVNQU5ERU4gaW0g RGllbnN0IGhhdCAoa2VpbiBGLURHTCwga2VpbiBGLVdERiwga2VpbiBGLUZCUCkuCiAgICAgICAg Ly8gRi1GQlAvUy1GQlAvTi1GQlAgZGVyIFBvb2wtUGVyc29uIHphZWhsZW4gTklDSFQgYWxzIEVp bnNwcmluZ2VuIOKAlAogICAgICAgIC8vIGRhcyBpc3QgZWluIENvZGUgImZ1ZXIgZGllIE1pdGFy YmVpdGVyIiwgbmljaHQgZnVlciBkaWUgREdMLQogICAgICAgIC8vIFZlcmFudHdvcnR1bmcuIEJl aSBkZXIgTHVlY2tlbi1QcnVlZnVuZyBpbiBkZXIgWmllbHdhY2hlIHphZWhsdAogICAgICAgIC8v IGRhZ2VnZW4gSkVERVIgU2NoaWNodC1Db2RlIChhdWNoIEZCUC9XREYpOiBkaWUgV2FjaGUgaXN0 IHBlcnNvbmVsbAogICAgICAgIC8vIGJlZGVja3Qgc29iYWxkIGlyZ2VuZGplbWFuZCBpbiBkZXIg U2NoaWNodCBlaW5nZXNldHp0IGlzdCDigJQKICAgICAgICAvLyBHb3RvL05vdHRlYm9obSBtdWVz c2VuIGRhbm4gbmljaHQgZWluc3ByaW5nZW4uIFRhZ2Ugb2huZSBTcHJpbmdlci0KICAgICAgICAv LyBTdGF0dXMgd2VyZGVuIGluIGRlciBaZWxsLUZhZXJidW5nIGdyYXUgZGFyZ2VzdGVsbHQgKGlt IERpZW5zdCwKICAgICAgICAvLyBhYmVyIG5pY2h0IGFscyBER0wtU3ByaW5nZXIgZWluZ2VzZXR6 dCkuCiAgICAgICAgZGF0YS5mb3JFYWNoKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgdmFyIHpp ZWxlID0gUE9PTF9SRUxBVElPTlt0LnN0YW5kb3J0XTsKICAgICAgICAgICAgaWYgKCF6aWVsZSkg cmV0dXJuOwogICAgICAgICAgICB0YWdlLmZvckVhY2goZnVuY3Rpb24oZCkgewogICAgICAgICAg ICAgICAgdmFyIGluZm8gPSB0LnRhZ2VbZF07CiAgICAgICAgICAgICAgICBpZiAoaW5mby5pbURp ZW5zdCA9PT0gMCkgcmV0dXJuOwogICAgICAgICAgICAgICAgLy8gV2VsY2hlIERHTC1TY2hpY2h0 IG1hY2h0IGRpZSBQb29sLVBlcnNvbiBhbiBkZW0gVGFnIOKAlAogICAgICAgICAgICAgICAgLy8g VU5EIGlzdCBzaWUgYXVjaCBpbiBkZXIgdmVyYW50d29ydGxpY2hlbiBXYWhybmVobXVuZwogICAg ICAgICAgICAgICAgLy8gKFRvcC0yIGFrdGl2ZUZ1ZWhydW5nKSBlaW5nZXNldHp0PwogICAgICAg ICAgICAgICAgdmFyIHBvb2xTY2hpY2h0ID0gbnVsbDsKICAgICAgICAgICAgICAgIGZvciAodmFy IHBpID0gMDsgcGkgPCBpbmZvLmRldGFpbHMubGVuZ3RoOyBwaSsrKSB7CiAgICAgICAgICAgICAg ICAgICAgdmFyIGRldCA9IGluZm8uZGV0YWlsc1twaV07CiAgICAgICAgICAgICAgICAgICAgdmFy IHMgPSBfZGdsU2NoaWNodFZvbihkZXQuY29kZSk7CiAgICAgICAgICAgICAgICAgICAgaWYgKCFz KSBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICB2YXIgdmVyYW50ID0gYWt0aXZlRnVlaHJ1 bmcoZCwgcyk7CiAgICAgICAgICAgICAgICAgICAgdmFyIGlzdFZlcmFudCA9IHZlcmFudC5zb21l KGZ1bmN0aW9uKHApIHsgcmV0dXJuIE51bWJlcihwLmlkKSA9PT0gTnVtYmVyKGRldC5waWQpOyB9 KTsKICAgICAgICAgICAgICAgICAgICBpZiAoaXN0VmVyYW50KSB7IHBvb2xTY2hpY2h0ID0gczsg YnJlYWs7IH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmICghcG9vbFNjaGlj aHQpIHJldHVybjsgIC8vIFBvb2wtUGVyc29uIGlzdCBkYSwgYWJlciBuaWNodCBhbHMgdmVyYW50 d29ydGxpY2hlIERHTAogICAgICAgICAgICAgICAgLy8gSGF0IGRhcyBaaWVsdGVhbSBhbiBkZW0g VGFnIGluIGdlbmF1IGRpZXNlciBTY2hpY2h0IE5JRU1BTkRFTj8KICAgICAgICAgICAgICAgIHZh ciBsdWVja2UgPSB6aWVsZS5zb21lKGZ1bmN0aW9uKHpTdGQpIHsKICAgICAgICAgICAgICAgICAg ICByZXR1cm4gZGF0YS5zb21lKGZ1bmN0aW9uKG8pIHsKICAgICAgICAgICAgICAgICAgICAgICAg aWYgKG8uc3RhbmRvcnQgIT09IHpTdGQpIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgICAg ICAgICAgdmFyIG9pID0gby50YWdlW2RdOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW9p IHx8IG9pLnRvdGFsID09PSAwKSByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAg IHZhciBqZW1hbmRJblNjaGljaHQgPSAob2kuZGV0YWlscyB8fCBbXSkuc29tZShmdW5jdGlvbihk ZXQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfc2NoaWNodFZvbihkZXQu Y29kZSkgPT09IHBvb2xTY2hpY2h0OwogICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAg ICAgICAgICAgICAgICAgICAgcmV0dXJuICFqZW1hbmRJblNjaGljaHQ7CiAgICAgICAgICAgICAg ICAgICAgfSk7CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIGlmIChsdWVja2Up IGluZm8uaXN0U3ByaW5nZXIgPSB0cnVlOwogICAgICAgICAgICB9KTsKICAgICAgICB9KTsKCiAg ICAgICAgLy8gUGhhc2UgMzogU3RhdGlzdGlrIHBybyBUZWFtLgogICAgICAgIC8vIFJPVCAgPSBu aWVtYW5kIGltIERpZW5zdCBVTkQgbmllbWFuZCBsZWdpdGltIGFid2VzZW5kIFVORCBtaW5kLiAx CiAgICAgICAgLy8gICAgICAgIFBlcnNvbiBoYXQgRnJlaS1Db2RlIC0+ICJhbGxlIHdvbGxlbiBm cmVpLCBuaWVtYW5kIG1hY2h0J3MiCiAgICAgICAgLy8gR1JBVSA9IG5pZW1hbmQgaW0gRGllbnN0 LCBhYmVyIG1pbmQuIDEgUGVyc29uIGxlZ2l0aW0gYWJ3ZXNlbmQKICAgICAgICAvLyAgICAgICAg KFVybC9rci9MZWhyZ2FuZy8uLi4pIOKAlCBrZWluIFByb2JsZW0sIHdlaWwgZGFzIFRlYW0KICAg ICAgICAvLyAgICAgICAgbmljaHQgaGFldHRlIGtvbXBsZXR0IGJlc2V0enQgc2VpbiBtdWVzc2Vu LgogICAgICAgIC8vIE5FVVRSQUwgPSAxIFBlcnNvbiBpbSBEaWVuc3QgKFVzZXItQWVuZGVydW5n OiBrZWluIGdlbGIgbWVocikuCiAgICAgICAgLy8gR1JVRU4gPSAyKyBQZXJzb25lbiBpbSBEaWVu c3QgKFBvb2w6IDEgbWl0IFNwcmluZ2VyLVN0YXR1cykuCiAgICAgICAgLy8gR09MRCA9IGFsbGUg VGVhbS1NaXRnbGllZGVyIGltIERpZW5zdCAoZW50ZmFlbGx0IGJlaSBQb29sLVRlYW1zKS4KICAg ICAgICBkYXRhLmZvckVhY2goZnVuY3Rpb24odCkgewogICAgICAgICAgICB2YXIgcm90ID0gMCwg Z3JhdSA9IDAsIG5ldXRyYWwgPSAwLCBncnVlbiA9IDAsIGdvbGQgPSAwOwogICAgICAgICAgICB2 YXIgcG9vbCA9IF9pc3RQb29sVGVhbSh0KTsKICAgICAgICAgICAgT2JqZWN0LmtleXModC50YWdl KS5mb3JFYWNoKGZ1bmN0aW9uKGQpIHsKICAgICAgICAgICAgICAgIHZhciBpbmZvID0gdC50YWdl W2RdOwogICAgICAgICAgICAgICAgaWYgKGluZm8udG90YWwgPT09IDApIHJldHVybjsKICAgICAg ICAgICAgICAgIGlmIChpbmZvLmltRGllbnN0ID09PSAwKSB7CiAgICAgICAgICAgICAgICAgICAg aWYgKGluZm8uYWJ3ZXNlbmQgPj0gMSkgICAgICAgICAgICBncmF1Kys7CiAgICAgICAgICAgICAg ICAgICAgZWxzZSBpZiAoaW5mby5mcmVpID49IDEpICAgICAgICAgICByb3QrKzsKICAgICAgICAg ICAgICAgICAgICBlbHNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmF1Kys7ICAg Ly8gYWxsZSBsZWVyL3Vua2xhciA9IG5ldXRyYWwgZ3JhdQogICAgICAgICAgICAgICAgICAgIHJl dHVybjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChwb29sKSB7CiAgICAg ICAgICAgICAgICAgICAgLy8gUG9vbDogbnVyICJlY2h0ZXIiIERHTC1TcHJpbmdlciB6YWVobHQg YWxzIGdydWVuLgogICAgICAgICAgICAgICAgICAgIC8vIEltLURpZW5zdC1hYmVyLW5pY2h0LVNw cmluZ2VyIChGQlAvV0RGL0RHTC1iZWktYmVzZXR6dGVyLQogICAgICAgICAgICAgICAgICAgIC8v IFppZWx3YWNoZSkgaXN0IGdyYXUg4oCUIFBvb2wtUGVyc29uIGlzdCBkYSwgYWJlciBuaWNodAog ICAgICAgICAgICAgICAgICAgIC8vIGFscyBER0wtVmVydHJldHVuZyBlaW5nZXNldHp0LgogICAg ICAgICAgICAgICAgICAgIGlmIChpbmZvLmlzdFNwcmluZ2VyKSBncnVlbisrOwogICAgICAgICAg ICAgICAgICAgIGVsc2UgICAgICAgICAgICAgICAgICBncmF1Kys7CiAgICAgICAgICAgICAgICB9 IGVsc2UgewogICAgICAgICAgICAgICAgICAgIGlmIChpbmZvLmltRGllbnN0ID49IGluZm8udG90 YWwpIGdvbGQrKzsKICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChpbmZvLmltRGllbnN0ID09 PSAxKSAgICBuZXV0cmFsKys7CiAgICAgICAgICAgICAgICAgICAgZWxzZSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGdydWVuKys7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0p OwogICAgICAgICAgICB0LnN0YXQgPSB7IHJvdDogcm90LCBncmF1OiBncmF1LCBuZXV0cmFsOiBu ZXV0cmFsLCBncnVlbjogZ3J1ZW4sIGdvbGQ6IGdvbGQsCiAgICAgICAgICAgICAgICAgICAgICAg dG90YWw6IHJvdCArIGdyYXUgKyBuZXV0cmFsICsgZ3J1ZW4gKyBnb2xkIH07CiAgICAgICAgfSk7 CgogICAgICAgIHJldHVybiBkYXRhOwogICAgfQoKICAgIGZ1bmN0aW9uIG1pa3JvdGVhbVJlbmRl cm4oKSB7CiAgICAgICAgdmFyIGhlYXRFbCAgID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3N0 YXRzLXRlYW0taGVhdG1hcCcpOwogICAgICAgIHZhciBuZWJlbkVsICA9IGRvY3VtZW50LmdldEVs ZW1lbnRCeUlkKCdzdGF0cy10ZWFtLWhlYXRtYXAtbmViZW4nKTsKICAgICAgICB2YXIgYmFsa2Vu RWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3RhdHMtdGVhbS1iYWxrZW4nKTsKICAgICAg ICBpZiAoIWhlYXRFbCB8fCAhYmFsa2VuRWwpIHJldHVybjsKCiAgICAgICAgdmFyIGRhdGEgPSBf dGVhbURhdGVuR2VmaWx0ZXJ0KCk7CiAgICAgICAgaWYgKCFkYXRhLmxlbmd0aCkgewogICAgICAg ICAgICB2YXIgbGVlckhpbndlaXMgPSAoc3RhdEZpbHRlciA9PT0gJ2FsbGUnKQogICAgICAgICAg ICAgICAgPyAnS2VpbmUgTWlrcm90ZWFtcyBrb25maWd1cmllcnQuIEltIEFkbWluLVRhYiBhbmxl Z2VuLicKICAgICAgICAgICAgICAgIDogJ0tlaW5lIE1pa3JvdGVhbXMgaW4gZGVyIGdld8OkaGx0 ZW4gRGllbnN0Z3J1cHBlLic7CiAgICAgICAgICAgIGhlYXRFbC5pbm5lckhUTUwgID0gJzxwIGNs YXNzPSJ0ZXh0LW11dGVkIiBzdHlsZT0icGFkZGluZzozMnB4O3RleHQtYWxpZ246Y2VudGVyIj4n ICsgZXNjYXBlSFRNTChsZWVySGlud2VpcykgKyAnPC9wPic7CiAgICAgICAgICAgIGlmIChuZWJl bkVsKSBuZWJlbkVsLmlubmVySFRNTCA9ICcnOwogICAgICAgICAgICBiYWxrZW5FbC5pbm5lckhU TUwgPSAnJzsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICB2YXIgdGFnZSA9 IF90ZWFtQ3V0VGFnZSgpOwogICAgICAgIHZhciB0YWdNZXRhID0gX3RlYW1UYWdNZXRhKHRhZ2Up OwogICAgICAgIHZhciBwZXJzb25lbiA9IChaLnBsYW51bmcgJiYgWi5wbGFudW5nLnBlcnNvbmVu KSB8fCBbXTsKICAgICAgICB2YXIgcGVyc29uTWFwID0ge307CiAgICAgICAgcGVyc29uZW4uZm9y RWFjaChmdW5jdGlvbihwKSB7IHBlcnNvbk1hcFtwLmlkXSA9IHA7IH0pOwogICAgICAgIHZhciBl aW50cmFlZ2UgPSAoWi5wbGFudW5nICYmIFoucGxhbnVuZy5laW50cmFlZ2UpIHx8IHt9OwoKICAg ICAgICBfcmVuZGVyVGVhbUhlYXRtYXAoaGVhdEVsLCBkYXRhLCB0YWdlLCB0YWdNZXRhLCBwZXJz b25NYXAsIGVpbnRyYWVnZSk7CiAgICAgICAgaWYgKG5lYmVuRWwpIF9yZW5kZXJOZWJlbndhY2hl bkhlYXRtYXAobmViZW5FbCwgZGF0YSwgdGFnZSwgdGFnTWV0YSk7CiAgICAgICAgX3JlbmRlclRl YW1CYWxrZW4oYmFsa2VuRWwsIGRhdGEpOwogICAgICAgIF9yZW5kZXJUZWFtQmFsa2VuU29ydEhv b2tzKCk7CiAgICB9CgogICAgLy8gR2V0ZWlsdGVyIEhlYWRlci1CYXVlciBmdWVyIE1pa3JvdGVh bS1IZWF0bWFwIFVORCBOZWJlbndhY2hlbi1IZWF0bWFwLgogICAgLy8gQmVpZGUgcmVuZGVybiBk ZW5zZWxiZW4gQ3V0IChTcGFsdGVua29lcGZlIE1vbmF0IC8gVGFnIC8gV29jaGVudGFnICsKICAg IC8vIG9wdGlvbmFsZSBNYXJrZXItWmVpbGVuIEZlaWVydGFnZSAvIEZlcmllbiAvIFNvbmRlcnRl cm1pbmUpIHVuZCB0ZWlsZW4KICAgIC8vIGRpZSBTcGFsdGVuLUtsYXNzZW4tTG9naWsuIExpZWZl cnQgdm9yZ2VmZXJ0aWd0ZSBIVE1MLUJhdXN0ZWluZSBwbHVzCiAgICAvLyBkaWUgbWFrZVNwYWNl ci9zcGFsdGVuS2xhc3Nlbi1IZWxwZXIgZnVlciBkaWUgQm9keS1aZWlsZW4uCiAgICBmdW5jdGlv biBfaGVhdG1hcEtvcGZUZWlsKHRhZ2UsIHRhZ01ldGEpIHsKICAgICAgICB2YXIgbW9uYXRlTWFw ID0ge307CiAgICAgICAgdGFnZS5mb3JFYWNoKGZ1bmN0aW9uKGQpIHsKICAgICAgICAgICAgdmFy IG0gPSBkLnN1YnN0cigwLCA3KTsKICAgICAgICAgICAgbW9uYXRlTWFwW21dID0gKG1vbmF0ZU1h cFttXSB8fCAwKSArIDE7CiAgICAgICAgfSk7CiAgICAgICAgdmFyIG1vbmF0ZSA9IE9iamVjdC5r ZXlzKG1vbmF0ZU1hcCkuc29ydCgpOwogICAgICAgIHZhciBtb25hdEhlYWQgPSBtb25hdGUubWFw KGZ1bmN0aW9uKG0pIHsKICAgICAgICAgICAgdmFyIG5yID0gcGFyc2VJbnQobS5zdWJzdHIoNSwg MiksIDEwKSAtIDE7CiAgICAgICAgICAgIHJldHVybiAnPHRoIGNsYXNzPSJ0ZWFtLWhtLW1vbmF0 LWNlbGwiIGNvbHNwYW49IicgKyBtb25hdGVNYXBbbV0gKyAnIj4nICsgTU9OQVRTTkFNRU5fS1VS Wltucl0gKyAnPC90aD4nOwogICAgICAgIH0pLmpvaW4oJycpOwoKICAgICAgICBmdW5jdGlvbiBz cGFsdGVuS2xhc3NlbihkKSB7IHJldHVybiBfc3BhbHRlbktsYXNzZW4odGFnTWV0YSwgZCk7IH0K CiAgICAgICAgdmFyIHRhZ0hlYWQgPSB0YWdlLm1hcChmdW5jdGlvbihkKSB7CiAgICAgICAgICAg IHZhciBudW0gPSBwYXJzZUludChkLnN1YnN0cig4LCAyKSwgMTApOwogICAgICAgICAgICB2YXIg Y2xzID0gWyd0ZWFtLWhtLXRoJ10uY29uY2F0KHNwYWx0ZW5LbGFzc2VuKGQpKTsKICAgICAgICAg ICAgcmV0dXJuICc8dGggY2xhc3M9IicgKyBjbHMuam9pbignICcpICsgJyI+JyArIG51bSArICc8 L3RoPic7CiAgICAgICAgfSkuam9pbignJyk7CgogICAgICAgIHZhciB3dEt1cnogPSBbJ1NvJywn TW8nLCdEaScsJ01pJywnRG8nLCdGcicsJ1NhJ107CiAgICAgICAgdmFyIHd0SGVhZCA9IHRhZ2Uu bWFwKGZ1bmN0aW9uKGQpIHsKICAgICAgICAgICAgdmFyIG0gPSB0YWdNZXRhW2RdOwogICAgICAg ICAgICB2YXIgY2xzID0gWyd0ZWFtLWhtLXd0J10uY29uY2F0KHNwYWx0ZW5LbGFzc2VuKGQpKTsK ICAgICAgICAgICAgcmV0dXJuICc8dGggY2xhc3M9IicgKyBjbHMuam9pbignICcpICsgJyI+JyAr IHd0S3VyelttLndvY2hlbnRhZ10gKyAnPC90aD4nOwogICAgICAgIH0pLmpvaW4oJycpOwoKICAg ICAgICBmdW5jdGlvbiBpdGVtS2V5KGl0KSB7CiAgICAgICAgICAgIGlmICghaXQpIHJldHVybiAn JzsKICAgICAgICAgICAgcmV0dXJuIChpdC5iZXplaWNobnVuZyB8fCBpdC5uYW1lIHx8IGl0LnRp dGVsIHx8ICcnKSArCiAgICAgICAgICAgICAgICAgICAnfCcgKyAoaXQudm9uIHx8IGl0LmRhdHVt IHx8ICcnKSArCiAgICAgICAgICAgICAgICAgICAnfCcgKyAoaXQuYmlzIHx8IGl0LmRhdHVtQmlz IHx8IGl0LmRhdHVtIHx8ICcnKTsKICAgICAgICB9CiAgICAgICAgZnVuY3Rpb24gaXRlbUxhYmVs KGl0KSB7CiAgICAgICAgICAgIHJldHVybiBpdC5iZXplaWNobnVuZyB8fCBpdC5uYW1lIHx8IGl0 LnRpdGVsIHx8IGl0LnRleHQgfHwgJyc7CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBtYWtl TWFya2VyUm93KGxhYmVsLCBnZXR0ZXIsIGtsYXNzZSwgb3B0cykgewogICAgICAgICAgICBvcHRz ID0gb3B0cyB8fCB7fTsKICAgICAgICAgICAgdmFyIGFueUhpdCA9IHRhZ2Uuc29tZShmdW5jdGlv bihkKSB7IHJldHVybiBnZXR0ZXIodGFnTWV0YVtkXSkubGVuZ3RoID4gMDsgfSk7CiAgICAgICAg ICAgIGlmICghYW55SGl0KSByZXR1cm4gJyc7CiAgICAgICAgICAgIHZhciBjZWxscyA9ICcnOwog ICAgICAgICAgICB2YXIgaSA9IDA7CiAgICAgICAgICAgIHdoaWxlIChpIDwgdGFnZS5sZW5ndGgp IHsKICAgICAgICAgICAgICAgIHZhciBkID0gdGFnZVtpXTsKICAgICAgICAgICAgICAgIHZhciBp dGVtcyA9IGdldHRlcih0YWdNZXRhW2RdKTsKICAgICAgICAgICAgICAgIHZhciBjZWxsQ2xzID0g Wyd0ZWFtLWhtLW1hcmtlci1jZWxsJ10uY29uY2F0KHNwYWx0ZW5LbGFzc2VuKGQpKTsKICAgICAg ICAgICAgICAgIGlmICghaXRlbXMubGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAgICAgY2VsbHMg Kz0gJzx0ZCBjbGFzcz0iJyArIGNlbGxDbHMuam9pbignICcpICsgJyI+PC90ZD4nOwogICAgICAg ICAgICAgICAgICAgIGkrKzsKICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg ICAgICAgIH0KICAgICAgICAgICAgICAgIGNlbGxDbHMucHVzaChrbGFzc2UpOwogICAgICAgICAg ICAgICAgdmFyIHNwYW4gPSAxOwogICAgICAgICAgICAgICAgaWYgKG9wdHMubWl0U3Bhbikgewog ICAgICAgICAgICAgICAgICAgIHZhciBzY2hsdWVzc2VsID0gaXRlbXMubWFwKGl0ZW1LZXkpLmpv aW4oJzsnKTsKICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBqID0gaSArIDE7IGogPCB0YWdl Lmxlbmd0aDsgaisrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBmb2xsb3dJdGVtcyA9 IGdldHRlcih0YWdNZXRhW3RhZ2Vbal1dKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZv bGxvd0l0ZW1zLm1hcChpdGVtS2V5KS5qb2luKCc7JykgIT09IHNjaGx1ZXNzZWwpIGJyZWFrOwog ICAgICAgICAgICAgICAgICAgICAgICBzcGFuKys7CiAgICAgICAgICAgICAgICAgICAgfQogICAg ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgdmFyIGxhYmVscyA9IGl0ZW1zLm1hcChpdGVt TGFiZWwpLmZpbHRlcihCb29sZWFuKTsKICAgICAgICAgICAgICAgIHZhciB0aXAgICAgPSBsYWJl bHMuam9pbignIC8gJyk7CiAgICAgICAgICAgICAgICB2YXIgYW56ZWlnZTsKICAgICAgICAgICAg ICAgIGlmIChvcHRzLmljb24pICAgICAgICAgYW56ZWlnZSA9IG9wdHMuaWNvbjsKICAgICAgICAg ICAgICAgIGVsc2UgaWYgKG9wdHMubWl0U3BhbikgYW56ZWlnZSA9IGxhYmVscy5qb2luKCcgLyAn KTsKICAgICAgICAgICAgICAgIGVsc2UgICAgICAgICAgICAgICAgICAgYW56ZWlnZSA9IGxhYmVs c1swXSA/IGxhYmVsc1swXS5zdWJzdHIoMCwgMikgOiAnwrcnOwogICAgICAgICAgICAgICAgdmFy IGV4dHJhID0gJyc7CiAgICAgICAgICAgICAgICBpZiAob3B0cy5rbGlja2JhcikgewogICAgICAg ICAgICAgICAgICAgIHZhciBpZHMgPSBpdGVtcy5tYXAoZnVuY3Rpb24ocykgeyByZXR1cm4gcy5p ZDsgfSkuZmlsdGVyKEJvb2xlYW4pLmpvaW4oJywnKTsKICAgICAgICAgICAgICAgICAgICBleHRy YSA9ICcgZGF0YS1zdC1pZHM9IicgKyBlc2NhcGVBdHRyKGlkcykgKyAnIiBkYXRhLWtsaWNrYmFy PSIxIic7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB2YXIgY29sc3BhbkF0dHIg PSBzcGFuID4gMSA/ICcgY29sc3Bhbj0iJyArIHNwYW4gKyAnIicgOiAnJzsKICAgICAgICAgICAg ICAgIGNlbGxzICs9ICc8dGQgY2xhc3M9IicgKyBjZWxsQ2xzLmpvaW4oJyAnKSArICciJyArIGNv bHNwYW5BdHRyICsgZXh0cmEgKyAnIHRpdGxlPSInICsgZXNjYXBlQXR0cih0aXApICsgJyI+JyAr IGVzY2FwZUhUTUwoYW56ZWlnZSkgKyAnPC90ZD4nOwogICAgICAgICAgICAgICAgaSArPSBzcGFu OwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiAnPHRyIGNsYXNzPSJ0ZWFtLWhtLW1h cmtlci1yb3ciPicgKwogICAgICAgICAgICAgICAgJzx0aCBjbGFzcz0idGVhbS1obS1uYW1lIHRl YW0taG0tbWFya2VyLW5hbWUiPicgKyBlc2NhcGVIVE1MKGxhYmVsKSArICc8L3RoPicgKwogICAg ICAgICAgICAgICAgY2VsbHMgKwogICAgICAgICAgICAgICAgJzwvdHI+JzsKICAgICAgICB9Cgog ICAgICAgIHZhciBmZWllcnRhZ1JvdyAgID0gbWFrZU1hcmtlclJvdygnRmVpZXJ0YWdlJywgICAg ZnVuY3Rpb24obSkgeyByZXR1cm4gbS5mZWllcnRhZ2U7IH0sICAgICAnbWFya2VyLWZlaWVyJywg ICAgICAgIHsga2xpY2tiYXI6IGZhbHNlLCBtaXRTcGFuOiBmYWxzZSB9KTsKICAgICAgICB2YXIg ZmVyaWVuUm93ICAgICA9IG1ha2VNYXJrZXJSb3coJ0ZlcmllbicsICAgICAgIGZ1bmN0aW9uKG0p IHsgcmV0dXJuIG0uZmVyaWVuOyB9LCAgICAgICAgJ21hcmtlci1mZXJpZW4nLCAgICAgICB7IGts aWNrYmFyOiBmYWxzZSwgbWl0U3BhbjogdHJ1ZSB9KTsKICAgICAgICB2YXIgc29uZGVydGVybVJv dyA9IG1ha2VNYXJrZXJSb3coJ1NvbmRlcnRlcm1pbmUnLCBmdW5jdGlvbihtKSB7IHJldHVybiBt LnNvbmRlcnRlcm1pbmU7IH0sICdtYXJrZXItc29uZGVydGVybWluJywgeyBrbGlja2JhcjogdHJ1 ZSwgIG1pdFNwYW46IGZhbHNlLCBpY29uOiAn4pqgJyB9KTsKCiAgICAgICAgZnVuY3Rpb24gbWFr ZVNwYWNlcihrbGFzc2UpIHsKICAgICAgICAgICAgdmFyIG5hbWVUZCA9ICc8dGQgY2xhc3M9InRl YW0taG0tc3BhY2VyLW5hbWUgJyArIGtsYXNzZSArICciPjwvdGQ+JzsKICAgICAgICAgICAgdmFy IGJvZHlUZCA9ICc8dGQgY2xhc3M9InRlYW0taG0tc3BhY2VyLWJvZHkgJyArIGtsYXNzZSArICci IGNvbHNwYW49IicgKyB0YWdlLmxlbmd0aCArICciPjwvdGQ+JzsKICAgICAgICAgICAgcmV0dXJu ICc8dHIgY2xhc3M9InRlYW0taG0tc3BhY2VyLXJvdyI+JyArIG5hbWVUZCArIGJvZHlUZCArICc8 L3RyPic7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gewogICAgICAgICAgICBtb25hdEhlYWQ6 IG1vbmF0SGVhZCwgdGFnSGVhZDogdGFnSGVhZCwgd3RIZWFkOiB3dEhlYWQsCiAgICAgICAgICAg IGZlaWVydGFnUm93OiBmZWllcnRhZ1JvdywgZmVyaWVuUm93OiBmZXJpZW5Sb3csIHNvbmRlcnRl cm1Sb3c6IHNvbmRlcnRlcm1Sb3csCiAgICAgICAgICAgIHNwYWx0ZW5LbGFzc2VuOiBzcGFsdGVu S2xhc3NlbiwgbWFrZVNwYWNlcjogbWFrZVNwYWNlcgogICAgICAgIH07CiAgICB9CgogICAgLy8g U3RpY2t5LVRvcC1XZXJ0ZSBmdWVyIGRpZSBtZWhyemVpbGlnZW4gSGVhZGVyIChNb25hdCAvIFRh ZyAvIFdvY2hlbnRhZwogICAgLy8gKyBvcHRpb25hbGUgTWFya2VyLVplaWxlbikuIENTUyBhbGxl aW4gcmVpY2h0IG5pY2h0LCB3ZWlsIE1hcmtlci1aZWlsZW4KICAgIC8vIG9wdGlvbmFsIHNpbmQg 4oCUIHdpciBzdW1taWVyZW4gZGllIHRhdHNhZWNobGljaGVuIG9mZnNldEhlaWdodC1XZXJ0ZS4K ICAgIGZ1bmN0aW9uIF9oZWF0bWFwU3RpY2t5VG9wQW53ZW5kZW4oZWwpIHsKICAgICAgICB2YXIg dGhlYWQgPSBlbC5xdWVyeVNlbGVjdG9yKCcudGVhbS1obS10YWJlbGxlID4gdGhlYWQnKTsKICAg ICAgICBpZiAoIXRoZWFkKSByZXR1cm47CiAgICAgICAgdmFyIGFra3VUb3AgPSAwOwogICAgICAg IEFycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwodGhlYWQuY2hpbGRyZW4sIGZ1bmN0aW9uKHRy KSB7CiAgICAgICAgICAgIEFycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwodHIuY2hpbGRyZW4s IGZ1bmN0aW9uKGNlbGwpIHsKICAgICAgICAgICAgICAgIGNlbGwuc3R5bGUudG9wID0gYWtrdVRv cCArICdweCc7CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICBha2t1VG9wICs9IHRyLm9mZnNl dEhlaWdodDsKICAgICAgICB9KTsKICAgIH0KCiAgICAvLyBTb25kZXJ0ZXJtaW4tS2xpY2s6IE1h cmtlci1aZWxsZSBvZWZmbmV0IERldGFpbC1Nb2RhbC4gV2lyZCBzb3dvaGwKICAgIC8vIGZ1ZXIg ZGllIEhhdXB0LUhlYXRtYXAgYWxzIGF1Y2ggZnVlciBkaWUgTmViZW53YWNoZW4tSGVhdG1hcCBy ZWdpc3RyaWVydC4KICAgIGZ1bmN0aW9uIF9oZWF0bWFwU29uZGVydGVybWluZUtsaWNrYmFyKGVs KSB7CiAgICAgICAgZWwucXVlcnlTZWxlY3RvckFsbCgnLm1hcmtlci1zb25kZXJ0ZXJtaW5bZGF0 YS1rbGlja2Jhcj0iMSJdJykuZm9yRWFjaChmdW5jdGlvbihjZWxsKSB7CiAgICAgICAgICAgIGNl bGwuc3R5bGUuY3Vyc29yID0gJ3BvaW50ZXInOwogICAgICAgICAgICBjZWxsLmFkZEV2ZW50TGlz dGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgZS5zdG9wUHJvcGFn YXRpb24oKTsKICAgICAgICAgICAgICAgIF96ZWlnZVNvbmRlcnRlcm1pbmVEZXRhaWwoY2VsbC5n ZXRBdHRyaWJ1dGUoJ2RhdGEtc3QtaWRzJykpOwogICAgICAgICAgICB9KTsKICAgICAgICB9KTsK ICAgIH0KCiAgICBmdW5jdGlvbiBfcmVuZGVyVGVhbUhlYXRtYXAoZWwsIGRhdGEsIHRhZ2UsIHRh Z01ldGEsIHBlcnNvbk1hcCwgZWludHJhZWdlKSB7CiAgICAgICAgdmFyIGtvcGYgPSBfaGVhdG1h cEtvcGZUZWlsKHRhZ2UsIHRhZ01ldGEpOwogICAgICAgIHZhciBtb25hdEhlYWQgICAgID0ga29w Zi5tb25hdEhlYWQ7CiAgICAgICAgdmFyIHRhZ0hlYWQgICAgICAgPSBrb3BmLnRhZ0hlYWQ7CiAg ICAgICAgdmFyIHd0SGVhZCAgICAgICAgPSBrb3BmLnd0SGVhZDsKICAgICAgICB2YXIgZmVpZXJ0 YWdSb3cgICA9IGtvcGYuZmVpZXJ0YWdSb3c7CiAgICAgICAgdmFyIGZlcmllblJvdyAgICAgPSBr b3BmLmZlcmllblJvdzsKICAgICAgICB2YXIgc29uZGVydGVybVJvdyA9IGtvcGYuc29uZGVydGVy bVJvdzsKICAgICAgICB2YXIgc3BhbHRlbktsYXNzZW4gPSBrb3BmLnNwYWx0ZW5LbGFzc2VuOwog ICAgICAgIHZhciBtYWtlU3BhY2VyICAgICA9IGtvcGYubWFrZVNwYWNlcjsKCiAgICAgICAgLy8g S29udGV4dCBmdWVyIENsaWNrLUhhbmRsZXIgYWJsZWdlbiDigJQgRGV0YWlsLVplaWxlbiB3ZXJk ZW4gYmVpCiAgICAgICAgLy8gRXhwYW5kLUtsaWNrcyBkaXJla3QgcGVyIGluc2VydEFkamFjZW50 SFRNTCBlaW5nZWZ1ZWd0IHN0YXR0IGRpZQogICAgICAgIC8vIGdhbnplIFRhYmVsbGUgbmV1IHp1 IHJlbmRlcm4uCiAgICAgICAgX2hlYXRtYXBLb250ZXh0ID0geyB0YWdlOiB0YWdlLCB0YWdNZXRh OiB0YWdNZXRhLCBwZXJzb25NYXA6IHBlcnNvbk1hcCwgZWludHJhZWdlOiBlaW50cmFlZ2UgfTsK ICAgICAgICB2YXIgcm93c0h0bWwgPSBkYXRhLm1hcChmdW5jdGlvbih0LCBpZHgpIHsKICAgICAg ICAgICAgdmFyIGV4cGFuZGVkID0gISFfc3RhdFRlYW1FeHBhbmRlZFt0LmlkXTsKICAgICAgICAg ICAgdmFyIHBmZWlsID0gZXhwYW5kZWQgPyAn4pa+JyA6ICfilrgnOwogICAgICAgICAgICB2YXIg cG9vbCA9IF9pc3RQb29sVGVhbSh0KTsKICAgICAgICAgICAgLy8gUG9vbC1TdGFuZG9ydGUgKExE LCBTTykgd2VyZGVuIGFscyBlaW4gZ2VtZWluc2FtZXIgQmxvY2sgYmVoYW5kZWx0CiAgICAgICAg ICAgIC8vIOKAlCBrZWluIFNwYWNlciB6d2lzY2hlbiBpaG5lbiwgZGEgc2llIGZ1bmt0aW9uYWwg enVzYW1tZW5nZWhvZXJlbi4KICAgICAgICAgICAgdmFyIHZvclBvb2wgICA9IGlkeCA+IDAgJiYg X2lzdFBvb2xUZWFtKGRhdGFbaWR4IC0gMV0pOwogICAgICAgICAgICB2YXIgamV0enRQb29sID0g X2lzdFBvb2xUZWFtKHQpOwogICAgICAgICAgICB2YXIgc3RhbmRvcnRXZWNoc2VsID0gaWR4ID4g MCAmJiBkYXRhW2lkeCAtIDFdLnN0YW5kb3J0ICE9PSB0LnN0YW5kb3J0ICYmICEodm9yUG9vbCAm JiBqZXR6dFBvb2wpOwogICAgICAgICAgICB2YXIgaGF1cHRUcmVubmVyICAgID0gaWR4ID4gMCAm JiBkYXRhW2lkeCAtIDFdLnN0YW5kb3J0ID09PSAnSEEnICYmIHQuc3RhbmRvcnQgPT09ICdCTyc7 CiAgICAgICAgICAgIHZhciBzcGFjZXJSb3cgPSAnJzsKICAgICAgICAgICAgaWYgKGhhdXB0VHJl bm5lcikgewogICAgICAgICAgICAgICAgLy8gSGF1cHR3YWNoZW4tVHJlbm5lcjogb2JlcmVyIFNw YWNlciBtaXQgQm9yZGVyLUJvdHRvbSAoZ3JhdWUKICAgICAgICAgICAgICAgIC8vIFRyZW5ubGlu aWUpLCB1bnRlcmVyIFNwYWNlciBhbHMgRGlzdGFueiBkYW5hY2guCiAgICAgICAgICAgICAgICBz cGFjZXJSb3cgPSBtYWtlU3BhY2VyKCd0ZWFtLWhtLXNwYWNlci1oYXVwdC1vYmVuJykgKwogICAg ICAgICAgICAgICAgICAgICAgICAgICAgbWFrZVNwYWNlcigndGVhbS1obS1zcGFjZXItaGF1cHQt dW50ZW4nKTsKICAgICAgICAgICAgfSBlbHNlIGlmIChzdGFuZG9ydFdlY2hzZWwpIHsKICAgICAg ICAgICAgICAgIHNwYWNlclJvdyA9IG1ha2VTcGFjZXIoJ3RlYW0taG0tc3BhY2VyLXN0YW5kb3J0 Jyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdmFyIHRlYW1Sb3cgPSAnPHRyIGNsYXNzPSJ0 ZWFtLWhtLXJvdyIgZGF0YS10ZWFtLWlkPSInICsgdC5pZCArICciPicgKwogICAgICAgICAgICAg ICAgJzx0aCBjbGFzcz0idGVhbS1obS1uYW1lIHRlYW0taG0tY2xpY2thYmxlIiB0aXRsZT0iS2xp Y2sgemVpZ3QgUGVyc29uZW4tRGV0YWlsIj4nICsKICAgICAgICAgICAgICAgICAgICAnPHNwYW4g Y2xhc3M9InRlYW0taG0tdG9nZ2xlIj4nICsgcGZlaWwgKyAnPC9zcGFuPiAnICsgZXNjYXBlSFRN TCh0Lm5hbWUpICsKICAgICAgICAgICAgICAgICc8L3RoPicgKwogICAgICAgICAgICAgICAgdGFn ZS5tYXAoZnVuY3Rpb24oZCkgewogICAgICAgICAgICAgICAgICAgIHZhciBtID0gdGFnTWV0YVtk XTsKICAgICAgICAgICAgICAgICAgICB2YXIgaW5mbyA9IHQudGFnZVtkXTsKICAgICAgICAgICAg ICAgICAgICB2YXIgYmFzZUNscyA9IFsndGVhbS1obS1jZWxsJ10uY29uY2F0KHNwYWx0ZW5LbGFz c2VuKGQpKTsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCFpbmZvIHx8IGluZm8udG90YWwgPT09 IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICc8dGQgY2xhc3M9IicgKyBiYXNl Q2xzLmpvaW4oJyAnKSArICciPjwvdGQ+JzsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAg ICAgICAgICAgICAgLy8gQmVpIG5pZW1hbmQgaW0gRGllbnN0OiByb3QgbnVyIHdlbm4gYWxsZSAi aGFldHRlbiBhcmJlaXRlbgogICAgICAgICAgICAgICAgICAgIC8vIGtvZW5uZW4iIChGcmVpLUNv ZGVzKSwgc29uc3QgZ3JhdSAobGVnaXRpbWUgQWJ3ZXNlbmhlaXQpLgogICAgICAgICAgICAgICAg ICAgIGZ1bmN0aW9uIGZhcmJlQmVpTnVsbERpZW5zdCgpIHsKICAgICAgICAgICAgICAgICAgICAg ICAgaWYgKGluZm8uYWJ3ZXNlbmQgPj0gMSkgcmV0dXJuICd0ZWFtLWdyYXUnOwogICAgICAgICAg ICAgICAgICAgICAgICBpZiAoaW5mby5mcmVpID49IDEpICAgICByZXR1cm4gJ3RlYW0tcic7CiAg ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAndGVhbS1ncmF1JzsKICAgICAgICAgICAgICAg ICAgICB9CiAgICAgICAgICAgICAgICAgICAgLy8gUG9vbC1UZWFtOiByb3QgLyBncmF1IC8gZ3J1 ZW4g4oCUIEtFSU5FIFphaGwgaW4gZGVyIFplbGxlLgogICAgICAgICAgICAgICAgICAgIC8vIGdy dWVuIE5VUiBiZWkgZWNodGVtIERHTC1TcHJpbmdlbiAoUG9vbC1QZXJzb24gbWFjaHQKICAgICAg ICAgICAgICAgICAgICAvLyBGL1MvTi1ER0wgVU5EIGRpZSBaaWVsd2FjaGUgaGF0IGluIGRpZXNl ciBTY2hpY2h0IGtlaW5lbgogICAgICAgICAgICAgICAgICAgIC8vIGVpZ2VuZW4gREdMKS4gUG9v bC1QZXJzb24gaW0gRGllbnN0IGFiZXIgb2huZSBER0wtCiAgICAgICAgICAgICAgICAgICAgLy8g VmVydHJldHVuZ3MtRnVua3Rpb24gKHouQi4gRi1GQlAgb2RlciBER0wtYmVpLWJlc2V0enRlci0K ICAgICAgICAgICAgICAgICAgICAvLyBaaWVsd2FjaGUpIHdpcmQgZ3JhdSBkYXJnZXN0ZWxsdCDi gJQgc2llIGlzdCBkYSwgYWJlcgogICAgICAgICAgICAgICAgICAgIC8vIHN0YXRpc3Rpc2NoIG5p Y2h0IGFscyBQb29sLVNwcmluZ2VyIHJlbGV2YW50LgogICAgICAgICAgICAgICAgICAgIGlmIChw b29sKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBwb29sRmFyYmUsIHBvb2xUaXA7CiAg ICAgICAgICAgICAgICAgICAgICAgIGlmIChpbmZvLmltRGllbnN0ID09PSAwKSB7CiAgICAgICAg ICAgICAgICAgICAgICAgICAgICBwb29sRmFyYmUgPSBmYXJiZUJlaU51bGxEaWVuc3QoKTsKICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHBvb2xUaXAgPSBkICsgJyDigJQgbmljaHQgaW0gRGll bnN0JzsKICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpbmZvLmlzdFNwcmluZ2Vy KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb29sRmFyYmUgPSAndGVhbS1nJzsKICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHBvb2xUaXAgPSBkICsgJyDigJQgc3ByaW5ndCBhbHMg REdMIGVpbic7CiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAg ICAgICAgICAgICAgICBwb29sRmFyYmUgPSAndGVhbS1ncmF1JzsKICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHBvb2xUaXAgPSBkICsgJyDigJQgaW0gRGllbnN0LCBuaWNodCBhbHMgREdMLVZl cnRyZXR1bmcnOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAg ICAgIGJhc2VDbHMucHVzaChwb29sRmFyYmUpOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1 cm4gJzx0ZCBjbGFzcz0iJyArIGJhc2VDbHMuam9pbignICcpICsgJyIgdGl0bGU9IicgKyBlc2Nh cGVBdHRyKHBvb2xUaXApICsgJyI+PC90ZD4nOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAg ICAgICAgICAgICAgICAvLyBSZWd1bMOkcmUgVGVhbXM6IHJvdCAvIGdyYXUgLyBuZXV0cmFsICgx IGRhKSAvIGdyw7xuICgyKykgLyBnb2xkIChhbGxlKQogICAgICAgICAgICAgICAgICAgIHZhciBm YXJiZSA9IChpbmZvLmltRGllbnN0ID09PSAwKSA/IGZhcmJlQmVpTnVsbERpZW5zdCgpCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIDogKGluZm8uaW1EaWVuc3QgPj0gaW5mby50b3RhbCkg PyAndGVhbS1nb2xkJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IChpbmZvLmltRGll bnN0ID09PSAxKSA/ICd0ZWFtLW4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJ3Rl YW0tZyc7CiAgICAgICAgICAgICAgICAgICAgYmFzZUNscy5wdXNoKGZhcmJlKTsKICAgICAgICAg ICAgICAgICAgICAvLyBCZWkgMC1EaWVuc3QgbmljaHRzIGFuemVpZ2VuIChaYWhsIGhhZXR0ZSBr ZWluZW4gTWVocndlcnQpLAogICAgICAgICAgICAgICAgICAgIC8vIGFuc29uc3RlbiBkaWUgQW56 YWhsLgogICAgICAgICAgICAgICAgICAgIHZhciBpbmhhbHQgPSBpbmZvLmltRGllbnN0ID09PSAw ID8gJycgOiBpbmZvLmltRGllbnN0OwogICAgICAgICAgICAgICAgICAgIHZhciB0aXAgPSBkICsg JyDigJQgJyArIGluZm8uaW1EaWVuc3QgKyAnLycgKyBpbmZvLnRvdGFsICsgJyBpbSBEaWVuc3Qn OwogICAgICAgICAgICAgICAgICAgIGlmIChpbmZvLmltRGllbnN0ID09PSAwKSB7CiAgICAgICAg ICAgICAgICAgICAgICAgIGlmIChpbmZvLmFid2VzZW5kKSB0aXAgKz0gJyAoJyArIGluZm8uYWJ3 ZXNlbmQgKyAnIGFid2VzZW5kKSc7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbmZvLmZy ZWkpICAgICB0aXAgKz0gJyAoJyArIGluZm8uZnJlaSArICcgZnJlaSknOwogICAgICAgICAgICAg ICAgICAgIH0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gJzx0ZCBjbGFzcz0iJyArIGJhc2VD bHMuam9pbignICcpICsgJyIgdGl0bGU9IicgKyBlc2NhcGVBdHRyKHRpcCkgKyAnIj4nICsgaW5o YWx0ICsgJzwvdGQ+JzsKICAgICAgICAgICAgICAgIH0pLmpvaW4oJycpICsKICAgICAgICAgICAg ICAgICc8L3RyPic7CgogICAgICAgICAgICBpZiAoIWV4cGFuZGVkKSByZXR1cm4gc3BhY2VyUm93 ICsgdGVhbVJvdzsKCiAgICAgICAgICAgIC8vIERldGFpbC1aZWlsZW4gcHJvIFBlcnNvbiDigJQg Z2xlaWNoZXIgSGVscGVyIHdpcmQgYmVpbSBFeHBhbmQtCiAgICAgICAgICAgIC8vIEtsaWNrIGVy bmV1dCBnZW51dHp0LCB1bSBkaWUgWmVpbGVuIG5hY2h0cmFlZ2xpY2ggZWluenVmdWVnZW4uCiAg ICAgICAgICAgIHJldHVybiBzcGFjZXJSb3cgKyB0ZWFtUm93ICsgX2J1aWxkVGVhbURldGFpbFJv d3ModCwgX2hlYXRtYXBLb250ZXh0KTsKICAgICAgICB9KS5qb2luKCcnKTsKCiAgICAgICAgZWwu aW5uZXJIVE1MID0gJzxkaXYgY2xhc3M9InRhYmVsbGUtc2Nyb2xsIHRlYW0taG0tc2Nyb2xsIj4n ICsKICAgICAgICAgICAgJzx0YWJsZSBjbGFzcz0idGVhbS1obS10YWJlbGxlIj4nICsKICAgICAg ICAgICAgICAgICc8dGhlYWQ+JyArCiAgICAgICAgICAgICAgICAgICAgJzx0cj48dGggY2xhc3M9 InRlYW0taG0tbmFtZSI+PC90aD4nICsgbW9uYXRIZWFkICsgJzwvdHI+JyArCiAgICAgICAgICAg ICAgICAgICAgJzx0cj48dGggY2xhc3M9InRlYW0taG0tbmFtZSI+PC90aD4nICsgdGFnSGVhZCAg ICsgJzwvdHI+JyArCiAgICAgICAgICAgICAgICAgICAgJzx0cj48dGggY2xhc3M9InRlYW0taG0t bmFtZSI+PC90aD4nICsgd3RIZWFkICAgICsgJzwvdHI+JyArCiAgICAgICAgICAgICAgICAgICAg ZmVpZXJ0YWdSb3cgKyBmZXJpZW5Sb3cgKyBzb25kZXJ0ZXJtUm93ICsKICAgICAgICAgICAgICAg ICc8L3RoZWFkPicgKwogICAgICAgICAgICAgICAgJzx0Ym9keT4nICsgcm93c0h0bWwgKyAnPC90 Ym9keT4nICsKICAgICAgICAgICAgJzwvdGFibGU+PC9kaXY+JzsKCiAgICAgICAgX2hlYXRtYXBT dGlja3lUb3BBbndlbmRlbihlbCk7CgogICAgICAgIC8vIEhvdmVyLUtyZXV6OiBFeGNlbC1TdHls ZS1IaWdobGlnaHQgdm9uIFplaWxlICsgU3BhbHRlLiBFdmVudC0KICAgICAgICAvLyBEZWxlZ2F0 aW9uIGF1ZiBkZXIgVGFiZWxsZSwgbmljaHQgcHJvIFplbGxlLCBzb25zdCBmcmlzc3QgZXMKICAg ICAgICAvLyBhdWYgZGVuIEJlaG9lcmRlbi1QQ3MgV2VjaHNlbHplaXQuCiAgICAgICAgLy8gU3Bh bHRlbi1UcmFja2luZyB1ZWJlciBjZWxsSW5kZXggKG5hdGl2ZSBIVE1MVGFibGVDZWxsRWxlbWVu dC0KICAgICAgICAvLyBQcm9wZXJ0eTogUG9zaXRpb24gaW5uZXJoYWxiIGRlcyByb3cuY2VsbHMt Q29sbGVjdGlvbikuIERpZQogICAgICAgIC8vIE1vbmF0c3plaWxlICgxLiB0aGVhZC1Sb3cgbWl0 IGNvbHNwYW4pIHdpcmQgcGVyIEtsYXNzZW4tRmlsdGVyCiAgICAgICAgLy8gd2VnZ2VsYXNzZW4s IHdlaWwgaWhyZSBjZWxsSW5kZXgtV2VydGUgbWl0IGRlbiBhbmRlcmVuIFJvd3MKICAgICAgICAv LyBuaWNodCB1ZWJlcmVpbnN0aW1tZW4uCiAgICAgICAgdmFyIHRibCA9IGVsLnF1ZXJ5U2VsZWN0 b3IoJy50ZWFtLWhtLXRhYmVsbGUnKTsKICAgICAgICBpZiAodGJsKSB7CiAgICAgICAgICAgIHZh ciBha3R1ZWxsZVplbGxlID0gbnVsbDsKICAgICAgICAgICAgZnVuY3Rpb24gY2xlYXJDcm9zcygp IHsKICAgICAgICAgICAgICAgIGlmICghYWt0dWVsbGVaZWxsZSkgcmV0dXJuOwogICAgICAgICAg ICAgICAgdGJsLnF1ZXJ5U2VsZWN0b3JBbGwoJy5obS1jcm9zcycpLmZvckVhY2goZnVuY3Rpb24o YykgeyBjLmNsYXNzTGlzdC5yZW1vdmUoJ2htLWNyb3NzJyk7IH0pOwogICAgICAgICAgICAgICAg YWt0dWVsbGVaZWxsZSA9IG51bGw7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZnVuY3Rpb24g YXBwbHlDcm9zcyhjZWxsKSB7CiAgICAgICAgICAgICAgICB2YXIgcm93ID0gY2VsbC5wYXJlbnRF bGVtZW50OwogICAgICAgICAgICAgICAgaWYgKCFyb3cpIHJldHVybjsKICAgICAgICAgICAgICAg IHZhciBjb2wgPSBjZWxsLmNlbGxJbmRleDsKICAgICAgICAgICAgICAgIEFycmF5LnByb3RvdHlw ZS5mb3JFYWNoLmNhbGwocm93LmNlbGxzLCBmdW5jdGlvbihjKSB7IGMuY2xhc3NMaXN0LmFkZCgn aG0tY3Jvc3MnKTsgfSk7CiAgICAgICAgICAgICAgICB0YmwucXVlcnlTZWxlY3RvckFsbCgndHIn KS5mb3JFYWNoKGZ1bmN0aW9uKHRyKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKHRyID09PSBy b3cpIHJldHVybjsKICAgICAgICAgICAgICAgICAgICBpZiAodHIucXVlcnlTZWxlY3RvcignLnRl YW0taG0tbW9uYXQtY2VsbCcpKSByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgdmFyIGMgPSB0 ci5jZWxsc1tjb2xdOwogICAgICAgICAgICAgICAgICAgIGlmIChjKSBjLmNsYXNzTGlzdC5hZGQo J2htLWNyb3NzJyk7CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgfQogICAgICAgICAg ICB0YmwuYWRkRXZlbnRMaXN0ZW5lcignbW91c2VvdmVyJywgZnVuY3Rpb24oZSkgewogICAgICAg ICAgICAgICAgdmFyIGNlbGwgPSBlLnRhcmdldC5jbG9zZXN0KCd0ZCwgdGgnKTsKICAgICAgICAg ICAgICAgIGlmICghY2VsbCB8fCBjZWxsID09PSBha3R1ZWxsZVplbGxlKSByZXR1cm47CiAgICAg ICAgICAgICAgICBpZiAoY2VsbC5jbGFzc0xpc3QuY29udGFpbnMoJ3RlYW0taG0tbW9uYXQtY2Vs bCcpKSByZXR1cm47CiAgICAgICAgICAgICAgICBjbGVhckNyb3NzKCk7CiAgICAgICAgICAgICAg ICBha3R1ZWxsZVplbGxlID0gY2VsbDsKICAgICAgICAgICAgICAgIGFwcGx5Q3Jvc3MoY2VsbCk7 CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICB0YmwuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vs ZWF2ZScsIGNsZWFyQ3Jvc3MpOwogICAgICAgIH0KCiAgICAgICAgLy8gS2xpY2stSGFuZGxlcjog RXhwYW5kL0NvbGxhcHNlIHBybyBUZWFtLiBSZWFnaWVydCBhdWYgS2xpY2tzCiAgICAgICAgLy8g dWViZXJhbGwgaW4gZGVyIFRlYW0tWmVpbGUgKE5hbWUsIFRhZ2VzemVsbGVuKS4gRGV0YWlsLVBl cnNvbmVuLQogICAgICAgIC8vIFplaWxlbiBoYWJlbiBrZWluIGRhdGEtdGVhbS1pZCwgc2luZCBk YWR1cmNoIGF1dG9tYXRpc2NoIGF1c2dlbm9tbWVuLgogICAgICAgIC8vIFNvbmRlcnRlcm1pbi1N YXJrZXItWmVsbGVuIHN0b3BwZW4gZGVuIEJ1YmJsZSAocy4gbmFlY2hzdGVyIEJsb2NrKS4KICAg ICAgICAvLyBTdGF0dCBkaWUgZ2FuemUgVGFiZWxsZSBuZXUgenUgcmVuZGVybiwgcGF0Y2hlbiB3 aXIgZGllIERldGFpbC0KICAgICAgICAvLyBaZWlsZW4gZGlyZWt0IGFtIERPTSAoaW5zZXJ0QWRq YWNlbnRIVE1MIC8gcmVtb3ZlKS4KICAgICAgICBlbC5xdWVyeVNlbGVjdG9yQWxsKCcudGVhbS1o bS1yb3dbZGF0YS10ZWFtLWlkXScpLmZvckVhY2goZnVuY3Rpb24ocm93KSB7CiAgICAgICAgICAg IHJvdy5zdHlsZS5jdXJzb3IgPSAncG9pbnRlcic7CiAgICAgICAgICAgIHJvdy5hZGRFdmVudExp c3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyIHRpZCA9IHJv dy5nZXRBdHRyaWJ1dGUoJ2RhdGEtdGVhbS1pZCcpOwogICAgICAgICAgICAgICAgdmFyIG51biA9 ICFfc3RhdFRlYW1FeHBhbmRlZFt0aWRdOwogICAgICAgICAgICAgICAgX3N0YXRUZWFtRXhwYW5k ZWRbdGlkXSA9IG51bjsKICAgICAgICAgICAgICAgIHZhciB0b2dnbGUgPSByb3cucXVlcnlTZWxl Y3RvcignLnRlYW0taG0tdG9nZ2xlJyk7CiAgICAgICAgICAgICAgICBpZiAodG9nZ2xlKSB0b2dn bGUudGV4dENvbnRlbnQgPSBudW4gPyAn4pa+JyA6ICfilrgnOwogICAgICAgICAgICAgICAgaWYg KG51bikgewogICAgICAgICAgICAgICAgICAgIHZhciBhbGxlVGVhbXMgPSBfdGVhbURhdGVuR2Vm aWx0ZXJ0KCk7CiAgICAgICAgICAgICAgICAgICAgdmFyIHRlYW0gPSBudWxsOwogICAgICAgICAg ICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYWxsZVRlYW1zLmxlbmd0aDsgaSsrKSB7CiAg ICAgICAgICAgICAgICAgICAgICAgIGlmIChTdHJpbmcoYWxsZVRlYW1zW2ldLmlkKSA9PT0gU3Ry aW5nKHRpZCkpIHsgdGVhbSA9IGFsbGVUZWFtc1tpXTsgYnJlYWs7IH0KICAgICAgICAgICAgICAg ICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKHRlYW0gJiYgX2hlYXRtYXBLb250ZXh0KSB7 CiAgICAgICAgICAgICAgICAgICAgICAgIHJvdy5pbnNlcnRBZGphY2VudEhUTUwoJ2FmdGVyZW5k JywgX2J1aWxkVGVhbURldGFpbFJvd3ModGVhbSwgX2hlYXRtYXBLb250ZXh0KSk7CiAgICAgICAg ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAg ICB2YXIgbnggPSByb3cubmV4dEVsZW1lbnRTaWJsaW5nOwogICAgICAgICAgICAgICAgICAgIHdo aWxlIChueCAmJiBueC5nZXRBdHRyaWJ1dGUoJ2RhdGEtdGVhbS1kZXRhaWwtZm9yJykgPT09IHRp ZCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgd2VnID0gbng7CiAgICAgICAgICAgICAg ICAgICAgICAgIG54ID0gbngubmV4dEVsZW1lbnRTaWJsaW5nOwogICAgICAgICAgICAgICAgICAg ICAgICB3ZWcucmVtb3ZlKCk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg fQogICAgICAgICAgICB9KTsKICAgICAgICB9KTsKICAgICAgICBfaGVhdG1hcFNvbmRlcnRlcm1p bmVLbGlja2JhcihlbCk7CiAgICB9CgogICAgLy8gRWlnZW5zdGFlbmRpZ2UgSGVhdG1hcC1SZW5k ZXItRnVua3Rpb24gZnVlciBkaWUgTmViZW53YWNoZW4gKEJPL0FSL0ZSKS4KICAgIC8vIFBybyBU YWcgcHJ1ZWZlbiB3aXIgZnVlciBGL1MvTiwgb2IgZWluIFRlYW0tTWl0Z2xpZWQgaW4gZGVyIGFr dGl2ZW4KICAgIC8vIEZ1ZWhydW5nIChUb3AtMiBuYWNoIEZ1bmt0aW9ucy1SYW5nK1Bvc2l0aW9u KSBzdGVodCDigJQgZGFzIHNpbmQgZGllCiAgICAvLyBzY2hyYWZmaWVydGVuIDEuLzIuIFZJMy1E R0wgYXVzIGRlciBQbGFudW5nLiBIYXVwdHdhY2hlbiBLYW1lbi9IYWdlbgogICAgLy8gc3RlbGxl biBkYXMgbm9ybWFsZXJ3ZWlzZTsgZ3J1biBhdWYgZWluZXIgTmViZW53YWNoZSBtYXJraWVydCBl aW5lCiAgICAvLyBTb25kZXItS29uc3RlbGxhdGlvbiAoTHVlY2tlIGF1ZiBkZXIgSGF1cHR3YWNo ZSwgQ3Jvc3MtV2FjaGVuLUVpbnNhdHopLgogICAgZnVuY3Rpb24gX3JlbmRlck5lYmVud2FjaGVu SGVhdG1hcChlbCwgZGF0YSwgdGFnZSwgdGFnTWV0YSkgewogICAgICAgIHZhciBuZWJlblN0YW5k b3J0ZSA9IFsnQk8nLCAnQVInLCAnRlInXTsKICAgICAgICB2YXIgbmViZW5UZWFtcyA9IGRhdGEu ZmlsdGVyKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgcmV0dXJuIG5lYmVuU3RhbmRvcnRlLmlu ZGV4T2YodC5zdGFuZG9ydCkgPj0gMDsKICAgICAgICB9KTsKICAgICAgICBpZiAoIW5lYmVuVGVh bXMubGVuZ3RoKSB7CiAgICAgICAgICAgIGVsLmlubmVySFRNTCA9ICc8cCBjbGFzcz0idGV4dC1t dXRlZCIgc3R5bGU9InBhZGRpbmc6MjRweDt0ZXh0LWFsaWduOmNlbnRlciI+S2VpbmUgTmViZW53 YWNoZW4tTWlrcm90ZWFtcyBpbiBkZXIgYWt0dWVsbGVuIEF1c3dhaGwuPC9wPic7CiAgICAgICAg ICAgIHJldHVybjsKICAgICAgICB9CiAgICAgICAgdmFyIGtvcGYgPSBfaGVhdG1hcEtvcGZUZWls KHRhZ2UsIHRhZ01ldGEpOwogICAgICAgIHZhciBzcGFsdGVuS2xhc3NlbiA9IGtvcGYuc3BhbHRl bktsYXNzZW47CiAgICAgICAgdmFyIG1ha2VTcGFjZXIgICAgID0ga29wZi5tYWtlU3BhY2VyOwoK ICAgICAgICAvLyBGdWVocnVuZ3MtTWFwIHBybyBUYWcgYXVmYmF1ZW4gKENhY2hlIOKAlCB2ZXJt ZWlkZXQgTyhUYWdlKlRlYW1zKjQ1KSkuCiAgICAgICAgdmFyIGZ1ZWhydW5nUHJvVGFnID0ge307 CiAgICAgICAgdGFnZS5mb3JFYWNoKGZ1bmN0aW9uKGQpIHsKICAgICAgICAgICAgZnVlaHJ1bmdQ cm9UYWdbZF0gPSB7CiAgICAgICAgICAgICAgICBGOiBha3RpdmVGdWVocnVuZyhkLCAnRicpLm1h cChmdW5jdGlvbihwKSB7IHJldHVybiBwLmlkOyB9KSwKICAgICAgICAgICAgICAgIFM6IGFrdGl2 ZUZ1ZWhydW5nKGQsICdTJykubWFwKGZ1bmN0aW9uKHApIHsgcmV0dXJuIHAuaWQ7IH0pLAogICAg ICAgICAgICAgICAgTjogYWt0aXZlRnVlaHJ1bmcoZCwgJ04nKS5tYXAoZnVuY3Rpb24ocCkgeyBy ZXR1cm4gcC5pZDsgfSkKICAgICAgICAgICAgfTsKICAgICAgICB9KTsKICAgICAgICB2YXIgcm93 c0h0bWwgPSBuZWJlblRlYW1zLm1hcChmdW5jdGlvbih0LCBpZHgpIHsKICAgICAgICAgICAgdmFy IHRlYW1JZHMgPSB7fTsKICAgICAgICAgICAgKHQucGVyc29uSWRzIHx8IFtdKS5mb3JFYWNoKGZ1 bmN0aW9uKHBpZCkgeyB0ZWFtSWRzW3BpZF0gPSB0cnVlOyB9KTsKICAgICAgICAgICAgdmFyIGNl bGxzID0gdGFnZS5tYXAoZnVuY3Rpb24oZCkgewogICAgICAgICAgICAgICAgdmFyIGNscyA9IFsn dGVhbS1obS1jZWxsJywgJ3RlYW0taG0tbnctY2VsbCddLmNvbmNhdChzcGFsdGVuS2xhc3Nlbihk KSk7CiAgICAgICAgICAgICAgICB2YXIgZnVlaCA9IGZ1ZWhydW5nUHJvVGFnW2RdOwogICAgICAg ICAgICAgICAgdmFyIGFrdGl2ID0gWydGJywnUycsJ04nXS5zb21lKGZ1bmN0aW9uKHNjaCkgewog ICAgICAgICAgICAgICAgICAgIHJldHVybiAoZnVlaFtzY2hdIHx8IFtdKS5zb21lKGZ1bmN0aW9u KHBpZCkgeyByZXR1cm4gdGVhbUlkc1twaWRdOyB9KTsKICAgICAgICAgICAgICAgIH0pOwogICAg ICAgICAgICAgICAgaWYgKGFrdGl2KSBjbHMucHVzaCgndGVhbS1nJyk7CiAgICAgICAgICAgICAg ICByZXR1cm4gJzx0ZCBjbGFzcz0iJyArIGNscy5qb2luKCcgJykgKyAnIj48L3RkPic7CiAgICAg ICAgICAgIH0pLmpvaW4oJycpOwogICAgICAgICAgICB2YXIgc3BhY2VyID0gJyc7CiAgICAgICAg ICAgIGlmIChpZHggPiAwICYmIG5lYmVuVGVhbXNbaWR4IC0gMV0uc3RhbmRvcnQgIT09IHQuc3Rh bmRvcnQpIHsKICAgICAgICAgICAgICAgIHNwYWNlciA9IG1ha2VTcGFjZXIoJ3RlYW0taG0tc3Bh Y2VyLXN0YW5kb3J0Jyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHNwYWNlciAr CiAgICAgICAgICAgICAgICAnPHRyIGNsYXNzPSJ0ZWFtLWhtLXJvdyB0ZWFtLWhtLW53LXJvdyI+ JyArCiAgICAgICAgICAgICAgICAnPHRoIGNsYXNzPSJ0ZWFtLWhtLW5hbWUiPicgKyBlc2NhcGVI VE1MKHQubmFtZSkgKyAnPC90aD4nICsKICAgICAgICAgICAgICAgIGNlbGxzICsKICAgICAgICAg ICAgICAgICc8L3RyPic7CiAgICAgICAgfSkuam9pbignJyk7CgogICAgICAgIGVsLmlubmVySFRN TCA9ICc8ZGl2IGNsYXNzPSJ0YWJlbGxlLXNjcm9sbCB0ZWFtLWhtLXNjcm9sbCI+JyArCiAgICAg ICAgICAgICc8dGFibGUgY2xhc3M9InRlYW0taG0tdGFiZWxsZSI+JyArCiAgICAgICAgICAgICAg ICAnPHRoZWFkPicgKwogICAgICAgICAgICAgICAgICAgICc8dHI+PHRoIGNsYXNzPSJ0ZWFtLWht LW5hbWUiPjwvdGg+JyArIGtvcGYubW9uYXRIZWFkICsgJzwvdHI+JyArCiAgICAgICAgICAgICAg ICAgICAgJzx0cj48dGggY2xhc3M9InRlYW0taG0tbmFtZSI+PC90aD4nICsga29wZi50YWdIZWFk ICAgKyAnPC90cj4nICsKICAgICAgICAgICAgICAgICAgICAnPHRyPjx0aCBjbGFzcz0idGVhbS1o bS1uYW1lIj48L3RoPicgKyBrb3BmLnd0SGVhZCAgICArICc8L3RyPicgKwogICAgICAgICAgICAg ICAgICAgIGtvcGYuZmVpZXJ0YWdSb3cgKyBrb3BmLmZlcmllblJvdyArIGtvcGYuc29uZGVydGVy bVJvdyArCiAgICAgICAgICAgICAgICAnPC90aGVhZD4nICsKICAgICAgICAgICAgICAgICc8dGJv ZHk+JyArIHJvd3NIdG1sICsgJzwvdGJvZHk+JyArCiAgICAgICAgICAgICc8L3RhYmxlPjwvZGl2 Pic7CgogICAgICAgIF9oZWF0bWFwU3RpY2t5VG9wQW53ZW5kZW4oZWwpOwogICAgICAgIF9oZWF0 bWFwU29uZGVydGVybWluZUtsaWNrYmFyKGVsKTsKICAgIH0KCiAgICBmdW5jdGlvbiBfemVpZ2VT b25kZXJ0ZXJtaW5lRGV0YWlsKGlkc0NzdikgewogICAgICAgIHZhciBpZHMgPSAoaWRzQ3N2IHx8 ICcnKS5zcGxpdCgnLCcpLmZpbHRlcihCb29sZWFuKTsKICAgICAgICB2YXIgYWxsZSA9IChaLmFk bWluICYmIFouYWRtaW4uc29uZGVydGVybWluZSkgfHwgW107CiAgICAgICAgdmFyIHRyZWZmZXIg PSBhbGxlLmZpbHRlcihmdW5jdGlvbihzKSB7IHJldHVybiBpZHMuaW5kZXhPZihzLmlkKSA+PSAw OyB9KTsKICAgICAgICBpZiAoIXRyZWZmZXIubGVuZ3RoKSByZXR1cm47CiAgICAgICAgdmFyIGh0 bWwgPSAnPGRpdiBjbGFzcz0ic29uZGVydGVybWluLWRldGFpbCI+JyArCiAgICAgICAgICAgIHRy ZWZmZXIubWFwKGZ1bmN0aW9uKHMpIHsKICAgICAgICAgICAgICAgIHZhciBkID0gcy5kYXR1bSAr IChzLmRhdHVtQmlzICYmIHMuZGF0dW1CaXMgIT09IHMuZGF0dW0gPyAnIOKAkyAnICsgcy5kYXR1 bUJpcyA6ICcnKTsKICAgICAgICAgICAgICAgIHZhciB0aXRlbCA9IHMudGl0ZWwgfHwgJyc7CiAg ICAgICAgICAgICAgICB2YXIgdHh0ID0gcy50ZXh0IHx8ICcnOwogICAgICAgICAgICAgICAgdmFy IHR5cCA9IHMudHlwIHx8ICdoaW53ZWlzJzsKICAgICAgICAgICAgICAgIHJldHVybiAnPGRpdiBj bGFzcz0ic29uZGVydGVybWluLWVpbnRyYWcgc29uZGVydGVybWluLScgKyBlc2NhcGVBdHRyKHR5 cCkgKyAnIj4nICsKICAgICAgICAgICAgICAgICAgICAnPGRpdiBjbGFzcz0ic29uZGVydGVybWlu LWtvcGYiPjxzdHJvbmc+JyArIGVzY2FwZUhUTUwoZCkgKyAnPC9zdHJvbmc+JyArICh0aXRlbCA/ ICcg4oCUICcgKyBlc2NhcGVIVE1MKHRpdGVsKSA6ICcnKSArICc8L2Rpdj4nICsKICAgICAgICAg ICAgICAgICAgICAnPGRpdiBjbGFzcz0ic29uZGVydGVybWluLXRleHQiPicgKyBlc2NhcGVIVE1M KHR4dCkgKyAnPC9kaXY+JyArCiAgICAgICAgICAgICAgICAnPC9kaXY+JzsKICAgICAgICAgICAg fSkuam9pbignJykgKwogICAgICAgICc8L2Rpdj4nOwogICAgICAgIHZhciBmdXNzID0gJzxidXR0 b24gY2xhc3M9ImJ0biBidG4tcHJpbWFlciIgaWQ9InN0LWRldGFpbC1zY2hsaWVzc2VuIj5WZXJz dGFuZGVuPC9idXR0b24+JzsKICAgICAgICBtb2RhbFplaWdlbignU29uZGVydGVybWluKGUpJywg aHRtbCwgZnVzcywgbnVsbCk7CiAgICAgICAgdmFyIGJ0biA9IGRvY3VtZW50LmdldEVsZW1lbnRC eUlkKCdzdC1kZXRhaWwtc2NobGllc3NlbicpOwogICAgICAgIGlmIChidG4pIGJ0bi5hZGRFdmVu dExpc3RlbmVyKCdjbGljaycsIG1vZGFsU2NobGllc3Nlbik7CiAgICB9CgogICAgLy8gQmFsa2Vu ZGlhZ3JhbW06IGdlc3RhcGVsdGVyIDEwMCUtQmFsa2VuIHBybyBUZWFtIG1pdCBUYWdlcy1BbnRl aWxlbgogICAgLy8gKHJvdCAvIG5ldXRyYWw9MSBkYSAvIGdyw7xuPTIrIC8gZ29sZD1hbGxlKS4g UG9vbC1UZWFtcyAoMSBQZXJzb24pCiAgICAvLyB3ZXJkZW4gYXVzZ2VmaWx0ZXJ0IOKAlCBzaWUg emVpZ2VuIGtlaW5lbiBzaW5udm9sbGVuIFRhZ2VzLUFudGVpbC4KICAgIGZ1bmN0aW9uIF9yZW5k ZXJUZWFtQmFsa2VuKGVsLCBkYXRhKSB7CiAgICAgICAgdmFyIHNvcnRGZWxkID0gX3N0YXRUZWFt QmFsa2VuU29ydDsKICAgICAgICB2YXIgcm93cyA9IGRhdGEuZmlsdGVyKGZ1bmN0aW9uKHQpIHsg cmV0dXJuICFfaXN0UG9vbFRlYW0odCk7IH0pOwogICAgICAgIGZ1bmN0aW9uIHNvcnRGbihhLCBi KSB7CiAgICAgICAgICAgIGlmIChzb3J0RmVsZCA9PT0gJ2x1ZWNrZW4nKSAgICAgIHJldHVybiAo Yi5zdGF0LnJvdCAgIC8gYi5zdGF0LnRvdGFsKSAtIChhLnN0YXQucm90ICAgLyBhLnN0YXQudG90 YWwpOwogICAgICAgICAgICBpZiAoc29ydEZlbGQgPT09ICd2b2xsc3RhZW5kaWcnKSByZXR1cm4g KGIuc3RhdC5nb2xkICAvIGIuc3RhdC50b3RhbCkgLSAoYS5zdGF0LmdvbGQgIC8gYS5zdGF0LnRv dGFsKTsKICAgICAgICAgICAgaWYgKHNvcnRGZWxkID09PSAnYWJkZWNrdW5nJykgICAgcmV0dXJu ICgoYi5zdGF0LnRvdGFsIC0gYi5zdGF0LnJvdCkgLyBiLnN0YXQudG90YWwpIC0gKChhLnN0YXQu dG90YWwgLSBhLnN0YXQucm90KSAvIGEuc3RhdC50b3RhbCk7CiAgICAgICAgICAgIHJldHVybiAw OyAgIC8vICdyZWloZW5mb2xnZScgPSBhZG1pbi5qc29uLU9yZGVyIGJlaWJlaGFsdGVuCiAgICAg ICAgfQogICAgICAgIHJvd3MgPSByb3dzLnNsaWNlKCkuc29ydChzb3J0Rm4pOwoKICAgICAgICAv LyBUcmVubmVyIEhhdXB0d2FjaGVuIDwtPiBSZXN0IG51ciBiZWkgRGVmYXVsdC1Tb3J0aWVydW5n IHNpbm52b2xsCiAgICAgICAgdmFyIHRyZW5uZXJBbiA9IChzb3J0RmVsZCA9PT0gJ3JlaWhlbmZv bGdlJyk7CgogICAgICAgIHZhciBodG1sID0gcm93cy5tYXAoZnVuY3Rpb24odCwgaWR4KSB7CiAg ICAgICAgICAgIHZhciBzID0gdC5zdGF0OwogICAgICAgICAgICB2YXIgdG90YWwgPSBzLnRvdGFs IHx8IDE7CiAgICAgICAgICAgIGZ1bmN0aW9uIHBjdChuKSB7IHJldHVybiAobiAvIHRvdGFsKSAq IDEwMDsgfQogICAgICAgICAgICBmdW5jdGlvbiBzZWcoa2xhc3NlLCB3ZXJ0LCBsYWJlbCkgewog ICAgICAgICAgICAgICAgaWYgKCF3ZXJ0KSByZXR1cm4gJyc7CiAgICAgICAgICAgICAgICB2YXIg YiA9IHBjdCh3ZXJ0KTsKICAgICAgICAgICAgICAgIC8vIFphaGwgbnVyIGVpbnJlbmRlcm4sIHdl bm4gZGFzIFNlZ21lbnQgYXVjaCB3aXJrbGljaCBicmVpdAogICAgICAgICAgICAgICAgLy8gZ2Vu dWcgaXN0LiBtaW4td2lkdGg6NHB4IGluIGRlciBDU1Mgc29yZ3QgZnVlciBlaW5lbgogICAgICAg ICAgICAgICAgLy8gZXJrZW5uYmFyZW4gRmFyYmJhbGtlbiBiaXMgaGluYWIgenUgfjAuNyAlOyBk aWUgWmFobAogICAgICAgICAgICAgICAgLy8gYnJhdWNodCBhYmVyIHBybyBaaWZmZXIgfjYgcHgg KGJlaSA5IHB4IEZvbnQpLCBhbHNvIGplCiAgICAgICAgICAgICAgICAvLyBuYWNoIFppZmZlci1B bnphaGwgZWluIGFuZGVyZXIgTWluZGVzdC1Qcm96ZW50d2VydC4KICAgICAgICAgICAgICAgIC8v IEFubmFobWUgdWViZXIgZGllIEJhci1XcmFwLUJyZWl0ZTogfjQwMCBweC4gMSBweCDiiYggMC4y NSAlLgogICAgICAgICAgICAgICAgLy8gICAxIFppZmZlciAoNiBweCk6ICA+PSAxLjUgJQogICAg ICAgICAgICAgICAgLy8gICAyIFppZmZlcm4gKDEyIHB4KTogPj0gMyAlCiAgICAgICAgICAgICAg ICAvLyAgIDMgWmlmZmVybiAoMTggcHgpOiA+PSA1ICUKICAgICAgICAgICAgICAgIC8vIERpZXNl IFNjaHdlbGxlbiBzY2huZWlkZW4gZGVuIFRvb2x0aXAgbmljaHQg4oCUIGRlciBIb3ZlcgogICAg ICAgICAgICAgICAgLy8gemVpZ3QgZGVuIGdlbmF1ZW4gV2VydCBhdWNoIGJlaSB3aW56aWdlbiBT ZWdtZW50ZW4uCiAgICAgICAgICAgICAgICB2YXIgemlmZmVybiA9IFN0cmluZyh3ZXJ0KS5sZW5n dGg7CiAgICAgICAgICAgICAgICB2YXIgbWluUGN0ID0gemlmZmVybiA9PT0gMSA/IDEuNSA6ICh6 aWZmZXJuID09PSAyID8gMyA6IDUpOwogICAgICAgICAgICAgICAgcmV0dXJuICc8ZGl2IGNsYXNz PSJ0ZWFtLWJhbGtlbi1zZWcgJyArIGtsYXNzZSArICciIHN0eWxlPSJ3aWR0aDonICsgYiArICcl IiB0aXRsZT0iJyArIGVzY2FwZUF0dHIobGFiZWwgKyAnOiAnICsgd2VydCArICcgVGFnZSAoJyAr IE1hdGgucm91bmQoYikgKyAnICUpJykgKyAnIj4nICsgKGIgPj0gbWluUGN0ID8gd2VydCA6ICcn KSArICc8L2Rpdj4nOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHZhciBhYmRlY2t1bmcgPSB0 b3RhbCA/IE1hdGgucm91bmQoKCh0b3RhbCAtIHMucm90KSAvIHRvdGFsKSAqIDEwMCkgOiAwOwog ICAgICAgICAgICB2YXIgc3RhbmRvcnRXZWNoc2VsID0gdHJlbm5lckFuICYmIGlkeCA+IDAgJiYg cm93c1tpZHggLSAxXS5zdGFuZG9ydCAhPT0gdC5zdGFuZG9ydDsKICAgICAgICAgICAgdmFyIGhh dXB0VHJlbm5lciAgICA9IHRyZW5uZXJBbiAmJiBpZHggPiAwICYmIHJvd3NbaWR4IC0gMV0uc3Rh bmRvcnQgPT09ICdIQScgJiYgdC5zdGFuZG9ydCA9PT0gJ0JPJzsKICAgICAgICAgICAgdmFyIHRy ZW5uZXJDbHMgPSBoYXVwdFRyZW5uZXIgICA/ICcgdGVhbS1iYWxrZW4tdHJlbm5lci1oYXVwdCcK ICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBzdGFuZG9ydFdlY2hzZWwgPyAnIHRlYW0tYmFs a2VuLXRyZW5uZXItc3RhbmRvcnQnCiAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJyc7CiAg ICAgICAgICAgIHJldHVybiAnPGRpdiBjbGFzcz0idGVhbS1iYWxrZW4temVpbGUnICsgdHJlbm5l ckNscyArICciPicgKwogICAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9InRlYW0tYmFsa2VuLW5h bWUiPicgKyBlc2NhcGVIVE1MKHQubmFtZSkgKyAnPC9kaXY+JyArCiAgICAgICAgICAgICAgICAn PGRpdiBjbGFzcz0idGVhbS1iYWxrZW4tYmFyLXdyYXAiPicgKwogICAgICAgICAgICAgICAgICAg IHNlZygndGVhbS1yJywgICAgcy5yb3QsICAgICAnTMO8Y2tlIChhbGxlIHdvbGx0ZW4gZnJlaSkn KSArCiAgICAgICAgICAgICAgICAgICAgc2VnKCd0ZWFtLWdyYXUnLCBzLmdyYXUsICAgICdsZWdp dGltIGFid2VzZW5kIChVcmxhdWIvS3JhbmsvTGVocmdhbmcpJykgKwogICAgICAgICAgICAgICAg ICAgIHNlZygndGVhbS1uJywgICAgcy5uZXV0cmFsLCAnMSBkYScpICsKICAgICAgICAgICAgICAg ICAgICBzZWcoJ3RlYW0tZycsICAgIHMuZ3J1ZW4sICAgJzIrIGRhJykgKwogICAgICAgICAgICAg ICAgICAgIHNlZygndGVhbS1nb2xkJywgcy5nb2xkLCAgICAnYWxsZSBkYScpICsKICAgICAgICAg ICAgICAgICc8L2Rpdj4nICsKICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJ0ZWFtLWJhbGtl bi10b3RhbCIgdGl0bGU9IkFiZGVja3VuZyBtaW5kZXN0ZW5zIDEgUGVyc29uIj4nICsgYWJkZWNr dW5nICsgJyAlPC9kaXY+JyArCiAgICAgICAgICAgICAgICAnPC9kaXY+JzsKICAgICAgICB9KS5q b2luKCcnKTsKCiAgICAgICAgZWwuaW5uZXJIVE1MID0gJzxkaXYgY2xhc3M9InRlYW0tYmFsa2Vu LXdyYXAiPicgKyBodG1sICsgJzwvZGl2Pic7CiAgICB9CgogICAgZnVuY3Rpb24gX3JlbmRlclRl YW1CYWxrZW5Tb3J0SG9va3MoKSB7CiAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgn LnN0YXRzLXRlYW0tc29ydC1ncnVwcGUgLnN0YXRzLWthdC1idG4nKS5mb3JFYWNoKGZ1bmN0aW9u KGIpIHsKICAgICAgICAgICAgaWYgKGIuZGF0YXNldC5mZXJ0aWcpIHJldHVybjsKICAgICAgICAg ICAgYi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAg ICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7ICAgLy8gbmljaHQgZGVuIFBhbmVsLVRvZ2dsZSBhdXNs b2VzZW4KICAgICAgICAgICAgICAgIF9zdGF0VGVhbUJhbGtlblNvcnQgPSBiLmdldEF0dHJpYnV0 ZSgnZGF0YS10ZWFtLXNvcnQnKSB8fCAncmVpaGVuZm9sZ2UnOwogICAgICAgICAgICAgICAgZG9j dW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLnN0YXRzLXRlYW0tc29ydC1ncnVwcGUgLnN0YXRzLWth dC1idG4nKS5mb3JFYWNoKGZ1bmN0aW9uKHgpIHsgeC5jbGFzc0xpc3QucmVtb3ZlKCdha3Rpdicp OyB9KTsKICAgICAgICAgICAgICAgIGIuY2xhc3NMaXN0LmFkZCgnYWt0aXYnKTsKICAgICAgICAg ICAgICAgIC8vIE51ciBkaWUgQmFsa2VuIG5ldSB6ZWljaG5lbiDigJQgZGllIEhlYXRtYXAgaXN0 IHZvbiBkaWVzZXIKICAgICAgICAgICAgICAgIC8vIFNvcnRpZXJ1bmcgdW5hYmhhZW5naWcgKHNw YXJ0IGRlbiBGdWxsLVJlcmVuZGVyIGRlciBIZWF0bWFwKS4KICAgICAgICAgICAgICAgIHZhciBi YWxrZW5FbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzdGF0cy10ZWFtLWJhbGtlbicpOwog ICAgICAgICAgICAgICAgaWYgKGJhbGtlbkVsKSBfcmVuZGVyVGVhbUJhbGtlbihiYWxrZW5FbCwg X3RlYW1EYXRlbkdlZmlsdGVydCgpKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIGIuZGF0 YXNldC5mZXJ0aWcgPSAnMSc7CiAgICAgICAgfSk7CiAgICAgICAgLy8gUGFuZWwtVG9nZ2xlIHVl YmVybmltbXQgcGFuZWxUb2dnbGVIb29rcygpIGdlbmVyaXNjaCDigJQgVGFnZXMtCiAgICAgICAg Ly8gQW50ZWlsZSBwcm8gVGVhbSBpc3Qgc2VpdCAyMDI2LTA1LTI1IGVpbiBlaWdlbmVzIFRvcC1M ZXZlbC1QYW5lbC4KICAgIH0KCiAgICAvLyBNb2R1bC1TdGF0ZSBEZXRhaWwtVGFiZWxsZW4tU29y dGllcnVuZy4gQmVpbSBLbGljayBhdWYgZWluZW4gSGVhZGVyCiAgICAvLyB3ZWNoc2VsdCBkYXMg U29ydGllci1GZWxkOyBnbGVpY2hlciBLbGljayB3aWVkZXIgZHJlaHQgZGllIFJpY2h0dW5nIHVt LgogICAgdmFyIF9zdGF0RGV0YWlsU29ydCA9IHsgZmVsZDogJ25hbWUnLCBhc2M6IHRydWUgfTsK CiAgICBmdW5jdGlvbiBkZXRhaWxUYWJlbGxlUmVuZGVybihzdGF0cykgewogICAgICAgIC8vIFN0 YW5kb3J0L0dydXBwZW4tTG9va3VwIHBlciBwZXJzb25JZCAoU2VydmVyIGxpZWZlcnQga2VpbiBv ZS1GZWxkKS4KICAgICAgICB2YXIgcGVyc29uTWFwID0ge307CiAgICAgICAgKFoucGxhbnVuZyAm JiBaLnBsYW51bmcucGVyc29uZW4gfHwgW10pLmZvckVhY2goZnVuY3Rpb24ocCkgeyBwZXJzb25N YXBbcC5pZF0gPSBwOyB9KTsKICAgICAgICBmdW5jdGlvbiBvZU9mKHMpICAgICAgIHsgcmV0dXJu IChwZXJzb25NYXBbcy5wZXJzb25JZF0gfHwge30pLm9lIHx8ICcnOyB9CiAgICAgICAgZnVuY3Rp b24gb2VHcnVwcGVPZihzKSB7IHJldHVybiBvZU9mKHMpICsgKHMuZ3J1cHBlID8gJy0nICsgcy5n cnVwcGUgOiAnJyk7IH0KICAgICAgICBmdW5jdGlvbiBzb3J0VmFsKHMsIGZlbGQpIHsKICAgICAg ICAgICAgaWYgKGZlbGQgPT09ICduYW1lJykgICAgICByZXR1cm4gX3N0YXRBbnplaWdlTmFtZShz KS50b0xvd2VyQ2FzZSgpOwogICAgICAgICAgICBpZiAoZmVsZCA9PT0gJ29lJykgICAgICAgIHJl dHVybiBvZU9mKHMpLnRvTG93ZXJDYXNlKCk7CiAgICAgICAgICAgIGlmIChmZWxkID09PSAnb2VH cnVwcGUnKSAgcmV0dXJuIG9lR3J1cHBlT2YocykudG9Mb3dlckNhc2UoKTsKICAgICAgICAgICAg aWYgKGZlbGQgPT09ICdncnVwcGUnKSAgICByZXR1cm4gKHMuZ3J1cHBlIHx8ICcnKS50b0xvd2Vy Q2FzZSgpOwogICAgICAgICAgICAvLyBudW1lcmlzY2hlIEZlbGRlciBkaXJla3QgYXVzIGRlbSBT dGF0cy1PYmpla3QKICAgICAgICAgICAgcmV0dXJuIHNbZmVsZF0gfHwgMDsKICAgICAgICB9Cgog ICAgICAgIHZhciBmZWxkID0gX3N0YXREZXRhaWxTb3J0LmZlbGQ7CiAgICAgICAgdmFyIGFzYyAg PSBfc3RhdERldGFpbFNvcnQuYXNjOwogICAgICAgIHZhciBzb3J0aWVydCA9IHN0YXRzLnNsaWNl KCkuc29ydChmdW5jdGlvbihhLCBiKSB7CiAgICAgICAgICAgIHZhciB2YSA9IHNvcnRWYWwoYSwg ZmVsZCksIHZiID0gc29ydFZhbChiLCBmZWxkKTsKICAgICAgICAgICAgaWYgKHZhIDwgdmIpIHJl dHVybiBhc2MgPyAtMSA6IDE7CiAgICAgICAgICAgIGlmICh2YSA+IHZiKSByZXR1cm4gYXNjID8g IDEgOiAtMTsKICAgICAgICAgICAgLy8gVGllYnJlYWtlciBpbW1lciBOYW1lIChsZXNlZmx1c3Mp LgogICAgICAgICAgICB2YXIgbmEgPSBfc3RhdEFuemVpZ2VOYW1lKGEpLnRvTG93ZXJDYXNlKCks IG5iID0gX3N0YXRBbnplaWdlTmFtZShiKS50b0xvd2VyQ2FzZSgpOwogICAgICAgICAgICByZXR1 cm4gbmEgPCBuYiA/IC0xIDogbmEgPiBuYiA/IDEgOiAwOwogICAgICAgIH0pOwoKICAgICAgICB2 YXIgaHRtbCA9ICcnOwogICAgICAgIHNvcnRpZXJ0LmZvckVhY2goZnVuY3Rpb24ocykgewogICAg ICAgICAgICBodG1sICs9ICc8dHI+JyArCiAgICAgICAgICAgICAgICAnPHRkPjxzdHJvbmc+JyAr IGVzY2FwZUhUTUwoX3N0YXRBbnplaWdlTmFtZShzKSkgKyAnPC9zdHJvbmc+PC90ZD4nICsKICAg ICAgICAgICAgICAgICc8dGQ+JyArIGVzY2FwZUhUTUwob2VPZihzKSkgKyAnPC90ZD4nICsKICAg ICAgICAgICAgICAgICc8dGQ+JyArIGVzY2FwZUhUTUwob2VHcnVwcGVPZihzKSkgKyAnPC90ZD4n ICsKICAgICAgICAgICAgICAgICc8dGQ+JyArIGVzY2FwZUhUTUwocy5ncnVwcGUpICsgJzwvdGQ+ JyArCiAgICAgICAgICAgICAgICAnPHRkIGNsYXNzPSJ6YWhsIj4nICsgcy5nZXNhbXQgKyAnPC90 ZD4nICsKICAgICAgICAgICAgICAgICc8dGQgY2xhc3M9InphaGwiIHN0eWxlPSJjb2xvcjp2YXIo LS1mYXJiZS1mcnVlaCkiPicgKyBzLmZydWVoICsgJzwvdGQ+JyArCiAgICAgICAgICAgICAgICAn PHRkIGNsYXNzPSJ6YWhsIiBzdHlsZT0iY29sb3I6dmFyKC0tZmFyYmUtc3BhZXQpIj4nICsgcy5z cGFldCArICc8L3RkPicgKwogICAgICAgICAgICAgICAgJzx0ZCBjbGFzcz0iemFobCIgc3R5bGU9 ImNvbG9yOnZhcigtLWZhcmJlLW5hY2h0KSI+JyArIHMubmFjaHQgKyAnPC90ZD4nICsKICAgICAg ICAgICAgICAgICc8dGQgY2xhc3M9InphaGwiIHN0eWxlPSJjb2xvcjp2YXIoLS1zdGF0LXNkKSI+ JyArIChzLnNvbmRlcmRpZW5zdCB8fCAwKSArICc8L3RkPicgKwogICAgICAgICAgICAgICAgJzx0 ZCBjbGFzcz0iemFobCI+JyArIChzLmRnbCB8fCAwKSArICc8L3RkPicgKwogICAgICAgICAgICAg ICAgJzx0ZCBjbGFzcz0iemFobCI+JyArIChzLndkZiB8fCAwKSArICc8L3RkPicgKwogICAgICAg ICAgICAgICAgJzx0ZCBjbGFzcz0iemFobCI+JyArIChzLmZicCB8fCAwKSArICc8L3RkPicgKwog ICAgICAgICAgICAgICAgJzx0ZCBjbGFzcz0iemFobCI+JyArIHMud29jaGVuZW5kVGFnZSArICc8 L3RkPicgKwogICAgICAgICAgICAgICAgJzx0ZCBjbGFzcz0iemFobCI+JyArIHMuZmVpZXJ0YWdU YWdlICsgJzwvdGQ+JyArCiAgICAgICAgICAgICAgICAnPHRkIGNsYXNzPSJ6YWhsIiBzdHlsZT0i Y29sb3I6dmFyKC0tZmFyYmUtZmVobGVyKSI+JyArIHMua3JhbmsgKyAnPC90ZD4nICsKICAgICAg ICAgICAgICAgICc8dGQgY2xhc3M9InphaGwiPicgKyBzLnVybGF1YiArICc8L3RkPicgKwogICAg ICAgICAgICAgICAgJzx0ZCBjbGFzcz0iemFobCI+JyArIHMubGVocmdhbmcgKyAnPC90ZD4nICsK ICAgICAgICAgICAgICAgICc8dGQgY2xhc3M9InphaGwiPicgKyAocy5hekF1c2dsZWljaCB8fCAw KSArICc8L3RkPicgKwogICAgICAgICAgICAnPC90cj4nOwogICAgICAgIH0pOwogICAgICAgIGRv Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdzdGF0cy10Ym9keScpLmlubmVySFRNTCA9IGh0bWw7Cgog ICAgICAgIC8vIFNvcnRpZXItUGZlaWxlICsgS2xpY2stSGFuZGxlciBpbSBIZWFkZXIgKGlkZW1w b3RlbnQpLgogICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJyNzdGF0cy11ZWJlcnNp Y2h0IHRoZWFkIHRoW2RhdGEtc29ydF0nKS5mb3JFYWNoKGZ1bmN0aW9uKHRoKSB7CiAgICAgICAg ICAgIHZhciBmID0gdGguZ2V0QXR0cmlidXRlKCdkYXRhLXNvcnQnKTsKICAgICAgICAgICAgLy8g UGZlaWwgYWt0dWFsaXNpZXJlbgogICAgICAgICAgICB2YXIgYWx0ZXJQZmVpbCA9IHRoLnF1ZXJ5 U2VsZWN0b3IoJy5zdGF0cy1kZXRhaWwtcGZlaWwnKTsKICAgICAgICAgICAgaWYgKGFsdGVyUGZl aWwpIGFsdGVyUGZlaWwucmVtb3ZlKCk7CiAgICAgICAgICAgIGlmIChmID09PSBmZWxkKSB7CiAg ICAgICAgICAgICAgICB2YXIgc3AgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7CiAg ICAgICAgICAgICAgICBzcC5jbGFzc05hbWUgPSAnc3RhdHMtZGV0YWlsLXBmZWlsJzsKICAgICAg ICAgICAgICAgIHNwLnRleHRDb250ZW50ID0gYXNjID8gJyDihpEnIDogJyDihpMnOwogICAgICAg ICAgICAgICAgdGguYXBwZW5kQ2hpbGQoc3ApOwogICAgICAgICAgICB9CiAgICAgICAgICAgIC8v IEtsaWNrLUhhbmRsZXIgbnVyIGVpbm1hbCBhbmhhZW5nZW4KICAgICAgICAgICAgaWYgKHRoLmRh dGFzZXQuZmVydGlnKSByZXR1cm47CiAgICAgICAgICAgIHRoLnN0eWxlLmN1cnNvciA9ICdwb2lu dGVyJzsKICAgICAgICAgICAgdGguYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbigp IHsKICAgICAgICAgICAgICAgIGlmIChfc3RhdERldGFpbFNvcnQuZmVsZCA9PT0gZikgX3N0YXRE ZXRhaWxTb3J0LmFzYyA9ICFfc3RhdERldGFpbFNvcnQuYXNjOwogICAgICAgICAgICAgICAgZWxz ZSB7IF9zdGF0RGV0YWlsU29ydC5mZWxkID0gZjsgX3N0YXREZXRhaWxTb3J0LmFzYyA9IHRydWU7 IH0KICAgICAgICAgICAgICAgIGlmIChaLnN0YXRpc3RpaykgZGV0YWlsVGFiZWxsZVJlbmRlcm4o c3RhdEZpbHRlcm4oWi5zdGF0aXN0aWspKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIHRo LmRhdGFzZXQuZmVydGlnID0gJzEnOwogICAgICAgIH0pOwogICAgfQoKCmZ1bmN0aW9uIHN0YXRG aWx0ZXJTZXR6ZW4od2VydCkgeyBzdGF0RmlsdGVyID0gd2VydDsgfQoKZXhwb3J0IHsKICAgIHN0 YXRpc3Rpa0ZpbHRlckZ1ZWxsZW4sIHN0YXRpc3Rpa0xhZGVuLCBzdGF0RmlsdGVybiwgc3RhdGlz dGlrUmVuZGVybiwKICAgIHN0YXRGaWx0ZXJTZXR6ZW4sCiAgICBwcm9zYVJlbmRlcm4sIHByb3Nh QW5yZWRlLCBwcm9zYVRleHQsCiAgICBzdGF0SW5mb1plaWdlbiwga3BpS2FydGUsCiAgICBiYWxr ZW5SZW5kZXJuLAogICAgZmFpcm5lc3NSZW5kZXJuLAogICAgZGV0YWlsVGFiZWxsZVJlbmRlcm4s CiAgICAvLyBCYXVrYXN0ZW4gKyBMYXlvdXQtUmFzdGVyIChhZG1pbl9zdGF0aXN0aWsuanMga29u c3VtaWVydCBkaWVzZSk6CiAgICBzdGF0aXN0aWtUaWxlc0FsbGUsIEJSRUlURV9TUEFOCn07Cg== ### FILE: js/statistik_charts.js | 18511 Ly8gPT09IHN0YXRpc3Rpa19jaGFydHMuanMgPT09Ci8vIE5hdGl2ZSBTVkctRGlhZ3JhbW1lIGZ1 ZXIgZGVuIFN0YXRpc3Rpay1CdWlsZGVyIOKAlCBrZWluZSBleHRlcm5lIExpYnJhcnkuCi8vIEVp bmdhYmUgaXN0IGRhcyBkaWFncmFtbS1uZXV0cmFsZSBFcmdlYm5pcyBhdXMgc3RhdGlzdGlrX2Vu Z2luZS5hdXN3ZXJ0ZW4oKS4KLy8gRmFyYmVuIGxhdWZlbiB1ZWJlciBDU1MtVmFyaWFibGVuIChE YXJrLU1vZGUgYXV0b21hdGlzY2gpLiBKZWRlIEZ1bmt0aW9uCi8vIGxpZWZlcnQgZWluZW4gSFRN TC1TdHJpbmcgKFNWRyBiencuIGZ1ZXIgVGFiZWxsZS9LUEkgbm9ybWFsZXMgTWFya3VwKS4KLy8K Ly8gVHlwZW4gKGFuIFBsb3RseS1TdGFuZGFyZHMgYW5nZWxlaG50KTogYmFsa2VuLCBiYWxrZW5H ZXN0YXBlbHQsIGJhbGtlbkgsCi8vIGxpbmllLCBmbGFlY2hlLCBrcmVpcywgZG9udXQsIHNjYXR0 ZXIsIGhlYXRtYXAsIHRhYmVsbGUsIGtwaS4KCmltcG9ydCB7IGVzY2FwZUhUTUwsIGVzY2FwZUF0 dHIgfSBmcm9tICcuL2NvcmVfdXRpbC5qcyc7CgovLyBTZXJpZW4tRmFyYnBhbGV0dGUgKENTUy1W YXJpYWJsZW4sIGRpZSBpbSBQcm9qZWt0IGRlZmluaWVydCBzaW5kKS4KdmFyIFBBTEVUVEUgPSBb CiAgICAndmFyKC0tZmFyYmUtc3BhZXQpJywgJ3ZhcigtLWZhcmJlLWZydWVoKScsICd2YXIoLS1m YXJiZS1uYWNodCknLCAndmFyKC0tc3RhdC1zZCknLAogICAgJ3ZhcigtLXN0YXQtc2Ftc3RhZykn LCAndmFyKC0tc3RhdC1zb25udGFnKScsICd2YXIoLS1zdGF0LWZlaWVydGFnKScsICd2YXIoLS1z dGF0LXVybGF1YiknLAogICAgJ3ZhcigtLXN0YXQta3VyKScsICd2YXIoLS1zdGF0LWZvcnRiaWxk dW5nLTIpJywgJ3ZhcigtLXN0YXQtZm9ydGJpbGR1bmctMyknLCAndmFyKC0tc3RhdC1rb21wbGV0 dGUtd2UpJwpdOwpmdW5jdGlvbiBfZmFyYmUoaSkgeyByZXR1cm4gUEFMRVRURVtpICUgUEFMRVRU RS5sZW5ndGhdOyB9Cgp2YXIgRElBR1JBTU1fVFlQRU4gPSBbCiAgICB7IGtleTogJ2JhbGtlbics ICAgICAgICAgIGxhYmVsOiAnU8OkdWxlbiAoZ3J1cHBpZXJ0KScgfSwKICAgIHsga2V5OiAnYmFs a2VuR2VzdGFwZWx0JywgbGFiZWw6ICdTw6R1bGVuIChnZXN0YXBlbHQpJyB9LAogICAgeyBrZXk6 ICdiYWxrZW5IJywgICAgICAgICBsYWJlbDogJ0JhbGtlbiAoaG9yaXpvbnRhbC9SYW5raW5nKScg fSwKICAgIHsga2V5OiAnbGluaWUnLCAgICAgICAgICAgbGFiZWw6ICdMaW5pZSAoVmVybGF1Zikn IH0sCiAgICB7IGtleTogJ2ZsYWVjaGUnLCAgICAgICAgIGxhYmVsOiAnRmzDpGNoZScgfSwKICAg IHsga2V5OiAna3JlaXMnLCAgICAgICAgICAgbGFiZWw6ICdLcmVpcycgfSwKICAgIHsga2V5OiAn ZG9udXQnLCAgICAgICAgICAgbGFiZWw6ICdEb251dCcgfSwKICAgIHsga2V5OiAnc2NhdHRlcics ICAgICAgICAgbGFiZWw6ICdTdHJldWRpYWdyYW1tIChLb3JyZWxhdGlvbiknIH0sCiAgICB7IGtl eTogJ2hlYXRtYXAnLCAgICAgICAgIGxhYmVsOiAnSGVhdG1hcCAoTWF0cml4KScgfSwKICAgIHsg a2V5OiAndGFiZWxsZScsICAgICAgICAgbGFiZWw6ICdQaXZvdC1UYWJlbGxlJyB9LAogICAgeyBr ZXk6ICdrcGknLCAgICAgICAgICAgICBsYWJlbDogJ0tlbm56YWhsIChLUEkpJyB9Cl07CmV4cG9y dCBmdW5jdGlvbiBkaWFncmFtbVR5cGVuKCkgeyByZXR1cm4gRElBR1JBTU1fVFlQRU4uc2xpY2Uo KTsgfQoKLy8gSGlsZmVuIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKZnVuY3Rpb24gX251bSh2KSB7CiAgICBpZiAodiA9PSBu dWxsKSByZXR1cm4gJzAnOwogICAgaWYgKE1hdGgucm91bmQodikgPT09IHYpIHJldHVybiBTdHJp bmcodik7CiAgICByZXR1cm4gKE1hdGgucm91bmQodiAqIDEwKSAvIDEwKS50b1N0cmluZygpLnJl cGxhY2UoJy4nLCAnLCcpOwp9CmZ1bmN0aW9uIF9uaWNlTWF4KG1heCkgewogICAgaWYgKG1heCA8 PSAwKSByZXR1cm4gMTsKICAgIHZhciBwb3QgPSBNYXRoLnBvdygxMCwgTWF0aC5mbG9vcihNYXRo LmxvZyhtYXgpIC8gTWF0aC5MTjEwKSk7CiAgICB2YXIgbiA9IG1heCAvIHBvdDsKICAgIHZhciBz dGVwID0gbiA8PSAxID8gMSA6IG4gPD0gMiA/IDIgOiBuIDw9IDUgPyA1IDogMTA7CiAgICByZXR1 cm4gc3RlcCAqIHBvdDsKfQpmdW5jdGlvbiBfdGlja3MobWF4LCBuKSB7CiAgICB2YXIgb3V0ID0g W107CiAgICBmb3IgKHZhciBpID0gMDsgaSA8PSBuOyBpKyspIG91dC5wdXNoKE1hdGgucm91bmQo bWF4IC8gbiAqIGkgKiAxMDApIC8gMTAwKTsKICAgIHJldHVybiBvdXQ7Cn0KZnVuY3Rpb24gX3N2 Zyh3LCBoLCBpbm5lcikgewogICAgcmV0dXJuICc8c3ZnIGNsYXNzPSJzdGF0LXN2ZyIgdmlld0Jv eD0iMCAwICcgKyB3ICsgJyAnICsgaCArICciIHdpZHRoPSIxMDAlIiAnICsKICAgICAgICAncHJl c2VydmVBc3BlY3RSYXRpbz0ieE1pbllNaW4gbWVldCIgcm9sZT0iaW1nIiBzdHlsZT0ibWF4LXdp ZHRoOjEwMCU7aGVpZ2h0OmF1dG87ZGlzcGxheTpibG9jayI+JyArIGlubmVyICsgJzwvc3ZnPic7 Cn0KZnVuY3Rpb24gX2xlZ2VuZGUoc2VyaWVuKSB7CiAgICBpZiAoIXNlcmllbiB8fCBzZXJpZW4u bGVuZ3RoIDw9IDEpIHJldHVybiAnJzsKICAgIHJldHVybiAnPGRpdiBjbGFzcz0ic3RhdC1sZWdl bmRlIj4nICsgc2VyaWVuLm1hcChmdW5jdGlvbihzLCBpKSB7CiAgICAgICAgcmV0dXJuICc8c3Bh biBjbGFzcz0ic3RhdC1sZWctaXRlbSI+PHNwYW4gY2xhc3M9InN0YXQtbGVnLWJveCIgc3R5bGU9 ImJhY2tncm91bmQ6JyArIF9mYXJiZShpKSArICciPjwvc3Bhbj4nICsgZXNjYXBlSFRNTChzLm5h bWUgfHwgJ+KAlCcpICsgJzwvc3Bhbj4nOwogICAgfSkuam9pbignJykgKyAnPC9kaXY+JzsKfQpm dW5jdGlvbiBfbGVlcigpIHsKICAgIHJldHVybiAnPGRpdiBjbGFzcz0iYWRtaW4tZW1wdHkiPjxk aXYgY2xhc3M9ImFkbWluLWVtcHR5LXRleHQiPktlaW5lIERhdGVuIGbDvHIgZGllc2UgQXVzd2Fo bC48L2Rpdj48L2Rpdj4nOwp9CgovLyBEaXNwYXRjaGVyIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpleHBvcnQgZnVuY3Rpb24gZGlh Z3JhbW1SZW5kZXJuKHR5cCwgZXJnLCBzcGVjKSB7CiAgICBpZiAoIWVyZyB8fCBlcmcuaXN0TGVl cikgcmV0dXJuIF9sZWVyKCk7CiAgICBzd2l0Y2ggKHR5cCkgewogICAgICAgIGNhc2UgJ2JhbGtl bkdlc3RhcGVsdCc6IHJldHVybiBfYmFsa2VuKGVyZywgdHJ1ZSk7CiAgICAgICAgY2FzZSAnYmFs a2VuSCc6ICAgICAgICAgcmV0dXJuIF9iYWxrZW5IKGVyZyk7CiAgICAgICAgY2FzZSAnbGluaWUn OiAgICAgICAgICAgcmV0dXJuIF9saW5pZShlcmcsIGZhbHNlKTsKICAgICAgICBjYXNlICdmbGFl Y2hlJzogICAgICAgICByZXR1cm4gX2xpbmllKGVyZywgdHJ1ZSk7CiAgICAgICAgY2FzZSAna3Jl aXMnOiAgICAgICAgICAgcmV0dXJuIF9rcmVpcyhlcmcsIGZhbHNlKTsKICAgICAgICBjYXNlICdk b251dCc6ICAgICAgICAgICByZXR1cm4gX2tyZWlzKGVyZywgdHJ1ZSk7CiAgICAgICAgY2FzZSAn c2NhdHRlcic6ICAgICAgICAgcmV0dXJuIF9zY2F0dGVyKGVyZyk7CiAgICAgICAgY2FzZSAnaGVh dG1hcCc6ICAgICAgICAgcmV0dXJuIF9oZWF0bWFwKGVyZyk7CiAgICAgICAgY2FzZSAndGFiZWxs ZSc6ICAgICAgICAgcmV0dXJuIF90YWJlbGxlKGVyZyk7CiAgICAgICAgY2FzZSAna3BpJzogICAg ICAgICAgICAgcmV0dXJuIF9rcGkoZXJnKTsKICAgICAgICBjYXNlICdiYWxrZW4nOgogICAgICAg IGRlZmF1bHQ6ICAgICAgICAgICAgICAgIHJldHVybiBfYmFsa2VuKGVyZywgZmFsc2UpOwogICAg fQp9CgovLyBWZXJ0aWthbGUgU2FldWxlbiAoZ3J1cHBpZXJ0IG9kZXIgZ2VzdGFwZWx0KSAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpmdW5jdGlvbiBfYmFsa2VuKGVyZywgZ2VzdGFwZWx0KSB7 CiAgICB2YXIgVyA9IDY4MCwgSCA9IDM2MCwgbWwgPSA0OCwgbXIgPSAxNiwgbXQgPSAxNiwgbWIg PSA3MDsKICAgIHZhciBrYXQgPSBlcmcua2F0ZWdvcmllbiwgc2VyaWVuID0gZXJnLnNlcmllbjsK ICAgIGlmICgha2F0Lmxlbmd0aCkgcmV0dXJuIF9sZWVyKCk7CiAgICB2YXIgcHcgPSBXIC0gbWwg LSBtciwgcGggPSBIIC0gbXQgLSBtYjsKICAgIHZhciBtYXggPSAwOwogICAga2F0LmZvckVhY2go ZnVuY3Rpb24oXywgaSkgewogICAgICAgIGlmIChnZXN0YXBlbHQpIHsgdmFyIHMgPSAwOyBzZXJp ZW4uZm9yRWFjaChmdW5jdGlvbihzZSl7IHMgKz0gc2Uud2VydGVbaV0gfHwgMDsgfSk7IG1heCA9 IE1hdGgubWF4KG1heCwgcyk7IH0KICAgICAgICBlbHNlIHNlcmllbi5mb3JFYWNoKGZ1bmN0aW9u KHNlKXsgbWF4ID0gTWF0aC5tYXgobWF4LCBzZS53ZXJ0ZVtpXSB8fCAwKTsgfSk7CiAgICB9KTsK ICAgIG1heCA9IF9uaWNlTWF4KG1heCk7CiAgICB2YXIgZ3JpZCA9ICcnOwogICAgX3RpY2tzKG1h eCwgNCkuZm9yRWFjaChmdW5jdGlvbih0KSB7CiAgICAgICAgdmFyIHkgPSBtdCArIHBoIC0gKHQg LyBtYXgpICogcGg7CiAgICAgICAgZ3JpZCArPSAnPGxpbmUgeDE9IicgKyBtbCArICciIHkxPSIn ICsgeSArICciIHgyPSInICsgKFcgLSBtcikgKyAnIiB5Mj0iJyArIHkgKyAnIiBzdHJva2U9InZh cigtLWJvcmRlci1saWdodCkiIHN0cm9rZS13aWR0aD0iMSIvPicgKwogICAgICAgICAgICAgICAg Jzx0ZXh0IHg9IicgKyAobWwgLSA2KSArICciIHk9IicgKyAoeSArIDQpICsgJyIgdGV4dC1hbmNo b3I9ImVuZCIgY2xhc3M9InN0YXQtYXgiPicgKyBfbnVtKHQpICsgJzwvdGV4dD4nOwogICAgfSk7 CiAgICB2YXIgZ3JwQiA9IHB3IC8ga2F0Lmxlbmd0aDsKICAgIHZhciBiYWxrZW4gPSAnJzsKICAg IGthdC5mb3JFYWNoKGZ1bmN0aW9uKGssIGkpIHsKICAgICAgICB2YXIgeDAgPSBtbCArIGdycEIg KiBpOwogICAgICAgIGlmIChnZXN0YXBlbHQpIHsKICAgICAgICAgICAgdmFyIGFjYyA9IDA7CiAg ICAgICAgICAgIHNlcmllbi5mb3JFYWNoKGZ1bmN0aW9uKHNlLCBzaSkgewogICAgICAgICAgICAg ICAgdmFyIHYgPSBzZS53ZXJ0ZVtpXSB8fCAwOyBpZiAodiA8PSAwKSByZXR1cm47CiAgICAgICAg ICAgICAgICB2YXIgYmggPSAodiAvIG1heCkgKiBwaDsKICAgICAgICAgICAgICAgIHZhciBidyA9 IGdycEIgKiAwLjYyLCBieCA9IHgwICsgKGdycEIgLSBidykgLyAyOwogICAgICAgICAgICAgICAg dmFyIGJ5ID0gbXQgKyBwaCAtIGFjYyAtIGJoOwogICAgICAgICAgICAgICAgYmFsa2VuICs9ICc8 cmVjdCB4PSInICsgYnggKyAnIiB5PSInICsgYnkgKyAnIiB3aWR0aD0iJyArIGJ3ICsgJyIgaGVp Z2h0PSInICsgYmggKyAnIiBmaWxsPSInICsgX2ZhcmJlKHNpKSArICciPjx0aXRsZT4nICsgZXNj YXBlQXR0cihzZS5uYW1lICsgJzogJyArIF9udW0odikpICsgJzwvdGl0bGU+PC9yZWN0Pic7CiAg ICAgICAgICAgICAgICBhY2MgKz0gYmg7CiAgICAgICAgICAgIH0pOwogICAgICAgIH0gZWxzZSB7 CiAgICAgICAgICAgIHZhciBidzIgPSAoZ3JwQiAqIDAuNykgLyBzZXJpZW4ubGVuZ3RoOwogICAg ICAgICAgICBzZXJpZW4uZm9yRWFjaChmdW5jdGlvbihzZSwgc2kpIHsKICAgICAgICAgICAgICAg IHZhciB2ID0gc2Uud2VydGVbaV0gfHwgMDsKICAgICAgICAgICAgICAgIHZhciBiaCA9ICh2IC8g bWF4KSAqIHBoOwogICAgICAgICAgICAgICAgdmFyIGJ4ID0geDAgKyBncnBCICogMC4xNSArIGJ3 MiAqIHNpOwogICAgICAgICAgICAgICAgYmFsa2VuICs9ICc8cmVjdCB4PSInICsgYnggKyAnIiB5 PSInICsgKG10ICsgcGggLSBiaCkgKyAnIiB3aWR0aD0iJyArIChidzIgKiAwLjkpICsgJyIgaGVp Z2h0PSInICsgYmggKyAnIiBmaWxsPSInICsgX2ZhcmJlKHNpKSArICciPjx0aXRsZT4nICsgZXNj YXBlQXR0cigoc2VyaWVuLmxlbmd0aCA+IDEgPyBzZS5uYW1lICsgJyDCtyAnIDogJycpICsgay5s YWJlbCArICc6ICcgKyBfbnVtKHYpKSArICc8L3RpdGxlPjwvcmVjdD4nOwogICAgICAgICAgICB9 KTsKICAgICAgICB9CiAgICAgICAgYmFsa2VuICs9IF94TGFiZWwoeDAgKyBncnBCIC8gMiwgbXQg KyBwaCwgay5sYWJlbCwga2F0Lmxlbmd0aCk7CiAgICB9KTsKICAgIHZhciBhY2hzZSA9ICc8bGlu ZSB4MT0iJyArIG1sICsgJyIgeTE9IicgKyAobXQgKyBwaCkgKyAnIiB4Mj0iJyArIChXIC0gbXIp ICsgJyIgeTI9IicgKyAobXQgKyBwaCkgKyAnIiBzdHJva2U9InZhcigtLXRleHQtbXV0ZWQpIiBz dHJva2Utd2lkdGg9IjEiLz4nOwogICAgcmV0dXJuIF9zdmcoVywgSCwgZ3JpZCArIGJhbGtlbiAr IGFjaHNlKSArIF9sZWdlbmRlKHNlcmllbik7Cn0KCmZ1bmN0aW9uIF94TGFiZWwoY3gsIHksIGxh YmVsLCBhbnphaGwpIHsKICAgIHZhciB0ID0gZXNjYXBlSFRNTChsYWJlbCk7CiAgICB2YXIgcm90 ID0gYW56YWhsID4gNjsKICAgIGlmIChyb3QpIHsKICAgICAgICByZXR1cm4gJzx0ZXh0IHg9Iicg KyBjeCArICciIHk9IicgKyAoeSArIDE0KSArICciIHRleHQtYW5jaG9yPSJlbmQiIGNsYXNzPSJz dGF0LWF4IiB0cmFuc2Zvcm09InJvdGF0ZSgtNDAgJyArIGN4ICsgJyAnICsgKHkgKyAxNCkgKyAn KSI+JyArIHQgKyAnPC90ZXh0Pic7CiAgICB9CiAgICByZXR1cm4gJzx0ZXh0IHg9IicgKyBjeCAr ICciIHk9IicgKyAoeSArIDE2KSArICciIHRleHQtYW5jaG9yPSJtaWRkbGUiIGNsYXNzPSJzdGF0 LWF4Ij4nICsgdCArICc8L3RleHQ+JzsKfQoKLy8gSG9yaXpvbnRhbGUgQmFsa2VuIChSYW5raW5n KSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpmdW5jdGlvbiBfYmFs a2VuSChlcmcpIHsKICAgIHZhciBrYXQgPSBlcmcua2F0ZWdvcmllbiwgc2VyaWVuID0gZXJnLnNl cmllbjsKICAgIGlmICgha2F0Lmxlbmd0aCkgcmV0dXJuIF9sZWVyKCk7CiAgICAvLyBCZWkgbWVo cmVyZW4gU2VyaWVuOiBTdW1tZSBqZSBLYXRlZ29yaWUgKFJhbmtpbmctQ2hhcmFrdGVyKS4KICAg IHZhciB3ZXJ0ZSA9IGthdC5tYXAoZnVuY3Rpb24oXywgaSkgeyB2YXIgcyA9IDA7IHNlcmllbi5m b3JFYWNoKGZ1bmN0aW9uKHNlKXsgcyArPSBzZS53ZXJ0ZVtpXSB8fCAwOyB9KTsgcmV0dXJuIHM7 IH0pOwogICAgdmFyIG1heCA9IF9uaWNlTWF4KE1hdGgubWF4LmFwcGx5KG51bGwsIHdlcnRlLmNv bmNhdChbMF0pKSk7CiAgICB2YXIgVyA9IDY4MCwgbWwgPSAxNTAsIG1yID0gNDgsIG10ID0gOCwg cm93SCA9IDI2LCBtYiA9IDg7CiAgICB2YXIgSCA9IG10ICsgbWIgKyBrYXQubGVuZ3RoICogcm93 SDsKICAgIHZhciBwdyA9IFcgLSBtbCAtIG1yOwogICAgdmFyIHJvd3MgPSAnJzsKICAgIGthdC5m b3JFYWNoKGZ1bmN0aW9uKGssIGkpIHsKICAgICAgICB2YXIgeSA9IG10ICsgaSAqIHJvd0g7CiAg ICAgICAgdmFyIHYgPSB3ZXJ0ZVtpXTsKICAgICAgICB2YXIgYncgPSBtYXggPyAodiAvIG1heCkg KiBwdyA6IDA7CiAgICAgICAgcm93cyArPSAnPHRleHQgeD0iJyArIChtbCAtIDgpICsgJyIgeT0i JyArICh5ICsgcm93SCAvIDIgKyA0KSArICciIHRleHQtYW5jaG9yPSJlbmQiIGNsYXNzPSJzdGF0 LWF4IHN0YXQtYXgtbmFtZSI+JyArIGVzY2FwZUhUTUwoay5sYWJlbCkgKyAnPC90ZXh0Pic7CiAg ICAgICAgcm93cyArPSAnPHJlY3QgeD0iJyArIG1sICsgJyIgeT0iJyArICh5ICsgMykgKyAnIiB3 aWR0aD0iJyArIGJ3ICsgJyIgaGVpZ2h0PSInICsgKHJvd0ggLSA4KSArICciIHJ4PSIyIiBmaWxs PSInICsgX2ZhcmJlKDApICsgJyI+PHRpdGxlPicgKyBlc2NhcGVBdHRyKGsubGFiZWwgKyAnOiAn ICsgX251bSh2KSkgKyAnPC90aXRsZT48L3JlY3Q+JzsKICAgICAgICByb3dzICs9ICc8dGV4dCB4 PSInICsgKG1sICsgYncgKyA1KSArICciIHk9IicgKyAoeSArIHJvd0ggLyAyICsgNCkgKyAnIiBj bGFzcz0ic3RhdC1heCI+JyArIF9udW0odikgKyAnPC90ZXh0Pic7CiAgICB9KTsKICAgIHJldHVy biBfc3ZnKFcsIEgsIHJvd3MpOwp9CgovLyBMaW5pZSAvIEZsYWVjaGUgLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpmdW5jdGlvbiBfbGluaWUo ZXJnLCBmbGFlY2hlKSB7CiAgICB2YXIgVyA9IDY4MCwgSCA9IDM2MCwgbWwgPSA0OCwgbXIgPSAx NiwgbXQgPSAxNiwgbWIgPSA3MDsKICAgIHZhciBrYXQgPSBlcmcua2F0ZWdvcmllbiwgc2VyaWVu ID0gZXJnLnNlcmllbjsKICAgIGlmIChrYXQubGVuZ3RoIDwgMikgcmV0dXJuIF9iYWxrZW4oZXJn LCBmYWxzZSk7CiAgICB2YXIgcHcgPSBXIC0gbWwgLSBtciwgcGggPSBIIC0gbXQgLSBtYjsKICAg IHZhciBtYXggPSAwOwogICAgc2VyaWVuLmZvckVhY2goZnVuY3Rpb24oc2UpeyBzZS53ZXJ0ZS5m b3JFYWNoKGZ1bmN0aW9uKHYpeyBtYXggPSBNYXRoLm1heChtYXgsIHYgfHwgMCk7IH0pOyB9KTsK ICAgIG1heCA9IF9uaWNlTWF4KG1heCk7CiAgICB2YXIgZ3JpZCA9ICcnOwogICAgX3RpY2tzKG1h eCwgNCkuZm9yRWFjaChmdW5jdGlvbih0KSB7CiAgICAgICAgdmFyIHkgPSBtdCArIHBoIC0gKHQg LyBtYXgpICogcGg7CiAgICAgICAgZ3JpZCArPSAnPGxpbmUgeDE9IicgKyBtbCArICciIHkxPSIn ICsgeSArICciIHgyPSInICsgKFcgLSBtcikgKyAnIiB5Mj0iJyArIHkgKyAnIiBzdHJva2U9InZh cigtLWJvcmRlci1saWdodCkiLz4nICsKICAgICAgICAgICAgICAgICc8dGV4dCB4PSInICsgKG1s IC0gNikgKyAnIiB5PSInICsgKHkgKyA0KSArICciIHRleHQtYW5jaG9yPSJlbmQiIGNsYXNzPSJz dGF0LWF4Ij4nICsgX251bSh0KSArICc8L3RleHQ+JzsKICAgIH0pOwogICAgdmFyIHN0ZXAgPSBr YXQubGVuZ3RoID4gMSA/IHB3IC8gKGthdC5sZW5ndGggLSAxKSA6IHB3OwogICAgdmFyIFggPSBm dW5jdGlvbihpKXsgcmV0dXJuIG1sICsgc3RlcCAqIGk7IH07CiAgICB2YXIgWSA9IGZ1bmN0aW9u KHYpeyByZXR1cm4gbXQgKyBwaCAtICh2IC8gbWF4KSAqIHBoOyB9OwogICAgdmFyIHBmYWRlID0g Jyc7CiAgICBzZXJpZW4uZm9yRWFjaChmdW5jdGlvbihzZSwgc2kpIHsKICAgICAgICB2YXIgcHRz ID0gc2Uud2VydGUubWFwKGZ1bmN0aW9uKHYsIGkpeyByZXR1cm4gWChpKSArICcsJyArIFkodiB8 fCAwKTsgfSk7CiAgICAgICAgaWYgKGZsYWVjaGUpIHsKICAgICAgICAgICAgcGZhZGUgKz0gJzxw b2x5Z29uIHBvaW50cz0iJyArIChYKDApICsgJywnICsgKG10ICsgcGgpICsgJyAnKSArIHB0cy5q b2luKCcgJykgKyAnICcgKyAoWChrYXQubGVuZ3RoIC0gMSkgKyAnLCcgKyAobXQgKyBwaCkpICsg JyIgZmlsbD0iJyArIF9mYXJiZShzaSkgKyAnIiBvcGFjaXR5PSIwLjE4Ii8+JzsKICAgICAgICB9 CiAgICAgICAgcGZhZGUgKz0gJzxwb2x5bGluZSBwb2ludHM9IicgKyBwdHMuam9pbignICcpICsg JyIgZmlsbD0ibm9uZSIgc3Ryb2tlPSInICsgX2ZhcmJlKHNpKSArICciIHN0cm9rZS13aWR0aD0i Mi41Ii8+JzsKICAgICAgICBzZS53ZXJ0ZS5mb3JFYWNoKGZ1bmN0aW9uKHYsIGkpIHsKICAgICAg ICAgICAgcGZhZGUgKz0gJzxjaXJjbGUgY3g9IicgKyBYKGkpICsgJyIgY3k9IicgKyBZKHYgfHwg MCkgKyAnIiByPSIzIiBmaWxsPSInICsgX2ZhcmJlKHNpKSArICciPjx0aXRsZT4nICsgZXNjYXBl QXR0cigoc2VyaWVuLmxlbmd0aCA+IDEgPyBzZS5uYW1lICsgJyDCtyAnIDogJycpICsga2F0W2ld LmxhYmVsICsgJzogJyArIF9udW0odikpICsgJzwvdGl0bGU+PC9jaXJjbGU+JzsKICAgICAgICB9 KTsKICAgIH0pOwogICAgdmFyIGxhYmVscyA9ICcnOwogICAgdmFyIGplZGVyID0gTWF0aC5jZWls KGthdC5sZW5ndGggLyAxMik7CiAgICBrYXQuZm9yRWFjaChmdW5jdGlvbihrLCBpKSB7IGlmIChp ICUgamVkZXIgPT09IDApIGxhYmVscyArPSBfeExhYmVsKFgoaSksIG10ICsgcGgsIGsubGFiZWws IGthdC5sZW5ndGgpOyB9KTsKICAgIHZhciBhY2hzZSA9ICc8bGluZSB4MT0iJyArIG1sICsgJyIg eTE9IicgKyAobXQgKyBwaCkgKyAnIiB4Mj0iJyArIChXIC0gbXIpICsgJyIgeTI9IicgKyAobXQg KyBwaCkgKyAnIiBzdHJva2U9InZhcigtLXRleHQtbXV0ZWQpIi8+JzsKICAgIHJldHVybiBfc3Zn KFcsIEgsIGdyaWQgKyBwZmFkZSArIGxhYmVscyArIGFjaHNlKSArIF9sZWdlbmRlKHNlcmllbik7 Cn0KCi8vIEtyZWlzIC8gRG9udXQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KCmZ1bmN0aW9uIF9rcmVpcyhlcmcsIGRvbnV0KSB7CiAgICB2 YXIga2F0ID0gZXJnLmthdGVnb3JpZW47CiAgICBpZiAoIWthdC5sZW5ndGgpIHJldHVybiBfbGVl cigpOwogICAgLy8gRXJzdGUgU2VyaWUgdmVyd2VuZGVuIChLcmVpcyBpc3QgZWluZGltZW5zaW9u YWwpLgogICAgdmFyIHdlcnRlID0ga2F0Lm1hcChmdW5jdGlvbihfLCBpKSB7IHZhciBzID0gMDsg ZXJnLnNlcmllbi5mb3JFYWNoKGZ1bmN0aW9uKHNlKXsgcyArPSBzZS53ZXJ0ZVtpXSB8fCAwOyB9 KTsgcmV0dXJuIHM7IH0pOwogICAgdmFyIHN1bW1lID0gd2VydGUucmVkdWNlKGZ1bmN0aW9uKGEs IGIpeyByZXR1cm4gYSArIGI7IH0sIDApOwogICAgaWYgKHN1bW1lIDw9IDApIHJldHVybiBfbGVl cigpOwogICAgdmFyIFcgPSA2ODAsIEggPSAzNDAsIGN4ID0gMTYwLCBjeSA9IDE3MCwgciA9IDEz MCwgcmkgPSBkb251dCA/IDY0IDogMDsKICAgIHZhciB3aW5rZWwgPSAtTWF0aC5QSSAvIDIsIHNl ZyA9ICcnOwogICAga2F0LmZvckVhY2goZnVuY3Rpb24oaywgaSkgewogICAgICAgIHZhciBhbnRl aWwgPSB3ZXJ0ZVtpXSAvIHN1bW1lOwogICAgICAgIGlmIChhbnRlaWwgPD0gMCkgcmV0dXJuOwog ICAgICAgIHZhciB3MiA9IHdpbmtlbCArIGFudGVpbCAqIDIgKiBNYXRoLlBJOwogICAgICAgIHNl ZyArPSBfa3JlaXNTZWcoY3gsIGN5LCByLCByaSwgd2lua2VsLCB3MiwgX2ZhcmJlKGkpLCBrLmxh YmVsICsgJzogJyArIF9udW0od2VydGVbaV0pICsgJyAoJyArIF9udW0oTWF0aC5yb3VuZChhbnRl aWwgKiAxMDAwKSAvIDEwKSArICclKScpOwogICAgICAgIHdpbmtlbCA9IHcyOwogICAgfSk7CiAg ICAvLyBMZWdlbmRlIHJlY2h0cyAobWl0IFdlcnRlbi9Qcm96ZW50KS4KICAgIHZhciBsZyA9ICcn OwogICAga2F0LmZvckVhY2goZnVuY3Rpb24oaywgaSkgewogICAgICAgIHZhciB5ID0gNDAgKyBp ICogMjI7CiAgICAgICAgaWYgKHkgPiBIIC0gMTIpIHJldHVybjsKICAgICAgICB2YXIgcHJveiA9 IF9udW0oTWF0aC5yb3VuZCh3ZXJ0ZVtpXSAvIHN1bW1lICogMTAwMCkgLyAxMCk7CiAgICAgICAg bGcgKz0gJzxyZWN0IHg9IjMzMCIgeT0iJyArICh5IC0gMTApICsgJyIgd2lkdGg9IjEyIiBoZWln aHQ9IjEyIiByeD0iMiIgZmlsbD0iJyArIF9mYXJiZShpKSArICciLz4nICsKICAgICAgICAgICAg ICAnPHRleHQgeD0iMzQ4IiB5PSInICsgeSArICciIGNsYXNzPSJzdGF0LWF4IHN0YXQtYXgtbGVn Ij4nICsgZXNjYXBlSFRNTChrLmxhYmVsKSArICcg4oCUICcgKyBfbnVtKHdlcnRlW2ldKSArICcg KCcgKyBwcm96ICsgJyUpPC90ZXh0Pic7CiAgICB9KTsKICAgIHZhciBtaXR0ZSA9IGRvbnV0ID8g Jzx0ZXh0IHg9IicgKyBjeCArICciIHk9IicgKyAoY3kgKyA1KSArICciIHRleHQtYW5jaG9yPSJt aWRkbGUiIGNsYXNzPSJzdGF0LWRvbnV0LW1pdHRlIj4nICsgX251bShzdW1tZSkgKyAnPC90ZXh0 PicgOiAnJzsKICAgIHJldHVybiBfc3ZnKFcsIEgsIHNlZyArIG1pdHRlICsgbGcpOwp9CgpmdW5j dGlvbiBfa3JlaXNTZWcoY3gsIGN5LCByLCByaSwgYTEsIGEyLCBmYXJiZSwgdGl0ZWwpIHsKICAg IHZhciBncm/DnyA9IChhMiAtIGExKSA+IE1hdGguUEkgPyAxIDogMDsKICAgIHZhciB4MSA9IGN4 ICsgciAqIE1hdGguY29zKGExKSwgeTEgPSBjeSArIHIgKiBNYXRoLnNpbihhMSk7CiAgICB2YXIg eDIgPSBjeCArIHIgKiBNYXRoLmNvcyhhMiksIHkyID0gY3kgKyByICogTWF0aC5zaW4oYTIpOwog ICAgaWYgKHJpID4gMCkgewogICAgICAgIHZhciB4aTEgPSBjeCArIHJpICogTWF0aC5jb3MoYTEp LCB5aTEgPSBjeSArIHJpICogTWF0aC5zaW4oYTEpOwogICAgICAgIHZhciB4aTIgPSBjeCArIHJp ICogTWF0aC5jb3MoYTIpLCB5aTIgPSBjeSArIHJpICogTWF0aC5zaW4oYTIpOwogICAgICAgIHJl dHVybiAnPHBhdGggZD0iTScgKyB4MSArICcgJyArIHkxICsgJyBBJyArIHIgKyAnICcgKyByICsg JyAwICcgKyBncm/DnyArICcgMSAnICsgeDIgKyAnICcgKyB5MiArCiAgICAgICAgICAgICAgICcg TCcgKyB4aTIgKyAnICcgKyB5aTIgKyAnIEEnICsgcmkgKyAnICcgKyByaSArICcgMCAnICsgZ3Jv w58gKyAnIDAgJyArIHhpMSArICcgJyArIHlpMSArICcgWiIgZmlsbD0iJyArIGZhcmJlICsgJyI+ PHRpdGxlPicgKyBlc2NhcGVBdHRyKHRpdGVsKSArICc8L3RpdGxlPjwvcGF0aD4nOwogICAgfQog ICAgcmV0dXJuICc8cGF0aCBkPSJNJyArIGN4ICsgJyAnICsgY3kgKyAnIEwnICsgeDEgKyAnICcg KyB5MSArICcgQScgKyByICsgJyAnICsgciArICcgMCAnICsgZ3Jvw58gKyAnIDEgJyArIHgyICsg JyAnICsgeTIgKyAnIFoiIGZpbGw9IicgKyBmYXJiZSArICciPjx0aXRsZT4nICsgZXNjYXBlQXR0 cih0aXRlbCkgKyAnPC90aXRsZT48L3BhdGg+JzsKfQoKLy8gU2NhdHRlciAtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKZnVuY3Rp b24gX3NjYXR0ZXIoZXJnKSB7CiAgICB2YXIgcCA9IGVyZy5wdW5rdGUgfHwgW107CiAgICBpZiAo IXAubGVuZ3RoKSByZXR1cm4gX2xlZXIoKTsKICAgIHZhciBXID0gNjgwLCBIID0gMzgwLCBtbCA9 IDUwLCBtciA9IDE2LCBtdCA9IDE2LCBtYiA9IDUwOwogICAgdmFyIHB3ID0gVyAtIG1sIC0gbXIs IHBoID0gSCAtIG10IC0gbWI7CiAgICB2YXIgbWF4WCA9IF9uaWNlTWF4KE1hdGgubWF4LmFwcGx5 KG51bGwsIHAubWFwKGZ1bmN0aW9uKGQpeyByZXR1cm4gZC54OyB9KS5jb25jYXQoWzBdKSkpOwog ICAgdmFyIG1heFkgPSBfbmljZU1heChNYXRoLm1heC5hcHBseShudWxsLCBwLm1hcChmdW5jdGlv bihkKXsgcmV0dXJuIGQueTsgfSkuY29uY2F0KFswXSkpKTsKICAgIHZhciBYID0gZnVuY3Rpb24o dil7IHJldHVybiBtbCArICh2IC8gbWF4WCkgKiBwdzsgfTsKICAgIHZhciBZID0gZnVuY3Rpb24o dil7IHJldHVybiBtdCArIHBoIC0gKHYgLyBtYXhZKSAqIHBoOyB9OwogICAgdmFyIGdyaWQgPSAn JzsKICAgIF90aWNrcyhtYXhZLCA0KS5mb3JFYWNoKGZ1bmN0aW9uKHQpIHsKICAgICAgICB2YXIg eSA9IFkodCk7CiAgICAgICAgZ3JpZCArPSAnPGxpbmUgeDE9IicgKyBtbCArICciIHkxPSInICsg eSArICciIHgyPSInICsgKFcgLSBtcikgKyAnIiB5Mj0iJyArIHkgKyAnIiBzdHJva2U9InZhcigt LWJvcmRlci1saWdodCkiLz4nICsKICAgICAgICAgICAgICAgICc8dGV4dCB4PSInICsgKG1sIC0g NikgKyAnIiB5PSInICsgKHkgKyA0KSArICciIHRleHQtYW5jaG9yPSJlbmQiIGNsYXNzPSJzdGF0 LWF4Ij4nICsgX251bSh0KSArICc8L3RleHQ+JzsKICAgIH0pOwogICAgX3RpY2tzKG1heFgsIDQp LmZvckVhY2goZnVuY3Rpb24odCkgewogICAgICAgIHZhciB4ID0gWCh0KTsKICAgICAgICBncmlk ICs9ICc8dGV4dCB4PSInICsgeCArICciIHk9IicgKyAobXQgKyBwaCArIDE2KSArICciIHRleHQt YW5jaG9yPSJtaWRkbGUiIGNsYXNzPSJzdGF0LWF4Ij4nICsgX251bSh0KSArICc8L3RleHQ+JzsK ICAgIH0pOwogICAgdmFyIHB1bmt0ZSA9IHAubWFwKGZ1bmN0aW9uKGQpIHsKICAgICAgICByZXR1 cm4gJzxjaXJjbGUgY3g9IicgKyBYKGQueCkgKyAnIiBjeT0iJyArIFkoZC55KSArICciIHI9IjUi IGZpbGw9IicgKyBfZmFyYmUoMCkgKyAnIiBvcGFjaXR5PSIwLjciPjx0aXRsZT4nICsgZXNjYXBl QXR0cihkLmxhYmVsICsgJzogJyArIGVyZy5hY2hzZVggKyAnPScgKyBfbnVtKGQueCkgKyAnLCAn ICsgZXJnLmFjaHNlWSArICc9JyArIF9udW0oZC55KSkgKyAnPC90aXRsZT48L2NpcmNsZT4nOwog ICAgfSkuam9pbignJyk7CiAgICB2YXIgYWNoc2VuID0gJzxsaW5lIHgxPSInICsgbWwgKyAnIiB5 MT0iJyArIChtdCArIHBoKSArICciIHgyPSInICsgKFcgLSBtcikgKyAnIiB5Mj0iJyArIChtdCAr IHBoKSArICciIHN0cm9rZT0idmFyKC0tdGV4dC1tdXRlZCkiLz4nICsKICAgICAgICAgICAgICAg ICAnPGxpbmUgeDE9IicgKyBtbCArICciIHkxPSInICsgbXQgKyAnIiB4Mj0iJyArIG1sICsgJyIg eTI9IicgKyAobXQgKyBwaCkgKyAnIiBzdHJva2U9InZhcigtLXRleHQtbXV0ZWQpIi8+JyArCiAg ICAgICAgICAgICAgICAgJzx0ZXh0IHg9IicgKyAobWwgKyBwdyAvIDIpICsgJyIgeT0iJyArIChI IC0gNikgKyAnIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBjbGFzcz0ic3RhdC1heC10aXRlbCI+JyAr IGVzY2FwZUhUTUwoZXJnLmFjaHNlWCB8fCAnJykgKyAnPC90ZXh0PicgKwogICAgICAgICAgICAg ICAgICc8dGV4dCB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNCAnICsgKG10ICsgcGggLyAyKSArICcp IHJvdGF0ZSgtOTApIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBjbGFzcz0ic3RhdC1heC10aXRlbCI+ JyArIGVzY2FwZUhUTUwoZXJnLmFjaHNlWSB8fCAnJykgKyAnPC90ZXh0Pic7CiAgICByZXR1cm4g X3N2ZyhXLCBILCBncmlkICsgYWNoc2VuICsgcHVua3RlKTsKfQoKLy8gSGVhdG1hcCAoRGltIFgg w5cgU2VyaWUtRGltKSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoK ZnVuY3Rpb24gX2hlYXRtYXAoZXJnKSB7CiAgICB2YXIga2F0ID0gZXJnLmthdGVnb3JpZW4sIHNl cmllbiA9IGVyZy5zZXJpZW47CiAgICBpZiAoIWthdC5sZW5ndGggfHwgIXNlcmllbi5sZW5ndGgp IHJldHVybiBfbGVlcigpOwogICAgdmFyIG1heCA9IDA7CiAgICBzZXJpZW4uZm9yRWFjaChmdW5j dGlvbihzZSl7IHNlLndlcnRlLmZvckVhY2goZnVuY3Rpb24odil7IG1heCA9IE1hdGgubWF4KG1h eCwgdiB8fCAwKTsgfSk7IH0pOwogICAgaWYgKG1heCA8PSAwKSByZXR1cm4gX2xlZXIoKTsKICAg IHZhciBtbCA9IDEyMCwgbXQgPSA5MCwgemVsbCA9IDM4LCBXID0gbWwgKyBrYXQubGVuZ3RoICog emVsbCArIDE2LCBIID0gbXQgKyBzZXJpZW4ubGVuZ3RoICogemVsbCArIDg7CiAgICB2YXIgaW5u ZXIgPSAnJzsKICAgIC8vIFNwYWx0ZW4tS29wZiAoS2F0ZWdvcmllbikg4oCUIHNjaHJhZWcuCiAg ICBrYXQuZm9yRWFjaChmdW5jdGlvbihrLCBpKSB7CiAgICAgICAgdmFyIHggPSBtbCArIGkgKiB6 ZWxsICsgemVsbCAvIDI7CiAgICAgICAgaW5uZXIgKz0gJzx0ZXh0IHg9IicgKyB4ICsgJyIgeT0i JyArIChtdCAtIDgpICsgJyIgdGV4dC1hbmNob3I9ImVuZCIgY2xhc3M9InN0YXQtYXgiIHRyYW5z Zm9ybT0icm90YXRlKC00NSAnICsgeCArICcgJyArIChtdCAtIDgpICsgJykiPicgKyBlc2NhcGVI VE1MKGsubGFiZWwpICsgJzwvdGV4dD4nOwogICAgfSk7CiAgICBzZXJpZW4uZm9yRWFjaChmdW5j dGlvbihzZSwgcikgewogICAgICAgIHZhciB5ID0gbXQgKyByICogemVsbDsKICAgICAgICBpbm5l ciArPSAnPHRleHQgeD0iJyArIChtbCAtIDgpICsgJyIgeT0iJyArICh5ICsgemVsbCAvIDIgKyA0 KSArICciIHRleHQtYW5jaG9yPSJlbmQiIGNsYXNzPSJzdGF0LWF4IHN0YXQtYXgtbmFtZSI+JyAr IGVzY2FwZUhUTUwoc2UubmFtZSB8fCAn4oCUJykgKyAnPC90ZXh0Pic7CiAgICAgICAgc2Uud2Vy dGUuZm9yRWFjaChmdW5jdGlvbih2LCBjKSB7CiAgICAgICAgICAgIHZhciB4ID0gbWwgKyBjICog emVsbDsKICAgICAgICAgICAgdmFyIHQgPSBtYXggPyAodiB8fCAwKSAvIG1heCA6IDA7CiAgICAg ICAgICAgIGlubmVyICs9ICc8cmVjdCB4PSInICsgeCArICciIHk9IicgKyB5ICsgJyIgd2lkdGg9 IicgKyAoemVsbCAtIDMpICsgJyIgaGVpZ2h0PSInICsgKHplbGwgLSAzKSArICciIHJ4PSIzIiBm aWxsPSJ2YXIoLS1iZy1wcmltYXJ5KSIgZmlsbC1vcGFjaXR5PSInICsgKDAuMTIgKyB0ICogMC44 NSkudG9GaXhlZCgzKSArICciPjx0aXRsZT4nICsgZXNjYXBlQXR0cigoc2UubmFtZSA/IHNlLm5h bWUgKyAnIMK3ICcgOiAnJykgKyBrYXRbY10ubGFiZWwgKyAnOiAnICsgX251bSh2KSkgKyAnPC90 aXRsZT48L3JlY3Q+JzsKICAgICAgICAgICAgaWYgKHYpIGlubmVyICs9ICc8dGV4dCB4PSInICsg KHggKyAoemVsbCAtIDMpIC8gMikgKyAnIiB5PSInICsgKHkgKyB6ZWxsIC8gMiArIDMpICsgJyIg dGV4dC1hbmNob3I9Im1pZGRsZSIgY2xhc3M9InN0YXQtaGVhdC13ZXJ0IiBmaWxsPSInICsgKHQg PiAwLjU1ID8gJyNmZmYnIDogJ3ZhcigtLXRleHQtaGVhZGluZyknKSArICciPicgKyBfbnVtKHYp ICsgJzwvdGV4dD4nOwogICAgICAgIH0pOwogICAgfSk7CiAgICByZXR1cm4gX3N2ZyhXLCBILCBp bm5lcik7Cn0KCi8vIFBpdm90LVRhYmVsbGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCmZ1bmN0aW9uIF90YWJlbGxlKGVyZykgewogICAg dmFyIGthdCA9IGVyZy5rYXRlZ29yaWVuLCBzZXJpZW4gPSBlcmcuc2VyaWVuOwogICAgaWYgKCFr YXQubGVuZ3RoKSByZXR1cm4gX2xlZXIoKTsKICAgIHZhciBtZWhyID0gZXJnLm1laHJzZXJpZzsK ICAgIHZhciBrb3BmID0gJzx0cj48dGg+JyArIGVzY2FwZUhUTUwoZXJnLmRpbVhMYWJlbCB8fCAn JykgKyAnPC90aD4nICsKICAgICAgICBzZXJpZW4ubWFwKGZ1bmN0aW9uKHMpeyByZXR1cm4gJzx0 aCBjbGFzcz0iemFobCI+JyArIGVzY2FwZUhUTUwobWVociA/IChzLm5hbWUgfHwgJ+KAlCcpIDog KGVyZy5rZW5uemFobExhYmVsIHx8ICdXZXJ0JykpICsgJzwvdGg+JzsgfSkuam9pbignJykgKwog ICAgICAgIChtZWhyID8gJzx0aCBjbGFzcz0iemFobCI+zqM8L3RoPicgOiAnJykgKyAnPC90cj4n OwogICAgdmFyIHplaWxlbiA9IGthdC5tYXAoZnVuY3Rpb24oaywgaSkgewogICAgICAgIHZhciBz dW0gPSAwOwogICAgICAgIHZhciB0ZHMgPSBzZXJpZW4ubWFwKGZ1bmN0aW9uKHMpeyB2YXIgdiA9 IHMud2VydGVbaV0gfHwgMDsgc3VtICs9IHY7IHJldHVybiAnPHRkIGNsYXNzPSJ6YWhsIj4nICsg X251bSh2KSArICc8L3RkPic7IH0pLmpvaW4oJycpOwogICAgICAgIHJldHVybiAnPHRyPjx0ZD4n ICsgZXNjYXBlSFRNTChrLmxhYmVsKSArICc8L3RkPicgKyB0ZHMgKyAobWVociA/ICc8dGQgY2xh c3M9InphaGwiPjxiPicgKyBfbnVtKHN1bSkgKyAnPC9iPjwvdGQ+JyA6ICcnKSArICc8L3RyPic7 CiAgICB9KS5qb2luKCcnKTsKICAgIHJldHVybiAnPGRpdiBjbGFzcz0idGFiZWxsZS1zY3JvbGwi Pjx0YWJsZSBjbGFzcz0iYWRtaW4tdGFiZWxsZSBzdGF0LXBpdm90Ij48dGhlYWQ+JyArIGtvcGYg KyAnPC90aGVhZD48dGJvZHk+JyArIHplaWxlbiArICc8L3Rib2R5PjwvdGFibGU+PC9kaXY+JzsK fQoKLy8gS1BJIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQoKZnVuY3Rpb24gX2twaShlcmcpIHsKICAgIHZhciBrYXQgPSBl cmcua2F0ZWdvcmllbiwgc2VyaWVuID0gZXJnLnNlcmllbjsKICAgIHZhciBnZXNhbXQgPSAwOwog ICAgc2VyaWVuLmZvckVhY2goZnVuY3Rpb24ocyl7IHMud2VydGUuZm9yRWFjaChmdW5jdGlvbih2 KXsgZ2VzYW10ICs9IHYgfHwgMDsgfSk7IH0pOwogICAgdmFyIGthcnRlbiA9ICc8ZGl2IGNsYXNz PSJzdGF0LWtwaS1ncm9zcyI+PGRpdiBjbGFzcz0ic3RhdC1rcGktZ3Jvc3Mtd2VydCI+JyArIF9u dW0oZ2VzYW10KSArICc8L2Rpdj4nICsKICAgICAgICAnPGRpdiBjbGFzcz0ic3RhdC1rcGktZ3Jv c3MtbGFiZWwiPicgKyBlc2NhcGVIVE1MKGVyZy5rZW5uemFobExhYmVsIHx8ICdHZXNhbXQnKSAr ICc8L2Rpdj48L2Rpdj4nOwogICAgLy8gQmlzIHp1IDYgVG9wLUthdGVnb3JpZW4gYWxzIGtsZWlu ZSBLUElzLgogICAgdmFyIHdlcnRlID0ga2F0Lm1hcChmdW5jdGlvbihfLCBpKXsgdmFyIHMgPSAw OyBzZXJpZW4uZm9yRWFjaChmdW5jdGlvbihzZSl7IHMgKz0gc2Uud2VydGVbaV0gfHwgMDsgfSk7 IHJldHVybiB7IGxhYmVsOiBrYXRbaV0ubGFiZWwsIHY6IHMgfTsgfSk7CiAgICB3ZXJ0ZS5zb3J0 KGZ1bmN0aW9uKGEsIGIpeyByZXR1cm4gYi52IC0gYS52OyB9KTsKICAgIHZhciB0b3AgPSB3ZXJ0 ZS5zbGljZSgwLCA2KS5tYXAoZnVuY3Rpb24odykgewogICAgICAgIHJldHVybiAnPGRpdiBjbGFz cz0ic3RhdC1rcGkiPjxkaXYgY2xhc3M9InN0YXRzLWtwaS13ZXJ0Ij4nICsgX251bSh3LnYpICsg JzwvZGl2PjxkaXYgY2xhc3M9InN0YXRzLWtwaS1sYWJlbCI+JyArIGVzY2FwZUhUTUwody5sYWJl bCkgKyAnPC9kaXY+PC9kaXY+JzsKICAgIH0pLmpvaW4oJycpOwogICAgcmV0dXJuICc8ZGl2IGNs YXNzPSJzdGF0LWtwaS13cmFwIj4nICsga2FydGVuICsgJzxkaXYgY2xhc3M9InN0YXRzLWtwaXMg c3RhdC1rcGktbWluaSI+JyArIHRvcCArICc8L2Rpdj48L2Rpdj4nOwp9Cg== ### FILE: js/statistik_engine.js | 19010 Ly8gPT09IHN0YXRpc3Rpa19lbmdpbmUuanMgPT09Ci8vIE1laHJkaW1lbnNpb25hbGUgQW5hbHlz ZS1FbmdpbmUgZnVlciBkZW4gU3RhdGlzdGlrLUJ1aWxkZXIgKFBpdm90LWFydGlnKS4KLy8KLy8g SWRlZTogYXVzIFoucGxhbnVuZy5laW50cmFlZ2UgKyBaLnBlcnNvbmVuICsgWi5hZG1pbiB3aXJk IGNsaWVudHNlaXRpZyBlaW5lCi8vIEZBS1RFTi1UQUJFTExFIGdlYmF1dCDigJQgZWluZSBaZWls ZSBwcm8gKFBlcnNvbiDDlyBUYWcgw5cgQ29kZSkuIEF1ZiBkaWVzZXIKLy8gRmFrdGVudGFiZWxs ZSBsYWV1ZnQgZGFubiBlaW4ga2xhc3Npc2NoZXMgR3JvdXAtYnkvQWdncmVnYXQ6Ci8vCi8vICAg RmlsdGVyIC0+IERpbWVuc2lvbihlbikgLT4gS2VubnphaGwvQWdncmVnYXRpb24gLT4gRXJnZWJu aXMtU3RydWt0dXIKLy8KLy8gRGFzIEVyZ2VibmlzIGlzdCBkaWFncmFtbS1uZXV0cmFsOyBzdGF0 aXN0aWtfY2hhcnRzLmpzIHJlbmRlcnQgZXMgYWxzIFNWRy4KLy8gS2VpbmUgU2VydmVyLUFlbmRl cnVuZyBub2V0aWcg4oCUIGFsbGVzIGxhZXVmdCBhdWYgYmVyZWl0cyBnZWxhZGVuZW4gRGF0ZW4u CgppbXBvcnQgeyBaIH0gZnJvbSAnLi9jb3JlX3N0YXRlLmpzJzsKaW1wb3J0IHsgcGlkS2V5LCBk YXR1bVN0ciwgaXN0V29jaGVuZW5kZSB9IGZyb20gJy4vY29yZV91dGlsLmpzJzsKaW1wb3J0IHsg ZmVpZXJ0YWdJbmZvIH0gZnJvbSAnLi9mZWllcnRhZ2VfZGUuanMnOwoKLy8gPT09PT0gQ29kZS1L bGFzc2lmaXppZXJ1bmcgKHNwaWVnZWx0IHNlcnZlci5weSBfaGFuZGxlX3N0YXRpc3RpaykgPT09 PT0KCnZhciBTT05ERVJfQ09ERVMgICAgICA9IFsnU0QnLCAnU0UnXTsKdmFyIEZPUlRCSUxEVU5H X0NPREVTID0gWydBdUYnLCAnRVRNJywgJ1NlbScsICdUVCcsICdUekYnXTsKdmFyIEZSRUlfQ09E RVMgICAgICAgID0gWyd3ZnInLCAnZGZyJywgJ8KnMjEnLCAnMjFhJ107CnZhciBBQldFU0VORF9D T0RFUyAgICA9IFsnVXJsJywgJ2tyJywgJ0t1cicsICdTVScsICdMRycsICdEVScsICdCVicsICdh YmcnLCAnQkFPJywgJ0hPJywgJ2FidycsICdYWFgnXTsKCmZ1bmN0aW9uIF9zY2hpY2h0Vm9uKGNv ZGUpIHsKICAgIGlmICgvXkYtL2kudGVzdChjb2RlKSkgcmV0dXJuICdGJzsKICAgIGlmICgvXlMt L2kudGVzdChjb2RlKSkgcmV0dXJuICdTJzsKICAgIGlmICgvXk4tL2kudGVzdChjb2RlKSkgcmV0 dXJuICdOJzsKICAgIHJldHVybiAnJzsKfQpmdW5jdGlvbiBfcm9sbGVWb24oY29kZSkgewogICAg Ly8gRi1ER0wgLT4gREdMLCBTLVdERiAtPiBXREYsIE4tRkJQIC0+IEZCUAogICAgaWYgKGNvZGUg JiYgY29kZS5sZW5ndGggPj0gNSAmJiBjb2RlLmNoYXJBdCgxKSA9PT0gJy0nKSB7CiAgICAgICAg dmFyIHIgPSBjb2RlLnN1YnN0cmluZygyLCA1KTsKICAgICAgICBpZiAociA9PT0gJ0RHTCcgfHwg ciA9PT0gJ1dERicgfHwgciA9PT0gJ0ZCUCcpIHJldHVybiByOwogICAgfQogICAgcmV0dXJuICcn Owp9CmZ1bmN0aW9uIF9pc3REaWVuc3QoY29kZSkgewogICAgcmV0dXJuIF9zY2hpY2h0Vm9uKGNv ZGUpICE9PSAnJyB8fCBTT05ERVJfQ09ERVMuaW5kZXhPZihjb2RlKSA+PSAwOwp9CmZ1bmN0aW9u IF9ncm9ia2xhc3NlKGNvZGUpIHsKICAgIC8vIEdyb2JlIFRhZy1BcnQgZnVlciBkaWUgS2F0ZWdv cmllLURpbWVuc2lvbi4KICAgIGlmIChfc2NoaWNodFZvbihjb2RlKSkgcmV0dXJuICdEaWVuc3Qn OwogICAgaWYgKFNPTkRFUl9DT0RFUy5pbmRleE9mKGNvZGUpID49IDApIHJldHVybiAnU29uZGVy ZGllbnN0JzsKICAgIGlmIChGT1JUQklMRFVOR19DT0RFUy5pbmRleE9mKGNvZGUpID49IDAgfHwg Y29kZSA9PT0gJ0xHJykgcmV0dXJuICdBdXMtL0ZvcnRiaWxkdW5nJzsKICAgIGlmIChbJ1VybCcs ICdTVSddLmluZGV4T2YoY29kZSkgPj0gMCkgcmV0dXJuICdVcmxhdWInOwogICAgaWYgKFsna3In LCAnS3VyJ10uaW5kZXhPZihjb2RlKSA+PSAwKSByZXR1cm4gJ0tyYW5rL0t1cic7CiAgICBpZiAo RlJFSV9DT0RFUy5pbmRleE9mKGNvZGUpID49IDApIHJldHVybiAnRnJlaSc7CiAgICByZXR1cm4g J1NvbnN0aWdlcyc7Cn0KCi8vID09PT09IEthbGVuZGVyLUhpbGZlbiA9PT09PQoKdmFyIF9mZWll cnRhZ1NldCA9IG51bGwsIF9mZXJpZW5TZXQgPSBudWxsLCBfa2FsZW5kZXJTaWcgPSBudWxsOwoK ZnVuY3Rpb24gX2thbGVuZGVyQXVmYmF1ZW4oKSB7CiAgICB2YXIgc2lnID0gKFouYWRtaW4gJiYg KFouYWRtaW4uZmVpZXJ0YWdlIHx8IFtdKS5sZW5ndGggKyAneCcgKyAoWi5hZG1pbi5mZXJpZW4g fHwgW10pLmxlbmd0aCkgfHwgJyc7CiAgICBpZiAoX2thbGVuZGVyU2lnID09PSBzaWcgJiYgX2Zl aWVydGFnU2V0KSByZXR1cm47CiAgICBfa2FsZW5kZXJTaWcgPSBzaWc7CiAgICAvLyBXZXJ0ID0g QmV6ZWljaG51bmcgKGZ1ZXIgYWRtaW4tZWlnZW5lIEZlaWVydGFnZSBvaG5lIEthdGFsb2ctVHJl ZmZlciksCiAgICAvLyBtaW5kZXN0ZW5zIGFiZXIgYHRydWVgLiBLYXRhbG9nIChidW5kZXN3ZWl0 L05SVykga29tbXQgenVzYWV0emxpY2ggaW4KICAgIC8vIGZha3RlbkJhdWVuIGRhenUuCiAgICBf ZmVpZXJ0YWdTZXQgPSB7fTsKICAgIChaLmFkbWluICYmIFouYWRtaW4uZmVpZXJ0YWdlIHx8IFtd KS5mb3JFYWNoKGZ1bmN0aW9uKGYpIHsKICAgICAgICBpZiAoZiAmJiBmLmRhdHVtICYmIGYuYWt0 aXYgIT09IGZhbHNlKSBfZmVpZXJ0YWdTZXRbZi5kYXR1bV0gPSBmLmJlemVpY2hudW5nIHx8IHRy dWU7CiAgICB9KTsKICAgIF9mZXJpZW5TZXQgPSB7fTsKICAgIChaLmFkbWluICYmIFouYWRtaW4u ZmVyaWVuIHx8IFtdKS5mb3JFYWNoKGZ1bmN0aW9uKGZwKSB7CiAgICAgICAgaWYgKCFmcCB8fCAh ZnAudm9uIHx8ICFmcC5iaXMpIHJldHVybjsKICAgICAgICB2YXIgZCA9IG5ldyBEYXRlKGZwLnZv biArICdUMDA6MDA6MDAnKSwgZW5kZSA9IG5ldyBEYXRlKGZwLmJpcyArICdUMDA6MDA6MDAnKTsK ICAgICAgICB2YXIgc2NodXR6ID0gMDsKICAgICAgICB3aGlsZSAoZCA8PSBlbmRlICYmIHNjaHV0 eiA8IDQwMCkgeyBfZmVyaWVuU2V0W2RhdHVtU3RyKGQpXSA9IHRydWU7IGQuc2V0RGF0ZShkLmdl dERhdGUoKSArIDEpOyBzY2h1dHorKzsgfQogICAgfSk7Cn0KCi8vIElTTy1LYWxlbmRlcndvY2hl IChNby1iYXNpZXJ0KS4KZnVuY3Rpb24gX2lzb0tXKGQpIHsKICAgIHZhciB0ID0gbmV3IERhdGUo ZC5nZXRGdWxsWWVhcigpLCBkLmdldE1vbnRoKCksIGQuZ2V0RGF0ZSgpKTsKICAgIHZhciB0YWcg PSAodC5nZXREYXkoKSArIDYpICUgNzsgICAgICAgICAgICAvLyBNbz0wIOKApiBTbz02CiAgICB0 LnNldERhdGUodC5nZXREYXRlKCkgLSB0YWcgKyAzKTsgICAgICAgICAgLy8gRG9ubmVyc3RhZyBk aWVzZXIgV29jaGUKICAgIHZhciBqYWhyU3RhcnQgPSBuZXcgRGF0ZSh0LmdldEZ1bGxZZWFyKCks IDAsIDQpOwogICAgdmFyIGt3ID0gMSArIE1hdGgucm91bmQoKCh0IC0gamFoclN0YXJ0KSAvIDg2 NDAwMDAwIC0gMyArICgoamFoclN0YXJ0LmdldERheSgpICsgNikgJSA3KSkgLyA3KTsKICAgIHJl dHVybiB7IGphaHI6IHQuZ2V0RnVsbFllYXIoKSwga3c6IGt3IH07Cn0KCnZhciBXT0NIRU5UQUdF ID0gWydTbycsICdNbycsICdEaScsICdNaScsICdEbycsICdGcicsICdTYSddOwp2YXIgTU9OQVRT TkFNRU4gPSBbJ0phbicsICdGZWInLCAnTcOkcicsICdBcHInLCAnTWFpJywgJ0p1bicsICdKdWwn LCAnQXVnJywgJ1NlcCcsICdPa3QnLCAnTm92JywgJ0RleiddOwoKLy8gPT09PT0gRmFrdGVudGFi ZWxsZSA9PT09PQoKdmFyIF9mYWt0ZW5DYWNoZSA9IG51bGwsIF9mYWt0ZW5TaWcgPSBudWxsOwoK ZnVuY3Rpb24gX3BlcnNvbkluZGV4KCkgewogICAgdmFyIGlkeCA9IHt9OwogICAgKFoucGVyc29u ZW4gfHwgW10pLmZvckVhY2goZnVuY3Rpb24ocCkgeyBpZHhbcGlkS2V5KHAuaWQpXSA9IHA7IH0p OwogICAgcmV0dXJuIGlkeDsKfQoKLy8gQmF1dCAodW5kIGNhY2hlZCkgZGllIEZha3RlbnRhYmVs bGU6IGVpbmUgWmVpbGUgcHJvIFBlcnNvbsOXVGFnw5dDb2RlLgpleHBvcnQgZnVuY3Rpb24gZmFr dGVuQmF1ZW4oKSB7CiAgICB2YXIgZWludHIgPSAoWi5wbGFudW5nICYmIFoucGxhbnVuZy5laW50 cmFlZ2UpIHx8IHt9OwogICAgdmFyIHNpZyA9IE9iamVjdC5rZXlzKGVpbnRyKS5sZW5ndGggKyAn OicgKyAoWi5wZXJzb25lbiB8fCBbXSkubGVuZ3RoICsgJzonICsgKFoudGFnZSB8fCBbXSkubGVu Z3RoOwogICAgaWYgKF9mYWt0ZW5TaWcgPT09IHNpZyAmJiBfZmFrdGVuQ2FjaGUpIHJldHVybiBf ZmFrdGVuQ2FjaGU7CiAgICBfa2FsZW5kZXJBdWZiYXVlbigpOwogICAgdmFyIHBJZHggPSBfcGVy c29uSW5kZXgoKTsKICAgIHZhciBmYWt0ZW4gPSBbXTsKICAgIHZhciB0YWdlID0gKFoudGFnZSAm JiBaLnRhZ2UubGVuZ3RoKSA/IFoudGFnZS5tYXAoZGF0dW1TdHIpIDogT2JqZWN0LmtleXMoZWlu dHIpLnNvcnQoKTsKICAgIHRhZ2UuZm9yRWFjaChmdW5jdGlvbihkYXR1bSkgewogICAgICAgIHZh ciB0YWcgPSBlaW50cltkYXR1bV07CiAgICAgICAgaWYgKCF0YWcpIHJldHVybjsKICAgICAgICB2 YXIgZCA9IG5ldyBEYXRlKGRhdHVtICsgJ1QwMDowMDowMCcpOwogICAgICAgIHZhciB3ZCA9IGQu Z2V0RGF5KCk7CiAgICAgICAgdmFyIGlzbyA9IF9pc29LVyhkKTsKICAgICAgICB2YXIgbW9uYXQg PSBkYXR1bS5zdWJzdHJpbmcoMCwgNyk7ICAgICAgICAgICAgICAgICAvLyAnWVlZWS1NTScKICAg ICAgICBPYmplY3Qua2V5cyh0YWcpLmZvckVhY2goZnVuY3Rpb24ocGlkKSB7CiAgICAgICAgICAg IHZhciBjb2RlID0gdGFnW3BpZF07CiAgICAgICAgICAgIGlmICghY29kZSkgcmV0dXJuOwogICAg ICAgICAgICB2YXIgcCA9IHBJZHhbcGlkXTsKICAgICAgICAgICAgaWYgKCFwKSByZXR1cm47ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW5ha3RpdmUvdmVyc3RlY2t0ZSBQZXJz b24gLT4gbmljaHQgZ2V6YWVobHQKICAgICAgICAgICAgLy8gRmVpZXJ0YWdzLUtsYXNzaWZpa2F0 aW9uOiBLYXRhbG9nIChidW5kZXN3ZWl0L05SVykgaGF0IFZvcnJhbmcsCiAgICAgICAgICAgIC8v IHNvbnN0IGFkbWluLWVpZ2VuZXIgRmVpZXJ0YWcgKC0+IFR5cCAnc29uc3RpZ2UnKS4gaXN0RmVp ZXJ0YWcKICAgICAgICAgICAgLy8gYmxlaWJ0IHRydWUsIHNvYmFsZCBlaW5lIGRlciBiZWlkZW4g UXVlbGxlbiBncmVpZnQuCiAgICAgICAgICAgIHZhciBrYXRJbmZvID0gZmVpZXJ0YWdJbmZvKGRh dHVtKTsKICAgICAgICAgICAgdmFyIGFkbWluRnQgPSBfZmVpZXJ0YWdTZXRbZGF0dW1dOwogICAg ICAgICAgICB2YXIgZnROYW1lID0gJycsIGZ0VHlwID0gJyc7CiAgICAgICAgICAgIGlmIChrYXRJ bmZvKSB7IGZ0TmFtZSA9IGthdEluZm8ubmFtZTsgZnRUeXAgPSBrYXRJbmZvLnR5cDsgfQogICAg ICAgICAgICBlbHNlIGlmIChhZG1pbkZ0KSB7IGZ0TmFtZSA9ICh0eXBlb2YgYWRtaW5GdCA9PT0g J3N0cmluZycpID8gYWRtaW5GdCA6ICcnOyBmdFR5cCA9ICdzb25zdGlnZSc7IH0KICAgICAgICAg ICAgZmFrdGVuLnB1c2goewogICAgICAgICAgICAgICAgcGVyc29uSWQ6IHBpZCwKICAgICAgICAg ICAgICAgIHBlcnNvbkxhYmVsOiBfcGVyc29uTGFiZWwocCksCiAgICAgICAgICAgICAgICBncnVw cGU6IHAuZ3J1cHBlIHx8ICfigJQnLAogICAgICAgICAgICAgICAgZnVua3Rpb246IHAuZnVua3Rp b24gfHwgJ+KAlCcsCiAgICAgICAgICAgICAgICBzdGFuZG9ydDogcC5vZSB8fCAn4oCUJywKICAg ICAgICAgICAgICAgIGRpZW5zdGdyYWQ6IHAuZGllbnN0Z3JhZCB8fCAn4oCUJywKICAgICAgICAg ICAgICAgIGRhdHVtOiBkYXR1bSwKICAgICAgICAgICAgICAgIGphaHI6IFN0cmluZyhkLmdldEZ1 bGxZZWFyKCkpLAogICAgICAgICAgICAgICAgbW9uYXQ6IG1vbmF0LAogICAgICAgICAgICAgICAg bW9uYXRMYWJlbDogTU9OQVRTTkFNRU5bZC5nZXRNb250aCgpXSArICcgJyArIGQuZ2V0RnVsbFll YXIoKSwKICAgICAgICAgICAgICAgIGt3S2V5OiBpc28uamFociArICctJyArIChpc28ua3cgPCAx MCA/ICcwJyA6ICcnKSArIGlzby5rdywKICAgICAgICAgICAgICAgIGt3TGFiZWw6ICdLVyAnICsg aXNvLmt3LAogICAgICAgICAgICAgICAgd29jaGVudGFnOiB3ZCwKICAgICAgICAgICAgICAgIHdv Y2hlbnRhZ0xhYmVsOiBXT0NIRU5UQUdFW3dkXSwKICAgICAgICAgICAgICAgIGlzdFdFOiBpc3RX b2NoZW5lbmRlKGQpLAogICAgICAgICAgICAgICAgaXN0RmVpZXJ0YWc6ICEhYWRtaW5GdCB8fCAh IWthdEluZm8sCiAgICAgICAgICAgICAgICBmZWllcnRhZ05hbWU6IGZ0TmFtZSwKICAgICAgICAg ICAgICAgIGZlaWVydGFnVHlwOiBmdFR5cCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICdi dW5kZXN3ZWl0JyB8ICducncnIHwgJ3NvbnN0aWdlJyB8ICcnCiAgICAgICAgICAgICAgICBpc3RG ZXJpZW46ICEhX2ZlcmllblNldFtkYXR1bV0sCiAgICAgICAgICAgICAgICBjb2RlOiBjb2RlLAog ICAgICAgICAgICAgICAgc2NoaWNodDogX3NjaGljaHRWb24oY29kZSksCiAgICAgICAgICAgICAg ICByb2xsZTogX3JvbGxlVm9uKGNvZGUpLAogICAgICAgICAgICAgICAga2F0ZWdvcmllOiBfZ3Jv YmtsYXNzZShjb2RlKSwKICAgICAgICAgICAgICAgIGlzdERpZW5zdDogX2lzdERpZW5zdChjb2Rl KQogICAgICAgICAgICB9KTsKICAgICAgICB9KTsKICAgIH0pOwogICAgX2Zha3RlbkNhY2hlID0g ZmFrdGVuOyBfZmFrdGVuU2lnID0gc2lnOwogICAgcmV0dXJuIGZha3RlbjsKfQoKZnVuY3Rpb24g X3BlcnNvbkxhYmVsKHApIHsKICAgIHZhciBuID0gKHAubmFtZSB8fCAnJykudHJpbSgpOwogICAg dmFyIHYgPSAocC52b3JuYW1lIHx8ICcnKS50cmltKCk7CiAgICByZXR1cm4gdiA/IChuICsgJywg JyArIHYpIDogbjsKfQoKLy8gPT09PT0gRGltZW5zaW9uZW4gKEdyb3VwLWJ5LUFjaHNlbikgPT09 PT0KLy8gd2VydChmKSAtPiBTY2hsdWVzc2VsICh6dWdsZWljaCBTb3J0aWVya3JpdGVyaXVtIGZ1 ZXIgJ3plaXQnLU9yZG51bmcpLAovLyBsYWJlbChrZXkpIC0+IEFuemVpZ2UuIG9yZG51bmc6ICdu YXR1cicgKGFscGhhYmV0aXNjaC9XZXJ0KSB8ICd6ZWl0JyB8ICdmaXgnLgoKZXhwb3J0IHZhciBE SU1FTlNJT05FTiA9IFsKICAgIHsga2V5OiAnZ3J1cHBlJywgICAgIGxhYmVsOiAnRGllbnN0Z3J1 cHBlJywgb3JkbnVuZzogJ25hdHVyJywgd2VydDogZnVuY3Rpb24oZil7IHJldHVybiBmLmdydXBw ZTsgfSB9LAogICAgeyBrZXk6ICdmdW5rdGlvbicsICAgbGFiZWw6ICdGdW5rdGlvbicsICAgICBv cmRudW5nOiAnbmF0dXInLCB3ZXJ0OiBmdW5jdGlvbihmKXsgcmV0dXJuIGYuZnVua3Rpb247IH0g fSwKICAgIHsga2V5OiAnc3RhbmRvcnQnLCAgIGxhYmVsOiAnU3RhbmRvcnQnLCAgICAgb3JkbnVu ZzogJ25hdHVyJywgd2VydDogZnVuY3Rpb24oZil7IHJldHVybiBmLnN0YW5kb3J0OyB9IH0sCiAg ICB7IGtleTogJ2RpZW5zdGdyYWQnLCBsYWJlbDogJ0RpZW5zdGdyYWQnLCAgIG9yZG51bmc6ICdu YXR1cicsIHdlcnQ6IGZ1bmN0aW9uKGYpeyByZXR1cm4gZi5kaWVuc3RncmFkOyB9IH0sCiAgICB7 IGtleTogJ3BlcnNvbicsICAgICBsYWJlbDogJ1BlcnNvbicsICAgICAgIG9yZG51bmc6ICduYXR1 cicsIHdlcnQ6IGZ1bmN0aW9uKGYpeyByZXR1cm4gZi5wZXJzb25MYWJlbDsgfSB9LAogICAgeyBr ZXk6ICdrYXRlZ29yaWUnLCAgbGFiZWw6ICdUYWctS2F0ZWdvcmllJywgb3JkbnVuZzogJ25hdHVy Jywgd2VydDogZnVuY3Rpb24oZil7IHJldHVybiBmLmthdGVnb3JpZTsgfSB9LAogICAgeyBrZXk6 ICdzY2hpY2h0JywgICAgbGFiZWw6ICdTY2hpY2h0IChGL1MvTiknLCBvcmRudW5nOiAnZml4Jywg Zml4UmVpaGU6IFsnRicsICdTJywgJ04nLCAn4oCUJ10sCiAgICAgICAgd2VydDogZnVuY3Rpb24o Zil7IHJldHVybiBmLnNjaGljaHQgfHwgJ+KAlCc7IH0sIGxhYmVsMjogZnVuY3Rpb24oayl7IHJl dHVybiAoe0Y6J0Zyw7xoJywgUzonU3DDpHQnLCBOOidOYWNodCcsICfigJQnOidrZWluIERpZW5z dCd9KVtrXSB8fCBrOyB9IH0sCiAgICB7IGtleTogJ3JvbGxlJywgICAgICBsYWJlbDogJ0RHTC9X REYvRkJQJywgIG9yZG51bmc6ICdmaXgnLCBmaXhSZWloZTogWydER0wnLCAnV0RGJywgJ0ZCUCcs ICfigJQnXSwKICAgICAgICB3ZXJ0OiBmdW5jdGlvbihmKXsgcmV0dXJuIGYucm9sbGUgfHwgJ+KA lCc7IH0gfSwKICAgIHsga2V5OiAnY29kZScsICAgICAgIGxhYmVsOiAnU2NoaWNodGNvZGUnLCAg b3JkbnVuZzogJ25hdHVyJywgd2VydDogZnVuY3Rpb24oZil7IHJldHVybiBmLmNvZGU7IH0gfSwK ICAgIHsga2V5OiAnbW9uYXQnLCAgICAgIGxhYmVsOiAnTW9uYXQnLCAgICAgICAgb3JkbnVuZzog J3plaXQnLCB3ZXJ0OiBmdW5jdGlvbihmKXsgcmV0dXJuIGYubW9uYXQ7IH0sIGxhYmVsMjogZnVu Y3Rpb24oaywgZil7IHJldHVybiBmID8gZi5tb25hdExhYmVsIDogazsgfSB9LAogICAgeyBrZXk6 ICdrdycsICAgICAgICAgbGFiZWw6ICdLYWxlbmRlcndvY2hlJywgb3JkbnVuZzogJ3plaXQnLCB3 ZXJ0OiBmdW5jdGlvbihmKXsgcmV0dXJuIGYua3dLZXk7IH0sIGxhYmVsMjogZnVuY3Rpb24oaywg Zil7IHJldHVybiBmID8gZi5rd0xhYmVsIDogazsgfSB9LAogICAgeyBrZXk6ICd3b2NoZW50YWcn LCAgbGFiZWw6ICdXb2NoZW50YWcnLCAgICBvcmRudW5nOiAnZml4JywgZml4UmVpaGU6IFsnTW8n LCAnRGknLCAnTWknLCAnRG8nLCAnRnInLCAnU2EnLCAnU28nXSwKICAgICAgICB3ZXJ0OiBmdW5j dGlvbihmKXsgcmV0dXJuIGYud29jaGVudGFnTGFiZWw7IH0gfSwKICAgIHsga2V5OiAnamFocics ICAgICAgIGxhYmVsOiAnSmFocicsICAgICAgICAgb3JkbnVuZzogJ3plaXQnLCB3ZXJ0OiBmdW5j dGlvbihmKXsgcmV0dXJuIGYuamFocjsgfSB9LAogICAgeyBrZXk6ICdpc3RXRScsICAgICAgbGFi ZWw6ICdXb2NoZW5lbmRlPycsICBvcmRudW5nOiAnZml4JywgZml4UmVpaGU6IFsnV29jaGVuZW5k ZScsICdXZXJrdGFnJ10sCiAgICAgICAgd2VydDogZnVuY3Rpb24oZil7IHJldHVybiBmLmlzdFdF ID8gJ1dvY2hlbmVuZGUnIDogJ1dlcmt0YWcnOyB9IH0sCiAgICB7IGtleTogJ2ZlaWVydGFnJywg ICAgbGFiZWw6ICdGZWllcnRhZyAoTmFtZSknLCBvcmRudW5nOiAnbmF0dXInLAogICAgICAgIHdl cnQ6IGZ1bmN0aW9uKGYpeyByZXR1cm4gZi5mZWllcnRhZ05hbWUgfHwgJ2tlaW4gRmVpZXJ0YWcn OyB9IH0sCiAgICB7IGtleTogJ2ZlaWVydGFnVHlwJywgbGFiZWw6ICdGZWllcnRhZyAoQnVuZC9O UlcpJywgb3JkbnVuZzogJ2ZpeCcsCiAgICAgICAgZml4UmVpaGU6IFsnQnVuZGVzd2VpdCcsICdO Ulctc3BlemlmaXNjaCcsICdTb25zdGlnZXIgRmVpZXJ0YWcnLCAna2VpbiBGZWllcnRhZyddLAog ICAgICAgIHdlcnQ6IGZ1bmN0aW9uKGYpeyByZXR1cm4gX2ZlaWVydGFnVHlwTGFiZWwoZi5mZWll cnRhZ1R5cCk7IH0gfQpdOwoKLy8gQW56ZWlnZS1MYWJlbCBmdWVyIGRlbiBGZWllcnRhZ3MtVHlw IGVpbmVyIEZha3RlbnplaWxlLgpleHBvcnQgZnVuY3Rpb24gX2ZlaWVydGFnVHlwTGFiZWwodHlw KSB7CiAgICBpZiAodHlwID09PSAnYnVuZGVzd2VpdCcpIHJldHVybiAnQnVuZGVzd2VpdCc7CiAg ICBpZiAodHlwID09PSAnbnJ3JykgICAgICAgIHJldHVybiAnTlJXLXNwZXppZmlzY2gnOwogICAg aWYgKHR5cCA9PT0gJ3NvbnN0aWdlJykgICByZXR1cm4gJ1NvbnN0aWdlciBGZWllcnRhZyc7CiAg ICByZXR1cm4gJ2tlaW4gRmVpZXJ0YWcnOwp9CgpleHBvcnQgZnVuY3Rpb24gZGltRmluZGVuKGtl eSkgewogICAgZm9yICh2YXIgaSA9IDA7IGkgPCBESU1FTlNJT05FTi5sZW5ndGg7IGkrKykgaWYg KERJTUVOU0lPTkVOW2ldLmtleSA9PT0ga2V5KSByZXR1cm4gRElNRU5TSU9ORU5baV07CiAgICBy ZXR1cm4gbnVsbDsKfQoKLy8gPT09PT0gS2VubnphaGxlbiAoWmVsbC1BZ2dyZWdhdGlvbiB1ZWJl ciBGYWt0ZW4pID09PT09CgpleHBvcnQgdmFyIEtFTk5aQUhMRU4gPSBbCiAgICB7IGtleTogJ2Fu emFobCcsICAgIGxhYmVsOiAnQW56YWhsIEVpbnRyw6RnZScsICBlaW5oZWl0OiAnRWludHLDpGdl JyB9LAogICAgeyBrZXk6ICdwZXJzb25lbicsICBsYWJlbDogJ1ZlcnNjaC4gUGVyc29uZW4nLCBl aW5oZWl0OiAnUGVyc29uZW4nIH0sCiAgICB7IGtleTogJ3RhZ2UnLCAgICAgIGxhYmVsOiAnVmVy c2NoLiBUYWdlJywgICAgIGVpbmhlaXQ6ICdUYWdlJyB9LAogICAgeyBrZXk6ICdwcm9QZXJzb24n LCBsYWJlbDogJ8OYIHBybyBQZXJzb24nLCAgICAgZWluaGVpdDogJ8OYL1BlcnNvbicgfSwKICAg IHsga2V5OiAnYW50ZWlsJywgICAgbGFiZWw6ICdBbnRlaWwgKCUpJywgICAgICAgZWluaGVpdDog JyUnIH0KXTsKCmV4cG9ydCBmdW5jdGlvbiBrZW5uemFobEZpbmRlbihrZXkpIHsKICAgIGZvciAo dmFyIGkgPSAwOyBpIDwgS0VOTlpBSExFTi5sZW5ndGg7IGkrKykgaWYgKEtFTk5aQUhMRU5baV0u a2V5ID09PSBrZXkpIHJldHVybiBLRU5OWkFITEVOW2ldOwogICAgcmV0dXJuIG51bGw7Cn0KCmZ1 bmN0aW9uIF9kaXN0aW5jdChhcnIpIHsKICAgIHZhciBzZWVuID0ge30sIG4gPSAwOwogICAgZm9y ICh2YXIgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHsgaWYgKCFzZWVuW2FycltpXV0pIHsg c2VlblthcnJbaV1dID0gMTsgbisrOyB9IH0KICAgIHJldHVybiBuOwp9CmZ1bmN0aW9uIF9hZ2co ZmFrdGVuLCBrZW5uemFobCkgewogICAgaWYgKCFmYWt0ZW4gfHwgIWZha3Rlbi5sZW5ndGgpIHJl dHVybiAwOwogICAgaWYgKGtlbm56YWhsID09PSAncGVyc29uZW4nKSByZXR1cm4gX2Rpc3RpbmN0 KGZha3Rlbi5tYXAoZnVuY3Rpb24oZil7IHJldHVybiBmLnBlcnNvbklkOyB9KSk7CiAgICBpZiAo a2VubnphaGwgPT09ICd0YWdlJykgICAgIHJldHVybiBfZGlzdGluY3QoZmFrdGVuLm1hcChmdW5j dGlvbihmKXsgcmV0dXJuIGYuZGF0dW07IH0pKTsKICAgIGlmIChrZW5uemFobCA9PT0gJ3Byb1Bl cnNvbicpIHsKICAgICAgICB2YXIgcCA9IF9kaXN0aW5jdChmYWt0ZW4ubWFwKGZ1bmN0aW9uKGYp eyByZXR1cm4gZi5wZXJzb25JZDsgfSkpOwogICAgICAgIHJldHVybiBwID8gTWF0aC5yb3VuZChm YWt0ZW4ubGVuZ3RoIC8gcCAqIDEwKSAvIDEwIDogMDsKICAgIH0KICAgIHJldHVybiBmYWt0ZW4u bGVuZ3RoOyAvLyAnYW56YWhsJyAodW5kIEJhc2lzIGZ1ZXIgJ2FudGVpbCcpCn0KCi8vID09PT09 IEZpbHRlciA9PT09PQoKZnVuY3Rpb24gX2ZpbHRlclBhc3N0KGYsIHNwZWMpIHsKICAgIHZhciBm aSA9IHNwZWMuZmlsdGVyIHx8IHt9OwogICAgaWYgKGZpLnBlcnNvbmVuICYmIGZpLnBlcnNvbmVu Lmxlbmd0aCAmJiBmaS5wZXJzb25lbi5pbmRleE9mKGYucGVyc29uSWQpIDwgMCkgcmV0dXJuIGZh bHNlOwogICAgaWYgKGZpLmdydXBwZW4gJiYgZmkuZ3J1cHBlbi5sZW5ndGggJiYgZmkuZ3J1cHBl bi5pbmRleE9mKGYuZ3J1cHBlKSA8IDApIHJldHVybiBmYWxzZTsKICAgIGlmIChmaS5mdW5rdGlv bmVuICYmIGZpLmZ1bmt0aW9uZW4ubGVuZ3RoICYmIGZpLmZ1bmt0aW9uZW4uaW5kZXhPZihmLmZ1 bmt0aW9uKSA8IDApIHJldHVybiBmYWxzZTsKICAgIGlmIChmaS5zdGFuZG9ydGUgJiYgZmkuc3Rh bmRvcnRlLmxlbmd0aCAmJiBmaS5zdGFuZG9ydGUuaW5kZXhPZihmLnN0YW5kb3J0KSA8IDApIHJl dHVybiBmYWxzZTsKICAgIGlmIChmaS5kaWVuc3RncmFkZSAmJiBmaS5kaWVuc3RncmFkZS5sZW5n dGggJiYgZmkuZGllbnN0Z3JhZGUuaW5kZXhPZihmLmRpZW5zdGdyYWQpIDwgMCkgcmV0dXJuIGZh bHNlOwogICAgaWYgKGZpLmNvZGVzICYmIGZpLmNvZGVzLmxlbmd0aCAmJiBmaS5jb2Rlcy5pbmRl eE9mKGYuY29kZSkgPCAwKSByZXR1cm4gZmFsc2U7CiAgICBpZiAoZmkua2F0ZWdvcmllbiAmJiBm aS5rYXRlZ29yaWVuLmxlbmd0aCAmJiBmaS5rYXRlZ29yaWVuLmluZGV4T2YoZi5rYXRlZ29yaWUp IDwgMCkgcmV0dXJuIGZhbHNlOwogICAgaWYgKGZpLm51cldFICYmICFmLmlzdFdFKSByZXR1cm4g ZmFsc2U7CiAgICBpZiAoZmkubnVyRmVpZXJ0YWcgJiYgIWYuaXN0RmVpZXJ0YWcpIHJldHVybiBm YWxzZTsKICAgIGlmIChmaS5udXJGZWllcnRhZ0J1bmQgJiYgZi5mZWllcnRhZ1R5cCAhPT0gJ2J1 bmRlc3dlaXQnKSByZXR1cm4gZmFsc2U7CiAgICBpZiAoZmkubnVyRmVpZXJ0YWdOUlcgJiYgZi5m ZWllcnRhZ1R5cCAhPT0gJ25ydycpIHJldHVybiBmYWxzZTsKICAgIGlmIChmaS5udXJEaWVuc3Qg JiYgIWYuaXN0RGllbnN0KSByZXR1cm4gZmFsc2U7CiAgICBpZiAoZmkud29jaGVudGFnZSAmJiBm aS53b2NoZW50YWdlLmxlbmd0aCAmJiBmaS53b2NoZW50YWdlLmluZGV4T2YoZi53b2NoZW50YWcp IDwgMCkgcmV0dXJuIGZhbHNlOwogICAgaWYgKHNwZWMuemVpdFZvbiAmJiBmLmRhdHVtIDwgc3Bl Yy56ZWl0Vm9uKSByZXR1cm4gZmFsc2U7CiAgICBpZiAoc3BlYy56ZWl0QmlzICYmIGYuZGF0dW0g PiBzcGVjLnplaXRCaXMpIHJldHVybiBmYWxzZTsKICAgIHJldHVybiB0cnVlOwp9CgovLyA9PT09 PSBBdXN3ZXJ0dW5nID09PT09Ci8vCi8vIExpZWZlcnQgZWluIGRpYWdyYW1tLW5ldXRyYWxlcyBF cmdlYm5pczoKLy8gICB7IGthdGVnb3JpZW46W3trZXksbGFiZWx9XSwgc2VyaWVuOlt7bmFtZSwg d2VydGU6Wy4uLl19XSwgZWluaGVpdCwgZ2VzYW10LAovLyAgICAgcHVua3RlOlt7bGFiZWwseCx5 fV0gKFNjYXR0ZXIpLCBpc3RMZWVyIH0KCmV4cG9ydCBmdW5jdGlvbiBhdXN3ZXJ0ZW4oc3BlYykg ewogICAgc3BlYyA9IHNwZWMgfHwge307CiAgICB2YXIgZmFrdGVuID0gZmFrdGVuQmF1ZW4oKS5m aWx0ZXIoZnVuY3Rpb24oZil7IHJldHVybiBfZmlsdGVyUGFzc3QoZiwgc3BlYyk7IH0pOwogICAg aWYgKCFmYWt0ZW4ubGVuZ3RoKSByZXR1cm4geyBpc3RMZWVyOiB0cnVlLCBrYXRlZ29yaWVuOiBb XSwgc2VyaWVuOiBbXSwgcHVua3RlOiBbXSB9OwoKICAgIGlmIChzcGVjLmRpYWdyYW1tID09PSAn c2NhdHRlcicpIHJldHVybiBfYXVzd2VydGVuU2NhdHRlcihzcGVjLCBmYWt0ZW4pOwoKICAgIHZh ciBkaW1YID0gZGltRmluZGVuKHNwZWMuZGltWCkgfHwgZGltRmluZGVuKCdncnVwcGUnKTsKICAg IHZhciBkaW1TID0gc3BlYy5kaW1TZXJpZSA/IGRpbUZpbmRlbihzcGVjLmRpbVNlcmllKSA6IG51 bGw7CiAgICB2YXIga2VubnphaGwgPSBzcGVjLmtlbm56YWhsIHx8ICdhbnphaGwnOwoKICAgIC8v IFplbGxlbjogY2F0S2V5IC0+IHNlcmllS2V5IC0+IGZha3RlbltdCiAgICB2YXIgemVsbGVuID0g e30sIGNhdE1ldGEgPSB7fSwgc2VyaWVNZXRhID0ge307CiAgICBmYWt0ZW4uZm9yRWFjaChmdW5j dGlvbihmKSB7CiAgICAgICAgdmFyIGNrID0gZGltWC53ZXJ0KGYpOwogICAgICAgIHZhciBzayA9 IGRpbVMgPyBkaW1TLndlcnQoZikgOiAnX19hbGwnOwogICAgICAgIGlmICghY2F0TWV0YVtja10p IGNhdE1ldGFbY2tdID0geyBrZXk6IGNrLCBsYWJlbDogX2RpbUxhYmVsKGRpbVgsIGNrLCBmKSwg YmVpc3BpZWw6IGYgfTsKICAgICAgICBpZiAoIXNlcmllTWV0YVtza10pIHNlcmllTWV0YVtza10g PSB7IGtleTogc2ssIGxhYmVsOiBkaW1TID8gX2RpbUxhYmVsKGRpbVMsIHNrLCBmKSA6ICcnIH07 CiAgICAgICAgKHplbGxlbltja10gfHwgKHplbGxlbltja10gPSB7fSkpOwogICAgICAgICh6ZWxs ZW5bY2tdW3NrXSB8fCAoemVsbGVuW2NrXVtza10gPSBbXSkpLnB1c2goZik7CiAgICB9KTsKCiAg ICB2YXIga2F0S2V5cyA9IF9zb3J0S2F0ZWdvcmllbihPYmplY3Qua2V5cyhjYXRNZXRhKSwgY2F0 TWV0YSwgZGltWCk7CiAgICB2YXIgc2VyaWVLZXlzID0gX3NvcnRLYXRlZ29yaWVuKE9iamVjdC5r ZXlzKHNlcmllTWV0YSksIHNlcmllTWV0YSwgZGltUyB8fCBkaW1YKTsKCiAgICAvLyBSb2gtQWdn cmVnYXRlCiAgICB2YXIgZ2VzYW10ID0gMDsKICAgIHZhciBzZXJpZW4gPSBzZXJpZUtleXMubWFw KGZ1bmN0aW9uKHNrKSB7CiAgICAgICAgdmFyIHdlcnRlID0ga2F0S2V5cy5tYXAoZnVuY3Rpb24o Y2spIHsKICAgICAgICAgICAgdmFyIHYgPSBfYWdnKCh6ZWxsZW5bY2tdICYmIHplbGxlbltja11b c2tdKSB8fCBbXSwga2VubnphaGwgPT09ICdhbnRlaWwnID8gJ2FuemFobCcgOiBrZW5uemFobCk7 CiAgICAgICAgICAgIGdlc2FtdCArPSAoa2VubnphaGwgPT09ICdhbnRlaWwnKSA/IHYgOiAwOwog ICAgICAgICAgICByZXR1cm4gdjsKICAgICAgICB9KTsKICAgICAgICByZXR1cm4geyBuYW1lOiBz ZXJpZU1ldGFbc2tdLmxhYmVsLCB3ZXJ0ZTogd2VydGUgfTsKICAgIH0pOwoKICAgIC8vIEFudGVp bCAoJSk6IGplZGUgWmVsbGUgcmVsYXRpdiB6dXIgR2VzYW10c3VtbWUgYWxsZXIgWmVsbGVuLgog ICAgaWYgKGtlbm56YWhsID09PSAnYW50ZWlsJyAmJiBnZXNhbXQgPiAwKSB7CiAgICAgICAgc2Vy aWVuLmZvckVhY2goZnVuY3Rpb24ocykgewogICAgICAgICAgICBzLndlcnRlID0gcy53ZXJ0ZS5t YXAoZnVuY3Rpb24odil7IHJldHVybiBNYXRoLnJvdW5kKHYgLyBnZXNhbXQgKiAxMDAwKSAvIDEw OyB9KTsKICAgICAgICB9KTsKICAgIH0KCiAgICAvLyBTb3J0aWVydW5nIGRlciBLYXRlZ29yaWVu IG5hY2ggV2VydCAoUmFua2luZykgKyBUb3BOLgogICAgdmFyIGVyZ2VibmlzID0gX3NvcnRVbmRU b3Aoc3BlYywga2F0S2V5cywgY2F0TWV0YSwgc2VyaWVuKTsKCiAgICByZXR1cm4gewogICAgICAg IGlzdExlZXI6IGZhbHNlLAogICAgICAgIGthdGVnb3JpZW46IGVyZ2VibmlzLmthdGVnb3JpZW4s CiAgICAgICAgc2VyaWVuOiBlcmdlYm5pcy5zZXJpZW4sCiAgICAgICAgbWVocnNlcmlnOiAhIWRp bVMsCiAgICAgICAgZWluaGVpdDogKGtlbm56YWhsRmluZGVuKGtlbm56YWhsKSB8fCB7fSkuZWlu aGVpdCB8fCAnJywKICAgICAgICBkaW1YTGFiZWw6IGRpbVgubGFiZWwsCiAgICAgICAgZGltU2Vy aWVMYWJlbDogZGltUyA/IGRpbVMubGFiZWwgOiAnJywKICAgICAgICBrZW5uemFobExhYmVsOiAo a2VubnphaGxGaW5kZW4oa2VubnphaGwpIHx8IHt9KS5sYWJlbCB8fCAnJwogICAgfTsKfQoKZnVu Y3Rpb24gX2RpbUxhYmVsKGRpbSwga2V5LCBmYWt0KSB7CiAgICBpZiAoZGltLmxhYmVsMikgcmV0 dXJuIGRpbS5sYWJlbDIoa2V5LCBmYWt0KTsKICAgIHJldHVybiBrZXk7Cn0KCmZ1bmN0aW9uIF9z b3J0S2F0ZWdvcmllbihrZXlzLCBtZXRhLCBkaW0pIHsKICAgIGlmIChkaW0gJiYgZGltLm9yZG51 bmcgPT09ICdmaXgnICYmIGRpbS5maXhSZWloZSkgewogICAgICAgIHZhciByZWloZSA9IGRpbS5m aXhSZWloZTsKICAgICAgICByZXR1cm4ga2V5cy5zbGljZSgpLnNvcnQoZnVuY3Rpb24oYSwgYikg ewogICAgICAgICAgICB2YXIgaWEgPSByZWloZS5pbmRleE9mKGEpLCBpYiA9IHJlaWhlLmluZGV4 T2YoYik7CiAgICAgICAgICAgIGlmIChpYSA8IDApIGlhID0gOTk5OyBpZiAoaWIgPCAwKSBpYiA9 IDk5OTsKICAgICAgICAgICAgcmV0dXJuIGlhIC0gaWIgfHwgYS5sb2NhbGVDb21wYXJlKGIsICdk ZScpOwogICAgICAgIH0pOwogICAgfQogICAgaWYgKGRpbSAmJiBkaW0ub3JkbnVuZyA9PT0gJ3pl aXQnKSB7CiAgICAgICAgcmV0dXJuIGtleXMuc2xpY2UoKS5zb3J0KGZ1bmN0aW9uKGEsIGIpeyBy ZXR1cm4gYSA8IGIgPyAtMSA6IChhID4gYiA/IDEgOiAwKTsgfSk7CiAgICB9CiAgICByZXR1cm4g a2V5cy5zbGljZSgpLnNvcnQoZnVuY3Rpb24oYSwgYil7IHJldHVybiBhLmxvY2FsZUNvbXBhcmUo YiwgJ2RlJyk7IH0pOwp9CgpmdW5jdGlvbiBfc29ydFVuZFRvcChzcGVjLCBrYXRLZXlzLCBjYXRN ZXRhLCBzZXJpZW4pIHsKICAgIHZhciBzb3J0ID0gc3BlYy5zb3J0IHx8ICdsYWJlbCc7CiAgICB2 YXIgaWR4UmVpaGUgPSBrYXRLZXlzLm1hcChmdW5jdGlvbihfLCBpKXsgcmV0dXJuIGk7IH0pOwoK ICAgIGlmIChzb3J0ID09PSAnd2VydC1kZXNjJyB8fCBzb3J0ID09PSAnd2VydC1hc2MnKSB7CiAg ICAgICAgdmFyIHN1bW1lbiA9IGthdEtleXMubWFwKGZ1bmN0aW9uKF8sIGkpIHsKICAgICAgICAg ICAgdmFyIHMgPSAwOyBzZXJpZW4uZm9yRWFjaChmdW5jdGlvbihzZSl7IHMgKz0gc2Uud2VydGVb aV0gfHwgMDsgfSk7IHJldHVybiBzOwogICAgICAgIH0pOwogICAgICAgIGlkeFJlaWhlLnNvcnQo ZnVuY3Rpb24oYSwgYikgewogICAgICAgICAgICByZXR1cm4gc29ydCA9PT0gJ3dlcnQtZGVzYycg PyBzdW1tZW5bYl0gLSBzdW1tZW5bYV0gOiBzdW1tZW5bYV0gLSBzdW1tZW5bYl07CiAgICAgICAg fSk7CiAgICB9CiAgICAvLyAoc29uc3Q6IFJlaWhlbmZvbGdlIGF1cyBfc29ydEthdGVnb3JpZW4g YmVpYmVoYWx0ZW4pCgogICAgdmFyIHRvcE4gPSBzcGVjLnRvcE4gfHwgMDsKICAgIGlmICh0b3BO ID4gMCAmJiBpZHhSZWloZS5sZW5ndGggPiB0b3BOKSBpZHhSZWloZSA9IGlkeFJlaWhlLnNsaWNl KDAsIHRvcE4pOwoKICAgIHZhciBrYXRlZ29yaWVuID0gaWR4UmVpaGUubWFwKGZ1bmN0aW9uKGkp eyByZXR1cm4geyBrZXk6IGthdEtleXNbaV0sIGxhYmVsOiBjYXRNZXRhW2thdEtleXNbaV1dLmxh YmVsIH07IH0pOwogICAgdmFyIG5ldWVTZXJpZW4gPSBzZXJpZW4ubWFwKGZ1bmN0aW9uKHNlKSB7 CiAgICAgICAgcmV0dXJuIHsgbmFtZTogc2UubmFtZSwgd2VydGU6IGlkeFJlaWhlLm1hcChmdW5j dGlvbihpKXsgcmV0dXJuIHNlLndlcnRlW2ldOyB9KSB9OwogICAgfSk7CiAgICByZXR1cm4geyBr YXRlZ29yaWVuOiBrYXRlZ29yaWVuLCBzZXJpZW46IG5ldWVTZXJpZW4gfTsKfQoKLy8gLS0tLS0g U2NhdHRlcjogendlaSBQZXJzb25lbi1LZW5uemFobGVuIGdlZ2VuZWluYW5kZXIgLS0tLS0KLy8g c2NhdHRlclgvc2NhdHRlclkgcmVmZXJlbnppZXJlbiBQRVJTT05fTUFTU0UgKFphZWhsdW5nZW4g cHJvIFBlcnNvbiB1ZWJlciBkaWUKLy8gZ2VmaWx0ZXJ0ZW4gRmFrdGVuIOKAlCB6LkIuIE5hY2h0 ZGllbnN0ZSB2cy4gVXJsYXVic3RhZ2UgamUgUGVyc29uKS4KCmV4cG9ydCB2YXIgUEVSU09OX01B U1NFID0gWwogICAgeyBrZXk6ICdkaWVuc3RlJywgICAgIGxhYmVsOiAnRGllbnN0ZSBnZXNhbXQn LCB0ZXN0OiBmdW5jdGlvbihmKXsgcmV0dXJuIGYuaXN0RGllbnN0OyB9IH0sCiAgICB7IGtleTog J2ZydWVoJywgICAgICAgbGFiZWw6ICdGcsO8aGRpZW5zdGUnLCAgICB0ZXN0OiBmdW5jdGlvbihm KXsgcmV0dXJuIGYuc2NoaWNodCA9PT0gJ0YnOyB9IH0sCiAgICB7IGtleTogJ3NwYWV0JywgICAg ICAgbGFiZWw6ICdTcMOkdGRpZW5zdGUnLCAgICB0ZXN0OiBmdW5jdGlvbihmKXsgcmV0dXJuIGYu c2NoaWNodCA9PT0gJ1MnOyB9IH0sCiAgICB7IGtleTogJ25hY2h0JywgICAgICAgbGFiZWw6ICdO YWNodGRpZW5zdGUnLCAgIHRlc3Q6IGZ1bmN0aW9uKGYpeyByZXR1cm4gZi5zY2hpY2h0ID09PSAn Tic7IH0gfSwKICAgIHsga2V5OiAnd2UnLCAgICAgICAgICBsYWJlbDogJ1dFLURpZW5zdGUnLCAg ICAgdGVzdDogZnVuY3Rpb24oZil7IHJldHVybiBmLmlzdERpZW5zdCAmJiBmLmlzdFdFOyB9IH0s CiAgICB7IGtleTogJ2ZlaWVydGFnJywgICAgbGFiZWw6ICdGZWllcnRhZ3NkaWVuc3RlJywgdGVz dDogZnVuY3Rpb24oZil7IHJldHVybiBmLmlzdERpZW5zdCAmJiBmLmlzdEZlaWVydGFnOyB9IH0s CiAgICB7IGtleTogJ2ZlaWVydGFnTlJXJywgbGFiZWw6ICdOUlctRmVpZXJ0YWdzZGllbnN0ZScs IHRlc3Q6IGZ1bmN0aW9uKGYpeyByZXR1cm4gZi5pc3REaWVuc3QgJiYgZi5mZWllcnRhZ1R5cCA9 PT0gJ25ydyc7IH0gfSwKICAgIHsga2V5OiAnZGdsJywgICAgICAgICBsYWJlbDogJ0RHTC1FaW5z w6R0emUnLCAgIHRlc3Q6IGZ1bmN0aW9uKGYpeyByZXR1cm4gZi5yb2xsZSA9PT0gJ0RHTCc7IH0g fSwKICAgIHsga2V5OiAndXJsYXViJywgICAgICBsYWJlbDogJ1VybGF1YnN0YWdlJywgICAgdGVz dDogZnVuY3Rpb24oZil7IHJldHVybiBmLmNvZGUgPT09ICdVcmwnOyB9IH0sCiAgICB7IGtleTog J2ZvcnRiaWxkdW5nJywgbGFiZWw6ICdGb3J0YmlsZHVuZycsICAgIHRlc3Q6IGZ1bmN0aW9uKGYp eyByZXR1cm4gZi5rYXRlZ29yaWUgPT09ICdBdXMtL0ZvcnRiaWxkdW5nJzsgfSB9LAogICAgeyBr ZXk6ICdmcmVpJywgICAgICAgIGxhYmVsOiAnRnJlaS1UYWdlJywgICAgICB0ZXN0OiBmdW5jdGlv bihmKXsgcmV0dXJuIGYua2F0ZWdvcmllID09PSAnRnJlaSc7IH0gfQpdOwpleHBvcnQgZnVuY3Rp b24gcGVyc29uTWFzc0ZpbmRlbihrZXkpIHsKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgUEVSU09O X01BU1NFLmxlbmd0aDsgaSsrKSBpZiAoUEVSU09OX01BU1NFW2ldLmtleSA9PT0ga2V5KSByZXR1 cm4gUEVSU09OX01BU1NFW2ldOwogICAgcmV0dXJuIG51bGw7Cn0KCmZ1bmN0aW9uIF9hdXN3ZXJ0 ZW5TY2F0dGVyKHNwZWMsIGZha3RlbikgewogICAgdmFyIG14ID0gcGVyc29uTWFzc0ZpbmRlbihz cGVjLnNjYXR0ZXJYKSB8fCBQRVJTT05fTUFTU0VbM107IC8vIG5hY2h0CiAgICB2YXIgbXkgPSBw ZXJzb25NYXNzRmluZGVuKHNwZWMuc2NhdHRlclkpIHx8IFBFUlNPTl9NQVNTRVs2XTsgLy8gdXJs YXViCiAgICB2YXIgcHJvUGVyc29uID0ge307CiAgICBmYWt0ZW4uZm9yRWFjaChmdW5jdGlvbihm KSB7CiAgICAgICAgdmFyIGUgPSBwcm9QZXJzb25bZi5wZXJzb25JZF0gfHwgKHByb1BlcnNvbltm LnBlcnNvbklkXSA9IHsgbGFiZWw6IGYucGVyc29uTGFiZWwsIHg6IDAsIHk6IDAgfSk7CiAgICAg ICAgaWYgKG14LnRlc3QoZikpIGUueCsrOwogICAgICAgIGlmIChteS50ZXN0KGYpKSBlLnkrKzsK ICAgIH0pOwogICAgdmFyIHB1bmt0ZSA9IE9iamVjdC5rZXlzKHByb1BlcnNvbikubWFwKGZ1bmN0 aW9uKHBpZCl7IHJldHVybiBwcm9QZXJzb25bcGlkXTsgfSk7CiAgICByZXR1cm4gewogICAgICAg IGlzdExlZXI6IHB1bmt0ZS5sZW5ndGggPT09IDAsCiAgICAgICAgcHVua3RlOiBwdW5rdGUsCiAg ICAgICAga2F0ZWdvcmllbjogW10sIHNlcmllbjogW10sCiAgICAgICAgYWNoc2VYOiBteC5sYWJl bCwgYWNoc2VZOiBteS5sYWJlbAogICAgfTsKfQo= ### FILE: js/sync.js | 19474 Ly8gPT09IHN5bmMuanMgPT09Ci8vIExpdmUtU3luYy1DbGllbnQgKyBaZWxsLUxvY2stTWFuYWdl bWVudCBpbiBlaW5lbSBNb2R1bC4KLy8KLy8gTGl2ZS1TeW5jOiBXZWItV29ya2VyLWJhc2llcnRl cyBQb2xsaW5nLCBDcm9zcy1Ccm93c2VyLUF1ZmxldWNodGVuIHZvbgovLyByZW1vdGUtZ2VhZW5k ZXJ0ZW4gWmVsbGVuLCBTeW5jLVRvYXN0LURlYm91bmNlLgovLyBaZWxsLUxvY2s6IHBlc3NpbWlz dGljIENlbGwtTG9jay1DbGllbnQgKEFjcXVpcmUvRm9yY2UvUmVsZWFzZS9IZWFydGJlYXQpLAov LyBEaWZmLUFud2VuZHVuZyBmcmVtZGVyIExvY2tzIGF1ZnMgR3JpZCwgVG9vbHRpcC1UZXh0ZSBm dWVyIGxvY2tlZCBaZWxsZW4uCi8vCi8vIENyb3NzLU1vZHVsLUhvb2tzOiBlZGl0b3JTY2hsaWVz c2VuICsgemVsbGVWaXN1ZWxsQWt0dWFsaXNpZXJlbiB3ZXJkZW4KLy8genVyIExhdWZ6ZWl0IGlu aml6aWVydCAoWnlrbGVuIHZlcm1laWRlbiwgd2VpbCBncmlkX2VkaXRvci5qcyBhdWNoCi8vIGhp ZXJoaW4gaW1wb3J0aWVydCkuCgppbXBvcnQgeyBaIH0gZnJvbSAnLi9jb3JlX3N0YXRlLmpzJzsK aW1wb3J0IHsgZGF0dW1Gb3JtYXRERSwgYW56ZWlnZU5hbWVGdWVyS2VubnVuZyB9IGZyb20gJy4v Y29yZV91dGlsLmpzJzsKaW1wb3J0IHsgYXBpU2FmZSB9IGZyb20gJy4vY29yZV9hcGkuanMnOwpp bXBvcnQgeyB0b2FzdCwgYmVzdGFldGlnZW4gfSBmcm9tICcuL3VpX2RpYWxvZy5qcyc7CgpleHBv cnQgdmFyIHN5bmNIb29rcyA9IHsKICAgIGVkaXRvclNjaGxpZXNzZW46IG51bGwsICAgICAgICAg ICAvLyAob2huZVJlbGVhc2U6IGJvb2wpIC0+IHZvaWQKICAgIHplbGxlVmlzdWVsbEFrdHVhbGlz aWVyZW46IG51bGwsICAvLyBncmlkL3JlbmRlci5qcwogICAgaGlud2Vpc2VBa3R1YWxpc2llcnQ6 IG51bGwgICAgICAgIC8vIChoaW53ZWlzZTogYXJyYXkpIC0+IHZvaWQgKGhpbndlaXNlLmpzIHZp YSBhcHAuanMpCn07CgovLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci8vIExJVkUtU1lOQwovLyA9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09CgovLyA9PT09PSBTeW5jLVRvYXN0LURlYm91bmNlID09PT09Ci8vIE1l aHJlcmUgTGl2ZS1FdmVudHMgaW4ga3VyemVyIEZvbGdlIHp1c2FtbWVuZmFzc2VuLCBzdGF0dCBm dWVyIGplZGUKLy8gQWVuZGVydW5nIGVpbmVuIHNlcGFyYXRlbiBUb2FzdC4KCnZhciBTWU5DX1RP QVNUX1BVRkZFUiA9IFtdOwp2YXIgU1lOQ19UT0FTVF9USU1FUiA9IG51bGw7CgpleHBvcnQgZnVu Y3Rpb24gc3luY1RvYXN0RGVib3VuY2VkKHRleHQpIHsKICAgIFNZTkNfVE9BU1RfUFVGRkVSLnB1 c2godGV4dCk7CiAgICBpZiAoU1lOQ19UT0FTVF9USU1FUikgcmV0dXJuOwogICAgU1lOQ19UT0FT VF9USU1FUiA9IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CiAgICAgICAgU1lOQ19UT0FTVF9USU1F UiA9IG51bGw7CiAgICAgICAgdmFyIGFuemFobCA9IFNZTkNfVE9BU1RfUFVGRkVSLmxlbmd0aDsK ICAgICAgICBpZiAoYW56YWhsID09PSAxKSB0b2FzdChTWU5DX1RPQVNUX1BVRkZFUlswXSwgJ2lu Zm8nKTsKICAgICAgICBlbHNlIGlmIChhbnphaGwgPiAxKSB0b2FzdChhbnphaGwgKyAnIExpdmUt w4RuZGVydW5nZW4uIExldHp0ZSDDhG5kZXJ1bmc6ICcgKyBTWU5DX1RPQVNUX1BVRkZFUlthbnph aGwgLSAxXSwgJ2luZm8nKTsKICAgICAgICBTWU5DX1RPQVNUX1BVRkZFUiA9IFtdOwogICAgfSwg MzUwKTsKfQoKLy8gPT09PT0gVmlzdWVsbGVzIEF1ZmxldWNodGVuIChDU1MtS2xhc3NlIHplbGxl LWZsYXNoKSA9PT09PQoKZXhwb3J0IGZ1bmN0aW9uIHN5bmNGbGFzaChlbGVtLCBrbGFzc2UpIHsK ICAgIGlmICghZWxlbSkgcmV0dXJuOwogICAgdmFyIGsgPSBrbGFzc2UgfHwgJ3plbGxlLWZsYXNo JzsKICAgIGVsZW0uY2xhc3NMaXN0LnJlbW92ZShrKTsKICAgIHZvaWQgZWxlbS5vZmZzZXRXaWR0 aDsgIC8vIFJlZmxvdywgZGFtaXQgZGllIEFuaW1hdGlvbiBuZXUgc3RhcnRldAogICAgZWxlbS5j bGFzc0xpc3QuYWRkKGspOwogICAgLy8gRGF1ZXIgYXVzIGRlbSBFcnNjaGVpbnVuZ3NiaWxkLUVk aXRvciBsZXNlbiAoLS1tc2YtZGF1ZXIgaW4gbXMsCiAgICAvLyBEZWZhdWx0IDE1MDAgbXMpLiAr NTAgbXMgU2ljaGVyaGVpdHMtUG9sc3RlciwgZGFtaXQgZGVyIGZpbmFsZQogICAgLy8gS2V5ZnJh bWUgbm9jaCBncmVpZnQsIGJldm9yIHdpciBkaWUgS2xhc3NlIGVudGZlcm5lbi4KICAgIHZhciBk YXVlciA9IHBhcnNlSW50KGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50 KS5nZXRQcm9wZXJ0eVZhbHVlKCctLW1zZi1kYXVlcicpLCAxMCk7CiAgICBpZiAoaXNOYU4oZGF1 ZXIpIHx8IGRhdWVyIDwgMjAwKSBkYXVlciA9IDE1MDA7CiAgICBzZXRUaW1lb3V0KGZ1bmN0aW9u KCkgeyBlbGVtLmNsYXNzTGlzdC5yZW1vdmUoayk7IH0sIGRhdWVyICsgNTApOwp9CgpleHBvcnQg ZnVuY3Rpb24gc3luY0ZsYXNoWmVsbGUoZFN0ciwgcGlkKSB7CiAgICB2YXIgeiA9IGRvY3VtZW50 LnF1ZXJ5U2VsZWN0b3IoJy5ncmlkLXplbGxlW2RhdGEtZGF0dW09IicgKyBkU3RyICsgJyJdW2Rh dGEtcGVyc29uPSInICsgcGlkICsgJyJdJyk7CiAgICBzeW5jRmxhc2goeiwgJ3plbGxlLWZsYXNo Jyk7Cn0KCi8vID09PT09IENoYW5nZS1Mb2ctQW53ZW5kdW5nID09PT09CgpleHBvcnQgZnVuY3Rp b24gc3luY0NoYW5nZXNBbndlbmRlbihjaGFuZ2VzKSB7CiAgICBpZiAoIWNoYW5nZXMgfHwgIWNo YW5nZXMubGVuZ3RoKSByZXR1cm47CiAgICB2YXIgYmVudXR6ZXJMb3dlciA9IChaLmJlbnV0emVy IHx8ICcnKS50b0xvd2VyQ2FzZSgpOwogICAgdmFyIGJlbnV0emVyS3VyeiA9IGJlbnV0emVyTG93 ZXIuaW5kZXhPZignXFwnKSA+PSAwID8gYmVudXR6ZXJMb3dlci5zcGxpdCgnXFwnKS5wb3AoKSA6 IGJlbnV0emVyTG93ZXI7CiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNoYW5nZXMubGVuZ3RoOyBp KyspIHsKICAgICAgICB2YXIgYyA9IGNoYW5nZXNbaV07CiAgICAgICAgdmFyIHZvbiA9IChjLnZv biB8fCAnJykudG9Mb3dlckNhc2UoKTsKICAgICAgICB2YXIgZWlnZW4gPSAodm9uID09PSBiZW51 dHplckxvd2VyIHx8IHZvbiA9PT0gYmVudXR6ZXJLdXJ6KTsKICAgICAgICBpZiAoYy5raW5kID09 PSAnemVsbGUnKSB7CiAgICAgICAgICAgIGlmICghWi5wbGFudW5nLmVpbnRyYWVnZSkgWi5wbGFu dW5nLmVpbnRyYWVnZSA9IHt9OwogICAgICAgICAgICBpZiAoIVoucGxhbnVuZy5laW50cmFlZ2Vb Yy5kYXR1bV0pIFoucGxhbnVuZy5laW50cmFlZ2VbYy5kYXR1bV0gPSB7fTsKICAgICAgICAgICAg aWYgKGMubmV1KSBaLnBsYW51bmcuZWludHJhZWdlW2MuZGF0dW1dW2MucGVyc29uSWRdID0gYy5u ZXU7CiAgICAgICAgICAgIGVsc2UgZGVsZXRlIFoucGxhbnVuZy5laW50cmFlZ2VbYy5kYXR1bV1b Yy5wZXJzb25JZF07CiAgICAgICAgICAgIGlmICh0eXBlb2Ygc3luY0hvb2tzLnplbGxlVmlzdWVs bEFrdHVhbGlzaWVyZW4gPT09ICdmdW5jdGlvbicpIHsKICAgICAgICAgICAgICAgIHN5bmNIb29r cy56ZWxsZVZpc3VlbGxBa3R1YWxpc2llcmVuKGMuZGF0dW0sIGMucGVyc29uSWQsIGMubmV1IHx8 ICcnKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoIWVpZ2VuKSB7CiAgICAgICAgICAg ICAgICBzeW5jRmxhc2haZWxsZShjLmRhdHVtLCBjLnBlcnNvbklkKTsKICAgICAgICAgICAgICAg IHZhciBsYWJlbCA9IGMubmV1ID8gYy5uZXUgOiAnKGxlZXIpJzsKICAgICAgICAgICAgICAgIHZh ciByb2xsZUhpbndlaXMgPSAoYy5yb2xsZSAmJiBjLnJvbGxlICE9PSAncmVndWxhZXInKSA/ICgn IFsnICsgYy5yb2xsZSArICddJykgOiAnJzsKICAgICAgICAgICAgICAgIHN5bmNUb2FzdERlYm91 bmNlZChhbnplaWdlTmFtZUZ1ZXJLZW5udW5nKGMudm9uKSArIHJvbGxlSGlud2VpcyArICcgc2V0 enRlICcgKyBsYWJlbCArICcgYW0gJyArIGRhdHVtRm9ybWF0REUoYy5kYXR1bSkpOwogICAgICAg ICAgICB9CiAgICAgICAgfSBlbHNlIGlmIChjLmtpbmQgPT09ICdrb21tZW50YXInKSB7CiAgICAg ICAgICAgIGlmICghWi5wbGFudW5nLmtvbW1lbnRhcmUpIFoucGxhbnVuZy5rb21tZW50YXJlID0g e307CiAgICAgICAgICAgIGlmICghWi5wbGFudW5nLmtvbW1lbnRhcmVbYy5kYXR1bV0pIFoucGxh bnVuZy5rb21tZW50YXJlW2MuZGF0dW1dID0ge307CiAgICAgICAgICAgIGlmIChjLm5ldSkgewog ICAgICAgICAgICAgICAgWi5wbGFudW5nLmtvbW1lbnRhcmVbYy5kYXR1bV1bYy5wZXJzb25JZF0g PSB7CiAgICAgICAgICAgICAgICAgICAgdGV4dDogYy5uZXUsCiAgICAgICAgICAgICAgICAgICAg Z2VhZW5kZXJ0QW06IGMuemVpdHN0ZW1wZWwgfHwgbmV3IERhdGUoKS50b0lTT1N0cmluZygpLAog ICAgICAgICAgICAgICAgICAgIGdlYWVuZGVydFZvbjogYy52b24gfHwgJycKICAgICAgICAgICAg ICAgIH07CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBkZWxldGUgWi5wbGFu dW5nLmtvbW1lbnRhcmVbYy5kYXR1bV1bYy5wZXJzb25JZF07CiAgICAgICAgICAgIH0KICAgICAg ICAgICAgaWYgKHR5cGVvZiBzeW5jSG9va3MuemVsbGVWaXN1ZWxsQWt0dWFsaXNpZXJlbiA9PT0g J2Z1bmN0aW9uJykgewogICAgICAgICAgICAgICAgc3luY0hvb2tzLnplbGxlVmlzdWVsbEFrdHVh bGlzaWVyZW4oYy5kYXR1bSwgYy5wZXJzb25JZCwgKChaLnBsYW51bmcuZWludHJhZWdlIHx8IHt9 KVtjLmRhdHVtXSB8fCB7fSlbYy5wZXJzb25JZF0gfHwgJycpOwogICAgICAgICAgICB9CiAgICAg ICAgICAgIGlmICghZWlnZW4pIHsKICAgICAgICAgICAgICAgIHN5bmNGbGFzaFplbGxlKGMuZGF0 dW0sIGMucGVyc29uSWQpOwogICAgICAgICAgICAgICAgc3luY1RvYXN0RGVib3VuY2VkKGFuemVp Z2VOYW1lRnVlcktlbm51bmcoYy52b24pICsgJyDDpG5kZXJ0ZSBLb21tZW50YXIgYW0gJyArIGRh dHVtRm9ybWF0REUoYy5kYXR1bSkpOwogICAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIGlmIChj LmtpbmQgPT09ICdsb2NrX2ZvcmNlJykgewogICAgICAgICAgICBpZiAoIWVpZ2VuICYmIFouemVs bExvY2sgJiYgWi56ZWxsTG9jay5kYXR1bSA9PT0gYy5kYXR1bSAmJiBTdHJpbmcoWi56ZWxsTG9j ay5wZXJzb25JZCkgPT09IFN0cmluZyhjLnBlcnNvbklkKSkgewogICAgICAgICAgICAgICAgdG9h c3QoJ0RlaW5lIEJlYXJiZWl0dW5ncy1TcGVycmUgd3VyZGUgdm9uICcgKyBhbnplaWdlTmFtZUZ1 ZXJLZW5udW5nKGMudm9uKSArICcgw7xiZXJub21tZW4uJywgJ3dhcm51bmcnKTsKICAgICAgICAg ICAgICAgIFouemVsbExvY2sudG9rZW4gPSBudWxsOwogICAgICAgICAgICAgICAgaWYgKHR5cGVv ZiBzeW5jSG9va3MuZWRpdG9yU2NobGllc3NlbiA9PT0gJ2Z1bmN0aW9uJykgewogICAgICAgICAg ICAgICAgICAgIHN5bmNIb29rcy5lZGl0b3JTY2hsaWVzc2VuKHRydWUpOwogICAgICAgICAgICAg ICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQp9CgovLyA9PT09PSBTeW5jLVdvcmtl ciBzdGFydGVuID09PT09CgpleHBvcnQgZnVuY3Rpb24gc3luY1dvcmtlclN0YXJ0ZW4oKSB7CiAg ICBpZiAoWi5zeW5jV29ya2VyKSByZXR1cm47CiAgICB0cnkgewogICAgICAgIC8vIENhY2hlLUJ1 c3RlciB2ZXJoaW5kZXJ0LCBkYXNzIGVpbiBCcm93c2VyIGVpbmUgYWx0ZSBzeW5jLXdvcmtlci5q cwogICAgICAgIC8vIGF1cyBkZW0gSFRUUC1DYWNoZSBudXR6dCDigJQgYmVpIFdvcmtlci1Mb2dp ay1BZW5kZXJ1bmdlbiB3YWVyZSBkYXMKICAgICAgICAvLyBzb25zdCBlaW4gUGhhbnRvbS1CdWcg KFdvcmtlciBsYWV1ZnQsIGFiZXIgYWx0ZSBDb2RlLVBmYWRlKS4KICAgICAgICAvLyBEZXIgUXVl cnktU3RyaW5nIHdpcmQgbmljaHQgdm9tIFNlcnZlciBpbnRlcnByZXRpZXJ0LgogICAgICAgIFou c3luY1dvcmtlciA9IG5ldyBXb3JrZXIoJ3N5bmMtd29ya2VyLmpzP3Y9MjAyNi0wNi0xNS1zZXEn KTsKICAgICAgICBjb25zb2xlLmluZm8oJ1tWSTNdIHN5bmMtd29ya2VyIGVyc3RlbGx0Jyk7CiAg ICAgICAgLy8gV2F0Y2hkb2c6IHdlbm4gbmFjaCA4IHMga2VpbiBQdWxzIG9kZXIgbm9jaCBrZWlu IFN5bmMtUmVzdWx0YXQKICAgICAgICAvLyBhbmdla29tbWVuIGlzdCwgaGF0IGRlciBXb3JrZXIg ZW50d2VkZXIgbmljaHQgZ2VzdGFydGV0IG9kZXIgZGFzCiAgICAgICAgLy8gUG9sbGluZyBsYWV1 ZnQgaW5zIExlZXJlLiBUb2FzdCBmdWVyIFN1cGVyVXNlciwgZGFtaXQga2xhciBpc3QKICAgICAg ICAvLyB3byBkZXIgQnVnIHNpdHp0LgogICAgICAgIHZhciBzdGFydFRzID0gRGF0ZS5ub3coKTsK ICAgICAgICBaLnN5bmNXb3JrZXIub25lcnJvciA9IGZ1bmN0aW9uKGVycikgewogICAgICAgICAg ICBjb25zb2xlLmVycm9yKCdbVkkzXSBzeW5jLXdvcmtlciBvbmVycm9yOicsIGVyciAmJiAoZXJy Lm1lc3NhZ2UgfHwgZXJyLmZpbGVuYW1lICsgJzonICsgZXJyLmxpbmVubykgfHwgZXJyKTsKICAg ICAgICAgICAgaWYgKFoucmVjaHRlICYmIFoucmVjaHRlLmlzdFN1cGVyVXNlcikgewogICAgICAg ICAgICAgICAgdG9hc3QoJ1N5bmMtV29ya2VyLUZlaGxlciDigJQgRGV0YWlscyBpbiBEZXZUb29s cy1Lb25zb2xlJywgJ2ZlaGxlcicpOwogICAgICAgICAgICB9CiAgICAgICAgfTsKICAgICAgICBa LnN5bmNXb3JrZXIub25tZXNzYWdlID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICBpZiAoIWUu ZGF0YSkgcmV0dXJuOwogICAgICAgICAgICBpZiAoZS5kYXRhLnR5cGUgPT09ICdwdWxzJykgewog ICAgICAgICAgICAgICAgY29uc29sZS5pbmZvKCdbVkkzXSBzeW5jLXdvcmtlciBwdWxzJyArIChl LmRhdGEucGhhc2UgPyAnICgnK2UuZGF0YS5waGFzZSsnKScgOiAnJykgKyAnIG5hY2ggJyArIChE YXRlLm5vdygpIC0gc3RhcnRUcykgKyAnIG1zJyk7CiAgICAgICAgICAgICAgICBaLnN5bmNXb3Jr ZXJMZWJ0ID0gdHJ1ZTsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQogICAg ICAgICAgICBpZiAoZS5kYXRhLnR5cGUgPT09ICdzeW5jJykgewogICAgICAgICAgICAgICAgaWYg KGUuZGF0YS5zZXJ2ZXJUcykgWi5sYXN0U3luY1RzID0gZS5kYXRhLnNlcnZlclRzOwogICAgICAg ICAgICAgICAgaWYgKGUuZGF0YS5zZXJ2ZXJTZXEgIT0gbnVsbCkgWi5sYXN0U3luY1NlcSA9IGUu ZGF0YS5zZXJ2ZXJTZXE7CiAgICAgICAgICAgICAgICBpZiAoZS5kYXRhLmNoYW5nZXMpIHN5bmND aGFuZ2VzQW53ZW5kZW4oZS5kYXRhLmNoYW5nZXMpOwogICAgICAgICAgICAgICAgaWYgKGUuZGF0 YS5sb2NrcykgICBsb2NrU3RhdGVBbndlbmRlbihlLmRhdGEubG9ja3MpOwogICAgICAgICAgICAg ICAgLy8gSGlud2Vpcy1TeXN0ZW06IExpc3RlIHZvbSBTZXJ2ZXIgdWViZXJuZWhtZW4gKyBCYW5u ZXIvQmFkZ2UKICAgICAgICAgICAgICAgIC8vIG5ldSByZW5kZXJuLiBzeW5jSG9va3MuaGlud2Vp c2VBa3R1YWxpc2llcnQgd2lyZCBpbiBhcHAuanMKICAgICAgICAgICAgICAgIC8vIG1pdCBoaW53 ZWlzZS5qcyB2ZXJkcmFodGV0IChDcm9zcy1Nb2R1bCBvaG5lIHppcmt1bGFlcmVuIEltcG9ydCku CiAgICAgICAgICAgICAgICBpZiAoZS5kYXRhLmhpbndlaXNlICYmIHN5bmNIb29rcy5oaW53ZWlz ZUFrdHVhbGlzaWVydCkgewogICAgICAgICAgICAgICAgICAgIHN5bmNIb29rcy5oaW53ZWlzZUFr dHVhbGlzaWVydChlLmRhdGEuaGlud2Vpc2UpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAg ICB9IGVsc2UgaWYgKGUuZGF0YS50eXBlID09PSAncGVybWlzc2lvbl9sb3N0JykgewogICAgICAg ICAgICAgICAgLy8gQXVkaXQtUGhhc2UgQS40ICgyMDI2LTA1LTIxKTogV29ya2VyIGhhdCBkcmVp IE1hbCBpbiBGb2xnZQogICAgICAgICAgICAgICAgLy8gNDAzIHZvbiAvYXBpL3BsYW51bmcvY2hh bmdlcyBvZGVyIC9hcGkvbG9jay96ZWxsZW4gZXJoYWx0ZW4uCiAgICAgICAgICAgICAgICAvLyBW ZXJtdXRsaWNoIGhhdCBlaW4gYW5kZXJlciBTVSBkaWUgUm9sbGUgZW50em9nZW4g4oCUIFVzZXIK ICAgICAgICAgICAgICAgIC8vIG11c3MgbmV1IGxhZGVuLCBkYW1pdCBaLnJlY2h0ZSBrb3JyZWt0 IGFrdHVhbGlzaWVydCB3aXJkLgogICAgICAgICAgICAgICAgLy8KICAgICAgICAgICAgICAgIC8v IFVYLUF1ZGl0IFNwcmludCAxLjYgKDIwMjYtMDUtMjkpOiBUb2FzdCB2ZXJzY2h3aW5kZXQgbmFj aCA0cwogICAgICAgICAgICAgICAgLy8gdW5kIGthbm4gw7xiZXJzZWhlbiB3ZXJkZW4g4oCUIHN0 YXR0ZGVzc2VuIG1vZGFsZXIgRGlhbG9nIG1pdAogICAgICAgICAgICAgICAgLy8gUmVsb2FkLUFj dGlvbiwgZGFtaXQgZGVyIFVzZXIgYWt0aXYgcmVhZ2llcmVuIG11c3MuCiAgICAgICAgICAgICAg ICBiZXN0YWV0aWdlbigKICAgICAgICAgICAgICAgICAgICAnRGVpbmUgQmVyZWNodGlndW5nIHd1 cmRlIHfDpGhyZW5kIGRlciBTaXR6dW5nIGdlw6RuZGVydC4gJyArCiAgICAgICAgICAgICAgICAg ICAgJ0JpdHRlIGRpZSBTZWl0ZSBuZXUgbGFkZW4sIGRhbWl0IGRpZSBha3R1ZWxsZW4gUmVjaHRl IGdyZWlmZW4uJywKICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbigpIHsgbG9jYXRpb24ucmVs b2FkKCk7IH0sCiAgICAgICAgICAgICAgICAgICAgeyB0aXRlbDogJ0JlcmVjaHRpZ3VuZyBnZcOk bmRlcnQnLCBqYVRleHQ6ICdOZXUgbGFkZW4nIH0KICAgICAgICAgICAgICAgICk7CiAgICAgICAg ICAgIH0KICAgICAgICB9OwogICAgICAgIFouc3luY1dvcmtlci5wb3N0TWVzc2FnZSh7IGNtZDog J3N0YXJ0Jywgc2VpdDogWi5sYXN0U3luY1RzLCBzZWl0U2VxOiBaLmxhc3RTeW5jU2VxIH0pOwog ICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3Zpc2liaWxpdHljaGFuZ2UnLCBmdW5j dGlvbigpIHsKICAgICAgICAgICAgWi5zeW5jV29ya2VyLnBvc3RNZXNzYWdlKHsgY21kOiBkb2N1 bWVudC5oaWRkZW4gPyAncGF1c2UnIDogJ3Jlc3VtZScsIHNlaXQ6IFoubGFzdFN5bmNUcywgc2Vp dFNlcTogWi5sYXN0U3luY1NlcSB9KTsKICAgICAgICB9KTsKICAgICAgICAvLyBXYXRjaGRvZzog bmFjaCA4IHMgcHJ1ZWZlbiwgb2IgZGVyIFdvcmtlciBnZWFudHdvcnRldCBoYXQuIFdlbm4KICAg ICAgICAvLyBuaWNodCwgbGF1dHN0YXJrIG1lbGRlbiDigJQgc29uc3Qgc3RpbGxlciBMaXZlLVN5 bmMtVG9kLgogICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGlmICgh Wi5zeW5jV29ya2VyTGVidCkgewogICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignW1ZJM10g c3luYy13b3JrZXIgaGF0IG5hY2ggOCBzIG5vY2gga2VpbmVuIFB1bHMgZ2VzZW5kZXQg4oCUIFdv cmtlciBzdGFydGV0IG5pY2h0IG9kZXIgcG9sbHQgbmljaHRzLicpOwogICAgICAgICAgICAgICAg aWYgKFoucmVjaHRlICYmIFoucmVjaHRlLmlzdFN1cGVyVXNlcikgewogICAgICAgICAgICAgICAg ICAgIHRvYXN0KCdMaXZlLVN5bmMgbMOkdWZ0IG5pY2h0IOKAlCBEZXRhaWxzIGluIERldlRvb2xz LUtvbnNvbGUnLCAnZmVobGVyJyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAg ICAgICB9LCA4MDAwKTsKICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICAvLyBGYWxsYmFjazogUG9s bGluZyBpbSBNYWludGhyZWFkICh6LkIuIGZpbGU6Ly8gc3RhdHQgaHR0cDovLykKICAgICAgICBz ZXRJbnRlcnZhbChmdW5jdGlvbigpIHsKICAgICAgICAgICAgaWYgKGRvY3VtZW50LmhpZGRlbikg cmV0dXJuOwogICAgICAgICAgICB2YXIgc3EgPSAoWi5sYXN0U3luY1NlcSAhPSBudWxsKSA/IFN0 cmluZyhaLmxhc3RTeW5jU2VxKSA6ICcnOwogICAgICAgICAgICBmZXRjaCgnL2FwaS9wbGFudW5n L2NoYW5nZXM/c2VpdF9zZXE9JyArIGVuY29kZVVSSUNvbXBvbmVudChzcSkgKyAnJnNlaXQ9JyAr IGVuY29kZVVSSUNvbXBvbmVudChaLmxhc3RTeW5jVHMgfHwgJycpKQogICAgICAgICAgICAgICAg LnRoZW4oZnVuY3Rpb24ocikgeyByZXR1cm4gci5qc29uKCk7IH0pLnRoZW4oZnVuY3Rpb24oZCkg ewogICAgICAgICAgICAgICAgICAgIGlmIChkLnNlcnZlclRzKSBaLmxhc3RTeW5jVHMgPSBkLnNl cnZlclRzOwogICAgICAgICAgICAgICAgICAgIGlmIChkLnNlcnZlclNlcSAhPSBudWxsKSBaLmxh c3RTeW5jU2VxID0gZC5zZXJ2ZXJTZXE7CiAgICAgICAgICAgICAgICAgICAgc3luY0NoYW5nZXNB bndlbmRlbihkLmNoYW5nZXMgfHwgW10pOwogICAgICAgICAgICAgICAgfSkuY2F0Y2goZnVuY3Rp b24oKSB7fSk7CiAgICAgICAgICAgIGZldGNoKCcvYXBpL2xvY2svemVsbGVuJykKICAgICAgICAg ICAgICAgIC50aGVuKGZ1bmN0aW9uKHIpIHsgcmV0dXJuIHIuanNvbigpOyB9KS50aGVuKGZ1bmN0 aW9uKGQpIHsKICAgICAgICAgICAgICAgICAgICBsb2NrU3RhdGVBbndlbmRlbihkLmxvY2tzIHx8 IFtdKTsKICAgICAgICAgICAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uKCkge30pOwogICAgICAgIH0s IDMwMDApOwogICAgfQp9CgovLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci8vIFpFTEwtTE9DSwovLyA9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09CgovLyA9PT09PSBJbnRlci1UYWItTG9jay1Ccm9hZGNhc3QgKFNw cmludCAzIOKAlCBSb2J1c3RoZWl0IDIwMjYtMDUtMjgpID09PT09Ci8vIFdlbm4gZGVyIGdsZWlj aGUgV2luZG93cy1Vc2VyIGRpZSBBcHAgaW4gbWVocmVyZW4gQnJvd3Nlci1UYWJzIG9mZmVuIGhh dAovLyAoei5CLiBlaW5lbiBUYWIgaW4gZGVyIFBsYW50YWZlbCwgZWluZW4gaW4gZGVyIFBlcnNv bmFsdmVyd2FsdHVuZyksIGthbm4KLy8gamVkZXIgVGFiIGdsZWljaHplaXRpZyBhdWYgZGllc2Vs YmUgWmVsbGUgTG9jay1BY3F1aXJlIHBvc3Rlbi4gU2VydmVyCi8vIHZlcmdsZWljaHQgbnVyICd1 c2VybmFtZSAtaWVxJywgZGFoZXIgYmVrb21tZW4gYmVpZGUgVGFicyBzY2hlaW5iYXIgRXJmb2xn Ci8vIOKAlCBhYmVyIGRlciBUb2tlbiBhdXMgVGFiIEEgd2lyZCBkdXJjaCBkYXMgVG9rZW4gYXVz IFRhYiBCIHVuYmVtZXJrdAovLyB1ZWJlcnNjaHJpZWJlbi4gSGVhcnRiZWF0IGF1cyBUYWIgQSB0 cmlmZnQgZGFubiBhdWYgNDA0ICgiZGVpbiBMb2NrIHdlZyIpLgovLyBNaXQgQnJvYWRjYXN0Q2hh bm5lbCBrdWVuZGlnZW4gd2lyIEFjcXVpcmUvUmVsZWFzZSB6d2lzY2hlbiBUYWJzIGFuIHVuZAov LyB3YXJuZW4gZGVuIFVzZXIgdm9yIChTZXJ2ZXItQWNxdWlyZSBsYWV1ZnQgdHJvdHpkZW0g4oCU IENoYW5uZWwgaXN0IG51cgovLyBJbnRlci1UYWItU2ljaHQsIGtlaW5lIEF1dGgtUXVlbGxlKS4K CnZhciBCQyA9ICh0eXBlb2YgQnJvYWRjYXN0Q2hhbm5lbCAhPT0gJ3VuZGVmaW5lZCcpID8gbmV3 IEJyb2FkY2FzdENoYW5uZWwoJ3ZpMy16ZWxsLWxvY2snKSA6IG51bGw7CnZhciBCQ19SRU1PVEVf TE9DS1MgPSB7fTsgIC8vICdkYXR1bXxwaWQnIC0+IDEgKHZvbiBhbmRlcmVuIFRhYnMgZ2VtZWxk ZXQpCgppZiAoQkMpIHsKICAgIEJDLm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2KSB7CiAgICAgICAg dmFyIG1zZyA9IGV2LmRhdGEgfHwge307CiAgICAgICAgaWYgKCFtc2cudHlwZSB8fCAhbXNnLmRh dHVtIHx8IG1zZy5waWQgPT0gbnVsbCkgcmV0dXJuOwogICAgICAgIHZhciBrZXkgPSBtc2cuZGF0 dW0gKyAnfCcgKyBTdHJpbmcobXNnLnBpZCk7CiAgICAgICAgaWYgKG1zZy50eXBlID09PSAnYWNx dWlyZWQnKSBCQ19SRU1PVEVfTE9DS1Nba2V5XSA9IDE7CiAgICAgICAgZWxzZSBpZiAobXNnLnR5 cGUgPT09ICdyZWxlYXNlZCcpIGRlbGV0ZSBCQ19SRU1PVEVfTE9DS1Nba2V5XTsKICAgIH07Cn0K CmZ1bmN0aW9uIGJjQW5ub3VuY2VBY3F1aXJlKGRhdHVtLCBwaWQpIHsKICAgIGlmIChCQykgdHJ5 IHsgQkMucG9zdE1lc3NhZ2UoeyB0eXBlOiAnYWNxdWlyZWQnLCBkYXR1bTogZGF0dW0sIHBpZDog U3RyaW5nKHBpZCkgfSk7IH0gY2F0Y2ggKGUpIHt9Cn0KZnVuY3Rpb24gYmNBbm5vdW5jZVJlbGVh c2UoZGF0dW0sIHBpZCkgewogICAgaWYgKEJDKSB0cnkgeyBCQy5wb3N0TWVzc2FnZSh7IHR5cGU6 ICdyZWxlYXNlZCcsIGRhdHVtOiBkYXR1bSwgcGlkOiBTdHJpbmcocGlkKSB9KTsgfSBjYXRjaCAo ZSkge30KfQoKLy8gPT09PT0gRW5kcG9pbnRzID09PT09CgpleHBvcnQgZnVuY3Rpb24gbG9ja1pl bGxlQWNxdWlyZShkYXR1bSwgcGVyc29uSWQpIHsKICAgIHZhciBrZXkgPSBkYXR1bSArICd8JyAr IFN0cmluZyhwZXJzb25JZCk7CiAgICBpZiAoQkNfUkVNT1RFX0xPQ0tTW2tleV0pIHsKICAgICAg ICAvLyBWb3ItV2FybnVuZzogZWluIGFuZGVyZXIgVGFiIGRpZXNlcyBCcm93c2VycyBoYXQgZGll IFplbGxlIGdlcmFkZQogICAgICAgIC8vIG9mZmVuLiBXaXIgdmVyc3VjaGVuIGRlbiBMb2NrIHRy b3R6ZGVtIChVc2VyIGVudHNjaGVpZGV0KTsgU2VydmVyLQogICAgICAgIC8vIEFudHdvcnQgaXN0 IGRpZSBmaW5hbGUgV2FocmhlaXQuCiAgICAgICAgdG9hc3QoJ0RpZXNlIFplbGxlIGlzdCBpbiBl aW5lbSBhbmRlcmVuIFRhYiBnZcO2ZmZuZXQg4oCUIGRlciB6dWxldHp0IGdlw7ZmZm5ldGUgVGFi IGdld2lubnQuJywgJ3dhcm51bmcnKTsKICAgIH0KICAgIHJldHVybiBhcGlTYWZlKCcvYXBpL2xv Y2svemVsbGUnLCB7CiAgICAgICAgbWV0aG9kOiAnUE9TVCcsCiAgICAgICAgaGVhZGVyczogeyAn Q29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nIH0sCiAgICAgICAgYm9keTogSlNPTi5z dHJpbmdpZnkoeyBkYXR1bTogZGF0dW0sIHBlcnNvbklkOiBTdHJpbmcocGVyc29uSWQpIH0pCiAg ICB9KS50aGVuKGZ1bmN0aW9uKHJlcykgewogICAgICAgIGlmIChyZXMgJiYgcmVzLnN0YXR1cyA9 PT0gMjAwKSBiY0Fubm91bmNlQWNxdWlyZShkYXR1bSwgcGVyc29uSWQpOwogICAgICAgIHJldHVy biByZXM7CiAgICB9KTsKfQoKZXhwb3J0IGZ1bmN0aW9uIGxvY2taZWxsZUZvcmNlKGRhdHVtLCBw ZXJzb25JZCkgewogICAgcmV0dXJuIGFwaVNhZmUoJy9hcGkvbG9jay96ZWxsZS9mb3JjZScsIHsK ICAgICAgICBtZXRob2Q6ICdQT1NUJywKICAgICAgICBoZWFkZXJzOiB7ICdDb250ZW50LVR5cGUn OiAnYXBwbGljYXRpb24vanNvbicgfSwKICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7IGRh dHVtOiBkYXR1bSwgcGVyc29uSWQ6IFN0cmluZyhwZXJzb25JZCkgfSkKICAgIH0pOwp9CgpleHBv cnQgZnVuY3Rpb24gbG9ja1plbGxlUmVsZWFzZSh0b2tlbikgewogICAgaWYgKCF0b2tlbikgcmV0 dXJuIFByb21pc2UucmVzb2x2ZSh7IHN0YXR1czogMjAwLCBib2R5OiB7IG9rOiB0cnVlIH0gfSk7 CiAgICAvLyBUYWItQnJvYWRjYXN0IChTcHJpbnQgMyk6IGFuZGVyZSBUYWJzIGR1ZXJmZW4gZGll IFplbGxlIGpldHp0IHdpZWRlcgogICAgLy8gc3BlcnJlbi4gV2lyIGtlbm5lbiBEYXR1bSArIFBl cnNvbklkIGF1cyBaLnplbGxMb2NrIOKAlCBmYWxscyBkaWUgbm9jaAogICAgLy8gZ2VzZXR6dCBz aW5kIChyZWxlYXNlIHdpcmQgb2Z0IHZvciBkZW0gVG9rZW4tbnVsbCBnZXJ1ZmVuKS4KICAgIGlm IChaLnplbGxMb2NrICYmIFouemVsbExvY2suZGF0dW0gJiYgWi56ZWxsTG9jay5wZXJzb25JZCAh PSBudWxsKSB7CiAgICAgICAgYmNBbm5vdW5jZVJlbGVhc2UoWi56ZWxsTG9jay5kYXR1bSwgWi56 ZWxsTG9jay5wZXJzb25JZCk7CiAgICB9CiAgICByZXR1cm4gYXBpU2FmZSgnL2FwaS9sb2NrL3pl bGxlJywgewogICAgICAgIG1ldGhvZDogJ0RFTEVURScsCiAgICAgICAgaGVhZGVyczogeyAnQ29u dGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nIH0sCiAgICAgICAgYm9keTogSlNPTi5zdHJp bmdpZnkoeyB0b2tlbjogdG9rZW4gfSkKICAgIH0pOwp9CgpleHBvcnQgZnVuY3Rpb24gbG9ja1pl bGxlSGVhcnRiZWF0U2VuZGVuKHRva2VuKSB7CiAgICByZXR1cm4gYXBpU2FmZSgnL2FwaS9sb2Nr L3plbGxlL2hlYXJ0YmVhdCcsIHsKICAgICAgICBtZXRob2Q6ICdQT1NUJywKICAgICAgICBoZWFk ZXJzOiB7ICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicgfSwKICAgICAgICBib2R5 OiBKU09OLnN0cmluZ2lmeSh7IHRva2VuOiB0b2tlbiB9KQogICAgfSk7Cn0KCi8vID09PT09IEhl YXJ0YmVhdC1Mb29wIChhbGxlIDIwcywgc29sYW5nZSBFZGl0b3Igb2ZmZW4pID09PT09CgpleHBv cnQgZnVuY3Rpb24gbG9ja0hlYXJ0YmVhdFN0YXJ0ZW4odG9rZW4pIHsKICAgIGxvY2tIZWFydGJl YXRTdG9wcGVuKCk7CiAgICBaLnplbGxMb2NrLmhiVGltZXIgPSBzZXRJbnRlcnZhbChmdW5jdGlv bigpIHsKICAgICAgICBpZiAoIVouemVsbExvY2sudG9rZW4pIHsgbG9ja0hlYXJ0YmVhdFN0b3Bw ZW4oKTsgcmV0dXJuOyB9CiAgICAgICAgbG9ja1plbGxlSGVhcnRiZWF0U2VuZGVuKFouemVsbExv Y2sudG9rZW4pLnRoZW4oZnVuY3Rpb24ocmVzKSB7CiAgICAgICAgICAgIGlmIChyZXMuc3RhdHVz ID09PSA0MDQpIHsKICAgICAgICAgICAgICAgIHRvYXN0KCdEZWluIEVkaXQtTG9jayB3dXJkZSBh dWZnZWhvYmVuICh2ZXJtdXRsaWNoIEZhY2hhdWZzaWNodC1PdmVycmlkZSkuJywgJ3dhcm51bmcn KTsKICAgICAgICAgICAgICAgIFouemVsbExvY2sudG9rZW4gPSBudWxsOwogICAgICAgICAgICAg ICAgaWYgKHR5cGVvZiBzeW5jSG9va3MuZWRpdG9yU2NobGllc3NlbiA9PT0gJ2Z1bmN0aW9uJykg ewogICAgICAgICAgICAgICAgICAgIHN5bmNIb29rcy5lZGl0b3JTY2hsaWVzc2VuKHRydWUpOwog ICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfSkuY2F0Y2goZnVuY3Rpb24o KSB7fSk7CiAgICB9LCAyMDAwMCk7Cn0KCmV4cG9ydCBmdW5jdGlvbiBsb2NrSGVhcnRiZWF0U3Rv cHBlbigpIHsKICAgIGlmIChaLnplbGxMb2NrICYmIFouemVsbExvY2suaGJUaW1lcikgeyBjbGVh ckludGVydmFsKFouemVsbExvY2suaGJUaW1lcik7IFouemVsbExvY2suaGJUaW1lciA9IG51bGw7 IH0KfQoKLy8gPT09PT0gTG9jay1TdGF0ZSBpbSBHcmlkID09PT09CgpleHBvcnQgZnVuY3Rpb24g bG9ja0tleShkYXR1bSwgcGVyc29uSWQpIHsgcmV0dXJuIGRhdHVtICsgJ3wnICsgU3RyaW5nKHBl cnNvbklkKTsgfQoKLy8gTlctS2VubnVuZyBkZXMgTG9ja3MgLT4gS2xhcm5hbWUgKFZvcm5hbWUg TmFjaG5hbWUpIGF1cyBkZXIgUGVyc29uYWwtCi8vIHZlcndhbHR1bmcsIGVyc2F0endlaXNlIEZh Y2hhdWZzaWNodC9TdXBlclVzZXIsIHNvbnN0IGRpZSBLZW5udW5nIG9obmUKLy8gRG9tYWluLiBC ZXd1c3N0IEtFSU4gIltzdXBlcnVzZXJdIi9Sb2xsZW4tU3VmZml4IHVuZCBrZWluZSBEYXVlciDi gJQgZGVyCi8vIEhpbndlaXMgc29sbCBzY2hsaWNodCBibGVpYmVuLgpmdW5jdGlvbiBsb2NrUGVy c29uTmFtZShsb2NrKSB7CiAgICB2YXIgdSA9IChsb2NrICYmIGxvY2sudXNlcm5hbWUgfHwgJycp LnRvTG93ZXJDYXNlKCk7CiAgICBpZiAoIXUpIHJldHVybiAnZWluZXIgYW5kZXJlbiBQZXJzb24n OwogICAgdmFyIHVTaG9ydCA9IHUuaW5kZXhPZignXFwnKSA+PSAwID8gdS5zcGxpdCgnXFwnKS5w b3AoKSA6IHU7CiAgICBmdW5jdGlvbiBwYXNzdChrKSB7IGlmICghaykgcmV0dXJuIGZhbHNlOyBr ID0gU3RyaW5nKGspLnRvTG93ZXJDYXNlKCk7IHJldHVybiBrID09PSB1IHx8IGsgPT09IHVTaG9y dDsgfQogICAgdmFyIHBlcnNvbmVuID0gKFoucGxhbnVuZyAmJiBaLnBsYW51bmcucGVyc29uZW4p IHx8IFtdOwogICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwZXJzb25lbi5sZW5ndGg7IGkrKykgewog ICAgICAgIGlmIChwYXNzdChwZXJzb25lbltpXS5ud0tlbm51bmcpKSB7CiAgICAgICAgICAgIHZh ciBuID0gKChwZXJzb25lbltpXS52b3JuYW1lID8gcGVyc29uZW5baV0udm9ybmFtZSArICcgJyA6 ICcnKSArIChwZXJzb25lbltpXS5uYW1lIHx8ICcnKSkudHJpbSgpOwogICAgICAgICAgICBpZiAo bikgcmV0dXJuIG47CiAgICAgICAgfQogICAgfQogICAgdmFyIGZhID0gKFouYWRtaW4gJiYgWi5h ZG1pbi5mYWNoYXVmc2ljaHQpIHx8IFtdOwogICAgZm9yICh2YXIgaiA9IDA7IGogPCBmYS5sZW5n dGg7IGorKykgeyBpZiAocGFzc3QoZmFbal0ubndLZW5udW5nKSAmJiBmYVtqXS5uYW1lKSByZXR1 cm4gZmFbal0ubmFtZTsgfQogICAgdmFyIHN1ID0gKFouYWRtaW4gJiYgWi5hZG1pbi5zdXBlclVz ZXIpIHx8IFtdOwogICAgZm9yICh2YXIgayA9IDA7IGsgPCBzdS5sZW5ndGg7IGsrKykgeyBpZiAo cGFzc3Qoc3Vba10ubndLZW5udW5nKSAmJiBzdVtrXS5uYW1lKSByZXR1cm4gc3Vba10ubmFtZTsg fQogICAgLy8gRmFsbGJhY2s6IEtlbm51bmcgb2huZSBEb21haW4gKHouQi4gTm90ZmFsbC1BY2Nv dW50IG9obmUgUGxhbi1QZXJzb24pLgogICAgcmV0dXJuIGxvY2sudXNlcm5hbWUuaW5kZXhPZign XFwnKSA+PSAwID8gbG9jay51c2VybmFtZS5zcGxpdCgnXFwnKS5wb3AoKSA6IGxvY2sudXNlcm5h bWU7Cn0KCmV4cG9ydCBmdW5jdGlvbiBsb2NrVG9vbHRpcFRleHQobG9jaykgewogICAgcmV0dXJu ICdEaWVzZSBaZWxsZSB3aXJkIGdlcmFkZSB2b24gJyArIGxvY2tQZXJzb25OYW1lKGxvY2spICsg JyBiZWFyYmVpdGV0IHVuZCBpc3QgZGVzaGFsYiBnZXNwZXJydC4nOwp9CgpleHBvcnQgZnVuY3Rp b24gZnJlbWRMb2NrU2V0emVuKGRhdHVtLCBwZXJzb25JZCwgbG9jaykgewogICAgdmFyIGtleSA9 IGxvY2tLZXkoZGF0dW0sIHBlcnNvbklkKTsKICAgIGlmIChsb2NrKSBaLmZyZW1kZUxvY2tzW2tl eV0gPSBsb2NrOwogICAgZWxzZSBkZWxldGUgWi5mcmVtZGVMb2Nrc1trZXldOwogICAgdmFyIHog PSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuZ3JpZC16ZWxsZVtkYXRhLWRhdHVtPSInICsgZGF0 dW0gKyAnIl1bZGF0YS1wZXJzb249IicgKyBTdHJpbmcocGVyc29uSWQpICsgJyJdJyk7CiAgICBp ZiAoIXopIHJldHVybjsKICAgIGlmIChsb2NrKSB7CiAgICAgICAgei5jbGFzc0xpc3QuYWRkKCdn cmlkLXplbGxlLWxvY2tlZCcpOwogICAgICAgIC8vIE9yaWdpbmFsZW4gWmVsbC1UaXRlbCBlaW5t YWxpZyBzaWNoZXJuICh6dW0gV2llZGVyaGVyc3RlbGxlbiBiZWltCiAgICAgICAgLy8gRW50c3Bl cnJlbikuIE5JQ0hUIG1laHIgYW4gZGVuIExvY2stSGlud2VpcyBhbmhhZW5nZW4g4oCUIHNvbnN0 IHN0YXBlbHRlCiAgICAgICAgLy8gc2ljaCBiZWkgamVkZW0gSGVhcnRiZWF0LVVwZGF0ZSBlaW4g d2VpdGVyZXIgIldpcmQgYmVhcmJlaXRldCDigKYiLVRleHQKICAgICAgICAvLyAoZGVyIGRvcHBl bHRlIFRvb2x0aXAgaW0gU2NyZWVuc2hvdCkuIERlciBIaW53ZWlzIGJsZWlidCBzY2hsaWNodC4K ICAgICAgICBpZiAoIXouZ2V0QXR0cmlidXRlKCdkYXRhLW9yaWctdGl0bGUnKSkgei5zZXRBdHRy aWJ1dGUoJ2RhdGEtb3JpZy10aXRsZScsIHoudGl0bGUgfHwgJycpOwogICAgICAgIHoudGl0bGUg PSBsb2NrVG9vbHRpcFRleHQobG9jayk7CiAgICB9IGVsc2UgewogICAgICAgIHouY2xhc3NMaXN0 LnJlbW92ZSgnZ3JpZC16ZWxsZS1sb2NrZWQnKTsKICAgICAgICB2YXIgc2F2ZWQgPSB6LmdldEF0 dHJpYnV0ZSgnZGF0YS1vcmlnLXRpdGxlJyk7CiAgICAgICAgaWYgKHNhdmVkICE9PSBudWxsKSB7 IHoudGl0bGUgPSBzYXZlZDsgei5yZW1vdmVBdHRyaWJ1dGUoJ2RhdGEtb3JpZy10aXRsZScpOyB9 CiAgICB9Cn0KCmV4cG9ydCBmdW5jdGlvbiBsb2NrU3RhdGVBbndlbmRlbihuZXVlTG9ja3MpIHsK ICAgIC8vIG5ldWVMb2NrczogQXJyYXkgdm9uIExvY2stT2JqZWt0ZW4gdm9tIC9hcGkvbG9jay96 ZWxsZW4KICAgIHZhciBuZXVNYXAgPSB7fTsKICAgIHZhciBiZW51dHplckxvd2VyID0gKFouYmVu dXR6ZXIgfHwgJycpLnRvTG93ZXJDYXNlKCk7CiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5ldWVM b2Nrcy5sZW5ndGg7IGkrKykgewogICAgICAgIHZhciBMID0gbmV1ZUxvY2tzW2ldOwogICAgICAg IC8vIEVpZ2VuZSBMb2NrcyBOSUNIVCBhbHMgZnJlbWQgcmVuZGVybgogICAgICAgIHZhciBsVXNl ciA9IChMLnVzZXJuYW1lIHx8ICcnKS50b0xvd2VyQ2FzZSgpOwogICAgICAgIGlmIChsVXNlciA9 PT0gYmVudXR6ZXJMb3dlcikgY29udGludWU7CiAgICAgICAgdmFyIGJlbnV0emVyT2huZURvbWFp biA9IGJlbnV0emVyTG93ZXIuaW5kZXhPZignXFwnKSA+PSAwID8gYmVudXR6ZXJMb3dlci5zcGxp dCgnXFwnKS5wb3AoKSA6IGJlbnV0emVyTG93ZXI7CiAgICAgICAgaWYgKGxVc2VyID09PSBiZW51 dHplck9obmVEb21haW4pIGNvbnRpbnVlOwogICAgICAgIG5ldU1hcFtsb2NrS2V5KEwuZGF0dW0s IEwucGVyc29uSWQpXSA9IEw7CiAgICB9CiAgICAvLyBEaWZmOiBhbHRlIExvY2tzLCBkaWUgamV0 enQgd2VnIHNpbmQgLT4gZW50ZmVybmVuCiAgICBPYmplY3Qua2V5cyhaLmZyZW1kZUxvY2tzKS5m b3JFYWNoKGZ1bmN0aW9uKGspIHsKICAgICAgICBpZiAoIW5ldU1hcFtrXSkgewogICAgICAgICAg ICB2YXIgcGFydHMgPSBrLnNwbGl0KCd8Jyk7CiAgICAgICAgICAgIGZyZW1kTG9ja1NldHplbihw YXJ0c1swXSwgcGFydHNbMV0sIG51bGwpOwogICAgICAgIH0KICAgIH0pOwogICAgLy8gTmV1ZSBM b2NrcyAob2RlciBnZWFlbmRlcnRlKSAtPiBzZXR6ZW4KICAgIE9iamVjdC5rZXlzKG5ldU1hcCku Zm9yRWFjaChmdW5jdGlvbihrKSB7CiAgICAgICAgdmFyIGFsdCA9IFouZnJlbWRlTG9ja3Nba107 CiAgICAgICAgdmFyIG5ldSA9IG5ldU1hcFtrXTsKICAgICAgICBpZiAoIWFsdCB8fCBhbHQubGFz dEJlYXQgIT09IG5ldS5sYXN0QmVhdCkgewogICAgICAgICAgICB2YXIgcGFydHMgPSBrLnNwbGl0 KCd8Jyk7CiAgICAgICAgICAgIGZyZW1kTG9ja1NldHplbihwYXJ0c1swXSwgcGFydHNbMV0sIG5l dSk7CiAgICAgICAgfQogICAgfSk7Cn0KCi8vID09PT09IENsZWFudXAgYmVpbSBUYWItQ2xvc2Ug KHNlbmRCZWFjb24tc3R5bGUgbWl0IGtlZXBhbGl2ZSkgPT09PT0KCmV4cG9ydCBmdW5jdGlvbiBh bGxlRWlnZW5lbkxvY2tzRnJlaWdlYmVuQmVhY29uKCkgewogICAgaWYgKFouemVsbExvY2sgJiYg Wi56ZWxsTG9jay50b2tlbikgewogICAgICAgIHRyeSB7CiAgICAgICAgICAgIGZldGNoKCcvYXBp L2xvY2svemVsbGU/dG9rZW49JyArIGVuY29kZVVSSUNvbXBvbmVudChaLnplbGxMb2NrLnRva2Vu KSwgewogICAgICAgICAgICAgICAgbWV0aG9kOiAnREVMRVRFJywKICAgICAgICAgICAgICAgIGtl ZXBhbGl2ZTogdHJ1ZQogICAgICAgICAgICB9KTsKICAgICAgICB9IGNhdGNoIChlKSB7fQogICAg ICAgIFouemVsbExvY2sudG9rZW4gPSBudWxsOwogICAgfQp9Cg== ### FILE: js/ui_dialog.js | 39021 Ly8gPT09IHVpL2RpYWxvZy5qcyA9PT0KLy8gU3RhbmQ6IDIwMjYtMDUtMTQKLy8gVUktRmVlZGJh Y2stUHJpbWl0aXZlOiBUb2FzdCwgTW9kYWwsIEJlc3RhZXRpZ2VuLCBFbnR3dXJmcy1Mb2NhbFN0 b3JhZ2UsCi8vIERpcnR5LVRyYWNrZXIuIEJld3Vzc3RlIEtvbnNvbGlkaWVydW5nIGdlZ2VuIEZM RCAoZG9ydCBzZXBhcmF0ZSBNb2R1bGUKLy8gdG9hc3QvbW9kYWwpOiBpbiBWSTMgbnV0emVuIGFs bGUgZHJlaSBkZW4gZ2xlaWNoZW4gTW9kYWwtU3RhdGUgKFoubW9kYWwqKQovLyB1bmQgZGFzIHF1 ZXJzY2huaXR0bGljaGUgRElSVFktUmVnaXN0cnkgcGFzc3QgbmlyZ2VuZHMgYmVzc2VyIGhpbi4K Ly8KLy8gTW9kdWwtc3BlemlmaXNjaGUgSW5pdC1GdW5rdGlvbmVuICh6LkIuIGRpcnR5VHJhY2tl ckVpbnJpY2h0ZW4pIGJsZWliZW4KLy8gaW0gYXVmcnVmZW5kZW4gTW9kdWwgKGFwcC5qcyBiencu IGFkbWluL2FkbWluLmpzIGluIFBoYXNlIDgpIHVuZAovLyBpbXBvcnRpZXJlbiBkaXJ0eVJlZ2lz dHJpZXJlL2RpcnR5QWt0aXZlIHZvbiBoaWVyLgoKaW1wb3J0IHsgWiB9IGZyb20gJy4vY29yZV9z dGF0ZS5qcyc7CmltcG9ydCB7IGVzY2FwZUhUTUwgfSBmcm9tICcuL2NvcmVfdXRpbC5qcyc7Cmlt cG9ydCB7IHNhbml0aXplUmljaEh0bWwgfSBmcm9tICcuL3VpX3J0ZS5qcyc7CgovLyA9PT09PSBM YWRlLU92ZXJsYXkgKFBha2V0LUMgUXVpY2stV2luLCAyMDI2LTA1LTI5KSA9PT09PQovLwovLyBV bml2ZXJzZWxsZXIgU3Bpbm5lci1PdmVybGF5IGZ1ZXIgQXN5bmMtT3BlcmF0aW9uZW4uIFdpcmQg cGVyCi8vIGxhZGVPdmVybGF5WmVpZ2VuKGNvbnRhaW5lciwgdGV4dCkgYW5nZXplaWd0IHVuZCBt aXQgbGFkZU92ZXJsYXlWZXJzdGVja2VuKCkKLy8gd2llZGVyIHdlZ2dlbm9tbWVuLiBWZXJoaW5k ZXJ0IGJsYW5rZSBTY3JlZW5zIGJlaSBsYW5nc2FtZW4gU2VydmVyLQovLyBBbnR3b3J0ZW4gYXVm IGRlbiBQb2xpemVpLVBDcy4KCmV4cG9ydCBmdW5jdGlvbiBsYWRlT3ZlcmxheVplaWdlbihjb250 YWluZXJPZGVySWQsIHRleHQpIHsKICAgIHZhciBjID0gdHlwZW9mIGNvbnRhaW5lck9kZXJJZCA9 PT0gJ3N0cmluZycgPyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChjb250YWluZXJPZGVySWQpIDog Y29udGFpbmVyT2RlcklkOwogICAgaWYgKCFjKSByZXR1cm47CiAgICAvLyBQb3NpdGlvbjpyZWxh dGl2ZSBub2V0aWcsIGRhbWl0IGRhcyBhYnNvbHV0ZSBPdmVybGF5IGlubmVyaGFsYiBkZXMKICAg IC8vIENvbnRhaW5lcnMgYmxlaWJ0LiBOdXIgc2V0emVuIHdlbm4gbm9jaCBuaWNodCBwb3NpdGlv bmllcnQuCiAgICB0cnkgewogICAgICAgIHZhciBjcyA9ICh0eXBlb2YgZ2V0Q29tcHV0ZWRTdHls ZSA9PT0gJ2Z1bmN0aW9uJykgPyBnZXRDb21wdXRlZFN0eWxlKGMpIDogbnVsbDsKICAgICAgICBp ZiAoY3MgJiYgY3MucG9zaXRpb24gPT09ICdzdGF0aWMnKSBjLnN0eWxlLnBvc2l0aW9uID0gJ3Jl bGF0aXZlJzsKICAgIH0gY2F0Y2ggKF8pIHsgLyogaWdub3JlIGluIFRlc3QtTW9jayAqLyB9CiAg ICB2YXIgYWx0ID0gYy5xdWVyeVNlbGVjdG9yID8gYy5xdWVyeVNlbGVjdG9yKCcubGFkZS1vdmVy bGF5JykgOiBudWxsOwogICAgaWYgKGFsdCAmJiBhbHQucmVtb3ZlKSBhbHQucmVtb3ZlKCk7CiAg ICB2YXIgb3YgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKICAgIG92LmNsYXNzTmFt ZSA9ICdsYWRlLW92ZXJsYXknOwogICAgb3Yuc2V0QXR0cmlidXRlKCdyb2xlJywgJ3N0YXR1cycp OwogICAgb3Yuc2V0QXR0cmlidXRlKCdhcmlhLWxpdmUnLCAncG9saXRlJyk7CiAgICBvdi5pbm5l ckhUTUwgPSAnPGRpdiBjbGFzcz0ibGFkZS1vdmVybGF5LXNwaW5uZXIiIGFyaWEtaGlkZGVuPSJ0 cnVlIj48L2Rpdj4nICsKICAgICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJsYWRlLW92ZXJs YXktdGV4dCI+JyArIGVzY2FwZUhUTUwodGV4dCB8fCAnTMOkZHQg4oCmJykgKyAnPC9kaXY+JzsK ICAgIGMuYXBwZW5kQ2hpbGQob3YpOwp9CgpleHBvcnQgZnVuY3Rpb24gbGFkZU92ZXJsYXlWZXJz dGVja2VuKGNvbnRhaW5lck9kZXJJZCkgewogICAgdmFyIGMgPSB0eXBlb2YgY29udGFpbmVyT2Rl cklkID09PSAnc3RyaW5nJyA/IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGNvbnRhaW5lck9kZXJJ ZCkgOiBjb250YWluZXJPZGVySWQ7CiAgICBpZiAoIWMgfHwgIWMucXVlcnlTZWxlY3RvcikgcmV0 dXJuOwogICAgdmFyIG92ID0gYy5xdWVyeVNlbGVjdG9yKCcubGFkZS1vdmVybGF5Jyk7CiAgICBp ZiAob3YgJiYgb3YucmVtb3ZlKSBvdi5yZW1vdmUoKTsKfQoKLy8gPT09PT0gTGFlbmdlbi1Db3Vu dGVyIChRdWljay1XaW4gUGFrZXQtQiwgMjAyNi0wNS0yOSkgPT09PT0KLy8KLy8gWmVpZ3QgdW50 ZXIgZWluZW0gVGV4dGZlbGQgZWluZW4ga2xlaW5lbiBDb3VudGVyICI0Ny8yNTAiLCBkYW1pdCBk ZXIgVXNlcgovLyBzaWVodCB3aWUgdmllbGUgWmVpY2hlbiBub2NoIGZyZWkgc2luZC4gQXV0b21h dGlzY2ggdWViZXIgZGF0YS1BdHRyaWJ1dAovLyBha3RpdmllcnQ6IHNldHplIGVpbmZhY2ggYGRh dGEtbWF4bGVuZ3RoLWNvdW50ZXI9IjEiYCArIGBtYXhsZW5ndGg9Ik4iYCBhbQovLyBJbnB1dC9U ZXh0YXJlYS4gRGVyIENvdW50ZXIgd2lyZCBiZWltIG1vZGFsWmVpZ2VuKCkgaW5pdGlhbGlzaWVy dCB1bmQgYmVpCi8vIGplZGVtIGlucHV0L2NoYW5nZSBha3R1YWxpc2llcnQgKERlbGVnYXRpb24g YXVmIGRvY3VtZW50KS4KCmZ1bmN0aW9uIF9sYWVuZ2VDb3VudGVyVXBkYXRlKGVsKSB7CiAgICBp ZiAoIWVsIHx8ICFlbC5wYXJlbnROb2RlKSByZXR1cm47CiAgICB2YXIgbWF4ID0gcGFyc2VJbnQo ZWwuZ2V0QXR0cmlidXRlKCdtYXhsZW5ndGgnKSwgMTApOwogICAgaWYgKCFtYXgpIHJldHVybjsK ICAgIHZhciBjb3VudGVyID0gZWwubmV4dEVsZW1lbnRTaWJsaW5nOwogICAgaWYgKCFjb3VudGVy IHx8ICFjb3VudGVyLmNsYXNzTGlzdCB8fCAhY291bnRlci5jbGFzc0xpc3QuY29udGFpbnMoJ2xh ZW5nZS1jb3VudGVyJykpIHsKICAgICAgICBjb3VudGVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu dCgnc3BhbicpOwogICAgICAgIGNvdW50ZXIuY2xhc3NOYW1lID0gJ2xhZW5nZS1jb3VudGVyJzsK ICAgICAgICBlbC5wYXJlbnROb2RlLmluc2VydEJlZm9yZShjb3VudGVyLCBlbC5uZXh0U2libGlu Zyk7CiAgICB9CiAgICB2YXIgbGVuID0gKGVsLnZhbHVlIHx8ICcnKS5sZW5ndGg7CiAgICBjb3Vu dGVyLnRleHRDb250ZW50ID0gbGVuICsgJyAvICcgKyBtYXg7CiAgICAvLyBXYXJuZmFyYmUgYWIg OTAlIEF1c2xhc3R1bmcsIEZlaGxlcmZhcmJlIGJlaSB2b2xsLgogICAgY291bnRlci5jbGFzc0xp c3QudG9nZ2xlKCdsYWVuZ2UtY291bnRlci13YXJuJywgbGVuID49IG1heCAqIDAuOSAmJiBsZW4g PCBtYXgpOwogICAgY291bnRlci5jbGFzc0xpc3QudG9nZ2xlKCdsYWVuZ2UtY291bnRlci12b2xs JywgbGVuID49IG1heCk7Cn0KCmV4cG9ydCBmdW5jdGlvbiBsYWVuZ2VDb3VudGVySW1Db250YWlu ZXJJbml0aWFsaXNpZXJlbihjb250YWluZXIpIHsKICAgIGlmICghY29udGFpbmVyIHx8ICFjb250 YWluZXIucXVlcnlTZWxlY3RvckFsbCkgcmV0dXJuOwogICAgdmFyIGlucHV0cyA9IGNvbnRhaW5l ci5xdWVyeVNlbGVjdG9yQWxsKCdbZGF0YS1tYXhsZW5ndGgtY291bnRlcl0nKTsKICAgIGZvciAo dmFyIGkgPSAwOyBpIDwgaW5wdXRzLmxlbmd0aDsgaSsrKSBfbGFlbmdlQ291bnRlclVwZGF0ZShp bnB1dHNbaV0pOwp9CgppZiAodHlwZW9mIGRvY3VtZW50ICE9PSAndW5kZWZpbmVkJyAmJiB0eXBl b2YgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lciA9PT0gJ2Z1bmN0aW9uJykgewogICAgZG9jdW1l bnQuYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLCBmdW5jdGlvbihlKSB7CiAgICAgICAgdmFyIGVs ID0gZS50YXJnZXQ7CiAgICAgICAgaWYgKCFlbCB8fCAhZWwuZ2V0QXR0cmlidXRlKSByZXR1cm47 CiAgICAgICAgaWYgKCFlbC5nZXRBdHRyaWJ1dGUoJ2RhdGEtbWF4bGVuZ3RoLWNvdW50ZXInKSkg cmV0dXJuOwogICAgICAgIF9sYWVuZ2VDb3VudGVyVXBkYXRlKGVsKTsKICAgIH0pOwp9CgovLyA9 PT09PSBQZmxpY2h0ZmVsZC1WYWxpZGllcnVuZyAoVVgtQXVkaXQgU3ByaW50IDMuNCwgMjAyNi0w NS0yOSkgPT09PT0KLy8KLy8gSGVscGVyIGZ1ZXIgY2xpZW50c2VpdGlnZSBQZmxpY2h0ZmVsZC1W YWxpZGllcnVuZyBWT1IgZGVtIEFQSS1DYWxsLgovLyBNYXJraWVydCBkYXMgZmVobGVuZGUgRmVs ZCByb3QsIHNjcm9sbHQgZXMgaW5zIEJpbGQsIGZva3Vzc2llcnQgZXMgKwovLyB6ZWlndCBlaW5l biBXYXJuLVRvYXN0LiBCZWltIG5hZWNoc3RlbiBpbnB1dC9jaGFuZ2UgdmVyc2Nod2luZGV0IGRp ZQovLyByb3RlIE1hcmtpZXJ1bmcgd2llZGVyLCBkYW1pdCBkZXIgVXNlciBtZXJrdDogIkVpbmdh YmUgd3VyZGUKLy8gcmVnaXN0cmllcnQsIGpldHp0IG5vY2htYWwgU3BlaWNoZXJuIHByb2JpZXJl bi4iCmV4cG9ydCBmdW5jdGlvbiBwZmxpY2h0ZmVsZEZlaGxlcihlbGVtZW50T2RlcklkLCBtZWxk dW5nKSB7CiAgICB2YXIgZiA9IHR5cGVvZiBlbGVtZW50T2RlcklkID09PSAnc3RyaW5nJyA/IGRv Y3VtZW50LmdldEVsZW1lbnRCeUlkKGVsZW1lbnRPZGVySWQpIDogZWxlbWVudE9kZXJJZDsKICAg IGlmIChmKSB7CiAgICAgICAgZi5jbGFzc0xpc3QuYWRkKCdmZWxkLWZlaGxlcicpOwogICAgICAg IHRyeSB7IGYuZm9jdXMoKTsgfSBjYXRjaCAoZSkge30KICAgICAgICB0cnkgeyBmLnNjcm9sbElu dG9WaWV3KHsgYmxvY2s6ICdjZW50ZXInLCBiZWhhdmlvcjogJ3Ntb290aCcgfSk7IH0gY2F0Y2gg KGUpIHt9CiAgICAgICAgdmFyIGNsZWFyID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGYuY2xh c3NMaXN0LnJlbW92ZSgnZmVsZC1mZWhsZXInKTsKICAgICAgICAgICAgZi5yZW1vdmVFdmVudExp c3RlbmVyKCdpbnB1dCcsIGNsZWFyKTsKICAgICAgICAgICAgZi5yZW1vdmVFdmVudExpc3RlbmVy KCdjaGFuZ2UnLCBjbGVhcik7CiAgICAgICAgfTsKICAgICAgICBmLmFkZEV2ZW50TGlzdGVuZXIo J2lucHV0JywgY2xlYXIpOwogICAgICAgIGYuYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgY2xl YXIpOwogICAgfQogICAgdG9hc3QobWVsZHVuZyB8fCAnUGZsaWNodGZlbGQgZmVobHQnLCAnd2Fy bnVuZycpOwp9CgovLyA9PT09PSBIaWxmZS1JY29uIChVWC1BdWRpdCBTcHJpbnQgMi4yLCAyMDI2 LTA1LTI5KSA9PT09PQovLwovLyBIZWxwZXIgZnVlciBJbmxpbmUtSGlsZmV0ZXh0ZTogZXJ6ZXVn dCBlaW5lbiBrbGVpbmVuIHJ1bmRlbiDik5gtQnV0dG9uIG1pdAovLyBgZGF0YS1oaWxmZWAtQXR0 cmlidXQuIEdsb2JhbGVyIENsaWNrLUxpc3RlbmVyICh3ZWl0ZXIgdW50ZW4pIGZhZW5ndCBkYXMK Ly8gdW5kIHplaWd0IGRlbiBUZXh0IGFscyBJbmZvLVRvYXN0ICg4cyBzaWNodGJhcikuIERhbWl0 IGxhbmRlbiBIaWxmZS1UZXh0ZQovLyAqKmFuIGRlciBTdGVsbGUgd28gc2llIGdlYnJhdWNodCB3 ZXJkZW4qKiwgbmljaHQgbnVyIGltIHplbnRyYWxlbiBJbmZvLU1vZGFsLgovLwovLyBOdXR6dW5n OiBgJzxsYWJlbD5EYXRlaTwvbGFiZWw+JyArIGhpbGZlSWNvbignRXJ3YXJ0ZXQgZGllIEV4Y2Vs LVZvcmxhZ2Ug4oCmJylgCmV4cG9ydCBmdW5jdGlvbiBoaWxmZUljb24odGV4dCkgewogICAgaWYg KCF0ZXh0KSByZXR1cm4gJyc7CiAgICB2YXIgdCA9IFN0cmluZyh0ZXh0KTsKICAgIHJldHVybiAn PGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJoaWxmZS1pY29uIiBhcmlhLWxhYmVsPSJIaWxm ZSBhbnplaWdlbiInICsKICAgICAgICAgICAnIHRpdGxlPSInICsgdC5yZXBsYWNlKC8iL2csICcm cXVvdDsnKS5yZXBsYWNlKC88L2csICcmbHQ7JykucmVwbGFjZSgvPi9nLCAnJmd0OycpICsgJyIn ICsKICAgICAgICAgICAnIGRhdGEtaGlsZmU9IicgKyB0LnJlcGxhY2UoLyYvZywgJyZhbXA7Jyku cmVwbGFjZSgvIi9nLCAnJnF1b3Q7JykucmVwbGFjZSgvPC9nLCAnJmx0OycpLnJlcGxhY2UoLz4v ZywgJyZndDsnKSArICciPj88L2J1dHRvbj4nOwp9CgovLyBHbG9iYWxlciBMaXN0ZW5lciDigJQg ZWlubWFsIGJpbmRlbi4gZG9jdW1lbnQgZXhpc3RpZXJ0IG51ciBpbSBCcm93c2VyCi8vIChUZXN0 LVNldHVwIG1vY2t0IG51ciBlaW4gTWluaW1hbC1kb2N1bWVudCBvaG5lIGFkZEV2ZW50TGlzdGVu ZXIpLCBkYWhlcgovLyBkZWZlbnNpdmUgUHJ1ZWZ1bmcuCmlmICh0eXBlb2YgZG9jdW1lbnQgIT09 ICd1bmRlZmluZWQnICYmIHR5cGVvZiBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyID09PSAnZnVu Y3Rpb24nKSB7CiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9u KGUpIHsKICAgICAgICB2YXIgYnRuID0gZS50YXJnZXQgJiYgZS50YXJnZXQuY2xvc2VzdCAmJiBl LnRhcmdldC5jbG9zZXN0KCcuaGlsZmUtaWNvbicpOwogICAgICAgIGlmICghYnRuKSByZXR1cm47 CiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgIHZhciB0ID0gYnRuLmdldEF0dHJp YnV0ZSgnZGF0YS1oaWxmZScpOwogICAgICAgIGlmICh0KSB0b2FzdCh0LCAnaW5mbycsIHsgZGF1 ZXI6IDgwMDAgfSk7CiAgICB9KTsKfQoKLy8gPT09PT0gVG9hc3QgPT09PT0KCmV4cG9ydCBmdW5j dGlvbiB0b2FzdCh0ZXh0LCB0eXAsIG9wdCkgewogICAgb3B0ID0gb3B0IHx8IHt9OwogICAgdmFy IGMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9hc3QtY29udGFpbmVyJyk7CiAgICB2YXIg ZWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKICAgIGVsLmNsYXNzTmFtZSA9ICd0 b2FzdCB0b2FzdC0nICsgKHR5cCB8fCAnaW5mbycpOwogICAgZWwudGV4dENvbnRlbnQgPSB0ZXh0 OwogICAgaWYgKHR5cGVvZiBvcHQub25DbGljayA9PT0gJ2Z1bmN0aW9uJykgewogICAgICAgIGVs LnN0eWxlLmN1cnNvciA9ICdwb2ludGVyJzsKICAgICAgICBlbC5hZGRFdmVudExpc3RlbmVyKCdj bGljaycsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICB0cnkgeyBvcHQub25DbGljaygpOyB9IGNh dGNoIChlKSB7fQogICAgICAgICAgICBlbC5yZW1vdmUoKTsKICAgICAgICB9KTsKICAgIH0KICAg IGMuYXBwZW5kQ2hpbGQoZWwpOwogICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgZWwucmVtb3Zl KCk7IH0sIG9wdC5kYXVlciB8fCA0MDAwKTsKfQoKLy8gPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQovLyBh MTF5IOKAlCBGb2N1cy1UcmFwICsgRVNDLUhhbmRsZXIgKFNwcmludCA2YSAyMDI2LTA1LTI5LCBG aW5kaW5nIDIyKQovLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci8vIFBybyBPdmVybGF5LUNvbnRhaW5l ciBlaW4gZWlnZW5lciBIYW5kbGVyLiBmb2t1c1RyYXBBa3RpdmllcmVuIGZhZW5ndAovLyBUYWIv U2hpZnQrVGFiICsgRXNjYXBlLiBMSUZPOiBkYXMgenVsZXR6dCBnZW9lZmZuZXRlIE92ZXJsYXkg c2NobGllc3N0Ci8vIGF1ZiBFc2NhcGUgKFN0YWNrIHZpYSBfYWt0aXZlT3ZlcmxheXMpLiBCZWlt IFNjaGxpZXNzZW4gd2lyZCBkZXIgdm9yaGVyCi8vIGZva3Vzc2llcnRlIEtub3RlbiB3aWVkZXJo ZXJnZXN0ZWxsdCAoWi5tb2RhbEZvY3VzUmV0dXJuKS4KCnZhciBGT0tVU1NJRVJCQVJfU0VMRUtU T1IgPSAnYVtocmVmXSwgYnV0dG9uOm5vdChbZGlzYWJsZWRdKSwgdGV4dGFyZWE6bm90KFtkaXNh YmxlZF0pLCBpbnB1dDpub3QoW2Rpc2FibGVkXSk6bm90KFt0eXBlPSJoaWRkZW4iXSksIHNlbGVj dDpub3QoW2Rpc2FibGVkXSksIFt0YWJpbmRleF06bm90KFt0YWJpbmRleD0iLTEiXSknOwoKdmFy IF9ha3RpdmVPdmVybGF5cyA9IFtdOyAgICAgICAgICAgLy8gTElGTy1TdGFjawp2YXIgX292ZXJs YXlIYW5kbGVyID0gbmV3IFdlYWtNYXAoKTsgLy8gb3ZlcmxheSAtPiBoYW5kbGVyLUZ1bmt0aW9u IGZ1ZXIga2V5ZG93bgoKZnVuY3Rpb24gZm9rdXNzaWVyYmFyU2FtbWVsbihjb250YWluZXIpIHsK ICAgIHJldHVybiBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChjb250YWluZXIucXVlcnlTZWxl Y3RvckFsbChGT0tVU1NJRVJCQVJfU0VMRUtUT1IpKQogICAgICAgIC5maWx0ZXIoZnVuY3Rpb24o ZWwpIHsgcmV0dXJuIGVsLm9mZnNldFBhcmVudCAhPT0gbnVsbDsgfSk7ICAvLyBzaWNodGJhcgp9 CgpmdW5jdGlvbiBmb2t1c1RyYXBBa3RpdmllcmVuKG92ZXJsYXkpIHsKICAgIGlmICghb3Zlcmxh eSkgcmV0dXJuOwogICAgLy8gRG9wcGVsYWt0aXZpZXJ1bmc6IHZvcmhlciBkZWFrdGl2aWVyZW4s IGRhbm4gbmV1ICh6LkIuIHdlbm4gZGFzc2VsYmUKICAgIC8vIG92ZXJsYXkgbmV1IGJlZnVlbGx0 IHd1cmRlKS4KICAgIGZva3VzVHJhcERlYWt0aXZpZXJlbihvdmVybGF5KTsKICAgIHZhciBoYW5k bGVyID0gZnVuY3Rpb24oZSkgewogICAgICAgIGlmIChlLmtleSA9PT0gJ0VzY2FwZScpIHsKICAg ICAgICAgICAgLy8gTnVyIGRhcyBvYmVyc3RlIE92ZXJsYXkgc2NobGllc3N0IHNpY2gg4oCUIElu bmVyLU1vZGFsLUVybGVibmlzCiAgICAgICAgICAgIC8vIG1pdCBDb25maXJtLU92ZXJsYXkgZnVu a3Rpb25pZXJ0IHdlaXRlciAoTElGTykuCiAgICAgICAgICAgIGlmIChfYWt0aXZlT3ZlcmxheXNb X2FrdGl2ZU92ZXJsYXlzLmxlbmd0aCAtIDFdICE9PSBvdmVybGF5KSByZXR1cm47CiAgICAgICAg ICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgaWYgKG92ZXJsYXkuaWQgPT09ICdj b25maXJtLW92ZXJsYXknKSB7CiAgICAgICAgICAgICAgICBvdmVybGF5LmNsYXNzTGlzdC5hZGQo J3ZlcnN0ZWNrdCcpOwogICAgICAgICAgICAgICAgb3ZlcmxheS5zZXRBdHRyaWJ1dGUoJ2FyaWEt aGlkZGVuJywgJ3RydWUnKTsKICAgICAgICAgICAgICAgIGZva3VzVHJhcERlYWt0aXZpZXJlbihv dmVybGF5KTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIG1vZGFsU2NobGll c3NlbigpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAg ICAgaWYgKGUua2V5ICE9PSAnVGFiJykgcmV0dXJuOwogICAgICAgIHZhciBsaXN0ZSA9IGZva3Vz c2llcmJhclNhbW1lbG4ob3ZlcmxheSk7CiAgICAgICAgaWYgKGxpc3RlLmxlbmd0aCA9PT0gMCkg eyBlLnByZXZlbnREZWZhdWx0KCk7IHJldHVybjsgfQogICAgICAgIHZhciBlcnN0ZXIgPSBsaXN0 ZVswXSwgbGV0enRlciA9IGxpc3RlW2xpc3RlLmxlbmd0aCAtIDFdOwogICAgICAgIGlmIChlLnNo aWZ0S2V5ICYmIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IGVyc3RlcikgewogICAgICAgICAg ICBlLnByZXZlbnREZWZhdWx0KCk7IGxldHp0ZXIuZm9jdXMoKTsKICAgICAgICB9IGVsc2UgaWYg KCFlLnNoaWZ0S2V5ICYmIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IGxldHp0ZXIpIHsKICAg ICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOyBlcnN0ZXIuZm9jdXMoKTsKICAgICAgICB9CiAg ICB9OwogICAgb3ZlcmxheS5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgaGFuZGxlcik7CiAg ICBfb3ZlcmxheUhhbmRsZXIuc2V0KG92ZXJsYXksIGhhbmRsZXIpOwogICAgX2FrdGl2ZU92ZXJs YXlzLnB1c2gob3ZlcmxheSk7CiAgICAvLyBJbml0aWFsZW4gRm9rdXMgc2V0emVuOiBlcnN0ZXIg Zm9rdXNzaWVyYmFyZXIgS25vdGVuIChuaWNodCBkZXIKICAgIC8vIFNjaGxpZXNzLVgtQnV0dG9u IOKAlCBkZXIgaXN0IG5vcm1hbGVyd2Vpc2UgbGV0enRlciBUYWItU3RvcCkuCiAgICBzZXRUaW1l b3V0KGZ1bmN0aW9uKCkgewogICAgICAgIHZhciBsaXN0ZSA9IGZva3Vzc2llcmJhclNhbW1lbG4o b3ZlcmxheSk7CiAgICAgICAgdmFyIHppZWwgPSBsaXN0ZS5maW5kKGZ1bmN0aW9uKGVsKSB7IHJl dHVybiAhZWwuY2xhc3NMaXN0LmNvbnRhaW5zKCdtb2RhbC1zY2hsaWVzc2VuJyk7IH0pIHx8IGxp c3RlWzBdOwogICAgICAgIGlmICh6aWVsKSB0cnkgeyB6aWVsLmZvY3VzKCk7IH0gY2F0Y2ggKGUp IHt9CiAgICB9LCAzMCk7Cn0KCmZ1bmN0aW9uIGZva3VzVHJhcERlYWt0aXZpZXJlbihvdmVybGF5 KSB7CiAgICBpZiAoIW92ZXJsYXkpIHJldHVybjsKICAgIHZhciBoYW5kbGVyID0gX292ZXJsYXlI YW5kbGVyLmdldChvdmVybGF5KTsKICAgIGlmIChoYW5kbGVyKSB7CiAgICAgICAgb3ZlcmxheS5y ZW1vdmVFdmVudExpc3RlbmVyKCdrZXlkb3duJywgaGFuZGxlcik7CiAgICAgICAgX292ZXJsYXlI YW5kbGVyLmRlbGV0ZShvdmVybGF5KTsKICAgIH0KICAgIHZhciBpZHggPSBfYWt0aXZlT3Zlcmxh eXMuaW5kZXhPZihvdmVybGF5KTsKICAgIGlmIChpZHggPj0gMCkgX2FrdGl2ZU92ZXJsYXlzLnNw bGljZShpZHgsIDEpOwp9CgovLyBFeHBvcnRpZXJlbiBmdWVyIGJlc3RhZXRpZ2VuKCkg4oCUIGRl ciBudXR6dCBlaW4gYW5kZXJlcyBPdmVybGF5LgpleHBvcnQgeyBmb2t1c1RyYXBBa3RpdmllcmVu LCBmb2t1c1RyYXBEZWFrdGl2aWVyZW4gfTsKCi8vID09PT09IEJlc3RhZXRpZ2VuIChBc3luYy1D b25maXJtLVJlcGxhY2VtZW50KSA9PT09PQoKLy8gRXJzYXR6IGZ1ZXIgd2luZG93LmNvbmZpcm0o KSDigJQgYXN5bmNocm9uLCBub24tYmxvY2tpbmcsIGVpZ2VuZXMgTW9kYWwuCi8vIE51dHp1bmc6 Ci8vICAgYmVzdGFldGlnZW4oJ1RleHQnLCBmdW5jdGlvbigpIHsgd2VpdGVyTWFjaGVuKCk7IH0p OwovLyAgIGJlc3RhZXRpZ2VuKCdUZXh0JywgY2IsICdUaXRlbCcpOyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIC8vIFRpdGVsLUt1cnpmb3JtCi8vICAgYmVzdGFldGlnZW4oJ1RleHQnLCBj YiwgeyB0aXRlbCwgamFUZXh0LCBqYURhbmdlciB9KTsgICAgICAgICAgLy8gT3B0aW9uZW4tRm9y bQovLyAgIGphRGFuZ2VyOiB0cnVlICAtPiByb3RlciBCZXN0YWV0aWd1bmdzLUJ1dHRvbiwgRGVm YXVsdC1qYVRleHQgIkzDtnNjaGVuIgovLwovLyBTcHJpbnQgNSDigJQgTW9kYWwtU3RhY2sgKDIw MjYtMDUtMjksIEZpbmRpbmcgMTcpOiBudXR6dCBlaW5lbiBERURJWklFUlRFTgovLyBDb25maXJt LU92ZXJsYXktQ29udGFpbmVyICgjY29uZmlybS1vdmVybGF5KSwgbmljaHQgZGFzIEhhdXB0LU1v ZGFsLgovLyBEYW1pdCBrYW5uIGJlc3RhZXRpZ2VuKCkgaW5uZXJoYWxiIGVpbmVzIGdlb2VmZm5l dGVuIEhhdXB0bW9kYWxzICh6LkIuCi8vIFBlcnNvbi1FZGl0KSBzaWNoZXIgYWxzIHp3ZWl0ZSBT dGFjay1FYmVuZSBhdWZ0YXVjaGVuLCBvaG5lIGRlbgovLyBIaW50ZXJncnVuZC1EaWFsb2cgenUg emVyc3RvZXJlbi4gRnJ1ZWhlcjogbW9kYWxaZWlnZW4oKS1BdWZydWYKLy8gdWViZXJzY2hyaWVi IGRhcyBTaW5nbGV0b24tTW9kYWwg4oCUIGJlaSAiQWJicmVjaGVuIiB3YXIgZGVyIEVkaXQtU3Rh bmQgd2VnLgpleHBvcnQgZnVuY3Rpb24gYmVzdGFldGlnZW4odGV4dCwgb25KYSwgb3B0KSB7CiAg ICB2YXIgdGl0ZWwgPSBudWxsLCBqYVRleHQgPSAnQmVzdMOkdGlnZW4nLCBqYURhbmdlciA9IGZh bHNlOwogICAgaWYgKHR5cGVvZiBvcHQgPT09ICdzdHJpbmcnKSB7CiAgICAgICAgdGl0ZWwgPSBv cHQ7CiAgICB9IGVsc2UgaWYgKG9wdCkgewogICAgICAgIHRpdGVsID0gb3B0LnRpdGVsIHx8IG51 bGw7CiAgICAgICAgamFEYW5nZXIgPSAhIW9wdC5qYURhbmdlcjsKICAgICAgICBqYVRleHQgPSBv cHQuamFUZXh0IHx8IChqYURhbmdlciA/ICdMw7ZzY2hlbicgOiAnQmVzdMOkdGlnZW4nKTsKICAg IH0KICAgIHZhciBvdmVybGF5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbmZpcm0tb3Zl cmxheScpOwogICAgaWYgKCFvdmVybGF5KSB7CiAgICAgICAgLy8gRmFsbGJhY2sgZnVlciBUZXN0 LS9FZGdlLUZhZWxsZSBvaG5lIGRlbiBkZWRpemllcnRlbiBDb250YWluZXI6CiAgICAgICAgLy8g YWx0ZSBTaW5nbGV0b24tVmFyaWFudGUgdmlhIG1vZGFsWmVpZ2VuLgogICAgICAgIHZhciBrb2Vy cGVyRmIgPSAnPGRpdiBzdHlsZT0id2hpdGUtc3BhY2U6cHJlLWxpbmU7bGluZS1oZWlnaHQ6MS41 O3BhZGRpbmc6OHB4IDAiPicgKyBlc2NhcGVIVE1MKHRleHQpICsgJzwvZGl2Pic7CiAgICAgICAg dmFyIGphQ2xzRmIgPSAnYnRuICcgKyAoamFEYW5nZXIgPyAnYnRuLWdlZmFocicgOiAnYnRuLXBy aW1hZXInKTsKICAgICAgICB2YXIgZnVzc0ZiID0gJzxidXR0b24gY2xhc3M9ImJ0biIgaWQ9ImJl c3QtbmVpbiIgdHlwZT0iYnV0dG9uIj5BYmJyZWNoZW48L2J1dHRvbj4nICsKICAgICAgICAgICAg ICAgICAgICAgJzxidXR0b24gY2xhc3M9IicgKyBqYUNsc0ZiICsgJyIgaWQ9ImJlc3QtamEiIHR5 cGU9ImJ1dHRvbiI+JyArIGVzY2FwZUhUTUwoamFUZXh0KSArICc8L2J1dHRvbj4nOwogICAgICAg IG1vZGFsWmVpZ2VuKHRpdGVsIHx8ICdCZXN0w6R0aWd1bmcnLCBrb2VycGVyRmIsIGZ1c3NGYiwg bnVsbCwgbnVsbCwgeyByZWluZXJEaWFsb2c6IHRydWUgfSk7CiAgICAgICAgZG9jdW1lbnQuZ2V0 RWxlbWVudEJ5SWQoJ2Jlc3QtamEnKS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9u KCkgewogICAgICAgICAgICBtb2RhbFNjaGxpZXNzZW4odHJ1ZSk7CiAgICAgICAgICAgIGlmICh0 eXBlb2Ygb25KYSA9PT0gJ2Z1bmN0aW9uJykgb25KYSgpOwogICAgICAgIH0pOwogICAgICAgIGRv Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdiZXN0LW5laW4nKS5hZGRFdmVudExpc3RlbmVyKCdjbGlj aycsIGZ1bmN0aW9uKCkgeyBtb2RhbFNjaGxpZXNzZW4odHJ1ZSk7IH0pOwogICAgICAgIHJldHVy bjsKICAgIH0KICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb25maXJtLXRpdGVsJykudGV4 dENvbnRlbnQgPSB0aXRlbCB8fCAnQmVzdMOkdGlndW5nJzsKICAgIGRvY3VtZW50LmdldEVsZW1l bnRCeUlkKCdjb25maXJtLWtvZXJwZXInKS5pbm5lckhUTUwgPQogICAgICAgICc8ZGl2IHN0eWxl PSJ3aGl0ZS1zcGFjZTpwcmUtbGluZTtsaW5lLWhlaWdodDoxLjU7cGFkZGluZzo4cHggMCI+JyAr IGVzY2FwZUhUTUwodGV4dCkgKyAnPC9kaXY+JzsKICAgIHZhciBqYUNscyA9ICdidG4gJyArIChq YURhbmdlciA/ICdidG4tZ2VmYWhyJyA6ICdidG4tcHJpbWFlcicpOwogICAgZG9jdW1lbnQuZ2V0 RWxlbWVudEJ5SWQoJ2NvbmZpcm0tZnVzcycpLmlubmVySFRNTCA9CiAgICAgICAgJzxidXR0b24g Y2xhc3M9ImJ0biIgaWQ9ImJlc3QtbmVpbiIgdHlwZT0iYnV0dG9uIj5BYmJyZWNoZW48L2J1dHRv bj4nICsKICAgICAgICAnPGJ1dHRvbiBjbGFzcz0iJyArIGphQ2xzICsgJyIgaWQ9ImJlc3QtamEi IHR5cGU9ImJ1dHRvbiI+JyArIGVzY2FwZUhUTUwoamFUZXh0KSArICc8L2J1dHRvbj4nOwogICAg b3ZlcmxheS5jbGFzc0xpc3QucmVtb3ZlKCd2ZXJzdGVja3QnKTsKICAgIG92ZXJsYXkuc2V0QXR0 cmlidXRlKCdhcmlhLWhpZGRlbicsICdmYWxzZScpOwoKICAgIC8vIFZvcmlnZW4gRm9rdXMgbWVy a2VuIChrYW5uIGRlciBUcmlnZ2VyIGltIEhhdXB0bW9kYWwgc2VpbiksIGRhbmFjaAogICAgLy8g d2llZGVyaGVyc3RlbGxlbi4gV2VubiBkYXMgQ29uZmlybS1PdmVybGF5IElOTkVSSEFMQiBlaW5l cyBhbmRlcmVuCiAgICAvLyBNb2RhbHMgZXJzY2hlaW50LCBpc3QgYWN0aXZlRWxlbWVudCBlaW4g QnV0dG9uIGltIEhhdXB0bW9kYWwg4oCUIGRlcgogICAgLy8gYmVrb21tdCBuYWNoIENvbmZpcm0t U2NobGllc3NlbiBkZW4gRm9rdXMgenVydWVjay4KICAgIHZhciBmb2t1c1JldHVybiA9IGRvY3Vt ZW50LmFjdGl2ZUVsZW1lbnQ7CiAgICBmdW5jdGlvbiBzY2hsaWVzc2VuKCkgewogICAgICAgIG92 ZXJsYXkuY2xhc3NMaXN0LmFkZCgndmVyc3RlY2t0Jyk7CiAgICAgICAgb3ZlcmxheS5zZXRBdHRy aWJ1dGUoJ2FyaWEtaGlkZGVuJywgJ3RydWUnKTsKICAgICAgICBmb2t1c1RyYXBEZWFrdGl2aWVy ZW4ob3ZlcmxheSk7CiAgICAgICAgaWYgKGZva3VzUmV0dXJuICYmIHR5cGVvZiBmb2t1c1JldHVy bi5mb2N1cyA9PT0gJ2Z1bmN0aW9uJykgewogICAgICAgICAgICB0cnkgeyBmb2t1c1JldHVybi5m b2N1cygpOyB9IGNhdGNoIChlKSB7fQogICAgICAgIH0KICAgIH0KICAgIGRvY3VtZW50LmdldEVs ZW1lbnRCeUlkKCdiZXN0LWphJykuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbigp IHsKICAgICAgICBzY2hsaWVzc2VuKCk7CiAgICAgICAgaWYgKHR5cGVvZiBvbkphID09PSAnZnVu Y3Rpb24nKSBvbkphKCk7CiAgICB9KTsKICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdiZXN0 LW5laW4nKS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIHNjaGxpZXNzZW4pOwogICAgdmFyIHNj aGxpZXNzQnRuID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbmZpcm0tc2NobGllc3Nlbi1i dG4nKTsKICAgIGlmIChzY2hsaWVzc0J0bikgc2NobGllc3NCdG4ub25jbGljayA9IHNjaGxpZXNz ZW47CiAgICAvLyBCYWNrZHJvcC1LbGljayAoYXVmIGRhcyBPdmVybGF5IHNlbGJzdCwgbmljaHQg ZGVuIEluaGFsdCkgc2NobGllc3N0IGF1Y2guCiAgICBvdmVybGF5Lm9uY2xpY2sgPSBmdW5jdGlv bihlKSB7IGlmIChlLnRhcmdldCA9PT0gb3ZlcmxheSkgc2NobGllc3NlbigpOyB9OwogICAgLy8g YTExeTogRm9jdXMtVHJhcCArIEVTQy4gRVNDIHNjaGxpZXNzdCBudXIgZGllc2VzIE92ZXJsYXkg KExJRk8gaW0KICAgIC8vIFN0YWNrKSwgSGF1cHRtb2RhbCBibGVpYnQgdW5hbmdldGFzdGV0Lgog ICAgZm9rdXNUcmFwQWt0aXZpZXJlbihvdmVybGF5KTsKfQoKLy8gPT09PT0gRW50d3VyZnMtTG9j YWxTdG9yYWdlIChTcGVjIEYuNCkgPT09PT0KLy8gU3BlaWNoZXJ1bmcgaW4gbG9jYWxTdG9yYWdl ICd2aTMubW9kYWxFbnR3dWVyZmUnIGFscyBNYXAKLy8geyA8bW9kYWxLZXk+OiB7IHRzLCB0aXRl bCwgZGF0ZW4gfSB9LCB3b2JlaSBkYXRlbiA9IHs8ZWxlbWVudElkPjogPHdlcnQ+fS4KLy8gQXV0 by1Mb2VzY2ggbmFjaCAxNCBUYWdlbiDigJQgQ2xlYW51cCBsYWV1ZnQgYmVpbSBBcHAtSW5pdC4K CmV4cG9ydCB2YXIgRU5UV1VSRl9UVExfVEFHRSA9IDE0OwpleHBvcnQgdmFyIEVOVFdVUkZfTFNf S0VZID0gJ3ZpMy5tb2RhbEVudHd1ZXJmZSc7CgpmdW5jdGlvbiBlbnR3dWVyZmVMYWRlbigpIHsK ICAgIHRyeSB7IHJldHVybiBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKEVOVFdVUkZf TFNfS0VZKSB8fCAne30nKSB8fCB7fTsgfQogICAgY2F0Y2ggKGUpIHsgcmV0dXJuIHt9OyB9Cn0K ZnVuY3Rpb24gZW50d3VlcmZlU3BlaWNoZXJuKG1hcCkgewogICAgdHJ5IHsgbG9jYWxTdG9yYWdl LnNldEl0ZW0oRU5UV1VSRl9MU19LRVksIEpTT04uc3RyaW5naWZ5KG1hcCkpOyB9IGNhdGNoIChl KSB7fQp9CmV4cG9ydCBmdW5jdGlvbiBlbnR3dXJmRnVlcihtb2RhbEtleSkgewogICAgaWYgKCFt b2RhbEtleSkgcmV0dXJuIG51bGw7CiAgICB2YXIgbWFwID0gZW50d3VlcmZlTGFkZW4oKTsKICAg IHJldHVybiBtYXBbbW9kYWxLZXldIHx8IG51bGw7Cn0KZXhwb3J0IGZ1bmN0aW9uIGVudHd1cmZT cGVpY2hlcm4obW9kYWxLZXksIHRpdGVsLCBkYXRlbikgewogICAgaWYgKCFtb2RhbEtleSkgcmV0 dXJuOwogICAgdmFyIG1hcCA9IGVudHd1ZXJmZUxhZGVuKCk7CiAgICBtYXBbbW9kYWxLZXldID0g eyB0czogRGF0ZS5ub3coKSwgdGl0ZWw6IHRpdGVsIHx8ICcnLCBkYXRlbjogZGF0ZW4gfHwge30g fTsKICAgIGVudHd1ZXJmZVNwZWljaGVybihtYXApOwp9CmV4cG9ydCBmdW5jdGlvbiBlbnR3dXJm TG9lc2NoZW4obW9kYWxLZXkpIHsKICAgIGlmICghbW9kYWxLZXkpIHJldHVybjsKICAgIHZhciBt YXAgPSBlbnR3dWVyZmVMYWRlbigpOwogICAgaWYgKG1vZGFsS2V5IGluIG1hcCkgeyBkZWxldGUg bWFwW21vZGFsS2V5XTsgZW50d3VlcmZlU3BlaWNoZXJuKG1hcCk7IH0KfQpleHBvcnQgZnVuY3Rp b24gZW50d3VyZkF1dG9DbGVhbnVwKCkgewogICAgdmFyIG1hcCA9IGVudHd1ZXJmZUxhZGVuKCk7 CiAgICB2YXIgbnVuID0gRGF0ZS5ub3coKTsKICAgIHZhciBtYXggPSBFTlRXVVJGX1RUTF9UQUdF ICogODY0MDAwMDA7CiAgICB2YXIgZ2VhZW5kZXJ0ID0gZmFsc2U7CiAgICBPYmplY3Qua2V5cyht YXApLmZvckVhY2goZnVuY3Rpb24oaykgewogICAgICAgIGlmICghbWFwW2tdIHx8ICFtYXBba10u dHMgfHwgKG51biAtIG1hcFtrXS50cykgPiBtYXgpIHsKICAgICAgICAgICAgZGVsZXRlIG1hcFtr XTsgZ2VhZW5kZXJ0ID0gdHJ1ZTsKICAgICAgICB9CiAgICB9KTsKICAgIGlmIChnZWFlbmRlcnQp IGVudHd1ZXJmZVNwZWljaGVybihtYXApOwp9CgovLyA9PT09PSBUYWItRHJhZnQtTG9jYWxTdG9y YWdlIChQaGFzZSA5IOKAlCBBdXRvLVNhdmUgZnVlciBBZG1pbi1UYWJzKSA9PT09PQovLwovLyBF aWdlbmVyIE5hbWVzcGFjZSAndmkzLnRhYkRyYWZ0cycgKGdldHJlbm50IHZvbiB2aTMubW9kYWxF bnR3dWVyZmUpLCBkYW1pdAovLyBNb2RhbC0gdW5kIFRhYi1EcmFmdHMgc2ljaCBuaWNodCB1ZWJl cnNjaG5laWRlbi4gU2VsYmVyIFRUTCAoMTQgVGFnZSksCi8vIHNlbGJlIENsZWFudXAtTG9naWsu IEZvcm1hdCBwcm8gRWludHJhZzoKLy8gICB7IHRzLCBiYXNpc1RzLCBkYXRlbiB9Ci8vIC0gdHM6 ICAgICAgWmVpdHN0ZW1wZWwgZGVzIGxldHp0ZW4gQXV0by1TYXZlCi8vIC0gYmFzaXNUczogU2Vy dmVyLURhdGVuc3RhbmQtVFMgYmVpbSBCZWdpbm4gZGVyIEVkaXRpZXJ1bmcgKG5pY2h0IGFrdHVl bGwKLy8gICBnZW51dHp0IGZ1ZXIgS29uZmxpa3Rlcmtlbm51bmcsIGFiZXIgUGxhdHpoYWx0ZXIg ZnVlciBzcGFldGVyKQovLyAtIGRhdGVuOiAgIFRhYi1zcGV6aWZpc2NoZXIgU25hcHNob3QgKHBl ciBzbmFwc2hvdEZuIHByb2R1emllcnQpCmV4cG9ydCB2YXIgVEFCX0RSQUZUX0xTX0tFWSA9ICd2 aTMudGFiRHJhZnRzJzsKCmZ1bmN0aW9uIHRhYkRyYWZ0c0xhZGVuKCkgewogICAgdHJ5IHsgcmV0 dXJuIEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oVEFCX0RSQUZUX0xTX0tFWSkgfHwg J3t9JykgfHwge307IH0KICAgIGNhdGNoIChlKSB7IHJldHVybiB7fTsgfQp9CmZ1bmN0aW9uIHRh YkRyYWZ0c1NwZWljaGVybihtYXApIHsKICAgIHRyeSB7IGxvY2FsU3RvcmFnZS5zZXRJdGVtKFRB Ql9EUkFGVF9MU19LRVksIEpTT04uc3RyaW5naWZ5KG1hcCkpOyB9CiAgICBjYXRjaCAoZSkgeyAv KiBRdW90YSB2b2xsPyBBdXRvLVNhdmUgc2NoZWl0ZXJ0IHN0dW1tIOKAlCBTZXJ2ZXItU2F2ZSBi bGVpYnQgZGVyIHp1dmVybGFlc3NpZ2UgV2VnLiAqLyB9Cn0KZXhwb3J0IGZ1bmN0aW9uIHRhYkRy YWZ0RnVlcih0YWJLZXkpIHsKICAgIGlmICghdGFiS2V5KSByZXR1cm4gbnVsbDsKICAgIHJldHVy biB0YWJEcmFmdHNMYWRlbigpW3RhYktleV0gfHwgbnVsbDsKfQpleHBvcnQgZnVuY3Rpb24gdGFi RHJhZnRTcGVpY2hlcm4odGFiS2V5LCBkYXRlbiwgYmFzaXNUcykgewogICAgaWYgKCF0YWJLZXkp IHJldHVybjsKICAgIHZhciBtYXAgPSB0YWJEcmFmdHNMYWRlbigpOwogICAgbWFwW3RhYktleV0g PSB7IHRzOiBEYXRlLm5vdygpLCBiYXNpc1RzOiBiYXNpc1RzIHx8IDAsIGRhdGVuOiBkYXRlbiA9 PSBudWxsID8gbnVsbCA6IGRhdGVuIH07CiAgICB0YWJEcmFmdHNTcGVpY2hlcm4obWFwKTsKfQpl eHBvcnQgZnVuY3Rpb24gdGFiRHJhZnRMb2VzY2hlbih0YWJLZXkpIHsKICAgIGlmICghdGFiS2V5 KSByZXR1cm47CiAgICB2YXIgbWFwID0gdGFiRHJhZnRzTGFkZW4oKTsKICAgIGlmICh0YWJLZXkg aW4gbWFwKSB7IGRlbGV0ZSBtYXBbdGFiS2V5XTsgdGFiRHJhZnRzU3BlaWNoZXJuKG1hcCk7IH0K fQpleHBvcnQgZnVuY3Rpb24gdGFiRHJhZnRBdXRvQ2xlYW51cCgpIHsKICAgIHZhciBtYXAgPSB0 YWJEcmFmdHNMYWRlbigpOwogICAgdmFyIG51biA9IERhdGUubm93KCk7CiAgICB2YXIgbWF4ID0g RU5UV1VSRl9UVExfVEFHRSAqIDg2NDAwMDAwOwogICAgdmFyIGdlYWVuZGVydCA9IGZhbHNlOwog ICAgT2JqZWN0LmtleXMobWFwKS5mb3JFYWNoKGZ1bmN0aW9uKGspIHsKICAgICAgICBpZiAoIW1h cFtrXSB8fCAhbWFwW2tdLnRzIHx8IChudW4gLSBtYXBba10udHMpID4gbWF4KSB7CiAgICAgICAg ICAgIGRlbGV0ZSBtYXBba107IGdlYWVuZGVydCA9IHRydWU7CiAgICAgICAgfQogICAgfSk7CiAg ICBpZiAoZ2VhZW5kZXJ0KSB0YWJEcmFmdHNTcGVpY2hlcm4obWFwKTsKfQoKLy8gPT09PT0gTW9k YWwtRm9ybS1EYXRlbiBsZXNlbi9zY2hyZWliZW4gPT09PT0KCi8vIExpZXN0IGFsbGUgRm9ybS1G ZWxkZXIgaW0gYWt0dWVsbGVuIE1vZGFsIGFscyB7aWQ6IHdlcnR9LU9iamVrdC4KLy8gR2VudXR6 dCBmdWVyIEVudHd1cmYtU2F2ZSB1bmQgRW50d3VyZi1SZXN0b3JlLiBSVEUtRmVsZGVyCi8vIChj b250ZW50ZWRpdGFibGU9dHJ1ZSkgd2VyZGVuIHZpYSBpbm5lckhUTUwgbWl0IE1hcmtlci1QcmFl Zml4IGVyZmFzc3QsCi8vIGRhbWl0IHNpZSBiZWltIFJlc3RvcmUga29ycmVrdCBhbHMgSFRNTCBz dGF0dCBQbGFpbiByZWluZ2VzZXR6dCB3ZXJkZW4uCmV4cG9ydCBmdW5jdGlvbiBtb2RhbEZvcm1E YXRlbkxlc2VuKCkgewogICAgdmFyIGtvZXJwZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn bW9kYWwta29lcnBlcicpOwogICAgaWYgKCFrb2VycGVyKSByZXR1cm4ge307CiAgICB2YXIgZGF0 ZW4gPSB7fTsKICAgIGtvZXJwZXIucXVlcnlTZWxlY3RvckFsbCgnaW5wdXQsIHRleHRhcmVhLCBz ZWxlY3QnKS5mb3JFYWNoKGZ1bmN0aW9uKGVsKSB7CiAgICAgICAgaWYgKCFlbC5pZCkgcmV0dXJu OwogICAgICAgIGlmIChlbC50eXBlID09PSAnY2hlY2tib3gnIHx8IGVsLnR5cGUgPT09ICdyYWRp bycpIGRhdGVuW2VsLmlkXSA9ICEhZWwuY2hlY2tlZDsKICAgICAgICBlbHNlIGRhdGVuW2VsLmlk XSA9IGVsLnZhbHVlOwogICAgfSk7CiAgICBrb2VycGVyLnF1ZXJ5U2VsZWN0b3JBbGwoJ1tjb250 ZW50ZWRpdGFibGU9InRydWUiXScpLmZvckVhY2goZnVuY3Rpb24oZWwpIHsKICAgICAgICBpZiAo IWVsLmlkKSByZXR1cm47CiAgICAgICAgZGF0ZW5bZWwuaWRdID0gJ19faHRtbF9fJyArIGVsLmlu bmVySFRNTDsKICAgIH0pOwogICAgcmV0dXJuIGRhdGVuOwp9CgpleHBvcnQgZnVuY3Rpb24gbW9k YWxGb3JtRGF0ZW5TY2hyZWliZW4oZGF0ZW4pIHsKICAgIGlmICghZGF0ZW4pIHJldHVybjsKICAg IE9iamVjdC5rZXlzKGRhdGVuKS5mb3JFYWNoKGZ1bmN0aW9uKGlkKSB7CiAgICAgICAgdmFyIGVs ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpOwogICAgICAgIGlmICghZWwpIHJldHVybjsK ICAgICAgICB2YXIgd2VydCA9IGRhdGVuW2lkXTsKICAgICAgICAvLyBIVE1MLVdlcnRlIChFbnR3 dXJmLVJlc3RvcmUgYXVzIGxvY2FsU3RvcmFnZSwgY29udGVudGVkaXRhYmxlLVJURXMpOgogICAg ICAgIC8vIHN0cmlrdCBkdXJjaCBkaWUgQWxsb3dsaXN0LVNhbml0aXplci1Qb2xpY3kuIFNvbnN0 IGtvZW5udGUgZWluCiAgICAgICAgLy8gcHJhZXBhcmllcnRlciBQZXJzaXN0ZWQtSFRNTC1XZXJ0 ICh6LkIuIHZpYSBkaXJla3RlbSBhZG1pbi5qc29uLUVkaXQpCiAgICAgICAgLy8gYmVpbSBSZXN0 b3JlIGFrdGl2ZW4gU2NyaXB0LUNvZGUgaW5qaXppZXJlbi4KICAgICAgICBpZiAodHlwZW9mIHdl cnQgPT09ICdzdHJpbmcnICYmIHdlcnQuaW5kZXhPZignX19odG1sX18nKSA9PT0gMCkgewogICAg ICAgICAgICBlbC5pbm5lckhUTUwgPSBzYW5pdGl6ZVJpY2hIdG1sKHdlcnQuc2xpY2UoOCkpOwog ICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIGlmIChlbC50eXBlID09PSAnY2hl Y2tib3gnIHx8IGVsLnR5cGUgPT09ICdyYWRpbycpIGVsLmNoZWNrZWQgPSAhIXdlcnQ7CiAgICAg ICAgZWxzZSBpZiAoZWwudGFnTmFtZSA9PT0gJ0lOUFVUJyB8fCBlbC50YWdOYW1lID09PSAnVEVY VEFSRUEnIHx8IGVsLnRhZ05hbWUgPT09ICdTRUxFQ1QnKSBlbC52YWx1ZSA9IHdlcnQ7CiAgICAg ICAgZWxzZSBlbC5pbm5lckhUTUwgPSBzYW5pdGl6ZVJpY2hIdG1sKHR5cGVvZiB3ZXJ0ID09PSAn c3RyaW5nJyA/IHdlcnQgOiAnJyk7CiAgICB9KTsKfQoKLy8gPT09PT0gTW9kYWwtU3lzdGVtID09 PT09CgpleHBvcnQgZnVuY3Rpb24gbW9kYWxEaXJ0eVRyYWNraW5nQWt0aXZpZXJlbigpIHsKICAg IHZhciBrb2VycGVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21vZGFsLWtvZXJwZXInKTsK ICAgIGlmICgha29lcnBlcikgcmV0dXJuOwogICAgZnVuY3Rpb24gbWFya0RpcnR5KCkgeyBaLm1v ZGFsRGlydHkgPSB0cnVlOyB9CiAgICB2YXIgaW5wdXRzID0ga29lcnBlci5xdWVyeVNlbGVjdG9y QWxsKCdpbnB1dCwgdGV4dGFyZWEsIHNlbGVjdCwgW2NvbnRlbnRlZGl0YWJsZT0idHJ1ZSJdJyk7 CiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGlucHV0cy5sZW5ndGg7IGkrKykgewogICAgICAgIGlu cHV0c1tpXS5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsIG1hcmtEaXJ0eSk7CiAgICAgICAgaW5w dXRzW2ldLmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIG1hcmtEaXJ0eSk7CiAgICB9Cn0KCmV4 cG9ydCBmdW5jdGlvbiBtb2RhbFNwZWljaGVyQnV0dG9uQmluZGVuKCkgewogICAgaWYgKCFaLm1v ZGFsT25TcGVpY2hlcm4pIHJldHVybjsKICAgIHZhciBidG4gPSBkb2N1bWVudC5nZXRFbGVtZW50 QnlJZCgnZGxnLXNwZWljaGVybicpOwogICAgaWYgKCFidG4pIHJldHVybjsKICAgIGJ0bi5hZGRF dmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKCkgewogICAgICAgIC8vIFJlLUVudHJ5LVNj aHV0eiAoQXVkaXQtUGhhc2UgQS4yLCAyMDI2LTA1LTIxKTogd2VubiBkZXIgVXNlcgogICAgICAg IC8vIG1laHJmYWNoIHNjaG5lbGwgaGludGVyZWluYW5kZXIga2xpY2t0L0VudGVydGlwcHQsIHNv bGwgZGVyIFNhdmUtCiAgICAgICAgLy8gQ2FsbGJhY2sgbnVyIGVpbiBNYWwgbGF1ZmVuLiBEaXJ0 eS1GbGFnIHdpcmQgYXVjaCBnbGVpY2ggenVydWVjay0KICAgICAgICAvLyBnZXNldHp0LCBkYW1p dCBlaW4gbmFjaGZvbGdlbmRlcyBtb2RhbFNjaGxpZXNzZW4oKSBpbSBDYWxsYmFjawogICAgICAg IC8vIG9obmUgQ29uZmlybSBkdXJjaGdlaHQuCiAgICAgICAgaWYgKGJ0bi5kaXNhYmxlZCkgcmV0 dXJuOwogICAgICAgIGJ0bi5kaXNhYmxlZCA9IHRydWU7CiAgICAgICAgWi5tb2RhbERpcnR5ID0g ZmFsc2U7CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgWi5tb2RhbE9uU3BlaWNoZXJuKCk7CiAg ICAgICAgfSBmaW5hbGx5IHsKICAgICAgICAgICAgLy8gRmFsbHMgZGFzIE1vZGFsIG5vY2ggb2Zm ZW4gaXN0IChWYWxpZGllcnVuZyBzY2hsdWcgZmVobCwKICAgICAgICAgICAgLy8gdG9hc3Qgc3Rh dHQgY2xvc2UpLCB3aWVkZXIgZnJlaWdlYmVuIOKAlCBzb25zdCBibGVpYnQgZGVyCiAgICAgICAg ICAgIC8vIEJ1dHRvbiBkYXVlcmhhZnQgaW5ha3RpdiB1bmQgZGVyIFVzZXIgc2l0enQgZmVzdC4K ICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciBz dGlsbE9wZW4gPSAhZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21vZGFsLW92ZXJsYXknKS5jbGFz c0xpc3QuY29udGFpbnMoJ3ZlcnN0ZWNrdCcpOwogICAgICAgICAgICAgICAgdmFyIHNhbWVCdG4g PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZGxnLXNwZWljaGVybicpOwogICAgICAgICAgICAg ICAgaWYgKHN0aWxsT3BlbiAmJiBzYW1lQnRuID09PSBidG4pIGJ0bi5kaXNhYmxlZCA9IGZhbHNl OwogICAgICAgICAgICB9LCAwKTsKICAgICAgICB9CiAgICB9KTsKfQoKLy8gbW9kYWxaZWlnZW4o dGl0ZWwsIGtvZXJwZXJIdG1sLCBmdXNzSHRtbCwgb25TcGVpY2hlcm4sIG1vZGFsS2V5Pywgb3B0 PykKLy8gbW9kYWxLZXkgaXN0IG9wdGlvbmFsIOKAlCB3ZW5uIGdlc2V0enQsIHdpcmQgZGVyIEVu dHd1cmYtTWVjaGFuaXNtdXMKLy8gKFNwZWMgRi40KSBha3RpdmllcnQ6IFJlc3RvcmUtQmFubmVy IGJlaW0gT3BlbiwgIkFscyBFbnR3dXJmIi1PcHRpb24KLy8gYmVpbSBWZXJ3ZXJmZW4tRGlhbG9n LiBFbXBmb2hsZW4gZnVlciBhbGxlIE1vZGFscyBtaXQgbmljaHQtdHJpdmlhbGVuCi8vIEVpbmdh YmVuIChFLU1haWwtVm9ybGFnZW4sIFBlcnNvbi1FZGl0LCBTb25kZXJ0ZXJtaW4sIGV0Yy4pLgov LyBvcHQucmVpbmVyRGlhbG9nPXRydWUgdWViZXJzcHJpbmd0IERpcnR5LVRyYWNraW5nICsgU3Bl aWNoZXItQnV0dG9uLQovLyBCaW5kaW5nIOKAlCBmdWVyIENvbmZpcm0tL0luZm8tTW9kYWxzIG9o bmUgRm9ybS1JbnB1dHMgKEJlc3RhZXRpZ2VuLAovLyBWZXJhbnR3b3J0dW5ncy1VZWJlcmdhbmcp LiBTcGFydCBRdWVyeXMgdW5kIExpc3RlbmVyLUJpbmRpbmdzIGF1ZiBkZW4KLy8gbGFuZ3NhbWVu IEJlaG9lcmRlbi1QQ3MuCmV4cG9ydCBmdW5jdGlvbiBtb2RhbFplaWdlbih0aXRlbCwga29lcnBl ckh0bWwsIGZ1c3NIdG1sLCBvblNwZWljaGVybiwgbW9kYWxLZXksIG9wdCkgewogICAgb3B0ID0g b3B0IHx8IHt9OwogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21vZGFsLXRpdGVsJykudGV4 dENvbnRlbnQgPSB0aXRlbDsKICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtb2RhbC1rb2Vy cGVyJykuaW5uZXJIVE1MID0ga29lcnBlckh0bWw7CiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJ ZCgnbW9kYWwtZnVzcycpLmlubmVySFRNTCA9IGZ1c3NIdG1sOwogICAgdmFyIG92ZXJsYXkgPSBk b2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbW9kYWwtb3ZlcmxheScpOwogICAgb3ZlcmxheS5jbGFz c0xpc3QucmVtb3ZlKCd2ZXJzdGVja3QnKTsKICAgIG92ZXJsYXkuc2V0QXR0cmlidXRlKCdhcmlh LWhpZGRlbicsICdmYWxzZScpOwoKICAgIFoubW9kYWxEaXJ0eSA9IGZhbHNlOwogICAgWi5tb2Rh bE9uU3BlaWNoZXJuID0gb25TcGVpY2hlcm4gfHwgbnVsbDsKICAgIFoubW9kYWxTcGVpY2hlckZ1 c3NIdG1sID0gZnVzc0h0bWwgfHwgJyc7CiAgICBaLm1vZGFsS2V5ID0gbW9kYWxLZXkgfHwgbnVs bDsKICAgIC8vIEF1dG8tU2F2ZSAoUGFrZXQtQywgMjAyNi0wNS0yOSk6IHdlbm4gb3B0LmF1dG9T YXZlIGdlc2V0enQgaXN0LCBydWZ0CiAgICAvLyBtb2RhbFNjaGxpZXNzZW4oKSBiZWkgZGlydHkg YXV0b21hdGlzY2ggb25TcGVpY2hlcm4oKSBzdGF0dCBkZW4KICAgIC8vICJWZXJ3ZXJmZW4/IFNw ZWljaGVybj8iLURpYWxvZyB6dSB6ZWlnZW4uIFVzZXItUHJhZWZlcmVuejogd2VuaWdlcgogICAg Ly8gS2xpY2tzLCBFaW5nYWJlbiBnZWhlbiBuaWNodCBhdXMgVmVyc2VoZW4gdmVybG9yZW4uCiAg ICBaLm1vZGFsQXV0b1NhdmUgPSAhIW9wdC5hdXRvU2F2ZTsKCiAgICBpZiAoIW9wdC5yZWluZXJE aWFsb2cpIHsKICAgICAgICBtb2RhbFNwZWljaGVyQnV0dG9uQmluZGVuKCk7CiAgICAgICAgbW9k YWxEaXJ0eVRyYWNraW5nQWt0aXZpZXJlbigpOwogICAgfQoKICAgIC8vIExhZW5nZW4tQ291bnRl ciBmdWVyIEZlbGRlciBtaXQgZGF0YS1tYXhsZW5ndGgtY291bnRlciBpbml0aWFsaXNpZXJlbi4K ICAgIGxhZW5nZUNvdW50ZXJJbUNvbnRhaW5lckluaXRpYWxpc2llcmVuKGRvY3VtZW50LmdldEVs ZW1lbnRCeUlkKCdtb2RhbC1rb2VycGVyJykpOwoKICAgIC8vIEVudHd1cmYtUmVzdG9yZS1CYW5u ZXIgZmFsbHMgdm9yaGFuZGVuCiAgICBpZiAobW9kYWxLZXkpIHsKICAgICAgICB2YXIgZW50d3Vy ZiA9IGVudHd1cmZGdWVyKG1vZGFsS2V5KTsKICAgICAgICBpZiAoZW50d3VyZikgbW9kYWxFbnR3 dXJmQmFubmVyWmVpZ2VuKGVudHd1cmYpOwogICAgfQoKICAgIC8vIGExMXkgKFNwcmludCA2YSAy MDI2LTA1LTI5KTogRm9jdXMtVHJhcCBha3RpdmllcmVuICsgZXJzdGVuIEZva3VzCiAgICAvLyBp biBkYXMgTW9kYWwgc2V0emVuLiBWb3JoZXIgYWt0aXZlciBGb2t1cyB3aXJkIGluIFoubW9kYWxG b2N1c1JldHVybgogICAgLy8gZ2VtZXJrdCwgZGFtaXQgbW9kYWxTY2hsaWVzc2VuKCkgaWhuIHJl c3RhdXJpZXJ0LgogICAgWi5tb2RhbEZvY3VzUmV0dXJuID0gZG9jdW1lbnQuYWN0aXZlRWxlbWVu dDsKICAgIGZva3VzVHJhcEFrdGl2aWVyZW4ob3ZlcmxheSk7Cn0KCmV4cG9ydCBmdW5jdGlvbiBt b2RhbFNjaGxpZXNzZW4oZm9yY2UpIHsKICAgIGlmICghZm9yY2UgJiYgWi5tb2RhbERpcnR5KSB7 CiAgICAgICAgLy8gQXV0by1TYXZlLU1vZHVzIChQYWtldC1DLCAyMDI2LTA1LTI5KTogd2VubiBk ZXIgQXVmcnVmZXIKICAgICAgICAvLyB7YXV0b1NhdmU6dHJ1ZX0gZ2VzZXR6dCB1bmQgZWluZW4g U3BlaWNoZXItSGFuZGxlciByZWdpc3RyaWVydAogICAgICAgIC8vIGhhdCwgc3BlaWNoZXJuIHdp ciBkaXJla3QuIERlciBIYW5kbGVyIHNjaGxpZXNzdCBkYXMgTW9kYWwKICAgICAgICAvLyBzZWxi c3QgYmVpIEVyZm9sZyAob2RlciB6ZWlndCBWYWxpZGllcnVuZ3MtVG9hc3QgdW5kIGxhZXNzdCBl cwogICAgICAgIC8vIG9mZmVuKS4gQmVpIE1pc3NlcmZvbGcgc2llaHQgZGVyIFVzZXIgZGllIFBm bGljaHRmZWxkLUhlcnZvci0KICAgICAgICAvLyBoZWJ1bmcgdW5kIGthbm4gbmFjaGJlc3Nlcm4u CiAgICAgICAgaWYgKFoubW9kYWxBdXRvU2F2ZSAmJiB0eXBlb2YgWi5tb2RhbE9uU3BlaWNoZXJu ID09PSAnZnVuY3Rpb24nKSB7CiAgICAgICAgICAgIHRyeSB7IFoubW9kYWxPblNwZWljaGVybigp OyB9IGNhdGNoIChfKSB7fQogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIG1v ZGFsRGlydHlCZXN0YWV0aWd1bmdaZWlnZW4oKTsKICAgICAgICByZXR1cm47CiAgICB9CiAgICBa Lm1vZGFsRGlydHkgPSBmYWxzZTsKICAgIFoubW9kYWxPblNwZWljaGVybiA9IG51bGw7CiAgICBa Lm1vZGFsU3BlaWNoZXJGdXNzSHRtbCA9IG51bGw7CiAgICBaLm1vZGFsS2V5ID0gbnVsbDsKICAg IFoubW9kYWxPbkRpc2NhcmQgPSBudWxsOwogICAgWi5tb2RhbEF1dG9TYXZlID0gZmFsc2U7CiAg ICB2YXIgb3ZlcmxheSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtb2RhbC1vdmVybGF5Jyk7 CiAgICBvdmVybGF5LmNsYXNzTGlzdC5hZGQoJ3ZlcnN0ZWNrdCcpOwogICAgb3ZlcmxheS5zZXRB dHRyaWJ1dGUoJ2FyaWEtaGlkZGVuJywgJ3RydWUnKTsKICAgIC8vIGRhdGEtbm8tY2xvc2UgKHNp ZWhlIGFwcC5qcyBCYWNrZHJvcC1IYW5kbGVyKSB6dXJ1ZWNrc2V0emVuLCBzb25zdAogICAgLy8g d3VlcmRlIGRhcyBuYWVjaHN0ZSBNb2RhbCBkZW4gU2NodXR6IGVyYmVuLgogICAgb3ZlcmxheS5y ZW1vdmVBdHRyaWJ1dGUoJ2RhdGEtbm8tY2xvc2UnKTsKICAgIC8vIE1vZGFsLVNwZXppYWwtR3Jv ZXNzZW5rbGFzc2Ugd2llZGVyIGVudGZlcm5lbiwgZGFtaXQgZGFzIG5hZWNoc3RlCiAgICAvLyBN b2RhbCB3aWVkZXIgU3RhbmRhcmQtNjIwcHggaGF0CiAgICB2YXIgaW5oYWx0ID0gZG9jdW1lbnQu cXVlcnlTZWxlY3RvcignI21vZGFsLW92ZXJsYXkgLm1vZGFsLWluaGFsdCcpOwogICAgaWYgKGlu aGFsdCkgaW5oYWx0LmNsYXNzTGlzdC5yZW1vdmUoJ21vZGFsLWluaGFsdC1ncm9zcycpOwoKICAg IC8vIGExMXkgKFNwcmludCA2YSAyMDI2LTA1LTI5KTogRm9jdXMtVHJhcCBhdXMsIEZva3VzIHp1 cnVlY2suCiAgICBmb2t1c1RyYXBEZWFrdGl2aWVyZW4ob3ZlcmxheSk7CiAgICBpZiAoWi5tb2Rh bEZvY3VzUmV0dXJuICYmIHR5cGVvZiBaLm1vZGFsRm9jdXNSZXR1cm4uZm9jdXMgPT09ICdmdW5j dGlvbicpIHsKICAgICAgICB0cnkgeyBaLm1vZGFsRm9jdXNSZXR1cm4uZm9jdXMoKTsgfSBjYXRj aCAoZSkge30KICAgIH0KICAgIFoubW9kYWxGb2N1c1JldHVybiA9IG51bGw7Cn0KCmV4cG9ydCBm dW5jdGlvbiBtb2RhbERpcnR5QmVzdGFldGlndW5nWmVpZ2VuKCkgewogICAgdmFyIGZ1c3MgPSBk b2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbW9kYWwtZnVzcycpOwogICAgaWYgKCFmdXNzKSByZXR1 cm47CiAgICBpZiAoZnVzcy5xdWVyeVNlbGVjdG9yKCcuZGlydHktd2Fybi16ZWlsZScpKSByZXR1 cm47IC8vIGJlcmVpdHMgYWt0aXYKICAgIC8vIEVudHd1cmYtQnV0dG9uIG51ciB3ZW5uIGRlciBB dWZydWZlciBlaW5lbiBtb2RhbEtleSBnZXNldHp0IGhhdAogICAgdmFyIGVudHd1cmZCdG4gPSBa Lm1vZGFsS2V5CiAgICAgICAgPyAnPGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1zZWsiIGlkPSJkaXJ0 eS1lbnR3dXJmIiB0eXBlPSJidXR0b24iIHRpdGxlPSJFaW5nYWJlbiBhbHMgRW50d3VyZiB6d2lz Y2hlbnNwZWljaGVybiAobWF4ICcgKyBFTlRXVVJGX1RUTF9UQUdFICsgJyBUYWdlKSI+QWxzIEVu dHd1cmY8L2J1dHRvbj4nCiAgICAgICAgOiAnJzsKICAgIC8vIFNwZWljaGVybi1CdXR0b24gbnVy IHdlbm4gZGVyIE1vZGFsLUNhbGxlciBlaW5lbiBvblNwZWljaGVybi1IYW5kbGVyCiAgICAvLyBy ZWdpc3RyaWVydCBoYXQuIFNwYXJ0IGRlbSBVc2VyIGRlbiBVbXdlZyB1ZWJlciAiV2VpdGVyIGJl YXJiZWl0ZW4iCiAgICAvLyArIEtsaWNrIGF1ZiBkZW4gZWlnZW50bGljaGVuIFNwZWljaGVybi1C dXR0b24gaW0gTW9kYWwtRm9vdGVyLgogICAgdmFyIHNwZWljaGVybkJ0biA9ICh0eXBlb2YgWi5t b2RhbE9uU3BlaWNoZXJuID09PSAnZnVuY3Rpb24nKQogICAgICAgID8gJzxidXR0b24gY2xhc3M9 ImJ0biBidG4tcHJpbWFlciIgaWQ9ImRpcnR5LXNwZWljaGVybiIgdHlwZT0iYnV0dG9uIj5TcGVp Y2hlcm48L2J1dHRvbj4nCiAgICAgICAgOiAnJzsKICAgIGZ1c3MuaW5uZXJIVE1MID0KICAgICAg ICAnPGRpdiBjbGFzcz0iZGlydHktd2Fybi16ZWlsZSIgc3R5bGU9Im1hcmdpbi1yaWdodDphdXRv O2NvbG9yOnZhcigtLWZhcmJlLXdhcm51bmcpO2ZvbnQtd2VpZ2h0OjYwMDtkaXNwbGF5OmZsZXg7 YWxpZ24taXRlbXM6Y2VudGVyO2dhcDo2cHgiPicgKwogICAgICAgICAgICAnPHNwYW4+VW5nZXNw ZWljaGVydGUgw4RuZGVydW5nZW48L3NwYW4+JyArCiAgICAgICAgJzwvZGl2PicgKwogICAgICAg ICc8YnV0dG9uIGNsYXNzPSJidG4iIGlkPSJkaXJ0eS16dXJ1ZWNrIiB0eXBlPSJidXR0b24iPldl aXRlciBiZWFyYmVpdGVuPC9idXR0b24+JyArCiAgICAgICAgZW50d3VyZkJ0biArCiAgICAgICAg JzxidXR0b24gY2xhc3M9ImJ0biBidG4tZ2VmYWhyIiBpZD0iZGlydHktdmVyd2VyZmVuIiB0eXBl PSJidXR0b24iPlZlcndlcmZlbjwvYnV0dG9uPicgKwogICAgICAgIHNwZWljaGVybkJ0bjsKICAg IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkaXJ0eS16dXJ1ZWNrJykuYWRkRXZlbnRMaXN0ZW5l cignY2xpY2snLCBmdW5jdGlvbigpIHsKICAgICAgICBmdXNzLmlubmVySFRNTCA9IFoubW9kYWxT cGVpY2hlckZ1c3NIdG1sIHx8ICcnOwogICAgICAgIG1vZGFsU3BlaWNoZXJCdXR0b25CaW5kZW4o KTsKICAgIH0pOwogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2RpcnR5LXZlcndlcmZlbicp LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oKSB7CiAgICAgICAgLy8gV2VubiBl aW4gRW50d3VyZiBnZXNwZWljaGVydCB3YXI6IG5pY2h0IGF1dG9tYXRpc2NoIGxvZXNjaGVuLAog ICAgICAgIC8vIGRhbWl0IGRlciBVc2VyIGlobiBiZWltIG5hZWNoc3RlbiBPZWZmbmVuIHdpZWRl ciBmaW5kZXQg4oCUCiAgICAgICAgLy8gYWJlciBkZXIgYWt0dWVsbGUgVmVyd2VyZmVuLUtsaWNr IHNjaGxpZXNzdCB0cm90emRlbS4KICAgICAgICAvLyBadXNhZXR6bGljaDogTW9kdWwtc3Blemlm aXNjaGVyIERpc2NhcmQtSG9vayBmdWVyIFJvbGxiYWNrLUxvZ2lrCiAgICAgICAgLy8gKEV4Y2Vs LUltcG9ydC1NYXBwaW5nIHJvbGx0IGltcFN0YXRlIGF1ZiBTbmFwc2hvdCB6dXJ1ZWNrKS4KICAg ICAgICBpZiAodHlwZW9mIFoubW9kYWxPbkRpc2NhcmQgPT09ICdmdW5jdGlvbicpIHsKICAgICAg ICAgICAgdHJ5IHsgWi5tb2RhbE9uRGlzY2FyZCgpOyB9IGNhdGNoIChlKSB7fQogICAgICAgIH0K ICAgICAgICBtb2RhbFNjaGxpZXNzZW4odHJ1ZSk7CiAgICB9KTsKICAgIHZhciBlbnR3dXJmRWwg PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZGlydHktZW50d3VyZicpOwogICAgaWYgKGVudHd1 cmZFbCkgZW50d3VyZkVsLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oKSB7CiAg ICAgICAgdmFyIHRpdGVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21vZGFsLXRpdGVsJykg PyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbW9kYWwtdGl0ZWwnKS50ZXh0Q29udGVudCA6ICcn OwogICAgICAgIGVudHd1cmZTcGVpY2hlcm4oWi5tb2RhbEtleSwgdGl0ZWwsIG1vZGFsRm9ybURh dGVuTGVzZW4oKSk7CiAgICAgICAgdG9hc3QoJ0FscyBFbnR3dXJmIGdlc3BlaWNoZXJ0ICgnICsg RU5UV1VSRl9UVExfVEFHRSArICcgVGFnZSBoYWx0YmFyKScsICdlcmZvbGcnKTsKICAgICAgICBt b2RhbFNjaGxpZXNzZW4odHJ1ZSk7CiAgICB9KTsKICAgIHZhciBzcGVpY2hlcm5FbCA9IGRvY3Vt ZW50LmdldEVsZW1lbnRCeUlkKCdkaXJ0eS1zcGVpY2hlcm4nKTsKICAgIGlmIChzcGVpY2hlcm5F bCkgc3BlaWNoZXJuRWwuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbigpIHsKICAg ICAgICAvLyBSZS1FbnRyeS1TY2h1dHogKEF1ZGl0LVBoYXNlIEEuMiwgMjAyNi0wNS0yMSkuCiAg ICAgICAgaWYgKHNwZWljaGVybkVsLmRpc2FibGVkKSByZXR1cm47CiAgICAgICAgc3BlaWNoZXJu RWwuZGlzYWJsZWQgPSB0cnVlOwogICAgICAgIC8vIFZvcmdlbWVya3RlbiBTYXZlLUhhbmRsZXIg YXVmcnVmZW47IGRlciBpc3QgdmlhIG1vZGFsWmVpZ2VuKCkKICAgICAgICAvLyBnZXNldHp0IHVu ZCBrdWVtbWVydCBzaWNoIHVtIFZhbGlkaWVydW5nICsgQVBJLUF1ZnJ1ZiArIFNjaGxpZXNzZW4u CiAgICAgICAgdHJ5IHsgWi5tb2RhbE9uU3BlaWNoZXJuKCk7IH0gY2F0Y2ggKGUpIHsKICAgICAg ICAgICAgdG9hc3QoJ0ZlaGxlciBiZWltIFNwZWljaGVybjogJyArIChlICYmIGUubWVzc2FnZSB8 fCBlKSwgJ2ZlaGxlcicpOwogICAgICAgICAgICBzcGVpY2hlcm5FbC5kaXNhYmxlZCA9IGZhbHNl OwogICAgICAgIH0KICAgIH0pOwp9CgovLyBSZXN0b3JlLUJhbm5lciBiZWltIE1vZGFsLU9wZW4g KFNwZWMgRi40KTogd2VubiBmdWVyIGRlbiBtb2RhbEtleSBlaW4KLy8gRW50d3VyZiBleGlzdGll cnQsIG9iZW4gaW0gTW9kYWwtS29lcnBlciBlaW4gZGV6ZW50ZXMgQmFubmVyIG1pdAovLyBXaWVk ZXJoZXJzdGVsbGVuICsgVmVyd2VyZmVuLgpleHBvcnQgZnVuY3Rpb24gbW9kYWxFbnR3dXJmQmFu bmVyWmVpZ2VuKGVudHd1cmYpIHsKICAgIHZhciBrb2VycGVyID0gZG9jdW1lbnQuZ2V0RWxlbWVu dEJ5SWQoJ21vZGFsLWtvZXJwZXInKTsKICAgIGlmICgha29lcnBlciB8fCAhZW50d3VyZikgcmV0 dXJuOwogICAgdmFyIGFsdFRhZ2UgPSBNYXRoLm1heCgwLCBNYXRoLmZsb29yKChEYXRlLm5vdygp IC0gZW50d3VyZi50cykgLyA4NjQwMDAwMCkpOwogICAgdmFyIGFsdFRleHQgPSBhbHRUYWdlID09 PSAwID8gJ2hldXRlJyA6IChhbHRUYWdlID09PSAxID8gJ2dlc3Rlcm4nIDogJ3ZvciAnICsgYWx0 VGFnZSArICcgVGFnZW4nKTsKICAgIHZhciBiYW5uZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50 KCdkaXYnKTsKICAgIGJhbm5lci5jbGFzc05hbWUgPSAnbW9kYWwtZW50d3VyZi1iYW5uZXInOwog ICAgYmFubmVyLmlubmVySFRNTCA9CiAgICAgICAgJzxzcGFuIGNsYXNzPSJtZWItdGV4dCI+RHUg aGFzdCBoaWVyIGVpbmVuIEVudHd1cmYgdm9uIDxzdHJvbmc+JyArIGVzY2FwZUhUTUwoYWx0VGV4 dCkgKyAnPC9zdHJvbmc+IGxpZWdlbi4gV2llZGVyaGVyc3RlbGxlbj88L3NwYW4+JyArCiAgICAg ICAgJzxidXR0b24gY2xhc3M9ImJ0biBidG4ta2xlaW4gYnRuLXByaW1hZXIiIHR5cGU9ImJ1dHRv biIgaWQ9Im1lYi1yZXN0b3JlIj5XaWVkZXJoZXJzdGVsbGVuPC9idXR0b24+JyArCiAgICAgICAg JzxidXR0b24gY2xhc3M9ImJ0biBidG4ta2xlaW4iIHR5cGU9ImJ1dHRvbiIgaWQ9Im1lYi12ZXJ3 ZXJmZW4iIHRpdGxlPSJFbnR3dXJmIGVuZGfDvGx0aWcgbMO2c2NoZW4iPlZlcndlcmZlbjwvYnV0 dG9uPic7CiAgICBrb2VycGVyLmluc2VydEJlZm9yZShiYW5uZXIsIGtvZXJwZXIuZmlyc3RDaGls ZCk7CiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbWViLXJlc3RvcmUnKS5hZGRFdmVudExp c3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKCkgewogICAgICAgIG1vZGFsRm9ybURhdGVuU2NocmVp YmVuKGVudHd1cmYuZGF0ZW4pOwogICAgICAgIGVudHd1cmZMb2VzY2hlbihaLm1vZGFsS2V5KTsK ICAgICAgICBiYW5uZXIucmVtb3ZlKCk7CiAgICAgICAgWi5tb2RhbERpcnR5ID0gdHJ1ZTsKICAg ICAgICB0b2FzdCgnRW50d3VyZiB3aWVkZXJoZXJnZXN0ZWxsdCcsICdlcmZvbGcnKTsKICAgIH0p OwogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21lYi12ZXJ3ZXJmZW4nKS5hZGRFdmVudExp c3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKCkgewogICAgICAgIGVudHd1cmZMb2VzY2hlbihaLm1v ZGFsS2V5KTsKICAgICAgICBiYW5uZXIucmVtb3ZlKCk7CiAgICAgICAgdG9hc3QoJ0VudHd1cmYg Z2Vsw7ZzY2h0JywgJ2luZm8nKTsKICAgIH0pOwp9CgovLyA9PT09PSBaZW50cmFsZXIgRGlydHkt VHJhY2tlciA9PT09PQovLyBNb3RpdmF0aW9uOiBUYWJlbGxlbi1JbnB1dHMgKEZhY2hhdWZzaWNo dCwgU3VwZXJVc2VyLCBEaWVuc3RncnVwcGVuLCDigKYpCi8vIHdlcmRlbiBudXIgYmVpbSBLbGlj ayBhdWYgIlNwZWljaGVybiIgcGVyc2lzdGllcnQuIFdlciBkZW4gVGFiIHZvcmhlcgovLyB3ZWNo c2VsdCwgdmVybGllcnQgZGllIEVpbmdhYmVuLiBEZXIgVHJhY2tlciBzYW1tZWx0IHBybyBUYWIg ZWluZW4KLy8gRGlydHktU3RhdGUsIGxhZXNzdCBkZW4gU2F2ZS1CdXR0b24gcHVsc2VuICsgZWlu ZW4gIlVuZ2VzcGVpY2hlcnRlCi8vIEFlbmRlcnVuZ2VuIi1IaW53ZWlzIGVyc2NoZWluZW4sIHVu ZCB6ZWlndCBiZWltIFRhYi1XZWNoc2VsIGVpbgovLyBCZXN0YWV0aWd1bmdzLU1vZGFsIG1pdCBT cGVpY2hlcm4vVmVyd2VyZmVuL0FiYnJlY2hlbi4KLy8KLy8gVGFiLXNwZXppZmlzY2hlIFJlZ2lz dHJhdGlvbnMgbGViZW4gaW4gZGVyIGF1ZnJ1ZmVuZGVuIEluaXQtRnVua3Rpb24KLy8gKGFrdHVl bGwgZGlydHlUcmFja2VyRWlucmljaHRlbiBpbiBhcHAuanMsIGFiIFBoYXNlIDggaW4gYWRtaW4v YWRtaW4uanMpLgovLyBIaWVyIG51ciBkaWUgZ2VuZXJpc2NoZSBSZWdpc3RyeS0gdW5kIEFrdGlv bnMtQVBJLgoKdmFyIERJUlRZID0ge307ICAvLyB0YWJJZCAtPiB7IGRpcnR5LCBsYWJlbCwgYnRu SWRzW10sIGhpbnRJZHNbXSwgc2F2ZUZuPywgZGlzY2FyZEZuPywgY2hhbmdlU3VtbWFyeT8gfQoK ZXhwb3J0IGZ1bmN0aW9uIGRpcnR5UmVnaXN0cmllcmUodGFiSWQsIGNmZykgewogICAgRElSVFlb dGFiSWRdID0gewogICAgICAgIGRpcnR5OiBmYWxzZSwKICAgICAgICBsYWJlbDogY2ZnLmxhYmVs IHx8IHRhYklkLAogICAgICAgIGJ0bklkczogY2ZnLmJ0bklkcyB8fCAoY2ZnLmJ0bklkID8gW2Nm Zy5idG5JZF0gOiBbXSksCiAgICAgICAgaGludElkczogY2ZnLmhpbnRJZHMgfHwgKGNmZy5oaW50 SWQgPyBbY2ZnLmhpbnRJZF0gOiBbXSksCiAgICAgICAgc2F2ZUZuOiBjZmcuc2F2ZUZuIHx8IG51 bGwsCiAgICAgICAgZGlzY2FyZEZuOiBjZmcuZGlzY2FyZEZuIHx8IG51bGwsCiAgICAgICAgLy8g Y2hhbmdlU3VtbWFyeTogZnVuY3Rpb24oKSAtPiBBcnJheTxTdHJpbmc+IG1pdCBrb25rcmV0ZW4K ICAgICAgICAvLyBBZW5kZXJ1bmdzLUJlc2NocmVpYnVuZ2VuICgiR3J1cHBlIEEgdW1iZW5hbm50 IHp1IEEtU2NoaWNodCIsCiAgICAgICAgLy8gIkZhcmJlIEdydXBwZSBCIGdlYWVuZGVydCIpLiBX aXJkIHZvbiBkaXJ0eVBydWVmZW4oKSBpbSBEaWFsb2cKICAgICAgICAvLyBwcm8gVGFiIGdlcmVu ZGVydC4gV2VubiBuaWNodCBnZXNldHp0OiBudXIgVGFiLUxhYmVsIGltIERpYWxvZy4KICAgICAg ICBjaGFuZ2VTdW1tYXJ5OiBjZmcuY2hhbmdlU3VtbWFyeSB8fCBudWxsLAogICAgICAgIC8vIFBo YXNlLTkgQXV0by1TYXZlIChsb2thbGVyIERyYWZ0IGltIGxvY2FsU3RvcmFnZSk6CiAgICAgICAg Ly8gLSBkcmFmdEtleTogICBTY2hsdWVzc2VsIGltIHZpMy50YWJEcmFmdHMtTmFtZXNwYWNlICh6 LkIuICdncnVwcGVuJykKICAgICAgICAvLyAtIHNuYXBzaG90Rm46IGZ1bmN0aW9uKCkgLT4gYmVs aWViaWdlIERhdGVuIOKAlCBsaWVmZXJ0IGFrdHVlbGxlbgogICAgICAgIC8vICAgU2VrdGlvbnMt U3RhbmQgenVtIFBlcnNpc3RpZXJlbiBhbHMgRHJhZnQKICAgICAgICAvLyAtIHJlc3RvcmVGbjog IGZ1bmN0aW9uKGRhdGVuKSAtPiB3ZW5kZXQgZWluZW4gRHJhZnQgYXVmIGRlbiBET00vU3RhdGUg YW4KICAgICAgICAvLyBOdXIgd2VubiBhbGxlIGRyZWkgZ2VzZXR6dCBzaW5kLCBzY2hyZWlidCBk ZXIgVHJhY2tlciBiZWkgamVkZW0KICAgICAgICAvLyBpbnB1dC9jaGFuZ2UtRXZlbnQgZWluZW4g RHJhZnQgKGRlYm91bmNlZCAycykuIEJlaW0gU2F2ZSB3aXJkIGVyCiAgICAgICAgLy8gdm9tIGpl d2VpbGlnZW4gSGFuZGxlciB2aWEgdGFiRHJhZnRMb2VzY2hlbiBhdWZnZXJhZXVtdC4KICAgICAg ICBkcmFmdEtleTogY2ZnLmRyYWZ0S2V5IHx8IG51bGwsCiAgICAgICAgc25hcHNob3RGbjogY2Zn LnNuYXBzaG90Rm4gfHwgbnVsbCwKICAgICAgICByZXN0b3JlRm46IGNmZy5yZXN0b3JlRm4gfHwg bnVsbAogICAgfTsKfQoKLy8gTGllZmVydCBkaWUgUmVnaXN0cnktRWludHJhZWdlIChyZWFkLW9u bHkgWnVncmlmZiBmdWVyIGRlbiBUcmFja2VyCi8vIGltIGFkbWluLmpzLCBkYW1pdCBlciBzbmFw c2hvdEZuL2RyYWZ0S2V5IGxlc2VuIGthbm4gb2huZSBlaW4KLy8gd2VpdGVyZXMgRXhwb3J0LVN5 bWJvbCkuIEJld3Vzc3Qga2xlaW4gZ2VoYWx0ZW46IG51ciBGZWxkZXIsIGRpZQovLyBkZXIgVHJh Y2tlciB0YXRzYWVjaGxpY2ggYnJhdWNodC4KZXhwb3J0IGZ1bmN0aW9uIGRpcnR5RWludHJhZyh0 YWJJZCkgewogICAgdmFyIHIgPSBESVJUWVt0YWJJZF07CiAgICBpZiAoIXIpIHJldHVybiBudWxs OwogICAgcmV0dXJuIHsgZHJhZnRLZXk6IHIuZHJhZnRLZXksIHNuYXBzaG90Rm46IHIuc25hcHNo b3RGbiwgcmVzdG9yZUZuOiByLnJlc3RvcmVGbiwgbGFiZWw6IHIubGFiZWwgfTsKfQoKZXhwb3J0 IGZ1bmN0aW9uIGRpcnR5U2V0emVuKHRhYklkLCB3ZXJ0KSB7CiAgICBpZiAoIURJUlRZW3RhYklk XSkgcmV0dXJuOwogICAgRElSVFlbdGFiSWRdLmRpcnR5ID0gISF3ZXJ0OwogICAgRElSVFlbdGFi SWRdLmJ0bklkcy5mb3JFYWNoKGZ1bmN0aW9uKGlkKSB7CiAgICAgICAgdmFyIGIgPSBkb2N1bWVu dC5nZXRFbGVtZW50QnlJZChpZCk7CiAgICAgICAgaWYgKGIpIGIuY2xhc3NMaXN0LnRvZ2dsZSgn ZGlydHktcHVsc2UnLCAhIXdlcnQpOwogICAgfSk7CiAgICBESVJUWVt0YWJJZF0uaGludElkcy5m b3JFYWNoKGZ1bmN0aW9uKGlkKSB7CiAgICAgICAgdmFyIGggPSBkb2N1bWVudC5nZXRFbGVtZW50 QnlJZChpZCk7CiAgICAgICAgaWYgKGgpIGguc3R5bGUuZGlzcGxheSA9IHdlcnQgPyAnJyA6ICdu b25lJzsKICAgIH0pOwp9CgpleHBvcnQgZnVuY3Rpb24gZGlydHlJc3QodGFiSWQpIHsgcmV0dXJu ICEhKERJUlRZW3RhYklkXSAmJiBESVJUWVt0YWJJZF0uZGlydHkpOyB9CgovLyBFeGlzdGVuei1D aGVjazogaXN0IHRhYklkIHVlYmVyaGF1cHQgcmVnaXN0cmllcnQ/IFdpcmQgdm9tIERPTS1FdmVu dC1UcmFja2VyCi8vIGdlYnJhdWNodCwgZGVyIHBybyBTZWN0aW9uLS9UYWItL1RhYmVsbGUtSUQg bmFjaHNjaGF1ZW4gbXVzcywgb2IgZWluCi8vIERpcnR5LVNsb3QgZXhpc3RpZXJ0LCBiZXZvciBl ciBpaG4gYXVmIHRydWUgc2V0enQuCmV4cG9ydCBmdW5jdGlvbiBkaXJ0eUtlbm50KHRhYklkKSB7 IHJldHVybiAhIURJUlRZW3RhYklkXTsgfQoKZXhwb3J0IGZ1bmN0aW9uIGRpcnR5QWt0aXZlKCkg ewogICAgcmV0dXJuIE9iamVjdC5rZXlzKERJUlRZKS5maWx0ZXIoZnVuY3Rpb24oaykgeyByZXR1 cm4gRElSVFlba10uZGlydHk7IH0pOwp9CgovLyBDaGVjay1Nb2RhbCBiZWkgVGFiLVdlY2hzZWw6 IHplaWd0IExpc3RlIGRlciBkaXJ0eSBUYWJzICsgMyBBa3Rpb25lbi4KLy8gd2VpdGVyOiBDYWxs YmFjayBmdWVyIGRlbiBlaWdlbnRsaWNoZW4gV2VjaHNlbCAod2lyZCBudXIgYXVzZ2VmdWVocnQs Ci8vIHdlbm4gZGVyIFVzZXIgZW50d2VkZXIgc3BlaWNoZXJ0IG9kZXIgYmV3dXNzdCB2ZXJ3aXJm dCkuCmV4cG9ydCBmdW5jdGlvbiBkaXJ0eVBydWVmZW4od2VpdGVyKSB7CiAgICB2YXIgYWt0aXYg PSBkaXJ0eUFrdGl2ZSgpOwogICAgaWYgKGFrdGl2Lmxlbmd0aCA9PT0gMCkgeyB3ZWl0ZXIoKTsg cmV0dXJuOyB9CiAgICAvLyBQcm8gYmV0cm9mZmVuZW0gVGFiOiBMYWJlbCBmZXR0ICsgKHdlbm4g Y2hhbmdlU3VtbWFyeSB2b3JoYW5kZW4pCiAgICAvLyB2ZXJzY2hhY2h0ZWx0ZSBEZXRhaWwtTGlz dGUgbWl0IGtvbmtyZXRlbiBBZW5kZXJ1bmdlbi4gV2VubgogICAgLy8gY2hhbmdlU3VtbWFyeSBh dXNuYWhtc3dlaXNlIGVpbmUgRXhjZXB0aW9uIHdpcmZ0ICh6LkIuIHdlaWwgZWluCiAgICAvLyBE T00tS25vdGVuIHdlZyBpc3QpLCB3aXJkIGRlciBUYWIgbnVyIG1pdCBMYWJlbC1aZWlsZSBnZXJl bmRlcnQuCiAgICB2YXIgaXRlbXMgPSBha3Rpdi5tYXAoZnVuY3Rpb24oaykgewogICAgICAgIHZh ciBlbnRyeSA9IERJUlRZW2tdOwogICAgICAgIHZhciBoZWFkID0gJzxzdHJvbmc+JyArIGVzY2Fw ZUhUTUwoZW50cnkubGFiZWwpICsgJzwvc3Ryb25nPic7CiAgICAgICAgdmFyIGRldGFpbCA9ICcn OwogICAgICAgIGlmICh0eXBlb2YgZW50cnkuY2hhbmdlU3VtbWFyeSA9PT0gJ2Z1bmN0aW9uJykg ewogICAgICAgICAgICB2YXIgemVpbGVuID0gW107CiAgICAgICAgICAgIHRyeSB7IHplaWxlbiA9 IGVudHJ5LmNoYW5nZVN1bW1hcnkoKSB8fCBbXTsgfSBjYXRjaCAoZSkgeyB6ZWlsZW4gPSBbXTsg fQogICAgICAgICAgICBpZiAoemVpbGVuLmxlbmd0aCkgewogICAgICAgICAgICAgICAgaGVhZCA9 ICc8c3Ryb25nPicgKyBlc2NhcGVIVE1MKGVudHJ5LmxhYmVsKSArICc8L3N0cm9uZz4gPHNwYW4g c3R5bGU9ImNvbG9yOnZhcigtLXRleHQtbXV0ZWQpO2ZvbnQtc2l6ZToxMnB4Ij4oJyArIHplaWxl bi5sZW5ndGggKyAnKTwvc3Bhbj4nOwogICAgICAgICAgICAgICAgZGV0YWlsID0gJzx1bCBzdHls ZT0ibWFyZ2luOjRweCAwIDAgMThweDtwYWRkaW5nOjA7Zm9udC1zaXplOjEyLjVweDtjb2xvcjp2 YXIoLS10ZXh0LXNlY29uZGFyeSkiPicgKwogICAgICAgICAgICAgICAgICAgIHplaWxlbi5tYXAo ZnVuY3Rpb24oeikgeyByZXR1cm4gJzxsaT4nICsgZXNjYXBlSFRNTCh6KSArICc8L2xpPic7IH0p LmpvaW4oJycpICsKICAgICAgICAgICAgICAgICc8L3VsPic7CiAgICAgICAgICAgIH0KICAgICAg ICB9CiAgICAgICAgcmV0dXJuICc8bGkgc3R5bGU9Im1hcmdpbi1ib3R0b206OHB4Ij4nICsgaGVh ZCArIGRldGFpbCArICc8L2xpPic7CiAgICB9KS5qb2luKCcnKTsKICAgIHZhciBrb2VycGVyID0K ICAgICAgICAnPHA+RXMgZ2lidCB1bmdlc3BlaWNoZXJ0ZSDDhG5kZXJ1bmdlbjo8L3A+JyArCiAg ICAgICAgJzx1bCBzdHlsZT0ibWFyZ2luOjhweCAwIDE0cHggMjBweDtwYWRkaW5nOjA7bGlzdC1z dHlsZTpub25lIj4nICsgaXRlbXMgKyAnPC91bD4nICsKICAgICAgICAnPHA+TcO2Y2h0ZXN0IGR1 IGRpZSDDhG5kZXJ1bmdlbiBzcGVpY2hlcm4gb2RlciB2ZXJ3ZXJmZW4/PC9wPic7CiAgICB2YXIg ZnVzcyA9CiAgICAgICAgJzxidXR0b24gY2xhc3M9ImJ0biIgaWQ9ImRwLWFiYnJlY2hlbiIgdHlw ZT0iYnV0dG9uIj5BYmJyZWNoZW48L2J1dHRvbj4nICsKICAgICAgICAnPGJ1dHRvbiBjbGFzcz0i YnRuIGJ0bi1nZWZhaHIiIGlkPSJkcC12ZXJ3ZXJmZW4iIHR5cGU9ImJ1dHRvbiI+VmVyd2VyZmVu PC9idXR0b24+JyArCiAgICAgICAgJzxidXR0b24gY2xhc3M9ImJ0biBidG4tcHJpbWFlciIgaWQ9 ImRwLXNwZWljaGVybiIgdHlwZT0iYnV0dG9uIj5TcGVpY2hlcm48L2J1dHRvbj4nOwogICAgbW9k YWxaZWlnZW4oJ1VuZ2VzcGVpY2hlcnRlIMOEbmRlcnVuZ2VuJywga29lcnBlciwgZnVzcyk7CiAg ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHAtYWJicmVjaGVuJykuYWRkRXZlbnRMaXN0ZW5l cignY2xpY2snLCBmdW5jdGlvbigpIHsgbW9kYWxTY2hsaWVzc2VuKHRydWUpOyB9KTsKICAgIGRv Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdkcC12ZXJ3ZXJmZW4nKS5hZGRFdmVudExpc3RlbmVyKCdj bGljaycsIGZ1bmN0aW9uKCkgewogICAgICAgIHZhciBwcm9taXNlcyA9IGFrdGl2Lm1hcChmdW5j dGlvbihrKSB7CiAgICAgICAgICAgIHRyeSB7IHJldHVybiAoRElSVFlba10uZGlzY2FyZEZuICYm IERJUlRZW2tdLmRpc2NhcmRGbigpKSB8fCBQcm9taXNlLnJlc29sdmUoKTsgfQogICAgICAgICAg ICBjYXRjaChlKSB7IHJldHVybiBQcm9taXNlLnJlc29sdmUoKTsgfQogICAgICAgIH0pOwogICAg ICAgIFByb21pc2UuYWxsKHByb21pc2VzKS50aGVuKGZ1bmN0aW9uKCkgewogICAgICAgICAgICBh a3Rpdi5mb3JFYWNoKGZ1bmN0aW9uKGspIHsgZGlydHlTZXR6ZW4oaywgZmFsc2UpOyB9KTsKICAg ICAgICAgICAgbW9kYWxTY2hsaWVzc2VuKHRydWUpOwogICAgICAgICAgICB3ZWl0ZXIoKTsKICAg ICAgICB9KTsKICAgIH0pOwogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2RwLXNwZWljaGVy bicpLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oKSB7CiAgICAgICAgdmFyIGJ0 biA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkcC1zcGVpY2hlcm4nKTsKICAgICAgICBidG4u ZGlzYWJsZWQgPSB0cnVlOyBidG4udGV4dENvbnRlbnQgPSAnU3BlaWNoZXJl4oCmJzsKICAgICAg ICB2YXIgcHJvbWlzZXMgPSBha3Rpdi5tYXAoZnVuY3Rpb24oaykgeyByZXR1cm4gZGlydHlTcGVp Y2hlcm4oayk7IH0pOwogICAgICAgIFByb21pc2UuYWxsKHByb21pc2VzKS50aGVuKGZ1bmN0aW9u KCkgewogICAgICAgICAgICBtb2RhbFNjaGxpZXNzZW4odHJ1ZSk7CiAgICAgICAgICAgIHdlaXRl cigpOwogICAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgdG9hc3QoJ0Zl aGxlciBiZWltIFNwZWljaGVybjogJyArIChlICYmIGUubWVzc2FnZSB8fCBlKSwgJ2ZlaGxlcicp OwogICAgICAgICAgICBidG4uZGlzYWJsZWQgPSBmYWxzZTsgYnRuLnRleHRDb250ZW50ID0gJ1Nw ZWljaGVybic7CiAgICAgICAgfSk7CiAgICB9KTsKfQoKLy8gU3BlaWNoZXJ0IGVpbmVuIGRpcnR5 LVRhYi4gQmV2b3J6dWd0IHNhdmVGbjsgRmFsbGJhY2s6IENsaWNrIGF1ZgovLyBwcmltYWVyZW4g U2F2ZS1CdXR0b24gKyBQb2xsIGF1ZiBkaXJ0eT1mYWxzZSAobWF4IDVzKS4gQ2xpY2stSGFuZGxl cgovLyBzZXR6dCBkaXJ0eT1mYWxzZSBuYWNoIGVyZm9sZ3JlaWNoZW0gUFVUIChzaWVoZSBlaW56 ZWxuZSBTYXZlLUJpbmRpbmdzKS4KZXhwb3J0IGZ1bmN0aW9uIGRpcnR5U3BlaWNoZXJuKHRhYklk KSB7CiAgICB2YXIgciA9IERJUlRZW3RhYklkXTsKICAgIGlmICghcikgcmV0dXJuIFByb21pc2Uu cmVzb2x2ZSgpOwogICAgaWYgKHIuc2F2ZUZuKSB7CiAgICAgICAgcmV0dXJuIFByb21pc2UucmVz b2x2ZShyLnNhdmVGbigpKS50aGVuKGZ1bmN0aW9uKCkgeyBkaXJ0eVNldHplbih0YWJJZCwgZmFs c2UpOyB9KTsKICAgIH0KICAgIHZhciBidG4gPSAoci5idG5JZHNbMF0gJiYgZG9jdW1lbnQuZ2V0 RWxlbWVudEJ5SWQoci5idG5JZHNbMF0pKSB8fCBudWxsOwogICAgaWYgKCFidG4pIHJldHVybiBQ cm9taXNlLnJlc29sdmUoKTsKICAgIGJ0bi5jbGljaygpOwogICAgcmV0dXJuIG5ldyBQcm9taXNl KGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkgewogICAgICAgIHZhciBzdGFydCA9IERhdGUubm93 KCk7CiAgICAgICAgZnVuY3Rpb24gcG9sbCgpIHsKICAgICAgICAgICAgaWYgKCFESVJUWVt0YWJJ ZF0uZGlydHkpIHJldHVybiByZXNvbHZlKCk7CiAgICAgICAgICAgIGlmIChEYXRlLm5vdygpIC0g c3RhcnQgPiA1MDAwKSByZXR1cm4gcmVqZWN0KG5ldyBFcnJvcignU3BlaWNoZXJuIGRhdWVydCB6 dSBsYW5nZSAoJyArIHIubGFiZWwgKyAnKScpKTsKICAgICAgICAgICAgc2V0VGltZW91dChwb2xs LCAxMDApOwogICAgICAgIH0KICAgICAgICBwb2xsKCk7CiAgICB9KTsKfQoKLy8gPT09PT0gVGFn L05hY2h0LVRoZW1lLVRvZ2dsZSA9PT09PQovLyBQZXJzaXN0aWVydCBpbiBsb2NhbFN0b3JhZ2Ug dW50ZXIgJ3ZpMy10aGVtZScuIENTUy1WYXJpYWJsZW4tU3lzdGVtCi8vIHN0ZWh0IGluIHN0eWxl LmNzcyAoOnJvb3QgdnMuIFtkYXRhLXRoZW1lPSJuaWdodCJdKS4KCmV4cG9ydCBmdW5jdGlvbiB0 aGVtZVVtc2NoYWx0ZW4oKSB7CiAgICB2YXIgYWt0dWVsbCA9IGRvY3VtZW50LmRvY3VtZW50RWxl bWVudC5nZXRBdHRyaWJ1dGUoJ2RhdGEtdGhlbWUnKTsKICAgIHZhciBuZXUgPSBha3R1ZWxsID09 PSAnbmlnaHQnID8gJycgOiAnbmlnaHQnOwogICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNl dEF0dHJpYnV0ZSgnZGF0YS10aGVtZScsIG5ldSk7CiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgn dmkzLXRoZW1lJywgbmV1KTsKICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdidG4tdGhlbWUn KS50ZXh0Q29udGVudCA9IG5ldSA9PT0gJ25pZ2h0JyA/ICdUYWcnIDogJ05hY2h0JzsKfQoKZXhw b3J0IGZ1bmN0aW9uIHRoZW1lV2llZGVyaGVyc3RlbGxlbigpIHsKICAgIHZhciBnID0gbG9jYWxT dG9yYWdlLmdldEl0ZW0oJ3ZpMy10aGVtZScpIHx8ICcnOwogICAgaWYgKGcgPT09ICduaWdodCcp IHsKICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2V0QXR0cmlidXRlKCdkYXRhLXRo ZW1lJywgJ25pZ2h0Jyk7CiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2J0bi10aGVt ZScpLnRleHRDb250ZW50ID0gJ1RhZyc7CiAgICB9Cn0K ### FILE: js/ui_rte.js | 6951 Ly8gPT09IHVpL3J0ZS5qcyA9PT0KLy8gTWluaW1hbGVyIFJpY2gtVGV4dC1FZGl0b3IgKyBIVE1M LVNhbml0aXplciArIEVtb2ppLVBpY2tlci4KLy8KLy8gR2VudXR6dCBhbiBkcmVpIFN0ZWxsZW46 IFNvbmRlcnRlcm1pbi1FZGl0b3IsIEVtYWlsLVZvcmxhZ2VuLUVkaXRvcgovLyB1bmQgSW5mby1I aWxmZS1UYWIuIFJURS1Jbml0IGJpbmRldCBjb250ZW50RWRpdGFibGUtQnV0dG9ucyAoQi9JL1Us Ci8vIExpc3RlbiwgSW5kZW50KSwgU2FuaXRpemVyIGZhZWhydCBBbGxvd2xpc3QtUG9saWN5IChz aWVoZSBzYW5pdGl6ZVJpY2hIdG1sKS4KCmltcG9ydCB7IGVzY2FwZUhUTUwsIGVzY2FwZUF0dHIg fSBmcm9tICcuL2NvcmVfdXRpbC5qcyc7CgovLyA9PT09PSBIVE1MLVNhbml0aXplciA9PT09PQoK Ly8gTnVyIEJhc2lzLUZvcm1hdGllcnVuZywga2VpbmUgU2NyaXB0L1N0eWxlL0F0dHIgYXVzc2Vy IGhyZWYvdGFyZ2V0L3JlbCBhdWYgPGE+LgovLyBCTE9DS1FVT1RFIGlzdCBlcmxhdWJ0IGZ1ZXIg SW5kZW50IChlbnRzdGVodCBkdXJjaCBkb2N1bWVudC5leGVjQ29tbWFuZCgnaW5kZW50JykKLy8g d2VubiBzdHlsZVdpdGhDU1M9ZmFsc2UgZ2VzZXR6dCBpc3QgLSBzaWVoZSBydGVJbml0KS4KZXhw b3J0IGZ1bmN0aW9uIHNhbml0aXplUmljaEh0bWwoaHRtbCkgewogICAgaWYgKCFodG1sKSByZXR1 cm4gJyc7CiAgICB2YXIgYWxsb3dlZCA9IHsgQjoxLCBTVFJPTkc6MSwgSToxLCBFTToxLCBVOjEs IEJSOjEsIFA6MSwgVUw6MSwgT0w6MSwgTEk6MSwgQToxLCBESVY6MSwgU1BBTjoxLCBIMzoxLCBI NDoxLCBCTE9DS1FVT1RFOjEgfTsKICAgIHZhciBkb2MgPSBuZXcgRE9NUGFyc2VyKCkucGFyc2VG cm9tU3RyaW5nKCc8IWRvY3R5cGUgaHRtbD48Ym9keT4nICsgaHRtbCArICc8L2JvZHk+JywgJ3Rl eHQvaHRtbCcpOwogICAgKGZ1bmN0aW9uIHdhbGsobm9kZSkgewogICAgICAgIHZhciBjaGlsZCA9 IG5vZGUuZmlyc3RDaGlsZDsKICAgICAgICB3aGlsZSAoY2hpbGQpIHsKICAgICAgICAgICAgdmFy IG5leHQgPSBjaGlsZC5uZXh0U2libGluZzsKICAgICAgICAgICAgaWYgKGNoaWxkLm5vZGVUeXBl ID09PSAxKSB7CiAgICAgICAgICAgICAgICB2YXIgdGFnID0gY2hpbGQudGFnTmFtZTsKICAgICAg ICAgICAgICAgIGlmICghYWxsb3dlZFt0YWddKSB7CiAgICAgICAgICAgICAgICAgICAgd2hpbGUg KGNoaWxkLmZpcnN0Q2hpbGQpIG5vZGUuaW5zZXJ0QmVmb3JlKGNoaWxkLmZpcnN0Q2hpbGQsIGNo aWxkKTsKICAgICAgICAgICAgICAgICAgICBub2RlLnJlbW92ZUNoaWxkKGNoaWxkKTsKICAgICAg ICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IGNoaWxk LmF0dHJpYnV0ZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHsKICAgICAgICAgICAgICAgICAg ICAgICAgdmFyIGF0dHIgPSBjaGlsZC5hdHRyaWJ1dGVzW2ldLm5hbWU7CiAgICAgICAgICAgICAg ICAgICAgICAgIHZhciBrZWVwID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0 YWcgPT09ICdBJyAmJiAoYXR0ciA9PT0gJ2hyZWYnIHx8IGF0dHIgPT09ICd0YXJnZXQnIHx8IGF0 dHIgPT09ICdyZWwnKSkga2VlcCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgh a2VlcCkgY2hpbGQucmVtb3ZlQXR0cmlidXRlKGF0dHIpOwogICAgICAgICAgICAgICAgICAgIH0K ICAgICAgICAgICAgICAgICAgICBpZiAodGFnID09PSAnQScpIHsKICAgICAgICAgICAgICAgICAg ICAgICAgdmFyIGhyZWYgPSBjaGlsZC5nZXRBdHRyaWJ1dGUoJ2hyZWYnKSB8fCAnJzsKICAgICAg ICAgICAgICAgICAgICAgICAgaWYgKC9eXHMqKGphdmFzY3JpcHR8ZGF0YSk6L2kudGVzdChocmVm KSkgY2hpbGQucmVtb3ZlQXR0cmlidXRlKCdocmVmJyk7CiAgICAgICAgICAgICAgICAgICAgICAg IGNoaWxkLnNldEF0dHJpYnV0ZSgndGFyZ2V0JywgJ19ibGFuaycpOwogICAgICAgICAgICAgICAg ICAgICAgICBjaGlsZC5zZXRBdHRyaWJ1dGUoJ3JlbCcsICdub29wZW5lciBub3JlZmVycmVyJyk7 CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHdhbGsoY2hpbGQpOwog ICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGVsc2UgaWYgKGNoaWxkLm5vZGVUeXBlICE9 PSAzICYmIGNoaWxkLm5vZGVUeXBlICE9PSA4KSB7CiAgICAgICAgICAgICAgICAvLyBOdXIgRWxl bWVudC0sIFRleHQtLCBDb21tZW50LUtub3RlbiAtIENvbW1lbnRzIHdlcmRlbiBlbnRmZXJudAog ICAgICAgICAgICAgICAgbm9kZS5yZW1vdmVDaGlsZChjaGlsZCk7CiAgICAgICAgICAgIH0KICAg ICAgICAgICAgY2hpbGQgPSBuZXh0OwogICAgICAgIH0KICAgIH0pKGRvYy5ib2R5KTsKICAgIC8v IEtvbW1lbnRhcmUgcmF1cwogICAgZG9jLmJvZHkucXVlcnlTZWxlY3RvckFsbCAmJiBkb2MuYm9k eS5jaGlsZE5vZGVzLmZvckVhY2ggJiYgQXJyYXkucHJvdG90eXBlLmZvckVhY2guY2FsbChkb2Mu Ym9keS5jaGlsZE5vZGVzLCBmdW5jdGlvbigpIHt9KTsKICAgIHJldHVybiBkb2MuYm9keS5pbm5l ckhUTUw7Cn0KCi8vID09PT09IEVtb2ppLVBpY2tlciA9PT09PQoKLy8gTW9ub2Nocm9tZSBVbmlj b2RlLVN5bWJvbGUgc3RhdHQgYnVudGUgRW1vamkgKENoZXJyeS1QaWNrIDhiMmQwZmQpOgovLyAt IHJlbmRlcm4gaW4gZGVyIFRleHRmYXJiZSDihpIgT1MtIHVuZCBUaGVtZS11bmFiaGFlbmdpZyBr b25zaXN0ZW50Ci8vIC0gVmFyaWF0aW9uLVNlbGVjdG9yLTE1ICjvuI4pIGVyendpbmd0IGRpZSBH bHlwaC1EYXJzdGVsbHVuZyBpbgovLyAgIEJyb3dzZXJuLCBkaWUgZGFzIFN5bWJvbCBzb25zdCBh bHMgYnVudGUgRW1vamktVmFyaWFudGUgemVpZ2VuCmV4cG9ydCB2YXIgRU1PSklfU0VUID0gWwog ICAgeyBrYXQ6ICdBbGxnZW1laW4nLCAgICAgICAgZTogWyfihLnvuI4nLCfik5gnLCfinI4nLCfi mIUnLCfimIYnLCfimpEnXSB9LAogICAgeyBrYXQ6ICdXYXJudW5nICYgVmVyYm90JywgZTogWyfi mqDvuI4nLCfigLzvuI4nLCfinZfvuI4nLCfim5TvuI4nLCfinJYnLCfinJcnXSB9LAogICAgeyBr YXQ6ICdHZWZhaHIgJiBFaW5zYXR6JywgZTogWyfimqHvuI4nLCfimKLvuI4nLCfimKPvuI4nLCfi mKDvuI4nLCfimpLvuI4nXSB9LAogICAgeyBrYXQ6ICdUZXJtaW4gJiBaZWl0JywgICAgZTogWyfi jJrvuI4nLCfijJsnLCfij7HvuI4nLCfij7MnXSB9LAogICAgeyBrYXQ6ICdWZXJ3YWx0dW5nJywg ICAgICAgZTogWyfimpbvuI4nLCfimI7vuI4nLCfinInvuI4nLCfimJHvuI4nLCfimJLvuI4nLCfi mpnvuI4nXSB9Cl07Cgp2YXIgZW1vamlQaWNrZXJBa3RpdiA9IG51bGw7CgpleHBvcnQgZnVuY3Rp b24gZW1vamlQaWNrZXJaZWlnZW4oYW5jaG9yLCBvblNlbGVjdCkgewogICAgZW1vamlQaWNrZXJT Y2hsaWVzc2VuKCk7CiAgICB2YXIgcG9wID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7 CiAgICBwb3AuY2xhc3NOYW1lID0gJ2Vtb2ppLXBpY2tlcic7CiAgICB2YXIgaHRtbCA9ICc8ZGl2 IGNsYXNzPSJlbW9qaS1waWNrZXItZ3JpZCI+PGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJl bW9qaS1waWNrZXItb3B0IGtlaW5lciIgZGF0YS12PSIiPihrZWlucyk8L2J1dHRvbj48L2Rpdj4n OwogICAgRU1PSklfU0VULmZvckVhY2goZnVuY3Rpb24oZykgewogICAgICAgIGh0bWwgKz0gJzxk aXYgY2xhc3M9ImVtb2ppLXBpY2tlci1rYXQiPicgKyBnLmthdCArICc8L2Rpdj4nICsKICAgICAg ICAgICAgJzxkaXYgY2xhc3M9ImVtb2ppLXBpY2tlci1ncmlkIj4nICsKICAgICAgICAgICAgZy5l Lm1hcChmdW5jdGlvbihlbSkgeyByZXR1cm4gJzxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0i ZW1vamktcGlja2VyLW9wdCIgZGF0YS12PSInICsgZXNjYXBlQXR0cihlbSkgKyAnIj4nICsgZXNj YXBlSFRNTChlbSkgKyAnPC9idXR0b24+JzsgfSkuam9pbignJykgKwogICAgICAgICAgICAnPC9k aXY+JzsKICAgIH0pOwogICAgcG9wLmlubmVySFRNTCA9IGh0bWw7CiAgICBkb2N1bWVudC5ib2R5 LmFwcGVuZENoaWxkKHBvcCk7CiAgICB2YXIgciA9IGFuY2hvci5nZXRCb3VuZGluZ0NsaWVudFJl Y3QoKTsKICAgIHZhciBsZWZ0ID0gTWF0aC5taW4oci5sZWZ0LCB3aW5kb3cuaW5uZXJXaWR0aCAt IDI4NCk7CiAgICB2YXIgdG9wID0gci5ib3R0b20gKyA0OwogICAgaWYgKHRvcCArIDM0MCA+IHdp bmRvdy5pbm5lckhlaWdodCkgdG9wID0gTWF0aC5tYXgoOCwgci50b3AgLSAzNDQpOwogICAgcG9w LnN0eWxlLmxlZnQgPSBsZWZ0ICsgJ3B4JzsKICAgIHBvcC5zdHlsZS50b3AgPSB0b3AgKyAncHgn OwogICAgcG9wLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oZSkgewogICAgICAg IHZhciBiID0gZS50YXJnZXQuY2xvc2VzdCgnW2RhdGEtdl0nKTsKICAgICAgICBpZiAoIWIpIHJl dHVybjsKICAgICAgICBvblNlbGVjdChiLmdldEF0dHJpYnV0ZSgnZGF0YS12JykpOwogICAgICAg IGVtb2ppUGlja2VyU2NobGllc3NlbigpOwogICAgfSk7CiAgICBlbW9qaVBpY2tlckFrdGl2ID0g cG9wOwogICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKICAgICAgICBkb2N1bWVudC5hZGRFdmVu dExpc3RlbmVyKCdjbGljaycsIGVtb2ppUGlja2VyQXV0b0Nsb3NlLCB7IG9uY2U6IHRydWUgfSk7 CiAgICB9LCAwKTsKfQoKZnVuY3Rpb24gZW1vamlQaWNrZXJBdXRvQ2xvc2UoZSkgewogICAgaWYg KGVtb2ppUGlja2VyQWt0aXYgJiYgIWVtb2ppUGlja2VyQWt0aXYuY29udGFpbnMoZS50YXJnZXQp KSBlbW9qaVBpY2tlclNjaGxpZXNzZW4oKTsKICAgIGVsc2UgaWYgKGVtb2ppUGlja2VyQWt0aXYp IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNr JywgZW1vamlQaWNrZXJBdXRvQ2xvc2UsIHsgb25jZTogdHJ1ZSB9KTsgfSwgMCk7Cn0KCmV4cG9y dCBmdW5jdGlvbiBlbW9qaVBpY2tlclNjaGxpZXNzZW4oKSB7CiAgICBpZiAoZW1vamlQaWNrZXJB a3RpdikgeyBlbW9qaVBpY2tlckFrdGl2LnJlbW92ZSgpOyBlbW9qaVBpY2tlckFrdGl2ID0gbnVs bDsgfQp9CgovLyA9PT09PSBNaW5pbWFsZXIgUmljaC1UZXh0LUVkaXRvciA9PT09PQoKZXhwb3J0 IGZ1bmN0aW9uIHJ0ZUluaXQoZWRpdG9yKSB7CiAgICAvLyBzdHlsZVdpdGhDU1M9ZmFsc2Ugendp bmd0IEJyb3dzZXIsIGZ1ZXIgSW5kZW50IDxibG9ja3F1b3RlPi1UYWdzIHp1CiAgICAvLyBlcnpl dWdlbiAoc3RhdHQgc3R5bGU9Im1hcmdpbi1sZWZ0OjQwcHgiKS4gVm9ydGVpbDogYmxvY2txdW90 ZQogICAgLy8gdWViZXJsZWJ0IHNhbml0aXplUmljaEh0bWwgKyBFbnRlci1UYXN0ZSBpbm5lcmhh bGIgYmVoYWVsdCBkYXMKICAgIC8vIEluZGVudC1MZXZlbCAoVXNlci1XdW5zY2g6ICJhdWNoIHpl aWxlbnVtYnJ1Y2h1ZWJlcmdyZWlmZW5kIikuCiAgICB0cnkgeyBkb2N1bWVudC5leGVjQ29tbWFu ZCgnc3R5bGVXaXRoQ1NTJywgZmFsc2UsIGZhbHNlKTsgfSBjYXRjaCAoZSkge30KICAgIHZhciB0 b29sYmFyID0gZWRpdG9yLnBhcmVudEVsZW1lbnQucXVlcnlTZWxlY3RvcignLnJ0ZS10b29sYmFy Jyk7CiAgICBpZiAodG9vbGJhcikgewogICAgICAgIHRvb2xiYXIuYWRkRXZlbnRMaXN0ZW5lcign bW91c2Vkb3duJywgZnVuY3Rpb24oZSkgewogICAgICAgICAgICB2YXIgYnRuID0gZS50YXJnZXQu Y2xvc2VzdCgnW2RhdGEtY21kXScpOwogICAgICAgICAgICBpZiAoIWJ0bikgcmV0dXJuOwogICAg ICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7IC8vIGJlaMOkbHQgU2VsZWN0aW9uIGltIEVkaXRv cgogICAgICAgICAgICB2YXIgY21kID0gYnRuLmdldEF0dHJpYnV0ZSgnZGF0YS1jbWQnKTsKICAg ICAgICAgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoY21kLCBmYWxzZSwgbnVsbCk7CiAgICAgICAg ICAgIHJ0ZUJ1dHRvblN0YXRlcyhlZGl0b3IsIHRvb2xiYXIpOwogICAgICAgIH0pOwogICAgICAg IGVkaXRvci5hZGRFdmVudExpc3RlbmVyKCdrZXl1cCcsIGZ1bmN0aW9uKCkgeyBydGVCdXR0b25T dGF0ZXMoZWRpdG9yLCB0b29sYmFyKTsgfSk7CiAgICAgICAgZWRpdG9yLmFkZEV2ZW50TGlzdGVu ZXIoJ21vdXNldXAnLCBmdW5jdGlvbigpIHsgcnRlQnV0dG9uU3RhdGVzKGVkaXRvciwgdG9vbGJh cik7IH0pOwogICAgfQogICAgLy8gUGFzdGU6IEhUTUwgYmVyZWluaWdlbgogICAgZWRpdG9yLmFk ZEV2ZW50TGlzdGVuZXIoJ3Bhc3RlJywgZnVuY3Rpb24oZSkgewogICAgICAgIGUucHJldmVudERl ZmF1bHQoKTsKICAgICAgICB2YXIgaHRtbCA9IChlLmNsaXBib2FyZERhdGEgfHwgd2luZG93LmNs aXBib2FyZERhdGEpLmdldERhdGEoJ3RleHQvaHRtbCcpOwogICAgICAgIHZhciB0ZXh0ID0gKGUu Y2xpcGJvYXJkRGF0YSB8fCB3aW5kb3cuY2xpcGJvYXJkRGF0YSkuZ2V0RGF0YSgndGV4dC9wbGFp bicpOwogICAgICAgIHZhciBpbnNlcnQgPSBodG1sID8gc2FuaXRpemVSaWNoSHRtbChodG1sKSA6 IGVzY2FwZUhUTUwodGV4dCkucmVwbGFjZSgvXHI/XG4vZywgJzxicj4nKTsKICAgICAgICBkb2N1 bWVudC5leGVjQ29tbWFuZCgnaW5zZXJ0SFRNTCcsIGZhbHNlLCBpbnNlcnQpOwogICAgfSk7Cn0K CmV4cG9ydCBmdW5jdGlvbiBydGVCdXR0b25TdGF0ZXMoZWRpdG9yLCB0b29sYmFyKSB7CiAgICB0 b29sYmFyLnF1ZXJ5U2VsZWN0b3JBbGwoJ1tkYXRhLWNtZF0nKS5mb3JFYWNoKGZ1bmN0aW9uKGJ0 bikgewogICAgICAgIHZhciBjbWQgPSBidG4uZ2V0QXR0cmlidXRlKCdkYXRhLWNtZCcpOwogICAg ICAgIHRyeSB7CiAgICAgICAgICAgIGlmIChkb2N1bWVudC5xdWVyeUNvbW1hbmRTdGF0ZShjbWQp KSBidG4uY2xhc3NMaXN0LmFkZCgnYWt0aXYnKTsKICAgICAgICAgICAgZWxzZSBidG4uY2xhc3NM aXN0LnJlbW92ZSgnYWt0aXYnKTsKICAgICAgICB9IGNhdGNoIChlKSB7fQogICAgfSk7Cn0K ### FILE: js/wochenplan.js | 15204 Ly8gPT09IHdvY2hlbnBsYW4vd29jaGVucGxhbi5qcyA9PT0KLy8gV29jaGVucGxhbi0gdW5kIFBl cnNvbmVuLVBsYW4tVGFiLgoKaW1wb3J0IHsgWiB9IGZyb20gJy4vY29yZV9zdGF0ZS5qcyc7Cmlt cG9ydCB7CiAgICBlc2NhcGVIVE1MLCBlc2NhcGVBdHRyLAogICAgZGF0dW1TdHIsIGRhdHVtRm9y bWF0REUsIGRhdHVtS3VyekRFLCB3b2NoZW50YWdLdXJ6LCBpc3RXb2NoZW5lbmRlLAogICAgZnVu a3Rpb25zUmFuZywgcmVuZGVyRXJyb3JCb3gKfSBmcm9tICcuL2NvcmVfdXRpbC5qcyc7CmltcG9y dCB7IHNvbmRlclRpdGVsQXVzVGV4dCB9IGZyb20gJy4vYWRtaW5fa2FsZW5kZXIuanMnOwppbXBv cnQgeyBrb21tZW50YXJUZXh0IH0gZnJvbSAnLi9ncmlkX2ludGVyYWN0aW9uLmpzJzsKCiAgICAv LyA9PT09PSBXb2NoZW5wbGFuID09PT09CgogICAgdmFyIHdwT2Zmc2V0ID0gMDsgLy8gV29jaGVu b2Zmc2V0IHJlbGF0aXYgenVyIGFrdHVlbGxlbiBXb2NoZQoKICAgIGZ1bmN0aW9uIHdwV29jaGVU YWdlKG9mZnNldCkgewogICAgICAgIHZhciBoZXV0ZSA9IG5ldyBEYXRlKCk7CiAgICAgICAgLy8g TW9udGFnIGRlciBha3R1ZWxsZW4gV29jaGUgYmVyZWNobmVuCiAgICAgICAgdmFyIHRhZyA9IGhl dXRlLmdldERheSgpOyAvLyAwPVNvLCAxPU1vLCAuLi4KICAgICAgICB2YXIgZGlmZiA9IHRhZyA9 PT0gMCA/IC02IDogMSAtIHRhZzsKICAgICAgICB2YXIgbW9udGFnID0gbmV3IERhdGUoaGV1dGUp OwogICAgICAgIG1vbnRhZy5zZXREYXRlKG1vbnRhZy5nZXREYXRlKCkgKyBkaWZmICsgKG9mZnNl dCAqIDcpKTsKICAgICAgICBtb250YWcuc2V0SG91cnMoMCwgMCwgMCwgMCk7CgogICAgICAgIHZh ciB0YWdlID0gW107CiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA3OyBpKyspIHsKICAgICAg ICAgICAgdmFyIGQgPSBuZXcgRGF0ZShtb250YWcpOwogICAgICAgICAgICBkLnNldERhdGUoZC5n ZXREYXRlKCkgKyBpKTsKICAgICAgICAgICAgdGFnZS5wdXNoKGQpOwogICAgICAgIH0KICAgICAg ICByZXR1cm4gdGFnZTsKICAgIH0KCiAgICBmdW5jdGlvbiB3cFJlbmRlcm4oKSB7CiAgICAgICAg dHJ5IHsKICAgICAgICAgICAgX3dwUmVuZGVybkludGVybigpOwogICAgICAgIH0gY2F0Y2ggKGUp IHsKICAgICAgICAgICAgcmVuZGVyRXJyb3JCb3goZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Fu c2ljaHQtd29jaGVucGxhbicpLCBlLCAnV29jaGVucGxhbicpOwogICAgICAgIH0KICAgIH0KICAg IGZ1bmN0aW9uIF93cFJlbmRlcm5JbnRlcm4oKSB7CiAgICAgICAgdmFyIHRhZ2UgPSB3cFdvY2hl VGFnZSh3cE9mZnNldCk7CiAgICAgICAgdmFyIGhldXRlS2V5ID0gWi5oZXV0ZVN0cjsKICAgICAg ICB2YXIgdm9uID0gdGFnZVswXSwgYmlzID0gdGFnZVs2XTsKCiAgICAgICAgZG9jdW1lbnQuZ2V0 RWxlbWVudEJ5SWQoJ3dwLXplaXRyYXVtJykuaW5uZXJIVE1MID0KICAgICAgICAgICAgJzxzdHJv bmc+VkkzIOKAlCBXb2NoZW5wbGFuICcgKyBkYXR1bUt1cnpERSh2b24pICsgJ+KAkycgKyBkYXR1 bUt1cnpERShiaXMpICsgJyAnICsgdm9uLmdldEZ1bGxZZWFyKCkgKyAnPC9zdHJvbmc+JzsKCiAg ICAgICAgLy8gNiBTY2hpY2h0LVNwYWx0ZW46IERHTCBGL1MvTiArIFdERi9GQlAgRi9TL04KICAg ICAgICB2YXIgc3BhbHRlbiA9IFsKICAgICAgICAgICAgeyBjbHM6ICd3cC1zY2hpY2h0LWZydWVo JywgcHJlZml4ZTogW3sgY29kZTonRi1ER0wnLCBzdGVybjpmYWxzZSB9XSB9LAogICAgICAgICAg ICB7IGNsczogJ3dwLXNjaGljaHQtc3BhZXQnLCBwcmVmaXhlOiBbeyBjb2RlOidTLURHTCcsIHN0 ZXJuOmZhbHNlIH1dIH0sCiAgICAgICAgICAgIHsgY2xzOiAnd3Atc2NoaWNodC1uYWNodCcsIHBy ZWZpeGU6IFt7IGNvZGU6J04tREdMJywgc3Rlcm46ZmFsc2UgfV0gfSwKICAgICAgICAgICAgeyBj bHM6ICd3cC1zY2hpY2h0LWZydWVoJywgcHJlZml4ZTogW3sgY29kZTonRi1XREYnLCBzdGVybjpm YWxzZSB9LHsgY29kZTonRi1GQlAnLCBzdGVybjp0cnVlIH1dIH0sCiAgICAgICAgICAgIHsgY2xz OiAnd3Atc2NoaWNodC1zcGFldCcsIHByZWZpeGU6IFt7IGNvZGU6J1MtV0RGJywgc3Rlcm46ZmFs c2UgfSx7IGNvZGU6J1MtRkJQJywgc3Rlcm46dHJ1ZSB9XSB9LAogICAgICAgICAgICB7IGNsczog J3dwLXNjaGljaHQtbmFjaHQnLCBwcmVmaXhlOiBbeyBjb2RlOidOLVdERicsIHN0ZXJuOmZhbHNl IH0seyBjb2RlOidOLUZCUCcsIHN0ZXJuOnRydWUgfV0gfQogICAgICAgIF07CiAgICAgICAgdmFy IHd0TmFtZW4gPSBbJ01vJywnRGknLCdNaScsJ0RvJywnRnInLCdTYScsJ1NvJ107CgogICAgICAg IHZhciBibG9lY2tlSHRtbCA9ICcnOwogICAgICAgIHRhZ2UuZm9yRWFjaChmdW5jdGlvbihkLCBk aSkgewogICAgICAgICAgICB2YXIgZFN0ciA9IGRhdHVtU3RyKGQpOwogICAgICAgICAgICB2YXIg aW5mbyA9IFoudGFnSW5mb3NbZFN0cl0gfHwgeyB0eXA6ICdub3JtYWwnIH07CiAgICAgICAgICAg IHZhciBlaW50ciA9IChaLnBsYW51bmcuZWludHJhZWdlIHx8IHt9KVtkU3RyXSB8fCB7fTsKICAg ICAgICAgICAgdmFyIGlzdEhldXRlID0gZFN0ciA9PT0gaGV1dGVLZXk7CiAgICAgICAgICAgIHZh ciBpc3RGVCA9IGluZm8udHlwID09PSAnZmVpZXJ0YWcnOwogICAgICAgICAgICB2YXIgaXN0V0Ug PSBkaSA+PSA1OwoKICAgICAgICAgICAgdmFyIGJsb2NrQ2xzID0gJ3dwLXRhZ2Jsb2NrJzsKICAg ICAgICAgICAgaWYgKGlzdEhldXRlKSBibG9ja0NscyArPSAnIHdwLXRhZ2Jsb2NrLWhldXRlJzsK ICAgICAgICAgICAgaWYgKGlzdEZUKSBibG9ja0NscyArPSAnIHdwLXRhZ2Jsb2NrLWZ0JyArIChp bmZvLndpY2h0aWcgPyAnIHdwLXRhZ2Jsb2NrLWZ0LXdpY2h0aWcnIDogJycpOwogICAgICAgICAg ICBlbHNlIGlmIChpc3RXRSkgYmxvY2tDbHMgKz0gJyB3cC10YWdibG9jay13ZSc7CiAgICAgICAg ICAgIGVsc2UgaWYgKGluZm8udHlwID09PSAnZmVyaWVuJykgYmxvY2tDbHMgKz0gJyB3cC10YWdi bG9jay1ucyc7CgogICAgICAgICAgICAvLyBQZXJzb25lbiBqZSBTcGFsdGUgc2FtbWVsbiwgbmFj aCBQb3NpdGlvbiBzb3J0aWVydAogICAgICAgICAgICB2YXIgc3BhbHRlbkRhdGVuID0gc3BhbHRl bi5tYXAoZnVuY3Rpb24oc3ApIHsKICAgICAgICAgICAgICAgIHZhciBlcmcgPSBbXTsKICAgICAg ICAgICAgICAgIFoucGVyc29uZW4uZm9yRWFjaChmdW5jdGlvbihwKSB7CiAgICAgICAgICAgICAg ICAgICAgdmFyIHcgPSBlaW50cltTdHJpbmcocC5pZCldIHx8ICcnOwogICAgICAgICAgICAgICAg ICAgIHNwLnByZWZpeGUuZm9yRWFjaChmdW5jdGlvbihwcmVmKSB7CiAgICAgICAgICAgICAgICAg ICAgICAgIGlmICh3ID09PSBwcmVmLmNvZGUpIGVyZy5wdXNoKHsgaWQ6IHAuaWQsIG5hbWU6IHAu bmFtZSwgcG9zOiBwLnBvc2l0aW9uIHx8IDk5OSwgc3Rlcm46IHByZWYuc3Rlcm4gfSk7CiAgICAg ICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIGVy Zy5zb3J0KGZ1bmN0aW9uKGEsIGIpIHsgcmV0dXJuIGEucG9zIC0gYi5wb3M7IH0pOwogICAgICAg ICAgICAgICAgcmV0dXJuIGVyZzsKICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIC8vIEltbWVy IGV4YWt0IDggWmVpbGVuIHBybyBUYWcg4oCUIGhvbW9nZW5lcyBMYXlvdXQsIGdhcmFudGllcnQg ZWluc2VpdGlnZXIgRHJ1Y2sKICAgICAgICAgICAgdmFyIG1heFJvd3MgPSA4OwoKICAgICAgICAg ICAgLy8gVGFnLUxhYmVsIChsaW5rcywgdmVydGlrYWwva29tcGFrdCkKICAgICAgICAgICAgdmFy IHp1c2F0eiA9ICcnOwogICAgICAgICAgICBpZiAoaXN0RlQpIHp1c2F0eiA9ICc8c3BhbiBjbGFz cz0id3AtdGwtenVzYXR6IHdwLXRsLXotZnQiIHRpdGxlPSInICsgZXNjYXBlQXR0cihpbmZvLm5h bWUgfHwgJ0ZlaWVydGFnJykgKyAnIj7wn46JICcgKyBlc2NhcGVIVE1MKGluZm8ubmFtZSB8fCAn RmVpZXJ0YWcnKSArICc8L3NwYW4+JzsKICAgICAgICAgICAgZWxzZSBpZiAoaW5mby50eXAgPT09 ICdmZXJpZW4nKSB6dXNhdHogPSAnPHNwYW4gY2xhc3M9IndwLXRsLXp1c2F0eiB3cC10bC16LWZl cmllbiIgdGl0bGU9IicgKyBlc2NhcGVBdHRyKGluZm8ubmFtZSB8fCAnU2NodWxmZXJpZW4nKSAr ICciPvCfj5bvuI8gJyArIGVzY2FwZUhUTUwoaW5mby5uYW1lIHx8ICdTY2h1bGZlcmllbicpICsg Jzwvc3Bhbj4nOwogICAgICAgICAgICBpZiAoaW5mby5zb25kZXIpIHsKICAgICAgICAgICAgICAg IHZhciBzSWNvbiA9IGluZm8uc29uZGVyLmljb24gfHwgKGluZm8uc29uZGVyLnR5cCA9PT0gJ3dh cm51bmcnID8gJ+KaoCcgOiAn4oS5Jyk7CiAgICAgICAgICAgICAgICB2YXIgc1RpdCA9IGluZm8u c29uZGVyLnRpdGVsIHx8IHNvbmRlclRpdGVsQXVzVGV4dChpbmZvLnNvbmRlci50ZXh0KSB8fCAn SGlud2Vpcyc7CiAgICAgICAgICAgICAgICB6dXNhdHogKz0gJzxzcGFuIGNsYXNzPSJ3cC10bC16 dXNhdHogd3AtdGwtei0nICsgKGluZm8uc29uZGVyLnR5cCB8fCAnaGlud2VpcycpICsgJyIgdGl0 bGU9IicgKyBlc2NhcGVBdHRyKHNUaXQpICsgJyI+JyArIGVzY2FwZUhUTUwoc0ljb24pICsgJyAn ICsgZXNjYXBlSFRNTChzVGl0KSArICc8L3NwYW4+JzsKICAgICAgICAgICAgfQogICAgICAgICAg ICBpZiAoaW5mby5nZWJ1cnRzdGFnZSAmJiBpbmZvLmdlYnVydHN0YWdlLmxlbmd0aCkgewogICAg ICAgICAgICAgICAgenVzYXR6ICs9ICc8c3BhbiBjbGFzcz0id3AtdGwtenVzYXR6IHdwLXRsLXot Z2IiIHRpdGxlPSJHZWJ1cnRzdGFnIj7wn46CICcgKyBlc2NhcGVIVE1MKGluZm8uZ2VidXJ0c3Rh Z2UubWFwKGZ1bmN0aW9uKGcpe3JldHVybiBnLm5hbWU7fSkuam9pbignLCAnKSkgKyAnPC9zcGFu Pic7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHZhciB0YWdMYWJlbCA9ICc8ZGl2IGNsYXNz PSJ3cC10YWdibG9jay1sYWJlbCI+JyArCiAgICAgICAgICAgICAgICAnPGRpdiBjbGFzcz0id3At dGwta29wZiI+JyArCiAgICAgICAgICAgICAgICAgICAgJzxzcGFuIGNsYXNzPSJ3cC10bC13dCI+ JyArIHd0TmFtZW5bZGldICsgJy48L3NwYW4+JyArCiAgICAgICAgICAgICAgICAgICAgJzxzcGFu IGNsYXNzPSJ3cC10bC1kYXR1bSI+JyArIGRhdHVtRm9ybWF0REUoZFN0cikgKyAnPC9zcGFuPicg KwogICAgICAgICAgICAgICAgJzwvZGl2PicgKwogICAgICAgICAgICAgICAgKHp1c2F0eiA/ICc8 ZGl2IGNsYXNzPSJ3cC10bC16dXNhdHotYm94Ij4nICsgenVzYXR6ICsgJzwvZGl2PicgOiAnJykg KwogICAgICAgICAgICAnPC9kaXY+JzsKCiAgICAgICAgICAgIC8vIFRhYmVsbGUgcHJvIFRhZyAo NiBTcGFsdGVuKTogREdMIEYvUy9OIHwgV0RGL0ZCUCBGL1MvTgogICAgICAgICAgICB2YXIgdGFi ID0gJzx0YWJsZSBjbGFzcz0id3AtdGFnYmxvY2stdGFiZWxsZSI+JyArCiAgICAgICAgICAgICAg ICAnPHRoZWFkPicgKwogICAgICAgICAgICAgICAgICAgICc8dHIgY2xhc3M9IndwLXRhZy1oMSI+ JyArCiAgICAgICAgICAgICAgICAgICAgICAgICc8dGggY29sc3Bhbj0iMyIgY2xhc3M9IndwLWgx LWRnbCI+REdMPC90aD4nICsKICAgICAgICAgICAgICAgICAgICAgICAgJzx0aCBjb2xzcGFuPSIz IiBjbGFzcz0id3AtaDEtd2RmIj5XREYvRkJQPC90aD4nICsKICAgICAgICAgICAgICAgICAgICAn PC90cj4nICsKICAgICAgICAgICAgICAgICAgICAnPHRyIGNsYXNzPSJ3cC10YWctaDIiPicgKwog ICAgICAgICAgICAgICAgICAgICAgICAnPHRoIGNsYXNzPSJ3cC1zY2hpY2h0LWZydWVoIj5GcsO8 aDwvdGg+JyArCiAgICAgICAgICAgICAgICAgICAgICAgICc8dGggY2xhc3M9IndwLXNjaGljaHQt c3BhZXQiPlNww6R0PC90aD4nICsKICAgICAgICAgICAgICAgICAgICAgICAgJzx0aCBjbGFzcz0i d3Atc2NoaWNodC1uYWNodCI+TmFjaHQ8L3RoPicgKwogICAgICAgICAgICAgICAgICAgICAgICAn PHRoIGNsYXNzPSJ3cC1zY2hpY2h0LWZydWVoIj5GcsO8aDwvdGg+JyArCiAgICAgICAgICAgICAg ICAgICAgICAgICc8dGggY2xhc3M9IndwLXNjaGljaHQtc3BhZXQiPlNww6R0PC90aD4nICsKICAg ICAgICAgICAgICAgICAgICAgICAgJzx0aCBjbGFzcz0id3Atc2NoaWNodC1uYWNodCI+TmFjaHQ8 L3RoPicgKwogICAgICAgICAgICAgICAgICAgICc8L3RyPicgKwogICAgICAgICAgICAgICAgJzwv dGhlYWQ+JyArCiAgICAgICAgICAgICAgICAnPHRib2R5Pic7CiAgICAgICAgICAgIGZvciAodmFy IHIgPSAwOyByIDwgbWF4Um93czsgcisrKSB7CiAgICAgICAgICAgICAgICB0YWIgKz0gJzx0cj4n OwogICAgICAgICAgICAgICAgc3BhbHRlbkRhdGVuLmZvckVhY2goZnVuY3Rpb24oc3AsIHNpKSB7 CiAgICAgICAgICAgICAgICAgICAgdmFyIHAgPSBzcFtyXTsKICAgICAgICAgICAgICAgICAgICB2 YXIgc2NoaWNodENscyA9IHNwYWx0ZW5bc2ldLmNsczsKICAgICAgICAgICAgICAgICAgICB2YXIg Y2VsbCA9ICcnOwogICAgICAgICAgICAgICAgICAgIGlmIChwKSB7CiAgICAgICAgICAgICAgICAg ICAgICAgIGNlbGwgPSAnPHNwYW4gY2xhc3M9IndwLW5hbWUnICsgKHAuc3Rlcm4gPyAnIHdwLW5h bWUtZmJwJyA6ICcnKSArICciIGRhdGEtcGVyc29uLWlkPSInICsgcC5pZCArICciPicgKwogICAg ICAgICAgICAgICAgICAgICAgICAgICAgZXNjYXBlSFRNTChwLm5hbWUpICsgKHAuc3Rlcm4gPyAn PHN1cD4qPC9zdXA+JyA6ICcnKSArICc8L3NwYW4+JzsKICAgICAgICAgICAgICAgICAgICB9CiAg ICAgICAgICAgICAgICAgICAgdGFiICs9ICc8dGQgY2xhc3M9IndwLXRkLW5hbWUgJyArIHNjaGlj aHRDbHMgKyAnIj4nICsgY2VsbCArICc8L3RkPic7CiAgICAgICAgICAgICAgICB9KTsKICAgICAg ICAgICAgICAgIHRhYiArPSAnPC90cj4nOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHRhYiAr PSAnPC90Ym9keT48L3RhYmxlPic7CgogICAgICAgICAgICBibG9lY2tlSHRtbCArPSAnPGRpdiBj bGFzcz0iJyArIGJsb2NrQ2xzICsgJyI+JyArIHRhZ0xhYmVsICsgJzxkaXYgY2xhc3M9IndwLXRh Z2Jsb2NrLWluaGFsdCI+JyArIHRhYiArICc8L2Rpdj48L2Rpdj4nOwogICAgICAgIH0pOwoKICAg ICAgICAvLyBGb290ZXI6IEhpbndlaXMgdW5kIERydWNrZGF0dW0KICAgICAgICB2YXIgamV0enQg PSBuZXcgRGF0ZSgpOwogICAgICAgIHZhciBwYWQgPSBmdW5jdGlvbihuKXsgcmV0dXJuIChuPDEw PycwJzonJykgKyBuOyB9OwogICAgICAgIHZhciBkcnVja1plaXQgPSBkYXR1bUZvcm1hdERFKFou aGV1dGVTdHIpICsgJyAnICsgcGFkKGpldHp0LmdldEhvdXJzKCkpICsgJzonICsgcGFkKGpldHp0 LmdldE1pbnV0ZXMoKSk7CiAgICAgICAgdmFyIGZvb3RlciA9ICc8ZGl2IGNsYXNzPSJ3cC1zZWl0 ZS1mdXNzIj4nICsKICAgICAgICAgICAgJzxzcGFuIGNsYXNzPSJ3cC1mdXNzLW5vdGUiPjxzdXA+ Kjwvc3VwPiBCZXNldHp1bmcgZWluZXIgU3RyZWlmZSBhdXMgZGVtIEZ1bmt0aW9uc2Jlc2V0enVu Z3NwbGFuPC9zcGFuPicgKwogICAgICAgICAgICAnPHNwYW4gY2xhc3M9IndwLWZ1c3MtZHJ1Y2si PkRydWNrOiAnICsgZHJ1Y2taZWl0ICsgJzwvc3Bhbj4nICsKICAgICAgICAnPC9kaXY+JzsKCiAg ICAgICAgLy8gU2VpdGVuLUtvcGYgKG9wdGlvbmFsIGbDvHIgQmlsZHNjaGlybTsgd2lyZCBiZWlt IERydWNrIG9obmVoaW4gYXVzZ2VibGVuZGV0IGF1w59lcmhhbGIpCiAgICAgICAgdmFyIHNlaXRl S29wZiA9ICc8ZGl2IGNsYXNzPSJ3cC1zZWl0ZS1rb3BmIj4nICsKICAgICAgICAgICAgJzxoMT5W ZXJrZWhyc2luc3Bla3Rpb24gMyDigJQgV29jaGVucGxhbiB2b24gPHN0cm9uZz4nICsgZGF0dW1L dXJ6REUodm9uKSArICc8L3N0cm9uZz4gYmlzIDxzdHJvbmc+JyArIGRhdHVtS3VyekRFKGJpcykg KyAnPC9zdHJvbmc+ICcgKyB2b24uZ2V0RnVsbFllYXIoKSArICc8L2gxPicgKwogICAgICAgICc8 L2Rpdj4nOwoKICAgICAgICB2YXIgc2Nyb2xsID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLndw LXNjcm9sbCcpOwogICAgICAgIGlmIChzY3JvbGwpIHNjcm9sbC5pbm5lckhUTUwgPSAnPGRpdiBj bGFzcz0id3Atc2VpdGUiPicgKyBzZWl0ZUtvcGYgKyBibG9lY2tlSHRtbCArIGZvb3RlciArICc8 L2Rpdj4nOwogICAgfQoKICAgIC8vID09PT09IFBlcnPDtm5saWNoZXIgUGxhbiA9PT09PQoKICAg IGZ1bmN0aW9uIHBwUmVuZGVybigpIHsKICAgICAgICAvLyBEcm9wZG93biBiZWbDvGxsZW4KICAg ICAgICB2YXIgc2VsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BwLXBlcnNvbi1hdXN3YWhs Jyk7CiAgICAgICAgaWYgKHNlbC5vcHRpb25zLmxlbmd0aCA9PT0gMCkgewogICAgICAgICAgICBa LnBlcnNvbmVuLmZvckVhY2goZnVuY3Rpb24ocCkgewogICAgICAgICAgICAgICAgdmFyIG9wdCA9 IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ29wdGlvbicpOwogICAgICAgICAgICAgICAgb3B0LnZh bHVlID0gcC5pZDsKICAgICAgICAgICAgICAgIG9wdC50ZXh0Q29udGVudCA9IHAubmFtZSArIChw LnZvcm5hbWUgPyAnLCAnICsgcC52b3JuYW1lIDogJycpICsgJyAoJyArIHAuZ3J1cHBlICsgJykn OwogICAgICAgICAgICAgICAgc2VsLmFwcGVuZENoaWxkKG9wdCk7CiAgICAgICAgICAgIH0pOwog ICAgICAgIH0KCiAgICAgICAgdmFyIHBpZCA9IHNlbC52YWx1ZTsKICAgICAgICBpZiAoIXBpZCAm JiBaLnBlcnNvbmVuLmxlbmd0aCA+IDApIHsKICAgICAgICAgICAgcGlkID0gU3RyaW5nKFoucGVy c29uZW5bMF0uaWQpOwogICAgICAgICAgICBzZWwudmFsdWUgPSBwaWQ7CiAgICAgICAgfQogICAg ICAgIHZhciBwZXJzb24gPSBaLnBlcnNvbmVuLmZpbmQoZnVuY3Rpb24ocCkgeyByZXR1cm4gU3Ry aW5nKHAuaWQpID09PSBTdHJpbmcocGlkKTsgfSk7CiAgICAgICAgaWYgKCFwZXJzb24pIHJldHVy bjsKCiAgICAgICAgLy8gVGl0ZWwKICAgICAgICB2YXIgdGl0ZWxUZXh0ID0gJ1BlcnPDtm5saWNo ZXIgRGllbnN0cGxhbiB2b24gJyArIHBlcnNvbi5uYW1lICsKICAgICAgICAgICAgKHBlcnNvbi52 b3JuYW1lID8gJywgJyArIHBlcnNvbi52b3JuYW1lIDogJycpICsgJyDigJQgJyArIChaLmFkbWlu LmphaHIgfHwgJycpOwogICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwcC10aXRlbCcp LnRleHRDb250ZW50ID0gdGl0ZWxUZXh0OwoKICAgICAgICAvLyAxMiBNb25hdHNibMO2Y2tlCiAg ICAgICAgdmFyIGphaHIgPSBaLmFkbWluLmphaHIgfHwgbmV3IERhdGUoKS5nZXRGdWxsWWVhcigp OwogICAgICAgIHZhciBtb25hdGVIdG1sID0gJyc7CiAgICAgICAgdmFyIHN0YXRzID0geyBmcnVl aDogMCwgc3BhZXQ6IDAsIG5hY2h0OiAwLCB1cmxhdWI6IDAsIGtyYW5rOiAwLCBsZWhyZ2FuZzog MCwgZnJlaTogMCwgc29uZGVyOiAwLCBnZXNhbXQ6IDAgfTsKICAgICAgICB2YXIgbW9OYW1lbiA9 IFsnSmFudWFyJywnRmVicnVhcicsJ03DpHJ6JywnQXByaWwnLCdNYWknLCdKdW5pJywnSnVsaScs J0F1Z3VzdCcsJ1NlcHRlbWJlcicsJ09rdG9iZXInLCdOb3ZlbWJlcicsJ0RlemVtYmVyJ107CiAg ICAgICAgdmFyIHd0S3VyeiA9IFsnTW8nLCdEaScsJ01pJywnRG8nLCdGcicsJ1NhJywnU28nXTsK CiAgICAgICAgZm9yICh2YXIgbSA9IDA7IG0gPCAxMzsgbSsrKSB7CiAgICAgICAgICAgIC8vIG09 MTIgLT4gQnVmZmVyLUphbnVhciBkZXMgRm9sZ2VqYWhyZXMgKERhdGUtS29uc3RydWt0b3Igbm9y bWFsaXNpZXJ0OiBqYWhyPTIwMjYsIG09MTIgLT4gMjAyNy0wMSkKICAgICAgICAgICAgdmFyIG1v bmF0TGFiZWwgPSBtID09PSAxMiA/IChtb05hbWVuWzBdICsgJyAnICsgKGphaHIgKyAxKSkgOiBt b05hbWVuW21dOwogICAgICAgICAgICBtb25hdGVIdG1sICs9ICc8ZGl2IGNsYXNzPSJwcC1tb25h dCI+PGRpdiBjbGFzcz0icHAtbW9uYXQta29wZiI+JyArIG1vbmF0TGFiZWwgKyAnPC9kaXY+JzsK ICAgICAgICAgICAgbW9uYXRlSHRtbCArPSAnPGRpdiBjbGFzcz0icHAtbW9uYXQtZ3JpZCI+JzsK CiAgICAgICAgICAgIC8vIFdvY2hlbnRhZy1IZWFkZXIKICAgICAgICAgICAgd3RLdXJ6LmZvckVh Y2goZnVuY3Rpb24odykgewogICAgICAgICAgICAgICAgbW9uYXRlSHRtbCArPSAnPGRpdiBjbGFz cz0icHAtd3Qta29wZiI+JyArIHcgKyAnPC9kaXY+JzsKICAgICAgICAgICAgfSk7CgogICAgICAg ICAgICAvLyBFcnN0ZXIgVGFnOiB3ZWxjaGVyIFdvY2hlbnRhZz8KICAgICAgICAgICAgdmFyIGVy c3RlclRhZyA9IG5ldyBEYXRlKGphaHIsIG0sIDEpOwogICAgICAgICAgICB2YXIgc3RhcnRXdCA9 IGVyc3RlclRhZy5nZXREYXkoKTsgLy8gMD1TbwogICAgICAgICAgICBzdGFydFd0ID0gc3RhcnRX dCA9PT0gMCA/IDYgOiBzdGFydFd0IC0gMTsgLy8gMD1NbwoKICAgICAgICAgICAgLy8gTGVlcmUg WmVsbGVuIHZvciBkZW0gMS4KICAgICAgICAgICAgZm9yICh2YXIgbGVlciA9IDA7IGxlZXIgPCBz dGFydFd0OyBsZWVyKyspIHsKICAgICAgICAgICAgICAgIG1vbmF0ZUh0bWwgKz0gJzxkaXYgY2xh c3M9InBwLXRhZyBwcC10YWctbGVlciI+PC9kaXY+JzsKICAgICAgICAgICAgfQoKICAgICAgICAg ICAgdmFyIHRhZ2VJbU1vbmF0ID0gbmV3IERhdGUoamFociwgbSArIDEsIDApLmdldERhdGUoKTsK ICAgICAgICAgICAgZm9yICh2YXIgdCA9IDE7IHQgPD0gdGFnZUltTW9uYXQ7IHQrKykgewogICAg ICAgICAgICAgICAgdmFyIGQgPSBuZXcgRGF0ZShqYWhyLCBtLCB0KTsKICAgICAgICAgICAgICAg IHZhciBkU3RyID0gZGF0dW1TdHIoZCk7CiAgICAgICAgICAgICAgICB2YXIgaW5mbyA9IFoudGFn SW5mb3NbZFN0cl0gfHwgeyB0eXA6ICdub3JtYWwnIH07CiAgICAgICAgICAgICAgICB2YXIgZWlu dHIgPSAoWi5wbGFudW5nLmVpbnRyYWVnZSB8fCB7fSlbZFN0cl0gfHwge307CiAgICAgICAgICAg ICAgICB2YXIgd2VydCA9IGVpbnRyW1N0cmluZyhwaWQpXSB8fCAnJzsKICAgICAgICAgICAgICAg IHZhciBmYXJiZW4gPSBaLmNvZGVNYXBbd2VydF0gfHwge307CiAgICAgICAgICAgICAgICAvLyBL b21tZW50YXI6IHNlaXQgU2NoZW1hLVVtc3RlbGx1bmcgaXN0IGRlciBFaW50cmFnIGVpbiBPYmpl a3QKICAgICAgICAgICAgICAgIC8vICh7dGV4dCwgZ2VhZW5kZXJ0QW0sIGdlYWVuZGVydFZvbn0p IOKAlCB2b3JoZXIgZWluIFBsYWluLVN0cmluZy4KICAgICAgICAgICAgICAgIC8vIGtvbW1lbnRh clRleHQoKSBoYWVuZGVsdCBiZWlkZSBGb3JtZW4gdW5kIGdpYnQgZWluZW4gc2F1YmVyZW4KICAg ICAgICAgICAgICAgIC8vIFN0cmluZyB6dXJ1ZWNrIChzb25zdCBsYW5kZXRlICJbb2JqZWN0IE9i amVjdF0iIGltIFRvb2x0aXApLgogICAgICAgICAgICAgICAgdmFyIGtvbW1lbnRhciA9IGtvbW1l bnRhclRleHQoKChaLnBsYW51bmcua29tbWVudGFyZSB8fCB7fSlbZFN0cl0gfHwge30pW1N0cmlu ZyhwaWQpXSk7CiAgICAgICAgICAgICAgICB2YXIgd2UgPSBpc3RXb2NoZW5lbmRlKGQpOwoKICAg ICAgICAgICAgICAgIHZhciB0YWdDbHMgPSAncHAtdGFnJzsKICAgICAgICAgICAgICAgIGlmIChk U3RyID09PSBaLmhldXRlU3RyKSB0YWdDbHMgKz0gJyBwcC10YWctaGV1dGUnOwogICAgICAgICAg ICAgICAgaWYgKGluZm8udHlwID09PSAnZmVpZXJ0YWcnKSB0YWdDbHMgKz0gJyBwcC10YWctZnQn OwogICAgICAgICAgICAgICAgZWxzZSBpZiAod2UpIHRhZ0NscyArPSAnIHBwLXRhZy13ZSc7CiAg ICAgICAgICAgICAgICBpZiAoa29tbWVudGFyKSB0YWdDbHMgKz0gJyBwcC10YWcta29tbWVudGFy JzsKCiAgICAgICAgICAgICAgICB2YXIgd2VydFN0eWxlID0gJyc7CiAgICAgICAgICAgICAgICB2 YXIgd2VydFRleHQgPSAnJzsKICAgICAgICAgICAgICAgIGlmICh3ZXJ0ICYmIGZhcmJlbi5oaW50 ZXJncnVuZCkgewogICAgICAgICAgICAgICAgICAgIHdlcnRTdHlsZSA9ICdiYWNrZ3JvdW5kOicg KyBlc2NhcGVBdHRyKGZhcmJlbi5oaW50ZXJncnVuZCkgKyAnO2NvbG9yOicgKyBlc2NhcGVBdHRy KGZhcmJlbi5zY2hyaWZ0IHx8ICcjMDAwJyk7CiAgICAgICAgICAgICAgICAgICAgd2VydFRleHQg PSBmYXJiZW4ua3VlcnplbCB8fCB3ZXJ0OwogICAgICAgICAgICAgICAgfSBlbHNlIGlmICh3ZXJ0 KSB7CiAgICAgICAgICAgICAgICAgICAgd2VydFRleHQgPSB3ZXJ0OwogICAgICAgICAgICAgICAg fQoKICAgICAgICAgICAgICAgIC8vIFN0YXRpc3RpawogICAgICAgICAgICAgICAgaWYgKHdlcnQp IHsKICAgICAgICAgICAgICAgICAgICBpZiAod2VydC5pbmRleE9mKCdGLURHTCcpID09PSAwKSBz dGF0cy5mcnVlaCsrOwogICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHdlcnQuaW5kZXhPZign Uy1ER0wnKSA9PT0gMCkgc3RhdHMuc3BhZXQrKzsKICAgICAgICAgICAgICAgICAgICBlbHNlIGlm ICh3ZXJ0LmluZGV4T2YoJ04tREdMJykgPT09IDApIHN0YXRzLm5hY2h0Kys7CiAgICAgICAgICAg ICAgICAgICAgaWYgKHdlcnQgPT09ICdVcmwnKSBzdGF0cy51cmxhdWIrKzsKICAgICAgICAgICAg ICAgICAgICBpZiAod2VydCA9PT0gJ2tyJyB8fCB3ZXJ0ID09PSAnS3VyJykgc3RhdHMua3Jhbmsr KzsKICAgICAgICAgICAgICAgICAgICBpZiAod2VydCA9PT0gJ0xHJyB8fCB3ZXJ0ID09PSAnU2Vt Jykgc3RhdHMubGVocmdhbmcrKzsKICAgICAgICAgICAgICAgICAgICBpZiAod2VydCA9PT0gJ3dm cicgfHwgd2VydCA9PT0gJ2RmcicpIHN0YXRzLmZyZWkrKzsKICAgICAgICAgICAgICAgICAgICBp ZiAod2VydC5pbmRleE9mKCdER0wnKSA+PSAwIHx8IHdlcnQuaW5kZXhPZignV0RGJykgPj0gMCB8 fCB3ZXJ0LmluZGV4T2YoJ0ZCUCcpID49IDApIHN0YXRzLmdlc2FtdCsrOwogICAgICAgICAgICAg ICAgfQoKICAgICAgICAgICAgICAgIHZhciB0aXRsZSA9IHdlcnQ7CiAgICAgICAgICAgICAgICBp ZiAoa29tbWVudGFyKSB0aXRsZSArPSAnIHwgJyArIGtvbW1lbnRhcjsKICAgICAgICAgICAgICAg IGlmIChpbmZvLm5hbWUpIHRpdGxlICs9ICcgfCAnICsgaW5mby5uYW1lOwoKICAgICAgICAgICAg ICAgIG1vbmF0ZUh0bWwgKz0gJzxkaXYgY2xhc3M9IicgKyB0YWdDbHMgKyAnIiB0aXRsZT0iJyAr IGVzY2FwZUF0dHIodGl0bGUpICsgJyI+JyArCiAgICAgICAgICAgICAgICAgICAgJzxzcGFuIGNs YXNzPSJwcC10YWctbnIiPicgKyB0ICsgJzwvc3Bhbj4nOwogICAgICAgICAgICAgICAgaWYgKHdl cnRUZXh0KSB7CiAgICAgICAgICAgICAgICAgICAgbW9uYXRlSHRtbCArPSAnPHNwYW4gY2xhc3M9 InBwLXRhZy13ZXJ0IiBzdHlsZT0iJyArIHdlcnRTdHlsZSArICciPicgKyBlc2NhcGVIVE1MKHdl cnRUZXh0KSArICc8L3NwYW4+JzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIG1v bmF0ZUh0bWwgKz0gJzwvZGl2Pic7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIG1vbmF0ZUh0 bWwgKz0gJzwvZGl2PjwvZGl2Pic7CiAgICAgICAgfQogICAgICAgIGRvY3VtZW50LmdldEVsZW1l bnRCeUlkKCdwcC1tb25hdGUnKS5pbm5lckhUTUwgPSBtb25hdGVIdG1sOwoKICAgICAgICAvLyBa dXNhbW1lbmZhc3N1bmcKICAgICAgICB2YXIgc3VtSHRtbCA9ICc8aDM+WnVzYW1tZW5mYXNzdW5n ICcgKyAoWi5hZG1pbi5qYWhyIHx8ICcnKSArICc8L2gzPjxkaXYgY2xhc3M9InBwLXN1bW1hcnkt Z3JpZCI+JyArCiAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJwcC1zdGF0LWl0ZW0iPjxzcGFuIGNs YXNzPSJwcC1zdGF0LXphaGwiIHN0eWxlPSJjb2xvcjp2YXIoLS1mYXJiZS1mcnVlaCkiPicgKyBz dGF0cy5mcnVlaCArICc8L3NwYW4+PHNwYW4gY2xhc3M9InBwLXN0YXQtbGFiZWwiPkZyw7xoZGll bnN0ZTwvc3Bhbj48L2Rpdj4nICsKICAgICAgICAgICAgJzxkaXYgY2xhc3M9InBwLXN0YXQtaXRl bSI+PHNwYW4gY2xhc3M9InBwLXN0YXQtemFobCIgc3R5bGU9ImNvbG9yOnZhcigtLWZhcmJlLXNw YWV0KSI+JyArIHN0YXRzLnNwYWV0ICsgJzwvc3Bhbj48c3BhbiBjbGFzcz0icHAtc3RhdC1sYWJl bCI+U3DDpHRkaWVuc3RlPC9zcGFuPjwvZGl2PicgKwogICAgICAgICAgICAnPGRpdiBjbGFzcz0i cHAtc3RhdC1pdGVtIj48c3BhbiBjbGFzcz0icHAtc3RhdC16YWhsIiBzdHlsZT0iY29sb3I6dmFy KC0tZmFyYmUtbmFjaHQpIj4nICsgc3RhdHMubmFjaHQgKyAnPC9zcGFuPjxzcGFuIGNsYXNzPSJw cC1zdGF0LWxhYmVsIj5OYWNodGRpZW5zdGU8L3NwYW4+PC9kaXY+JyArCiAgICAgICAgICAgICc8 ZGl2IGNsYXNzPSJwcC1zdGF0LWl0ZW0iPjxzcGFuIGNsYXNzPSJwcC1zdGF0LXphaGwiPicgKyBz dGF0cy5nZXNhbXQgKyAnPC9zcGFuPjxzcGFuIGNsYXNzPSJwcC1zdGF0LWxhYmVsIj5EaWVuc3Rl IGdlc2FtdDwvc3Bhbj48L2Rpdj4nICsKICAgICAgICAgICAgJzxkaXYgY2xhc3M9InBwLXN0YXQt aXRlbSI+PHNwYW4gY2xhc3M9InBwLXN0YXQtemFobCI+JyArIHN0YXRzLnVybGF1YiArICc8L3Nw YW4+PHNwYW4gY2xhc3M9InBwLXN0YXQtbGFiZWwiPlVybGF1Yjwvc3Bhbj48L2Rpdj4nICsKICAg ICAgICAgICAgJzxkaXYgY2xhc3M9InBwLXN0YXQtaXRlbSI+PHNwYW4gY2xhc3M9InBwLXN0YXQt emFobCI+JyArIHN0YXRzLmxlaHJnYW5nICsgJzwvc3Bhbj48c3BhbiBjbGFzcz0icHAtc3RhdC1s YWJlbCI+TGVocmdhbmcvU2VtaW5hcjwvc3Bhbj48L2Rpdj4nICsKICAgICAgICAgICAgJzxkaXYg Y2xhc3M9InBwLXN0YXQtaXRlbSI+PHNwYW4gY2xhc3M9InBwLXN0YXQtemFobCI+JyArIHN0YXRz LmZyZWkgKyAnPC9zcGFuPjxzcGFuIGNsYXNzPSJwcC1zdGF0LWxhYmVsIj5EaWVuc3RmcmVpPC9z cGFuPjwvZGl2PicgKwogICAgICAgICAgICAnPC9kaXY+JzsKICAgICAgICBkb2N1bWVudC5nZXRF bGVtZW50QnlJZCgncHAtc3VtbWFyeScpLmlubmVySFRNTCA9IHN1bUh0bWw7CiAgICB9CgpmdW5j dGlvbiB3cFZvcndvY2hlKCkgICAgICAgeyB3cE9mZnNldC0tOyB3cFJlbmRlcm4oKTsgfQpmdW5j dGlvbiB3cE5hZWNoc3RlV29jaGUoKSAgeyB3cE9mZnNldCsrOyB3cFJlbmRlcm4oKTsgfQpmdW5j dGlvbiB3cEFrdHVlbGxlV29jaGUoKSAgeyB3cE9mZnNldCA9IDA7IHdwUmVuZGVybigpOyB9Cgpl eHBvcnQgewogICAgd3BXb2NoZVRhZ2UsIHdwUmVuZGVybiwgcHBSZW5kZXJuLAogICAgd3BWb3J3 b2NoZSwgd3BOYWVjaHN0ZVdvY2hlLCB3cEFrdHVlbGxlV29jaGUKfTsK ### FILE: server.ps1 | 241201 IyBTdGFuZDogMjAyNi0wNS0xNA0KcGFyYW0oDQogICAgW2ludF0kUG9ydCA9IDgwODAsDQogICAg W3N0cmluZ10kUm9vdFBhdGggPSAnJywNCiAgICAjIE9wdGlvbmFsZXMgendlaXRlcyBSb290IGZ1 ZXIgZ2VtZWluc2FtZSBEYXRlbiAoYWRtaW4uanNvbiBldGMuKS4gV2Vubg0KICAgICMgZ2VzZXR6 dCwga29tbWVuIC9kYXRhLy1SZWFkcyArIFNjaHJlaWJ6dWdyaWZmZSBhdXMgZGllc2VtIFBmYWQg c3RhdHQNCiAgICAjIGF1cyAkUm9vdFBhdGgvZGF0YS4gRGFtaXQga29lbm5lbiBDbGllbnRzIGlo cmUgc3RhdGlzY2hlbiBBc3NldHMgYXVzDQogICAgIyBlaW5lciBsb2thbGVuIEtvcGllIGJlZGll bmVuIChTaGFyZSBsYWVzc3Qgc2ljaCBqZWRlcnplaXQgYWt0dWFsaXNpZXJlbiwNCiAgICAjIGtl aW5lIERhdGVpLUxvY2tzIG1laHIpIHVuZCB0cm90emRlbSBhdWYgZGVtIGdlbWVpbnNhbWVuIEpT T04tU3RhbmQNCiAgICAjIGFtIFNoYXJlIGFyYmVpdGVuLg0KICAgIFtzdHJpbmddJERhdGFQYXRo ID0gJycsDQogICAgIyBPcHRpb25hbGVyIFNoYXJlLUZhbGxiYWNrIGZ1ZXIgc3RhdGlzY2hlIERh dGVpZW4sIGRpZSBOSUNIVCBsb2thbA0KICAgICMgaW0gQ2FjaGUgbGllZ2VuICh6LkIuIHhsc3gu ZnVsbC5taW4uanMpIOKAlCB3ZXJkZW4gZGFubiB2b20gU2hhcmUNCiAgICAjIG5hY2hnZWxhZGVu LiBMZWVyID0ga2VpbiBGYWxsYmFjay4NCiAgICBbc3RyaW5nXSRBc3NldEZhbGxiYWNrID0gJycN CikNCg0KIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KIyBWSTMgREdMLVBsYW51bmcgLSBQb3dlclNo ZWxsLVNlcnZlcg0KIyBTcGllZ2VsdCBkaWUgUHl0aG9uLVZhcmlhbnRlIChzZXJ2ZXIucHkpIGZ1 bmt0aW9uYWwuDQojIFBTIDUuMSArIENMTS1rb21wYXRpYmVsOiBudXIgRW5jb2Rpbmc6OlVURjgg U3RhdGljLCBrZWluZSBDb25zdHJ1Y3Rvci1DYWxscy4NCiMgRGF0ZWktSS9PIHVlYmVyIFtTeXN0 ZW0uSU8uRmlsZV06OlJlYWRBbGxCeXRlcyAvIFdyaXRlQWxsQnl0ZXMgKFVOQy1zaWNoZXIpLg0K IyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQ0KDQojIC0tLSBBcmJlaXRzdmVyemVpY2huaXMgYmVzdGlt bWVuIC0tLQ0KaWYgKC1ub3QgJFJvb3RQYXRoKSB7DQogICAgV3JpdGUtSG9zdCAnRkVITEVSOiAt Um9vdFBhdGggd3VyZGUgbmljaHQgdWViZXJnZWJlbi4nIC1Gb3JlZ3JvdW5kQ29sb3IgUmVkDQog ICAgU3RhcnQtU2xlZXAgLVNlY29uZHMgNQ0KICAgIGV4aXQgMQ0KfQ0KaWYgKC1ub3QgKFRlc3Qt UGF0aCAtTGl0ZXJhbFBhdGggJFJvb3RQYXRoKSkgew0KICAgIFdyaXRlLUhvc3QgKCdGRUhMRVI6 IFJvb3RQYXRoIGV4aXN0aWVydCBuaWNodDogezB9JyAtZiAkUm9vdFBhdGgpIC1Gb3JlZ3JvdW5k Q29sb3IgUmVkDQogICAgU3RhcnQtU2xlZXAgLVNlY29uZHMgNQ0KICAgIGV4aXQgMQ0KfQ0KIyBQ cm92aWRlclBhdGggc3RhdHQgUGF0aDogbGllZmVydCByZWluZW4gV2luMzItL1VOQy1QZmFkIG9o bmUNCiMgIk1pY3Jvc29mdC5Qb3dlclNoZWxsLkNvcmVcRmlsZVN5c3RlbTo6IiBQcmVmaXgsIGRl biAuTkVULURhdGVpLUFQSXMNCiMgKFtTeXN0ZW0uSU8uRmlsZV06OlJlYWRBbGxCeXRlcyBldGMu KSBuaWNodCB2ZXJzdGVoZW4uDQokUm9vdCA9IChSZXNvbHZlLVBhdGggLUxpdGVyYWxQYXRoICRS b290UGF0aCkuUHJvdmlkZXJQYXRoDQoNCiMgQXNzZXRGYWxsYmFjayBmcnVlaCBhdWZsb2VzZW4s IGRhbWl0IGRpZSBEYXRhRGlyLVN1Y2hlIGlobiBhbHMgUXVlbGxlIG51dHplbg0KIyBrYW5uLiBF cmxhdWJ0IGVzLCBlaW56ZWxuZSBEYXRlaWVuICh6LkIuIHhsc3guZnVsbC5taW4uanMpIHZvbSBT aGFyZSB6dQ0KIyBiZWRpZW5lbiwgYXVjaCB3ZW5uIGRlciBSZXN0IGRlciBBcHAgYXVzIGxva2Fs ZXIgS29waWUga29tbXQuDQokc2NyaXB0OkFzc2V0RmFsbGJhY2sgPSAnJw0KaWYgKCRBc3NldEZh bGxiYWNrIC1hbmQgKFRlc3QtUGF0aCAtTGl0ZXJhbFBhdGggJEFzc2V0RmFsbGJhY2spKSB7DQog ICAgJHNjcmlwdDpBc3NldEZhbGxiYWNrID0gKFJlc29sdmUtUGF0aCAtTGl0ZXJhbFBhdGggJEFz c2V0RmFsbGJhY2spLlByb3ZpZGVyUGF0aA0KfQ0KDQojIC0tLSBEYXRhRGlyIHJvYnVzdCBhdWZs b2VzZW4gKHVlYmVybGVidCBkYXMgVmVyc2NoaWViZW4gZGVzIEJlenVnb3JkbmVycykgLS0tDQoj IFdpciBwcm9iaWVyZW4gbWVocmVyZSBRdWVsbGVuIGluIFByaW9yaXRhZXQgdW5kIG5laG1lbiBk aWUgRVJTVEUsIGRpZSBlY2h0ZQ0KIyBEYXRlbiAoYWRtaW4uanNvbikgZW50aGFlbHQuIERhbWl0 IGZpbmRldCBkZXIgU2VydmVyIHNlaW5lIEpTT04gYXVjaCBkYW5uLA0KIyB3ZW5uIGRlciB1ZWJl cmdlYmVuZSAtRGF0YVBhdGggdmVyYWx0ZXQgb2RlciBsZWVyIGlzdCAoei5CLiBlaW4gYWx0ZXIN CiMgTGF1bmNoZXIgbWl0IGhhcnRjb2RpZXJ0ZW0gTGF1ZndlcmtzYnVjaHN0YWJlbiB3aWUgVzpc MDI1KSwgc29sYW5nZQ0KIyBpcmdlbmRlaW5lIGJla2FubnRlIFF1ZWxsZSBkaWUgRGF0ZW4gbm9j aCBoYXQ6DQojICAgMS4gLURhdGFQYXRoICAgICAgICAgIChleHBsaXppdCB1ZWJlcmdlYmVuKQ0K IyAgIDIuIDxBc3NldEZhbGxiYWNrPlxkYXRhICAoUXVlbGwtL1NoYXJlLU9yZG5lciDigJQgd2Fu ZGVydCBiZWltIFZlcnNjaGllYmVuIG1pdCkNCiMgICAzLiA8Um9vdD5cZGF0YSAgICAgICAgKGxv a2FsZXIgQXNzZXQtQ2FjaGUpDQojICAgNC4gPFNjcmlwdE9yZG5lcj5cZGF0YSAoU2VsYnN0YmV6 dWcsIGZhbGxzIHNlcnZlci5wczEgZGlyZWt0IGltIEJlenVnb3JkbmVyIGxpZWd0KQ0KJGRhdGFL YW5kaWRhdGVuID0gQCgpDQppZiAoJERhdGFQYXRoKSAgICAgICAgICAgICB7ICRkYXRhS2FuZGlk YXRlbiArPSAkRGF0YVBhdGggfQ0KaWYgKCRzY3JpcHQ6QXNzZXRGYWxsYmFjaykgeyAkZGF0YUth bmRpZGF0ZW4gKz0gKEpvaW4tUGF0aCAkc2NyaXB0OkFzc2V0RmFsbGJhY2sgJ2RhdGEnKSB9DQok ZGF0YUthbmRpZGF0ZW4gKz0gKEpvaW4tUGF0aCAkUm9vdCAnZGF0YScpDQppZiAoJFBTU2NyaXB0 Um9vdCkgICAgICAgICB7ICRkYXRhS2FuZGlkYXRlbiArPSAoSm9pbi1QYXRoICRQU1NjcmlwdFJv b3QgJ2RhdGEnKSB9DQoNCiREYXRhRGlyID0gJycNCmZvcmVhY2ggKCRjYW5kIGluICRkYXRhS2Fu ZGlkYXRlbikgew0KICAgIGlmICgkY2FuZCAtYW5kIChUZXN0LVBhdGggLUxpdGVyYWxQYXRoIChK b2luLVBhdGggJGNhbmQgJ2FkbWluLmpzb24nKSkpIHsNCiAgICAgICAgJERhdGFEaXIgPSAoUmVz b2x2ZS1QYXRoIC1MaXRlcmFsUGF0aCAkY2FuZCkuUHJvdmlkZXJQYXRoDQogICAgICAgIGJyZWFr DQogICAgfQ0KfQ0KDQppZiAoLW5vdCAkRGF0YURpcikgew0KICAgICMgS2VpbmUgUXVlbGxlIGhh dCBlY2h0ZSBEYXRlbi4gRnVlciBlaW5lIEVyc3RpbnN0YWxsYXRpb24gbGVnZW4gd2lyIGRlbg0K ICAgICMgWmllbG9yZG5lciBhbiDigJQgYWJlciBMQVVULCBuaWNodCBzdHVtbSwgZGFtaXQgZWlu IHZlcnNlaGVudGxpY2ggbGVlcmVyDQogICAgIyBEYXRlbnN0YW5kICh6LkIuIGRhdGFcLU9yZG5l ciBiZWltIFZlcnNjaGllYmVuIHZlcmdlc3Nlbiwgb2RlciBlaW4gYWx0ZXINCiAgICAjIExhdW5j aGVyIG1pdCB0b3RlbSAtRGF0YVBhdGgpIHNvZm9ydCBhdWZmYWVsbHQgc3RhdHQgYWxzICJsZWVy ZSBBcHAiLg0KICAgIGlmICgkRGF0YVBhdGgpIHsNCiAgICAgICAgaWYgKC1ub3QgKFRlc3QtUGF0 aCAtTGl0ZXJhbFBhdGggJERhdGFQYXRoKSkgeyBOZXctSXRlbSAtSXRlbVR5cGUgRGlyZWN0b3J5 IC1QYXRoICREYXRhUGF0aCAtRm9yY2UgfCBPdXQtTnVsbCB9DQogICAgICAgICREYXRhRGlyID0g KFJlc29sdmUtUGF0aCAtTGl0ZXJhbFBhdGggJERhdGFQYXRoKS5Qcm92aWRlclBhdGgNCiAgICB9 IGVsc2Ugew0KICAgICAgICAkRGF0YURpciA9IEpvaW4tUGF0aCAkUm9vdCAnZGF0YScNCiAgICAg ICAgaWYgKC1ub3QgKFRlc3QtUGF0aCAtTGl0ZXJhbFBhdGggJERhdGFEaXIpKSB7IE5ldy1JdGVt IC1JdGVtVHlwZSBEaXJlY3RvcnkgLVBhdGggJERhdGFEaXIgLUZvcmNlIHwgT3V0LU51bGwgfQ0K ICAgIH0NCiAgICBXcml0ZS1Ib3N0ICcnDQogICAgV3JpdGUtSG9zdCAnICAqKiogV0FSTlVORzog SW4ga2VpbmVyIGJla2FubnRlbiBRdWVsbGUgd3VyZGUgYWRtaW4uanNvbiBnZWZ1bmRlbiEgKioq JyAtRm9yZWdyb3VuZENvbG9yIFJlZA0KICAgIFdyaXRlLUhvc3QgJyAgRHVyY2hzdWNodGUgT3J0 ZTonIC1Gb3JlZ3JvdW5kQ29sb3IgWWVsbG93DQogICAgZm9yZWFjaCAoJGNhbmQgaW4gJGRhdGFL YW5kaWRhdGVuKSB7IFdyaXRlLUhvc3QgKCcgICAgLSB7MH0nIC1mICRjYW5kKSAtRm9yZWdyb3Vu ZENvbG9yIFllbGxvdyB9DQogICAgV3JpdGUtSG9zdCAoJyAgU2VydmVyIHN0YXJ0ZXQgbWl0IExF RVJFTSBEYXRlbm9yZG5lcjogezB9JyAtZiAkRGF0YURpcikgLUZvcmVncm91bmRDb2xvciBZZWxs b3cNCiAgICBXcml0ZS1Ib3N0ICcgIC0+IFd1cmRlIGRlciBPcmRuZXIgdmVyc2Nob2Jlbj8gRGFu biBkZW4gZGF0YVwtVW50ZXJvcmRuZXIgbWl0a29waWVyZW4uJyAtRm9yZWdyb3VuZENvbG9yIFll bGxvdw0KICAgIFdyaXRlLUhvc3QgJycNCn0NCg0KJHNjcmlwdDpDb3JzT3JpZ2luID0gImh0dHA6 Ly9sb2NhbGhvc3Q6JFBvcnQiDQokc2NyaXB0Okxhc3RIZWFydGJlYXQgPSBHZXQtRGF0ZQ0KJHNj cmlwdDpTaHV0ZG93blBlbmRpbmcgPSAkZmFsc2UNCg0KJFVzZXJuYW1lID0gJGVudjpVU0VSTkFN RQ0KaWYgKC1ub3QgJFVzZXJuYW1lKSB7ICRVc2VybmFtZSA9ICd1bmtub3duJyB9DQokRG9tYWlu ID0gJGVudjpVU0VSRE9NQUlODQppZiAoLW5vdCAkRG9tYWluKSB7ICREb21haW4gPSAnKicgfQ0K DQojIC0tLSBNSU1FIC0tLQ0KJE1pbWVUeXBlcyA9IEB7DQogICAgJy5odG1sJyA9ICd0ZXh0L2h0 bWw7IGNoYXJzZXQ9dXRmLTgnDQogICAgJy5jc3MnICA9ICd0ZXh0L2NzczsgY2hhcnNldD11dGYt OCcNCiAgICAnLmpzJyAgID0gJ2FwcGxpY2F0aW9uL2phdmFzY3JpcHQ7IGNoYXJzZXQ9dXRmLTgn DQogICAgJy5qc29uJyA9ICdhcHBsaWNhdGlvbi9qc29uOyBjaGFyc2V0PXV0Zi04Jw0KICAgICcu cG5nJyAgPSAnaW1hZ2UvcG5nJw0KICAgICcuanBnJyAgPSAnaW1hZ2UvanBlZycNCiAgICAnLmpw ZWcnID0gJ2ltYWdlL2pwZWcnDQogICAgJy5zdmcnICA9ICdpbWFnZS9zdmcreG1sJw0KICAgICcu aWNvJyAgPSAnaW1hZ2UveC1pY29uJw0KfQ0KDQojIC0tLSBMb2cgLS0tDQokc2NyaXB0OkFwaUxv ZyA9IEpvaW4tUGF0aCAkZW52OlRFTVAgJ1ZJM0RHTF9hcGkubG9nJw0KdHJ5IHsgUmVtb3ZlLUl0 ZW0gLUxpdGVyYWxQYXRoICRzY3JpcHQ6QXBpTG9nIC1Gb3JjZSAtRXJyb3JBY3Rpb24gU2lsZW50 bHlDb250aW51ZSB9IGNhdGNoIHt9DQpmdW5jdGlvbiBMb2ctQXBpKCRNZXNzYWdlKSB7DQogICAg dHJ5IHsNCiAgICAgICAgJGxpbmUgPSAiWyQoR2V0LURhdGUgLUZvcm1hdCAnSEg6bW06c3MuZmZm JyldICRNZXNzYWdlIg0KICAgICAgICBBZGQtQ29udGVudCAtTGl0ZXJhbFBhdGggJHNjcmlwdDpB cGlMb2cgLVZhbHVlICRsaW5lIC1FbmNvZGluZyBVVEY4DQogICAgfSBjYXRjaCB7fQ0KfQ0KDQpM b2ctQXBpICgnU1RBUlRVUCBSb290ICAgICAgICAgID0gezB9JyAtZiAkUm9vdCkNCkxvZy1BcGkg KCdTVEFSVFVQIERhdGFEaXIgICAgICAgPSB7MH0nIC1mICREYXRhRGlyKQ0KJF9hZkxvZyA9IGlm ICgkc2NyaXB0OkFzc2V0RmFsbGJhY2spIHsgJHNjcmlwdDpBc3NldEZhbGxiYWNrIH0gZWxzZSB7 ICcobmljaHQgZ2VzZXR6dCknIH0NCkxvZy1BcGkgKCdTVEFSVFVQIEFzc2V0RmFsbGJhY2sgPSB7 MH0nIC1mICRfYWZMb2cpDQojIEZhbGxzIGRlciB1ZWJlcmdlYmVuZSAtRGF0YVBhdGgga2VpbmUg RGF0ZW4gaGF0dGUgdW5kIGRpZSByb2J1c3RlIFN1Y2hlIGF1Zg0KIyBlaW5lIGFuZGVyZSBRdWVs bGUgYXVzZ2V3aWNoZW4gaXN0LCBkYXMgbGF1dCBpbnMgTG9nIHNjaHJlaWJlbiDigJQgc29uc3Qg c2llaHQNCiMgbWFuIGRlbSAiRGF0YURpciA9IC4uLiIgbmljaHQgYW4sIGRhc3MgZWluIHRvdGVy IC1EYXRhUGF0aCB1ZWJlcmJydWVja3Qgd3VyZGUuDQppZiAoJERhdGFQYXRoKSB7DQogICAgJF9k cEZ1bGwgPSAnJw0KICAgIGlmIChUZXN0LVBhdGggLUxpdGVyYWxQYXRoICREYXRhUGF0aCkgeyAk X2RwRnVsbCA9IChSZXNvbHZlLVBhdGggLUxpdGVyYWxQYXRoICREYXRhUGF0aCkuUHJvdmlkZXJQ YXRoIH0NCiAgICBpZiAoJF9kcEZ1bGwgLW5lICREYXRhRGlyKSB7DQogICAgICAgIExvZy1BcGkg KCdTVEFSVFVQIEhJTldFSVM6IC1EYXRhUGF0aCAoezB9KSBvaG5lIGFkbWluLmpzb24g4oCUIHJv YnVzdGVyIEZhbGxiYWNrIGF1ZiB7MX0nIC1mICREYXRhUGF0aCwgJERhdGFEaXIpDQogICAgfQ0K fQ0KZm9yZWFjaCAoJGZuIGluICdhZG1pbi5qc29uJywncGxhbnVuZy5qc29uJywnbG9nYnVjaC5q c29uJykgew0KICAgICRmcCA9IEpvaW4tUGF0aCAkRGF0YURpciAkZm4NCiAgICBpZiAoVGVzdC1Q YXRoIC1MaXRlcmFsUGF0aCAkZnApIHsNCiAgICAgICAgJHN6ID0gKEdldC1JdGVtIC1MaXRlcmFs UGF0aCAkZnApLkxlbmd0aA0KICAgICAgICBMb2ctQXBpICgnU1RBUlRVUCB7MH06IGV4aXN0cyBz aXplPXsxfScgLWYgJGZuLCAkc3opDQogICAgfSBlbHNlIHsNCiAgICAgICAgTG9nLUFwaSAoJ1NU QVJUVVAgezB9OiBGRUhMVCcgLWYgJGZuKQ0KICAgIH0NCn0NCg0KIyA9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQ0KIyBEYXRlaS1DYWNoaW5nIChJbi1NZW1vcnkpDQojID09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 DQoNCiMgSW4tTWVtb3J5LUNhY2hlIGZ1ZXIgRGF0ZWktSW5oYWx0ZS4gSG90LVBhdGgtUmVhZHMg KHouQi4gL2FwaS9wbGFudW5nKSBnZWhlbg0KIyBhbiBEaXNrLUlPIHZvcmJlaS4gSW52YWxpZGll cnVuZyB1ZWJlciBtdGltZS1WZXJnbGVpY2ggYmVpbSBuYWVjaHN0ZW4gUmVhZC4NCiMgS2V5ID0g RGF0ZWluYW1lLCBWYWx1ZSA9IEB7IFRleHQ9c3RyaW5nOyBNdGltZVRpY2tzPWxvbmcgfQ0KJHNj cmlwdDpGaWxlQ2FjaGUgPSBAe30NCg0KIyBad2VpdGUgQ2FjaGUtU3R1ZmU6IGJlcmVpdHMgdmlh IENvbnZlcnRGcm9tLUpzb24gemVybGVndGUgUFNDdXN0b21PYmplY3RzLg0KIyBSZWFkLUpzb25P YmplY3Qgb2huZSBkaWVzZW4gQ2FjaGUgcGFyc3QgZGllIDIwMCBLQiBncm9zc2VuIEpTT05zIGF1 ZiBqZWRlbQ0KIyAvYXBpL2luZm8tUmVxdWVzdCBtZWhyZmFjaCAoVGVzdC1Jc3RTdXBlclVzZXIs IEdldC1GYWNoYXVmc2ljaHRFaW50cmFnLA0KIyBHZXQtTWVpbmVQZXJzb24gbGVzZW4gamV3ZWls cyBhZG1pbi5qc29uIGJ6dy4gcGxhbnVuZy5qc29uIGVpZ2Vuc3RhZW5kaWcpDQojIOKAlCBhdWYg QmVob2VyZGVuLVBDcyBtaXQgUG93ZXJTaGVsbCA1LjEgc2luZCBkYXMgc2NobmVsbCBtYWwgMzAw LTUwMCBtcw0KIyBBdWZzY2hsYWcgcHJvIFN0YXJ0cGhhc2UtUmVxdWVzdC4NCiMgS2V5ID0gRGF0 ZWluYW1lLCBWYWx1ZSA9IEB7IE9iaj1QU0N1c3RvbU9iamVjdDsgTXRpbWVUaWNrcz1sb25nIH0N CiMgQWNodHVuZzogUFNDdXN0b21PYmplY3QgaXN0IG11dGFibGUuIEF1ZnJ1ZmVyIGR1ZXJmZW4g ZGFzIHp1cnVlY2tnZWdlYmVuZQ0KIyBPYmpla3QgTklDSFQgaW4tcGxhY2UgbW9kaWZpemllcmVu IOKAlCBlbnR3ZWRlciByZWFkb25seSBudXR6ZW4gb2RlciB2aWENCiMgQ29udmVydFRvLUpzb24g fCBDb252ZXJ0RnJvbS1Kc29uIGtsb25lbiwgYmV2b3IgRmVsZGVyIHVlYmVyc2NocmllYmVuDQoj IHdlcmRlbi4gUFVULUhhbmRsZXIgc2luZCBzaWNoZXI6IHNpZSBzY2hyZWliZW4gYW5zY2hsaWVz c2VuZCBXcml0ZS1Kc29uT2JqZWN0LA0KIyBkYXMgZGVuIENhY2hlIGVpbnRyYWdzd2Vpc2UgbmV1 IHNldHp0Lg0KJHNjcmlwdDpKc29uQ2FjaGUgPSBAe30NCg0KIyBCYWNrdXAtQnl0ZXMgYXVmIERp c2sgc2NocmVpYmVuIChLbGFydGV4dCkuDQojIFNwcmludCA1IOKAlCBXYXJ0dW5nc3NjaHVsZCAo MjAyNi0wNS0yOSwgRmluZGluZyAxOCk6IGRhbmFjaCB3aXJkIGRpZSBOVEZTLQ0KIyBBQ0wgYXVm ICJudXIgT3duZXIgKyBBZG1pbmlzdHJhdG9ycyIgZWluZ2VzY2hyYWVua3QgKGtlaW4gQXV0aGVu dGljYXRlZA0KIyBVc2VycyksIGRhbWl0IFBJSS1CYWNrdXBzIGluIGRhdGEvY2FjaGUvIG5pY2h0 IHZvbiBiZWxpZWJpZ2VuIGxva2FsZW4NCiMgUHJvZ3JhbW1lbiBsZXNiYXIgc2luZC4gQXVmIEZp bGVzeXN0ZW1lbiwgZGllIEFDTCBuaWNodCB1bnRlcnN0dWV0emVuDQojIChTaGFyZS9VTkMpLCBz dGlsbCB0b2xlcmllcmVuIOKAlCBGaW5kaW5nLUluaGFsdCBpc3QgQmVzdC1FZmZvcnQsIG5pY2h0 DQojIGtyaXRpc2NoZXIgUGZhZC4NCmZ1bmN0aW9uIFdyaXRlLUJhY2t1cEJ5dGVzKCRQZmFkQWJz LCAkS2xhcnRleHQpIHsNCiAgICBpZiAoLW5vdCAkS2xhcnRleHQpIHsgJEtsYXJ0ZXh0ID0gJycg fQ0KICAgICRwbGFpbiA9IFtTeXN0ZW0uVGV4dC5FbmNvZGluZ106OlVURjguR2V0Qnl0ZXMoJEts YXJ0ZXh0KQ0KICAgIFtTeXN0ZW0uSU8uRmlsZV06OldyaXRlQWxsQnl0ZXMoJFBmYWRBYnMsICRw bGFpbikNCiAgICB0cnkgew0KICAgICAgICAkYWNsID0gR2V0LUFjbCAtTGl0ZXJhbFBhdGggJFBm YWRBYnMNCiAgICAgICAgJGFjbC5TZXRBY2Nlc3NSdWxlUHJvdGVjdGlvbigkdHJ1ZSwgJGZhbHNl KSAgICMgSW5oZXJpdCBhdXMsIGtlaW5lIFZlcmVyYnVuZw0KICAgICAgICAkYWNsLkFjY2VzcyB8 IEZvckVhY2gtT2JqZWN0IHsgJGFjbC5SZW1vdmVBY2Nlc3NSdWxlQWxsKCRfKSB9IHwgT3V0LU51 bGwNCiAgICAgICAgJG93biA9ICIkZW52OlVTRVJET01BSU5cJGVudjpVU0VSTkFNRSINCiAgICAg ICAgJHJ1bGUgPSBOZXctT2JqZWN0IFN5c3RlbS5TZWN1cml0eS5BY2Nlc3NDb250cm9sLkZpbGVT eXN0ZW1BY2Nlc3NSdWxlKA0KICAgICAgICAgICAgJG93biwgJ0Z1bGxDb250cm9sJywgJ0FsbG93 JykNCiAgICAgICAgJGFjbC5TZXRBY2Nlc3NSdWxlKCRydWxlKQ0KICAgICAgICAjIEFkbWluaXN0 cmF0b3JzIGFscyBCYWNrdXAtUmVzZXJ2ZXp1Z2FuZyAoUmVjb3ZlcnkgZHVyY2ggSVQpDQogICAg ICAgIHRyeSB7DQogICAgICAgICAgICAkYWRtaW5zID0gTmV3LU9iamVjdCBTeXN0ZW0uU2VjdXJp dHkuUHJpbmNpcGFsLlNlY3VyaXR5SWRlbnRpZmllcigNCiAgICAgICAgICAgICAgICBbU3lzdGVt LlNlY3VyaXR5LlByaW5jaXBhbC5XZWxsS25vd25TaWRUeXBlXTo6QnVpbHRpbkFkbWluaXN0cmF0 b3JzU2lkLCAkbnVsbCkNCiAgICAgICAgICAgICRhZG1pblJ1bGUgPSBOZXctT2JqZWN0IFN5c3Rl bS5TZWN1cml0eS5BY2Nlc3NDb250cm9sLkZpbGVTeXN0ZW1BY2Nlc3NSdWxlKA0KICAgICAgICAg ICAgICAgICRhZG1pbnMsICdGdWxsQ29udHJvbCcsICdBbGxvdycpDQogICAgICAgICAgICAkYWNs LlNldEFjY2Vzc1J1bGUoJGFkbWluUnVsZSkNCiAgICAgICAgfSBjYXRjaCB7fQ0KICAgICAgICBT ZXQtQWNsIC1MaXRlcmFsUGF0aCAkUGZhZEFicyAtQWNsT2JqZWN0ICRhY2wgLUVycm9yQWN0aW9u IFN0b3ANCiAgICB9IGNhdGNoIHsNCiAgICAgICAgTG9nLUFwaSAoJ0JBQ0tVUC1BQ0wtTk9USUNF IHswfTogezF9JyAtZiAkUGZhZEFicywgJF8uRXhjZXB0aW9uLk1lc3NhZ2UpDQogICAgfQ0KfQ0K DQojIEJhY2t1cC1CeXRlcyBsZXNlbiwgQk9NLVN0cmlwcGluZywgbGllZmVydCBVVEYtOC1UZXh0 IHp1cnVlY2suDQpmdW5jdGlvbiBSZWFkLUJhY2t1cFRleHQoJFBmYWRBYnMpIHsNCiAgICBpZiAo LW5vdCAoVGVzdC1QYXRoIC1MaXRlcmFsUGF0aCAkUGZhZEFicykpIHsgcmV0dXJuICRudWxsIH0N CiAgICAkYnl0ZXMgPSBbU3lzdGVtLklPLkZpbGVdOjpSZWFkQWxsQnl0ZXMoJFBmYWRBYnMpDQog ICAgaWYgKCRieXRlcy5MZW5ndGggLWVxIDApIHsgcmV0dXJuICRudWxsIH0NCiAgICAkb2Zmc2V0 ID0gMA0KICAgIGlmICgkYnl0ZXMuTGVuZ3RoIC1nZSAzIC1hbmQgJGJ5dGVzWzBdIC1lcSAweEVG IC1hbmQgJGJ5dGVzWzFdIC1lcSAweEJCIC1hbmQgJGJ5dGVzWzJdIC1lcSAweEJGKSB7ICRvZmZz ZXQgPSAzIH0NCiAgICByZXR1cm4gW1N5c3RlbS5UZXh0LkVuY29kaW5nXTo6VVRGOC5HZXRTdHJp bmcoJGJ5dGVzLCAkb2Zmc2V0LCAkYnl0ZXMuTGVuZ3RoIC0gJG9mZnNldCkNCn0NCg0KIyAtLS0g RGF0ZWktSS9PIChVTkMtc2ljaGVyLCBVVEYtOCBvaG5lIEJPTSwgbWl0IEluLU1lbW9yeS1DYWNo ZSkgLS0tDQpmdW5jdGlvbiBSZWFkLVRleHRGaWxlKCRGaWxlTmFtZSkgew0KICAgICMgQ2FjaGUt SGl0Pw0KICAgIGlmICgkc2NyaXB0OkZpbGVDYWNoZS5Db250YWluc0tleSgkRmlsZU5hbWUpKSB7 DQogICAgICAgICRlbnRyeSA9ICRzY3JpcHQ6RmlsZUNhY2hlWyRGaWxlTmFtZV0NCiAgICAgICAg dHJ5IHsNCiAgICAgICAgICAgICRwID0gSm9pbi1QYXRoICREYXRhRGlyICRGaWxlTmFtZQ0KICAg ICAgICAgICAgaWYgKFRlc3QtUGF0aCAtTGl0ZXJhbFBhdGggJHApIHsNCiAgICAgICAgICAgICAg ICAkbXQgPSAoR2V0LUl0ZW0gLUxpdGVyYWxQYXRoICRwKS5MYXN0V3JpdGVUaW1lVXRjLlRpY2tz DQogICAgICAgICAgICAgICAgaWYgKCRtdCAtZXEgJGVudHJ5Lk10aW1lVGlja3MpIHsNCiAgICAg ICAgICAgICAgICAgICAgcmV0dXJuICRlbnRyeS5UZXh0DQogICAgICAgICAgICAgICAgfQ0KICAg ICAgICAgICAgfQ0KICAgICAgICB9IGNhdGNoIHt9DQogICAgICAgICRzY3JpcHQ6RmlsZUNhY2hl LlJlbW92ZSgkRmlsZU5hbWUpIHwgT3V0LU51bGwNCiAgICB9DQogICAgJHAgPSBKb2luLVBhdGgg JERhdGFEaXIgJEZpbGVOYW1lDQogICAgaWYgKC1ub3QgKFRlc3QtUGF0aCAtTGl0ZXJhbFBhdGgg JHApKSB7DQogICAgICAgIExvZy1BcGkgKCdSRUFEIHswfTogTklDSFQgVk9SSEFOREVOICh7MX0p JyAtZiAkRmlsZU5hbWUsICRwKQ0KICAgICAgICByZXR1cm4gJG51bGwNCiAgICB9DQogICAgdHJ5 IHsNCiAgICAgICAgJGJ5dGVzID0gW1N5c3RlbS5JTy5GaWxlXTo6UmVhZEFsbEJ5dGVzKCRwKQ0K ICAgICAgICBpZiAoJGJ5dGVzLkxlbmd0aCAtZXEgMCkgew0KICAgICAgICAgICAgTG9nLUFwaSAo J1JFQUQgezB9OiBsZWVyJyAtZiAkRmlsZU5hbWUpDQogICAgICAgICAgICByZXR1cm4gJG51bGwN CiAgICAgICAgfQ0KICAgICAgICAkb2Zmc2V0ID0gMA0KICAgICAgICBpZiAoJGJ5dGVzLkxlbmd0 aCAtZ2UgMyAtYW5kICRieXRlc1swXSAtZXEgMHhFRiAtYW5kICRieXRlc1sxXSAtZXEgMHhCQiAt YW5kICRieXRlc1syXSAtZXEgMHhCRikgeyAkb2Zmc2V0ID0gMyB9DQogICAgICAgICR0ZXh0ID0g W1N5c3RlbS5UZXh0LkVuY29kaW5nXTo6VVRGOC5HZXRTdHJpbmcoJGJ5dGVzLCAkb2Zmc2V0LCAk Ynl0ZXMuTGVuZ3RoIC0gJG9mZnNldCkNCiAgICAgICAgTG9nLUFwaSAoJ1JFQUQgezB9OiB7MX0g Qnl0ZXMgb2snIC1mICRGaWxlTmFtZSwgKCRieXRlcy5MZW5ndGggLSAkb2Zmc2V0KSkNCiAgICAg ICAgJG10ID0gKEdldC1JdGVtIC1MaXRlcmFsUGF0aCAkcCkuTGFzdFdyaXRlVGltZVV0Yy5UaWNr cw0KICAgICAgICAkc2NyaXB0OkZpbGVDYWNoZVskRmlsZU5hbWVdID0gQHsgVGV4dCA9ICR0ZXh0 OyBNdGltZVRpY2tzID0gJG10IH0NCiAgICAgICAgcmV0dXJuICR0ZXh0DQogICAgfSBjYXRjaCB7 DQogICAgICAgIExvZy1BcGkgKCdSRUFEIHswfSBGRUhMRVI6IHsxfScgLWYgJEZpbGVOYW1lLCAk Xy5FeGNlcHRpb24uTWVzc2FnZSkNCiAgICAgICAgcmV0dXJuICRudWxsDQogICAgfQ0KfQ0KDQpm dW5jdGlvbiBXcml0ZS1UZXh0RmlsZSgkRmlsZU5hbWUsICRUZXh0KSB7DQogICAgJHAgPSBKb2lu LVBhdGggJERhdGFEaXIgJEZpbGVOYW1lDQogICAgdHJ5IHsNCiAgICAgICAgaWYgKC1ub3QgJFRl eHQpIHsgJFRleHQgPSAnJyB9DQogICAgICAgICRwbGFpbiA9IFtTeXN0ZW0uVGV4dC5FbmNvZGlu Z106OlVURjguR2V0Qnl0ZXMoJFRleHQpDQogICAgICAgICMgQXRvbWFyZXIgU2NocmVpYnZvcmdh bmc6IGVyc3Qgdm9sbHN0YWVuZGlnIGluIGVpbmUgVGVtcC1EYXRlaSwgZGFubg0KICAgICAgICAj IHBlciBSZXBsYWNlL01vdmUgdWViZXIgZGllIFppZWxkYXRlaSB0YXVzY2hlbi4gU28gaGludGVy bGFlc3N0IGVpbg0KICAgICAgICAjIENyYXNoIC8gU3Ryb21hdXNmYWxsIC8gIlBsYXR0ZSB2b2xs IiBtaXR0ZW4gaW0gU2NocmVpYmVuIE5JRSBlaW5lDQogICAgICAgICMgaGFsYiBnZXNjaHJpZWJl bmUsIGtvcnJ1cHRlIHBsYW51bmcuanNvbi9hZG1pbi5qc29uIOKAlCBlbnR3ZWRlciBkZXINCiAg ICAgICAgIyBhbHRlIG9kZXIgZGVyIG5ldWUgVm9sbHN0YW5kIGlzdCBkYS4gKERlciBEYXRlaS1M b2NrIHNjaHVldHp0IG51cg0KICAgICAgICAjIGdlZ2VuIFBhcmFsbGVsLVByb3plc3NlLCBuaWNo dCBnZWdlbiBUZWlsLVdyaXRlcy4pDQogICAgICAgICR0bXAgPSAkcCArICcudG1wJw0KICAgICAg ICBbU3lzdGVtLklPLkZpbGVdOjpXcml0ZUFsbEJ5dGVzKCR0bXAsICRwbGFpbikNCiAgICAgICAg dHJ5IHsNCiAgICAgICAgICAgIGlmIChUZXN0LVBhdGggLUxpdGVyYWxQYXRoICRwKSB7DQogICAg ICAgICAgICAgICAgIyBSZXBsYWNlIGlzdCBhdG9tYXIgKE1vdmVGaWxlRXggUkVQTEFDRV9FWElT VElORykgYXVmIE5URlMuDQogICAgICAgICAgICAgICAgW1N5c3RlbS5JTy5GaWxlXTo6UmVwbGFj ZSgkdG1wLCAkcCwgJG51bGwpDQogICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAg IFtTeXN0ZW0uSU8uRmlsZV06Ok1vdmUoJHRtcCwgJHApDQogICAgICAgICAgICB9DQogICAgICAg IH0gY2F0Y2ggew0KICAgICAgICAgICAgIyBGYWxsYmFjayBmdWVyIFNoYXJlcyBvaG5lIFJlcGxh Y2UtU3VwcG9ydDogVGVtcCBpc3QgYmVyZWl0cw0KICAgICAgICAgICAgIyB2b2xsc3RhZW5kaWcg 4oCUIFppZWwgZW50ZmVybmVuIHVuZCBUZW1wIHVtYmVuZW5uZW4gKFJlbmFtZSBpc3QNCiAgICAg ICAgICAgICMgYXVmIGRlbXNlbGJlbiBWb2x1bWUgZWluZSBNZXRhZGF0ZW4tT3BlcmF0aW9uKS4N CiAgICAgICAgICAgIGlmIChUZXN0LVBhdGggLUxpdGVyYWxQYXRoICRwKSB7IFJlbW92ZS1JdGVt IC1MaXRlcmFsUGF0aCAkcCAtRm9yY2UgfQ0KICAgICAgICAgICAgW1N5c3RlbS5JTy5GaWxlXTo6 TW92ZSgkdG1wLCAkcCkNCiAgICAgICAgfQ0KICAgICAgICAkbXQgPSAoR2V0LUl0ZW0gLUxpdGVy YWxQYXRoICRwKS5MYXN0V3JpdGVUaW1lVXRjLlRpY2tzDQogICAgICAgICRzY3JpcHQ6RmlsZUNh Y2hlWyRGaWxlTmFtZV0gPSBAeyBUZXh0ID0gJFRleHQ7IE10aW1lVGlja3MgPSAkbXQgfQ0KICAg ICAgICAjIEpTT04tQ2FjaGUgaW52YWxpZGllcmVuOiBkZXIgbmFlY2hzdGUgUmVhZC1Kc29uT2Jq ZWN0IG11c3MgbmV1IHBhcnNlbi4NCiAgICAgICAgaWYgKCRzY3JpcHQ6SnNvbkNhY2hlLkNvbnRh aW5zS2V5KCRGaWxlTmFtZSkpIHsNCiAgICAgICAgICAgICRzY3JpcHQ6SnNvbkNhY2hlLlJlbW92 ZSgkRmlsZU5hbWUpIHwgT3V0LU51bGwNCiAgICAgICAgfQ0KICAgICAgICBMb2ctQXBpICgnV1JJ VEUgezB9OiB7MX0gQnl0ZXMgb2snIC1mICRGaWxlTmFtZSwgJHBsYWluLkxlbmd0aCkNCiAgICAg ICAgcmV0dXJuICR0cnVlDQogICAgfSBjYXRjaCB7DQogICAgICAgIExvZy1BcGkgKCdXUklURSB7 MH0gRkVITEVSOiB7MX0nIC1mICRGaWxlTmFtZSwgJF8uRXhjZXB0aW9uLk1lc3NhZ2UpDQogICAg ICAgICMgVmVyd2Fpc3RlIFRlbXAtRGF0ZWkgYXVmcmFldW1lbiwgZmFsbHMgZGVyIFRhdXNjaCBz Y2hlaXRlcnRlLg0KICAgICAgICB0cnkgeyAkdG1wQyA9IChKb2luLVBhdGggJERhdGFEaXIgJEZp bGVOYW1lKSArICcudG1wJzsgaWYgKFRlc3QtUGF0aCAtTGl0ZXJhbFBhdGggJHRtcEMpIHsgUmVt b3ZlLUl0ZW0gLUxpdGVyYWxQYXRoICR0bXBDIC1Gb3JjZSAtRXJyb3JBY3Rpb24gU2lsZW50bHlD b250aW51ZSB9IH0gY2F0Y2gge30NCiAgICAgICAgcmV0dXJuICRmYWxzZQ0KICAgIH0NCn0NCg0K IyA9PT09PT09PT09PT09PT09PT09PT0gUmljaC1UZXh0LVNhbml0aXplciAoU2VydmVyLXNlaXRp ZykgPT09PT09PT09PT09PT09PT09PT09DQojIFNwaWVnZWx0IGRpZSBDbGllbnQtQWxsb3dsaXN0 IGF1cyBqcy91aV9ydGUuanMgKHNhbml0aXplUmljaEh0bWwpIHVuZCBkZW4NCiMgUHl0aG9uLURl di1TZXJ2ZXIgKHNhbml0aXplX3JpY2hfaHRtbCkuIEJpc2xhbmcgbGllZiBkaWUgQmVyZWluaWd1 bmcgTlVSIGltDQojIEJyb3dzZXIg4oCUIGVpbiBtYW5pcHVsaWVydGVyIENsaWVudCAvIGRpcmVr dGVyIEFQSS1DYWxsIGtvbm50ZSBiZWxpZWJpZ2VzDQojIEhUTUwvPHNjcmlwdD4gaW4gaW5mb3Rl eHQvaGlsZmV0ZXh0L2VtYWlsVm9ybGFnZW4vTWl0dGVpbHVuZ2VuIHNjaHJlaWJlbiwNCiMgZGFz IGFuZGVyZSBBZG1pbnMvVXNlciB2aWEgaW5uZXJIVE1MIGdlcmVuZGVydCBiZWthbWVuIChTdG9y ZWQgWFNTKS4NCiMgUmVnZXgtYmFzaWVydCAoUG93ZXJTaGVsbCBoYXQga2VpbmVuIEhUTUwtUGFy c2VyIGluIGRlciBTdGRsaWIpIOKAlCBiZXd1c3N0DQojIGtvbnNlcnZhdGl2OiB1bmJla2FubnRl IFRhZ3Mgd2VyZGVuIGVudGZlcm50IChJbmhhbHQgYmxlaWJ0KSwgQXR0cmlidXRlDQojIGtvbXBs ZXR0IGdlc3RyaXBwdCAoQXVzbmFobWU6IHZhbGlkaWVydGVzIGhyZWYgYW4gPGE+KS4NCiRzY3Jp cHQ6U2FuaXRpemVBbGxvd2VkVGFncyA9IEAoJ2InLCdzdHJvbmcnLCdpJywnZW0nLCd1JywnYnIn LCdwJywndWwnLCdvbCcsJ2xpJywnYScsJ2RpdicsJ3NwYW4nLCdoMycsJ2g0JywnYmxvY2txdW90 ZScpDQoNCmZ1bmN0aW9uIENvbnZlcnRUby1TYWZlUmljaEh0bWwgew0KICAgIHBhcmFtKFtzdHJp bmddJEh0bWwpDQogICAgaWYgKFtzdHJpbmddOjpJc051bGxPckVtcHR5KCRIdG1sKSkgeyByZXR1 cm4gJycgfQ0KICAgICRzID0gJEh0bWwNCiAgICAjIDEuIEdlZmFlaHJsaWNoZSBFbGVtZW50LUJs b2Vja2UgaW5rbC4gSW5oYWx0IGtvbXBsZXR0IGVudGZlcm5lbi4NCiAgICAkcyA9IFtyZWdleF06 OlJlcGxhY2UoJHMsICcoP2lzKTwoc2NyaXB0fHN0eWxlfGlmcmFtZXxvYmplY3R8ZW1iZWR8c3Zn fG1hdGgpXGIuKj88L1wxXHMqPicsICcnKQ0KICAgICRzID0gW3JlZ2V4XTo6UmVwbGFjZSgkcywg Jyg/aXMpPChzY3JpcHR8c3R5bGV8aWZyYW1lfG9iamVjdHxlbWJlZHxzdmd8bWF0aClcYltePl0q Lz8+JywgJycpDQogICAgIyAyLiBIVE1MLUtvbW1lbnRhcmUgcmF1cyAoa29lbm5lbiBDb25kaXRp b25hbC1Db21tZW50LVRyaWNrcyB0cmFnZW4pLg0KICAgICRzID0gW3JlZ2V4XTo6UmVwbGFjZSgk cywgJyg/cyk8IS0tLio/LS0+JywgJycpDQogICAgIyAzLiBKZWRlcyB2ZXJibGVpYmVuZGUgVGFn IGR1cmNoIGRlbiBBbGxvd2xpc3QtRXZhbHVhdG9yIHNjaGlja2VuLg0KICAgICRhbGxvd2VkID0g JHNjcmlwdDpTYW5pdGl6ZUFsbG93ZWRUYWdzDQogICAgJGV2YWx1YXRvciA9IHsNCiAgICAgICAg cGFyYW0oJG0pDQogICAgICAgICRzbGFzaCA9ICRtLkdyb3Vwc1snc2xhc2gnXS5WYWx1ZQ0KICAg ICAgICAkbmFtZSAgPSAkbS5Hcm91cHNbJ25hbWUnXS5WYWx1ZS5Ub0xvd2VyKCkNCiAgICAgICAg aWYgKCRhbGxvd2VkIC1ub3Rjb250YWlucyAkbmFtZSkgeyByZXR1cm4gJycgfSAgICAgICAjIFVu d3JhcDogVGFnIHdlZywgSW5oYWx0IGJsZWlidA0KICAgICAgICBpZiAoJHNsYXNoIC1lcSAnLycp IHsgcmV0dXJuICI8LyRuYW1lPiIgfQ0KICAgICAgICBpZiAoJG5hbWUgLWVxICdicicpIHsgcmV0 dXJuICc8YnI+JyB9DQogICAgICAgIGlmICgkbmFtZSAtZXEgJ2EnKSB7DQogICAgICAgICAgICAk YXR0cnMgPSAkbS5Hcm91cHNbJ2F0dHJzJ10uVmFsdWUNCiAgICAgICAgICAgICRocmVmICA9ICcn DQogICAgICAgICAgICAkaG0gPSBbcmVnZXhdOjpNYXRjaCgkYXR0cnMsICcoP2kpaHJlZlxzKj1c cyooIihbXiJdKikifCcnKFteJyddKiknJ3woW15ccz5dKykpJykNCiAgICAgICAgICAgIGlmICgk aG0uU3VjY2VzcykgeyAkaHJlZiA9ICgkaG0uR3JvdXBzWzJdLlZhbHVlICsgJGhtLkdyb3Vwc1sz XS5WYWx1ZSArICRobS5Hcm91cHNbNF0uVmFsdWUpLlRyaW0oKSB9DQogICAgICAgICAgICAkb3V0 ID0gJzxhJw0KICAgICAgICAgICAgaWYgKCRocmVmIC1hbmQgJGhyZWYgLW5vdG1hdGNoICcoP2kp XlxzKihqYXZhc2NyaXB0fGRhdGF8dmJzY3JpcHQpOicpIHsNCiAgICAgICAgICAgICAgICAkaHJl ZkVzYyA9ICRocmVmIC1yZXBsYWNlICcmJywnJmFtcDsnIC1yZXBsYWNlICciJywnJnF1b3Q7JyAt cmVwbGFjZSAnPCcsJyZsdDsnIC1yZXBsYWNlICc+JywnJmd0OycNCiAgICAgICAgICAgICAgICAk b3V0ICs9ICIgaHJlZj0iIiRocmVmRXNjIiIiDQogICAgICAgICAgICB9DQogICAgICAgICAgICAk b3V0ICs9ICcgdGFyZ2V0PSJfYmxhbmsiIHJlbD0ibm9vcGVuZXIgbm9yZWZlcnJlciI+Jw0KICAg ICAgICAgICAgcmV0dXJuICRvdXQNCiAgICAgICAgfQ0KICAgICAgICByZXR1cm4gIjwkbmFtZT4i ICAgIyBlcmxhdWJ0ZXMgVGFnLCBhbGxlIEF0dHJpYnV0ZSBnZXN0cmlwcHQNCiAgICB9DQogICAg JHMgPSBbcmVnZXhdOjpSZXBsYWNlKCRzLCAnKD9zKTwoPzxzbGFzaD4vPykoPzxuYW1lPlthLXpB LVpdW2EtekEtWjAtOV0qKSg/PGF0dHJzPltePl0qKT4nLCAkZXZhbHVhdG9yKQ0KICAgIHJldHVy biAkcw0KfQ0KDQojIEtleS1VbmlvbjogZmVobGVuZGUgVG9wLUxldmVsLUtleXMgYXVzIGRlbSBB bHQtU3RhbmQgZXJoYWx0ZW4uIFBVVCAvYXBpL2FkbWluDQojIHdhciBWb2xsLU92ZXJ3cml0ZSDi gJQgZWluIFBhcnRpYWwtUFVUIGxvZXNjaHRlIG5pY2h0IG1pdGdlc2VuZGV0ZSBUb3AtTGV2ZWwt DQojIEtleXMgKHNjaGljaHRjb2RlcywgZmVpZXJ0YWdlLCDigKYpLiBTY2h1ZXR6dCBnZWdlbiB2 ZXJzZWhlbnRsaWNoZXMgRW50a2VybmVuLg0KZnVuY3Rpb24gTWVyZ2UtQWRtaW5LZXlzKCRBbHQs ICROZXUpIHsNCiAgICBpZiAoJG51bGwgLWVxICRBbHQgLW9yICRudWxsIC1lcSAkTmV1KSB7IHJl dHVybiAkTmV1IH0NCiAgICBmb3JlYWNoICgkcHJvcCBpbiAkQWx0LlBTT2JqZWN0LlByb3BlcnRp ZXMpIHsNCiAgICAgICAgaWYgKC1ub3QgJE5ldS5QU09iamVjdC5Qcm9wZXJ0aWVzWyRwcm9wLk5h bWVdKSB7DQogICAgICAgICAgICAkTmV1IHwgQWRkLU1lbWJlciAtTm90ZVByb3BlcnR5TmFtZSAk cHJvcC5OYW1lIC1Ob3RlUHJvcGVydHlWYWx1ZSAkcHJvcC5WYWx1ZSAtRm9yY2UNCiAgICAgICAg fQ0KICAgIH0NCiAgICByZXR1cm4gJE5ldQ0KfQ0KDQojIEJlcmVpbmlndCBkaWUgYmVrYW5udGVu IFJpY2gtVGV4dC1GZWxkZXIgZWluZXMgKFRlaWwtKUFkbWluLU9iamVrdHMgaW4tcGxhY2UuDQpm dW5jdGlvbiBJbnZva2UtQWRtaW5SaWNodGV4dFNhbml0aXplKCREYXRlbikgew0KICAgIGlmICgk bnVsbCAtZXEgJERhdGVuKSB7IHJldHVybiB9DQogICAgZm9yZWFjaCAoJGsgaW4gJ2hpbGZldGV4 dCcsJ2luZm90ZXh0JywnYmVkaWVudW5nc3RleHRlJywnaW1wcmVzc3VtJywnc2NobGllc3NpbmZv Jywnc3VwcG9ydGluZm8nLCdzdGFuZG9ydGVCZXNjaHJlaWJ1bmcnLCdzdXBwb3J0TWFpbFRleHQn KSB7DQogICAgICAgIGlmICgkRGF0ZW4uUFNPYmplY3QuUHJvcGVydGllc1ska10gLWFuZCAoJERh dGVuLiRrIC1pcyBbc3RyaW5nXSkpIHsNCiAgICAgICAgICAgICREYXRlbi4kayA9IENvbnZlcnRU by1TYWZlUmljaEh0bWwgJERhdGVuLiRrDQogICAgICAgIH0NCiAgICB9DQogICAgaWYgKCREYXRl bi5QU09iamVjdC5Qcm9wZXJ0aWVzWydlbWFpbFZvcmxhZ2VuJ10gLWFuZCAkbnVsbCAtbmUgJERh dGVuLmVtYWlsVm9ybGFnZW4pIHsNCiAgICAgICAgZm9yZWFjaCAoJHAgaW4gJERhdGVuLmVtYWls Vm9ybGFnZW4uUFNPYmplY3QuUHJvcGVydGllcykgew0KICAgICAgICAgICAgJHYgPSAkcC5WYWx1 ZQ0KICAgICAgICAgICAgaWYgKCRudWxsIC1uZSAkdiAtYW5kICR2LlBTT2JqZWN0LlByb3BlcnRp ZXNbJ3RleHQnXSAtYW5kICgkdi50ZXh0IC1pcyBbc3RyaW5nXSkpIHsNCiAgICAgICAgICAgICAg ICAkdi50ZXh0ID0gQ29udmVydFRvLVNhZmVSaWNoSHRtbCAkdi50ZXh0DQogICAgICAgICAgICB9 DQogICAgICAgIH0NCiAgICB9DQogICAgaWYgKCREYXRlbi5QU09iamVjdC5Qcm9wZXJ0aWVzWydz b25kZXJ0ZXJtaW5lJ10gLWFuZCAkbnVsbCAtbmUgJERhdGVuLnNvbmRlcnRlcm1pbmUpIHsNCiAg ICAgICAgZm9yZWFjaCAoJGUgaW4gQCgkRGF0ZW4uc29uZGVydGVybWluZSkpIHsNCiAgICAgICAg ICAgIGlmICgkbnVsbCAtbmUgJGUgLWFuZCAkZS5QU09iamVjdC5Qcm9wZXJ0aWVzWyd0ZXh0J10g LWFuZCAoJGUudGV4dCAtaXMgW3N0cmluZ10pKSB7DQogICAgICAgICAgICAgICAgJGUudGV4dCA9 IENvbnZlcnRUby1TYWZlUmljaEh0bWwgJGUudGV4dA0KICAgICAgICAgICAgfQ0KICAgICAgICB9 DQogICAgfQ0KfQ0KDQojIFBTLTUuMS1BcnJheS1XcmFwcGVyLUJ1ZzogQ29udmVydFRvLUpzb24g c2VyaWFsaXNpZXJ0IGJlaSBiZXN0aW1tdGVuDQojIFBTQ3VzdG9tT2JqZWN0LS9bb2JqZWN0W11d LUtvbWJpbmF0aW9uZW4gZWluIEFycmF5IGFscw0KIyB7ICJ2YWx1ZSI6IFsuLi5dLCAiQ291bnQi OiBOIH0gc3RhdHQgYWxzIGVjaHRlcyBKU09OLUFycmF5LiBGb2xnZSBiZWltDQojIG5hZWNoc3Rl biBSZWFkOiBDb252ZXJ0RnJvbS1Kc29uIGxpZWZlcnQgZWluIFdyYXBwZXItT2JqZWt0LCBmb3Jl YWNoDQojIGl0ZXJpZXJ0IG51ciAxeCwgdW5kIG53S2VubnVuZy1NYXRjaGVzIChTdXBlclVzZXIs IEZhY2hhdWZzaWNodCkgbGF1ZmVuDQojIGxlZXIgLT4gRWludHJhZWdlIHdpcmtlbiB3aWUgZ2Vs b2VzY2h0LCBVc2VyIHdlcmRlbiBrZWluZSBSZWNodGUgenVnZW9yZG5ldC4NCiMNCiMgQ29udmVy dFRvLUpzb25TYWZlIGtvbnZlcnRpZXJ0IGRhcyBPYmpla3Qgdm9yIGRlciBTZXJpYWxpc2llcnVu ZyBpbg0KIyBlaW5lIHJlaW5lIEhhc2h0YWJsZS0vQXJyYXktL1ByaW1pdGl2ZS1TdHJ1a3R1ci4g RGFtaXQgdmVyc2Nod2luZGVuDQojIFBTQ3VzdG9tT2JqZWN0LVdyYXBwZXIgZ3J1bmRzYWV0emxp Y2gsIHVuZCB2b3JoYW5kZW5lIHsgdmFsdWUsIENvdW50IH0tDQojIFdyYXBwZXIgd2VyZGVuIGJl aSBkaWVzZXIgR2VsZWdlbmhlaXQgYXVjaCBnbGVpY2ggZW50cGFja3QuIEhlaWx0DQojIGV4aXN0 aWVyZW5kZSBrYXB1dHRlIERhdGVpZW4gYmVpbSBuYWVjaHN0ZW4gV3JpdGUtWnlrbHVzLg0KZnVu Y3Rpb24gVGVzdC1Jc1dyYXBwZXJPYmplY3QoJG8pIHsNCiAgICBpZiAoJG51bGwgLWVxICRvKSB7 IHJldHVybiAkZmFsc2UgfQ0KICAgIGlmICgtbm90ICgkbyAtaXMgW1BTQ3VzdG9tT2JqZWN0XSkp IHsgcmV0dXJuICRmYWxzZSB9DQogICAgJG5hbWVzID0gQCgkby5QU09iamVjdC5Qcm9wZXJ0aWVz IHwgRm9yRWFjaC1PYmplY3QgeyAkXy5OYW1lIH0pDQogICAgaWYgKCRuYW1lcy5Db3VudCAtbmUg MikgeyByZXR1cm4gJGZhbHNlIH0NCiAgICBpZiAoLW5vdCAoKCRuYW1lcyAtY29udGFpbnMgJ3Zh bHVlJykgLWFuZCAoJG5hbWVzIC1jb250YWlucyAnQ291bnQnKSkpIHsgcmV0dXJuICRmYWxzZSB9 DQogICAgcmV0dXJuICgkby52YWx1ZSAtaXMgW1N5c3RlbS5Db2xsZWN0aW9ucy5JTGlzdF0gLWFu ZCAtbm90ICgkby52YWx1ZSAtaXMgW3N0cmluZ10pKQ0KfQ0KDQpmdW5jdGlvbiBDb252ZXJ0VG8t SnNvblNhZmUoJG9iaikgew0KICAgIGlmICgkbnVsbCAtZXEgJG9iaikgeyByZXR1cm4gJG51bGwg fQ0KICAgIGlmICgkb2JqIC1pcyBbc3RyaW5nXSkgeyByZXR1cm4gJG9iaiB9DQogICAgaWYgKCRv YmogLWlzIFtib29sXSAtb3IgJG9iaiAtaXMgW2ludF0gLW9yICRvYmogLWlzIFtsb25nXSAtb3Ig JG9iaiAtaXMgW2RvdWJsZV0gLW9yICRvYmogLWlzIFtkZWNpbWFsXSkgeyByZXR1cm4gJG9iaiB9 DQogICAgaWYgKCRvYmouR2V0VHlwZSgpLklzVmFsdWVUeXBlKSB7IHJldHVybiAkb2JqIH0NCiAg ICBpZiAoJG9iaiAtaXMgW1N5c3RlbS5Db2xsZWN0aW9ucy5JRGljdGlvbmFyeV0pIHsNCiAgICAg ICAgJGggPSBbb3JkZXJlZF1Ae30NCiAgICAgICAgZm9yZWFjaCAoJGsgaW4gJG9iai5LZXlzKSB7 ICRoW1tzdHJpbmddJGtdID0gQ29udmVydFRvLUpzb25TYWZlICRvYmpbJGtdIH0NCiAgICAgICAg cmV0dXJuICRoDQogICAgfQ0KICAgIGlmICgkb2JqIC1pcyBbU3lzdGVtLkNvbGxlY3Rpb25zLklM aXN0XSkgew0KICAgICAgICAjIFdyYXBwZXIgc2l0enQgSU0gQXJyYXk6IFt7dmFsdWU6Wy4uLl0s IENvdW50Ok59XSAtPiBlcnNldHplIGRpZQ0KICAgICAgICAjIGFldXNzZXJlIExpc3RlIGR1cmNo IGRhcyBpbm5lcmUgdmFsdWUtQXJyYXkuDQogICAgICAgIGlmICgkb2JqLkNvdW50IC1lcSAxIC1h bmQgKFRlc3QtSXNXcmFwcGVyT2JqZWN0ICRvYmpbMF0pKSB7DQogICAgICAgICAgICAkaW5uZXIg PSAkb2JqWzBdLnZhbHVlDQogICAgICAgICAgICAkb3V0ID0gTmV3LU9iamVjdCBTeXN0ZW0uQ29s bGVjdGlvbnMuQXJyYXlMaXN0DQogICAgICAgICAgICBmb3JlYWNoICgkaXQgaW4gJGlubmVyKSB7 IFt2b2lkXSRvdXQuQWRkKChDb252ZXJ0VG8tSnNvblNhZmUgJGl0KSkgfQ0KICAgICAgICAgICAg cmV0dXJuICwoW29iamVjdFtdXSRvdXQuVG9BcnJheSgpKQ0KICAgICAgICB9DQogICAgICAgICRv dXQgPSBOZXctT2JqZWN0IFN5c3RlbS5Db2xsZWN0aW9ucy5BcnJheUxpc3QNCiAgICAgICAgZm9y ZWFjaCAoJGl0IGluICRvYmopIHsgW3ZvaWRdJG91dC5BZGQoKENvbnZlcnRUby1Kc29uU2FmZSAk aXQpKSB9DQogICAgICAgIHJldHVybiAsKFtvYmplY3RbXV0kb3V0LlRvQXJyYXkoKSkNCiAgICB9 DQogICAgaWYgKCRvYmogLWlzIFtQU0N1c3RvbU9iamVjdF0pIHsNCiAgICAgICAgJGggPSBbb3Jk ZXJlZF1Ae30NCiAgICAgICAgZm9yZWFjaCAoJHAgaW4gJG9iai5QU09iamVjdC5Qcm9wZXJ0aWVz KSB7ICRoWyRwLk5hbWVdID0gQ29udmVydFRvLUpzb25TYWZlICRwLlZhbHVlIH0NCiAgICAgICAg cmV0dXJuICRoDQogICAgfQ0KICAgIHJldHVybiAkb2JqDQp9DQoNCiMgUmVhZC1zZWl0aWdlIFdy YXBwZXItSGVpbHVuZzogZmFsbHMgZWluZSB2b3JoYW5kZW5lIERhdGVpIGJlcmVpdHMgZGVuDQoj IHt2YWx1ZSxDb3VudH0tRGVmZWt0IGhhdCwgZW50cGFja2VuIHdpciBiZWltIEVpbmxlc2VuLCBk YW1pdCBkZXIgcmVzdGxpY2hlDQojIENvZGUgKGZvcmVhY2ggdWViZXIgYWRtaW4uc3VwZXJVc2Vy IGV0Yy4pIHdpZWRlciBzYXViZXIgaXRlcmllcnQuDQpmdW5jdGlvbiBSZXBhaXItSnNvbldyYXBw ZXIoJG9iaikgew0KICAgIGlmICgkbnVsbCAtZXEgJG9iaikgeyByZXR1cm4gJG51bGwgfQ0KICAg IGlmICgkb2JqIC1pcyBbc3RyaW5nXSAtb3IgJG9iaiAtaXMgW2Jvb2xdKSB7IHJldHVybiAkb2Jq IH0NCiAgICBpZiAoJG9iai5HZXRUeXBlKCkuSXNWYWx1ZVR5cGUpIHsgcmV0dXJuICRvYmogfQ0K ICAgIGlmICgkb2JqIC1pcyBbU3lzdGVtLkNvbGxlY3Rpb25zLklMaXN0XSAtYW5kIC1ub3QgKCRv YmogLWlzIFtzdHJpbmddKSkgew0KICAgICAgICBpZiAoJG9iai5Db3VudCAtZXEgMSAtYW5kIChU ZXN0LUlzV3JhcHBlck9iamVjdCAkb2JqWzBdKSkgew0KICAgICAgICAgICAgJGlubmVyID0gJG9i alswXS52YWx1ZQ0KICAgICAgICAgICAgJG91dCA9IE5ldy1PYmplY3QgU3lzdGVtLkNvbGxlY3Rp b25zLkFycmF5TGlzdA0KICAgICAgICAgICAgZm9yZWFjaCAoJGl0IGluICRpbm5lcikgeyBbdm9p ZF0kb3V0LkFkZCgoUmVwYWlyLUpzb25XcmFwcGVyICRpdCkpIH0NCiAgICAgICAgICAgIHJldHVy biAsKFtvYmplY3RbXV0kb3V0LlRvQXJyYXkoKSkNCiAgICAgICAgfQ0KICAgICAgICAkb3V0ID0g TmV3LU9iamVjdCBTeXN0ZW0uQ29sbGVjdGlvbnMuQXJyYXlMaXN0DQogICAgICAgIGZvcmVhY2gg KCRpdCBpbiAkb2JqKSB7IFt2b2lkXSRvdXQuQWRkKChSZXBhaXItSnNvbldyYXBwZXIgJGl0KSkg fQ0KICAgICAgICByZXR1cm4gLChbb2JqZWN0W11dJG91dC5Ub0FycmF5KCkpDQogICAgfQ0KICAg IGlmICgkb2JqIC1pcyBbUFNDdXN0b21PYmplY3RdKSB7DQogICAgICAgIGZvcmVhY2ggKCRwIGlu IEAoJG9iai5QU09iamVjdC5Qcm9wZXJ0aWVzKSkgew0KICAgICAgICAgICAgJG9iai4kKCRwLk5h bWUpID0gUmVwYWlyLUpzb25XcmFwcGVyICRwLlZhbHVlDQogICAgICAgIH0NCiAgICAgICAgcmV0 dXJuICRvYmoNCiAgICB9DQogICAgcmV0dXJuICRvYmoNCn0NCg0KZnVuY3Rpb24gUmVhZC1Kc29u T2JqZWN0KCRGaWxlTmFtZSkgew0KICAgICMgSlNPTi1DYWNoZS1IaXQ/IFBydWVmZW4gdWViZXIg ZGllc2VsYmUgTXRpbWUsIGRpZSBkZXIgVGV4dC1DYWNoZSBmdWVocnQuDQogICAgIyBEYXMgc3Bh cnQgcHJvIEhpdCBlaW4gQ29udmVydEZyb20tSnNvbiAoMjAwIEtCIC0+IH4xNTAgbXMgYXVmIFBT IDUuMSkuDQogICAgaWYgKCRzY3JpcHQ6SnNvbkNhY2hlLkNvbnRhaW5zS2V5KCRGaWxlTmFtZSkp IHsNCiAgICAgICAgJGpjZSA9ICRzY3JpcHQ6SnNvbkNhY2hlWyRGaWxlTmFtZV0NCiAgICAgICAg dHJ5IHsNCiAgICAgICAgICAgICRwID0gSm9pbi1QYXRoICREYXRhRGlyICRGaWxlTmFtZQ0KICAg ICAgICAgICAgaWYgKFRlc3QtUGF0aCAtTGl0ZXJhbFBhdGggJHApIHsNCiAgICAgICAgICAgICAg ICAkbXQgPSAoR2V0LUl0ZW0gLUxpdGVyYWxQYXRoICRwKS5MYXN0V3JpdGVUaW1lVXRjLlRpY2tz DQogICAgICAgICAgICAgICAgaWYgKCRtdCAtZXEgJGpjZS5NdGltZVRpY2tzKSB7DQogICAgICAg ICAgICAgICAgICAgIHJldHVybiAkamNlLk9iag0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAg ICAgIH0NCiAgICAgICAgfSBjYXRjaCB7fQ0KICAgICAgICAkc2NyaXB0Okpzb25DYWNoZS5SZW1v dmUoJEZpbGVOYW1lKSB8IE91dC1OdWxsDQogICAgfQ0KICAgICR0eHQgPSBSZWFkLVRleHRGaWxl ICRGaWxlTmFtZQ0KICAgIGlmICgkbnVsbCAtZXEgJHR4dCAtb3IgW3N0cmluZ106OklzTnVsbE9y V2hpdGVTcGFjZSgkdHh0KSkgeyByZXR1cm4gJG51bGwgfQ0KICAgIHRyeSB7DQogICAgICAgICRv YmogPSBSZXBhaXItSnNvbldyYXBwZXIgKCR0eHQgfCBDb252ZXJ0RnJvbS1Kc29uKQ0KICAgICAg ICAjIENhY2hlIG51ciBmdWVyIGRpZSBncm9zc2VuIEpTT05zIChhZG1pbi5qc29uLCBwbGFudW5n Lmpzb24sIGxvZ2J1Y2guanNvbikuDQogICAgICAgIGlmICgkRmlsZU5hbWUgLWVxICdhZG1pbi5q c29uJyAtb3IgJEZpbGVOYW1lIC1lcSAncGxhbnVuZy5qc29uJyAtb3IgJEZpbGVOYW1lIC1lcSAn bG9nYnVjaC5qc29uJykgew0KICAgICAgICAgICAgdHJ5IHsNCiAgICAgICAgICAgICAgICAkcCA9 IEpvaW4tUGF0aCAkRGF0YURpciAkRmlsZU5hbWUNCiAgICAgICAgICAgICAgICBpZiAoVGVzdC1Q YXRoIC1MaXRlcmFsUGF0aCAkcCkgew0KICAgICAgICAgICAgICAgICAgICAkbXQgPSAoR2V0LUl0 ZW0gLUxpdGVyYWxQYXRoICRwKS5MYXN0V3JpdGVUaW1lVXRjLlRpY2tzDQogICAgICAgICAgICAg ICAgICAgICRzY3JpcHQ6SnNvbkNhY2hlWyRGaWxlTmFtZV0gPSBAeyBPYmogPSAkb2JqOyBNdGlt ZVRpY2tzID0gJG10IH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9IGNhdGNoIHt9 DQogICAgICAgIH0NCiAgICAgICAgcmV0dXJuICRvYmoNCiAgICB9IGNhdGNoIHsNCiAgICAgICAg TG9nLUFwaSAoJ1BBUlNFIHswfSBGRUhMRVI6IHsxfScgLWYgJEZpbGVOYW1lLCAkXy5FeGNlcHRp b24uTWVzc2FnZSkNCiAgICAgICAgcmV0dXJuICRudWxsDQogICAgfQ0KfQ0KDQpmdW5jdGlvbiBX cml0ZS1Kc29uT2JqZWN0KCRGaWxlTmFtZSwgJE9iaikgew0KICAgICRzYWZlID0gQ29udmVydFRv LUpzb25TYWZlICRPYmoNCiAgICAkanNvbiA9ICRzYWZlIHwgQ29udmVydFRvLUpzb24gLURlcHRo IDMwDQogICAgJGVyZyA9IFdyaXRlLVRleHRGaWxlICRGaWxlTmFtZSAkanNvbg0KICAgICMgV29j aGVucGxhbi1TbmFwc2hvdCAoc3RhdGlzY2hlIE9mZmxpbmUtRGF0ZWkpIGF1dG9tYXRpc2NoIG5h Y2h6aWVoZW4sDQogICAgIyBzb2JhbGQgUGxhbnVuZ3MtIG9kZXIgQWRtaW4tRGF0ZW4gZ2VzY2hy aWViZW4gd3VyZGVuLiBXaXJmdCBGZWhsZXIgd2VnDQogICAgIyBkYW1pdCBlaW4ga2FwdXR0ZXMg VGVtcGxhdGUgZGVuIGVpZ2VudGxpY2hlbiBXcml0ZSBuaWNodCBibG9ja2llcnQuDQogICAgaWYg KCRlcmcgLWFuZCAoJEZpbGVOYW1lIC1lcSAncGxhbnVuZy5qc29uJyAtb3IgJEZpbGVOYW1lIC1l cSAnYWRtaW4uanNvbicpKSB7DQogICAgICAgIHRyeSB7IEdlbmVyYXRlLVdvY2hlbnBsYW5TbmFw c2hvdCB9IGNhdGNoIHsNCiAgICAgICAgICAgIExvZy1BcGkgKCdTTkFQU0hPVCAoaG9vaykgRkVI TEVSOiB7MH0nIC1mICRfLkV4Y2VwdGlvbi5NZXNzYWdlKQ0KICAgICAgICB9DQogICAgfQ0KICAg IHJldHVybiAkZXJnDQp9DQoNCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBXb2NoZW5wbGFuLU9m ZmxpbmUtU25hcHNob3QNCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBFcnpldWd0IGVpbmUgc3Rh dGlzY2hlICJWSTMvV29jaGVucGxhbi5odG1sIiBtaXQgZWluZ2ViZXR0ZXRlbiBQbGFudW5ncy0N CiMgRGF0ZW4uIERhdGVpIGxhZXVmdCBrb21wbGV0dCBvaG5lIFNlcnZlciAoRG9wcGVsa2xpY2sg cmVpY2h0KTogaW5saW5lIENTUw0KIyB1bmQgaW5saW5lIEpTLCBrZWluIEZldGNoLCBrZWluZSBl eHRlcm5lbiBBc3NldHMuIFdpcmQgbmFjaCBqZWRlbSBTY2hyZWliZW4NCiMgYXVmIHBsYW51bmcu anNvbiBvZGVyIGFkbWluLmpzb24gYXV0b21hdGlzY2ggcmVnZW5lcmllcnQgKHNpZWhlIEhvb2sg aW4NCiMgV3JpdGUtSnNvbk9iamVjdCkgdW5kIGVpbm1hbCBiZWltIFNlcnZlci1TdGFydC4NCmZ1 bmN0aW9uIEdlbmVyYXRlLVdvY2hlbnBsYW5TbmFwc2hvdCB7DQogICAgdHJ5IHsNCiAgICAgICAg IyBUZW1wbGF0ZS1TdWNoZTogZXJzdCBpbSAkUm9vdCAobG9rYWxlciBBc3NldC1DYWNoZSksIGRh bm4gaW0NCiAgICAgICAgIyBBc3NldEZhbGxiYWNrIChTaGFyZSkuIERhbWl0IGZ1bmt0aW9uaWVy dCBkZXIgU25hcHNob3QgYXVjaCwgd2Vubg0KICAgICAgICAjIGRlciBMYXVuY2hlciBkYXMgVGVt cGxhdGUgbm9jaCBuaWNodCBpbiBkZW4gQ2FjaGUga29waWVydCBoYXQNCiAgICAgICAgIyAoei5C LiB3ZWlsIGVpbmUgYWVsdGVyZSBkZ2wuYmF0IGltIEVpbnNhdHogd2FyLCBvZGVyIGJlaSBtYW51 ZWxsZXINCiAgICAgICAgIyBTZXJ2ZXItU3RhcnQtVmFyaWFudGUgb2huZSByb2JvY29weS1Wb3Js YXVmKS4NCiAgICAgICAgJHRwbFBhdGggPSBKb2luLVBhdGggJFJvb3QgJ1dvY2hlbnBsYW4udGVt cGxhdGUuaHRtbCcNCiAgICAgICAgaWYgKC1ub3QgKFRlc3QtUGF0aCAtTGl0ZXJhbFBhdGggJHRw bFBhdGgpKSB7DQogICAgICAgICAgICBpZiAoJHNjcmlwdDpBc3NldEZhbGxiYWNrKSB7DQogICAg ICAgICAgICAgICAgJHRwbEZhbGxiYWNrID0gSm9pbi1QYXRoICRzY3JpcHQ6QXNzZXRGYWxsYmFj ayAnV29jaGVucGxhbi50ZW1wbGF0ZS5odG1sJw0KICAgICAgICAgICAgICAgIGlmIChUZXN0LVBh dGggLUxpdGVyYWxQYXRoICR0cGxGYWxsYmFjaykgew0KICAgICAgICAgICAgICAgICAgICAkdHBs UGF0aCA9ICR0cGxGYWxsYmFjaw0KICAgICAgICAgICAgICAgICAgICBMb2ctQXBpICgnU05BUFNI T1Q6IFRlbXBsYXRlIGF1cyBBc3NldEZhbGxiYWNrICh7MH0pJyAtZiAkdHBsRmFsbGJhY2spDQog ICAgICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAgICAgTG9nLUFwaSAnU05B UFNIT1Q6IFRlbXBsYXRlIFdvY2hlbnBsYW4udGVtcGxhdGUuaHRtbCBmZWhsdCAod2VkZXIgJFJv b3Qgbm9jaCBBc3NldEZhbGxiYWNrKScNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRmYWxz ZQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAg ICAgTG9nLUFwaSAnU05BUFNIT1Q6IFRlbXBsYXRlIFdvY2hlbnBsYW4udGVtcGxhdGUuaHRtbCBm ZWhsdCAoa2VpbiBBc3NldEZhbGxiYWNrIGdlc2V0enQpJw0KICAgICAgICAgICAgICAgIHJldHVy biAkZmFsc2UNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgICAkdHBsQnl0ZXMgPSBb U3lzdGVtLklPLkZpbGVdOjpSZWFkQWxsQnl0ZXMoJHRwbFBhdGgpDQogICAgICAgICR0cGwgPSBb U3lzdGVtLlRleHQuRW5jb2RpbmddOjpVVEY4LkdldFN0cmluZygkdHBsQnl0ZXMpDQoNCiAgICAg ICAgJGFkbWluID0gUmVhZC1Kc29uT2JqZWN0ICdhZG1pbi5qc29uJw0KICAgICAgICAkcGxhbnVu ZyA9IFJlYWQtSnNvbk9iamVjdCAncGxhbnVuZy5qc29uJw0KDQogICAgICAgICMgU2NobGFua2Vy IERhdGVuLUJsb2NrOiBudXIgd2FzIGRlciBXb2NoZW5wbGFuLVJlbmRlcmVyIGJyYXVjaHQuDQog ICAgICAgICRkYXRlbiA9IFtvcmRlcmVkXUB7DQogICAgICAgICAgICBqYWhyICAgICAgICAgICA9 IGlmICgkYWRtaW4gLWFuZCAkYWRtaW4uUFNPYmplY3QuUHJvcGVydGllc1snamFociddKSB7ICRh ZG1pbi5qYWhyIH0gZWxzZSB7IChHZXQtRGF0ZSkuWWVhciB9DQogICAgICAgICAgICBmZWllcnRh Z2UgICAgICA9IGlmICgkYWRtaW4gLWFuZCAkYWRtaW4uUFNPYmplY3QuUHJvcGVydGllc1snZmVp ZXJ0YWdlJ10pICAgICAgeyAkYWRtaW4uZmVpZXJ0YWdlIH0gICAgICBlbHNlIHsgQCgpIH0NCiAg ICAgICAgICAgIGZlcmllbiAgICAgICAgID0gaWYgKCRhZG1pbiAtYW5kICRhZG1pbi5QU09iamVj dC5Qcm9wZXJ0aWVzWydmZXJpZW4nXSkgICAgICAgICB7ICRhZG1pbi5mZXJpZW4gfSAgICAgICAg IGVsc2UgeyBAKCkgfQ0KICAgICAgICAgICAgc29uZGVydGVybWluZSAgPSBpZiAoJGFkbWluIC1h bmQgJGFkbWluLlBTT2JqZWN0LlByb3BlcnRpZXNbJ3NvbmRlcnRlcm1pbmUnXSkgIHsgJGFkbWlu LnNvbmRlcnRlcm1pbmUgfSAgZWxzZSB7IEAoKSB9DQogICAgICAgICAgICBmdW5rdGlvbmVuICAg ICA9IGlmICgkYWRtaW4gLWFuZCAkYWRtaW4uUFNPYmplY3QuUHJvcGVydGllc1snZnVua3Rpb25l biddKSAgICAgeyAkYWRtaW4uZnVua3Rpb25lbiB9ICAgICBlbHNlIHsgQCgpIH0NCiAgICAgICAg ICAgIGdydXBwZW4gICAgICAgID0gaWYgKCRhZG1pbiAtYW5kICRhZG1pbi5QU09iamVjdC5Qcm9w ZXJ0aWVzWydncnVwcGVuJ10pICAgICAgICB7ICRhZG1pbi5ncnVwcGVuIH0gICAgICAgIGVsc2Ug eyBAKCkgfQ0KICAgICAgICAgICAgcGVyc29uZW4gICAgICAgPSBpZiAoJHBsYW51bmcgLWFuZCAk cGxhbnVuZy5QU09iamVjdC5Qcm9wZXJ0aWVzWydwZXJzb25lbiddKSAgIHsgJHBsYW51bmcucGVy c29uZW4gfSAgICAgZWxzZSB7IEAoKSB9DQogICAgICAgICAgICBlaW50cmFlZ2UgICAgICA9IGlm ICgkcGxhbnVuZyAtYW5kICRwbGFudW5nLlBTT2JqZWN0LlByb3BlcnRpZXNbJ2VpbnRyYWVnZSdd KSAgeyAkcGxhbnVuZy5laW50cmFlZ2UgfSAgICBlbHNlIHsgQHt9IH0NCiAgICAgICAgfQ0KDQog ICAgICAgICRzYWZlID0gQ29udmVydFRvLUpzb25TYWZlICRkYXRlbg0KICAgICAgICAkanNvbiA9 ICRzYWZlIHwgQ29udmVydFRvLUpzb24gLURlcHRoIDMwIC1Db21wcmVzcw0KDQogICAgICAgICMg U2NodXR6IHZvciAnPC9zY3JpcHQ+Jy1BdXNicnVjaCBhdXMgZGVtIGlubGluZSA8c2NyaXB0Pi1C bG9jazogd2Vubg0KICAgICAgICAjIGVpbiBQZXJzb25lbi1OYW1lIG9kZXIgU29uZGVydGVybWlu LUhUTUwgPC8gZW50aGFlbHQsIG11c3MgZGFyYXVzDQogICAgICAgICMgPFwvIHdlcmRlbiwgc29u c3Qgd3VlcmRlIGRlciBCcm93c2VyIGFuIGRpZXNlciBTdGVsbGUgZGFzIFNjcmlwdC0NCiAgICAg ICAgIyBUYWcgc2NobGllc3Nlbi4gSlNPTi1QYXJzZXIgYWt6ZXB0aWVydCBkaWUgQmFja3NsYXNo LUVzY2FwZXMuDQogICAgICAgICRqc29uID0gJGpzb24uUmVwbGFjZSgnPC8nLCAnPFwvJykNCg0K ICAgICAgICAkemVpdCA9IChHZXQtRGF0ZSAtRm9ybWF0ICdkZC5NTS55eXl5IEhIOm1tJykNCiAg ICAgICAgJGh0bWwgPSAkdHBsLlJlcGxhY2UoJ19fREFURU5fSlNPTl9fJywgJGpzb24pLlJlcGxh Y2UoJ19fU05BUFNIT1RfWkVJVF9fJywgJHplaXQpDQoNCiAgICAgICAgJHppZWwgPSBKb2luLVBh dGggJFJvb3QgJ1dvY2hlbnBsYW4uaHRtbCcNCiAgICAgICAgW1N5c3RlbS5JTy5GaWxlXTo6V3Jp dGVBbGxCeXRlcygkemllbCwgW1N5c3RlbS5UZXh0LkVuY29kaW5nXTo6VVRGOC5HZXRCeXRlcygk aHRtbCkpDQogICAgICAgIExvZy1BcGkgKCdTTkFQU0hPVCBXb2NoZW5wbGFuLmh0bWw6IHswfSBC eXRlcyBnZXNjaHJpZWJlbiAoU3RhbmQgezF9KScgLWYgJGh0bWwuTGVuZ3RoLCAkemVpdCkNCiAg ICAgICAgcmV0dXJuICR0cnVlDQogICAgfSBjYXRjaCB7DQogICAgICAgIExvZy1BcGkgKCdTTkFQ U0hPVCBGRUhMRVI6IHswfScgLWYgJF8uRXhjZXB0aW9uLk1lc3NhZ2UpDQogICAgICAgIHJldHVy biAkZmFsc2UNCiAgICB9DQp9DQoNCiMgQXV0by1CYWNrdXAgdm9yIGVpbmVtIEFkbWluLVdyaXRl LiBLb3N0ZXQgcXVhc2kgbmljaHRzIHVuZCBoYXQgc2Nob24NCiMgZWlubWFsIGRhcyBSZXBvIGdl cmV0dGV0IChBdWRpdC1VbmZhbGwgRi0wMDApLiBSb3RpZXJ0OiBtYXggMjAgS29waWVuLg0KZnVu Y3Rpb24gQmFja3VwLUFkbWluSnNvbihbc3RyaW5nXSRIaW53ZWlzID0gJ3ByZXNhdmUnKSB7DQog ICAgJHNyYyA9IEpvaW4tUGF0aCAkRGF0YURpciAnYWRtaW4uanNvbicNCiAgICBpZiAoLW5vdCAo VGVzdC1QYXRoIC1MaXRlcmFsUGF0aCAkc3JjKSkgeyByZXR1cm4gJG51bGwgfQ0KICAgIHRyeSB7 DQogICAgICAgICR0cyA9IChHZXQtRGF0ZSAtRm9ybWF0ICd5eXl5TU1kZF9ISG1tc3MnKQ0KICAg ICAgICAkbmFtZSA9ICgnYWRtaW5fYmFja3VwX3swfV97MX0uanNvbicgLWYgJHRzLCAkSGlud2Vp cykNCiAgICAgICAgJHppZWwgPSBKb2luLVBhdGggJERhdGFEaXIgJG5hbWUNCiAgICAgICAgJGts YXJ0ZXh0ID0gUmVhZC1UZXh0RmlsZSAnYWRtaW4uanNvbicNCiAgICAgICAgaWYgKCRudWxsIC1l cSAka2xhcnRleHQpIHsgcmV0dXJuICRudWxsIH0NCiAgICAgICAgV3JpdGUtQmFja3VwQnl0ZXMg JHppZWwgJGtsYXJ0ZXh0DQogICAgICAgICRhbGxlID0gQChHZXQtQ2hpbGRJdGVtIC1MaXRlcmFs UGF0aCAkRGF0YURpciAtRmlsdGVyICdhZG1pbl9iYWNrdXBfKi5qc29uJyAtRXJyb3JBY3Rpb24g U2lsZW50bHlDb250aW51ZSB8DQogICAgICAgICAgICAgICAgICBTb3J0LU9iamVjdCBMYXN0V3Jp dGVUaW1lIC1EZXNjZW5kaW5nKQ0KICAgICAgICBpZiAoJGFsbGUuQ291bnQgLWd0IDIwKSB7DQog ICAgICAgICAgICBmb3IgKCRpID0gMjA7ICRpIC1sdCAkYWxsZS5Db3VudDsgJGkrKykgew0KICAg ICAgICAgICAgICAgIHRyeSB7IFJlbW92ZS1JdGVtIC1MaXRlcmFsUGF0aCAkYWxsZVskaV0uRnVs bE5hbWUgLUZvcmNlIC1FcnJvckFjdGlvbiBTaWxlbnRseUNvbnRpbnVlIH0gY2F0Y2gge30NCiAg ICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgICByZXR1cm4gJG5hbWUNCiAgICB9IGNhdGNo IHsNCiAgICAgICAgTG9nLUFwaSAoIkJBQ0tVUCBhZG1pbi5qc29uIEZFSExFUjogezB9IiAtZiAk Xy5FeGNlcHRpb24uTWVzc2FnZSkNCiAgICAgICAgcmV0dXJuICRudWxsDQogICAgfQ0KfQ0KDQoj IFdpcGUtU2NodXR6OiB2ZXJoaW5kZXJ0LCBkYXNzIGVpbmUgYmVmdWVsbHRlIExpc3RlIGR1cmNo IGVpbiBsZWVyZXMNCiMgQXJyYXkgYXVzIFZlcnNlaGVuIGF1ZiAwIGdlc2V0enQgd2lyZC4gQXVz bG9lc2VyIHdhciBkZXIgQXVkaXQtVW5mYWxsDQojIHZvbSAyMDI2LTA0LTI0LiBVbWdlaHVuZyBl eHBsaXppdCB2aWEgP2NvbmZpcm1SZXNldD10cnVlIG9kZXIgQm9keS5jb25maXJtUmVzZXQuDQoj IEdpYnQgJG51bGwgenVydWVjayB3ZW5uIE9LLCBzb25zdCBlaW5lbiBGZWhsZXItU3RyaW5nIGZ1 ZXIgNDA5Lg0KZnVuY3Rpb24gVGVzdC1XaXBlU2NodXR6KFtzdHJpbmddJEZlbGQsICROZXVEYXRl biwgJEFkbWluLCAkUmVxdWVzdCwgJEJvZHlKc29uKSB7DQogICAgaWYgKCRudWxsIC1lcSAkQWRt aW4gLW9yIC1ub3QgJEFkbWluLlBTT2JqZWN0LlByb3BlcnRpZXNbJEZlbGRdKSB7IHJldHVybiAk bnVsbCB9DQogICAgJGFsdCA9ICRBZG1pbi4kRmVsZA0KICAgIGlmICgkbnVsbCAtZXEgJGFsdCAt b3IgLW5vdCAoJGFsdCAtaXMgW1N5c3RlbS5Db2xsZWN0aW9ucy5JTGlzdF0pKSB7IHJldHVybiAk bnVsbCB9DQogICAgJGFsdENvdW50ID0gQCgkYWx0KS5Db3VudA0KICAgIGlmICgkYWx0Q291bnQg LWVxIDApIHsgcmV0dXJuICRudWxsIH0NCiAgICAkbmV1Q291bnQgPSAwDQogICAgaWYgKCRudWxs IC1uZSAkTmV1RGF0ZW4pIHsNCiAgICAgICAgaWYgKCROZXVEYXRlbiAtaXMgW1N5c3RlbS5Db2xs ZWN0aW9ucy5JTGlzdF0pIHsgJG5ldUNvdW50ID0gQCgkTmV1RGF0ZW4pLkNvdW50IH0NCiAgICAg ICAgZWxzZSB7ICRuZXVDb3VudCA9IDEgfQ0KICAgIH0NCiAgICBpZiAoJG5ldUNvdW50IC1ndCAw KSB7IHJldHVybiAkbnVsbCB9DQogICAgIyBBdXNuYWhtZTogZXhwbGl6aXQgYmVzdGFldGlndGVy IFJlc2V0IChRdWVyeS1QYXJhbSBPREVSIEJvZHktRmxhZykNCiAgICB0cnkgew0KICAgICAgICBp ZiAoJFJlcXVlc3QgLWFuZCAkUmVxdWVzdC5VcmwgLWFuZCAkUmVxdWVzdC5VcmwuUXVlcnkgLW1h dGNoICdjb25maXJtUmVzZXQ9KHRydWV8MSknKSB7IHJldHVybiAkbnVsbCB9DQogICAgfSBjYXRj aCB7fQ0KICAgIGlmICgkQm9keUpzb24gLWFuZCAkQm9keUpzb24uUFNPYmplY3QuUHJvcGVydGll c1snY29uZmlybVJlc2V0J10gLWFuZCBbYm9vbF0kQm9keUpzb24uY29uZmlybVJlc2V0KSB7IHJl dHVybiAkbnVsbCB9DQogICAgcmV0dXJuICgiTGlzdGUgJ3swfScgd3VlcmRlIHZvbiB7MX0gRWlu dHJhZWdlbiBhdWYgMCBnZXNldHp0LiBBYnNpY2h0bGljaD8gUmVxdWVzdCBtaXQgP2NvbmZpcm1S ZXNldD10cnVlIHdpZWRlcmhvbGVuLiIgLWYgJEZlbGQsICRhbHRDb3VudCkNCn0NCg0KIyBDcm9z cy1wcm9jZXNzIExvY2sgcGVyIExvY2stRmlsZS4gVmVyaGluZGVydCwgZGFzcyB6d2VpIHBhcmFs bGVsZQ0KIyBTZXJ2ZXItSW5zdGFuemVuICh6LkIuIHp3ZWkgVXNlciBhdWYgZGVtc2VsYmVuIE5l dHpsYXVmd2Vyaywgb2RlciBlaW4NCiMgTGF1bmNoZXItUmFjZSB3YWVocmVuZCBkZXMgU2VydmVy d2VjaHNlbHMpIGdsZWljaHplaXRpZyBkaWVzZWxiZSBEYXRlaQ0KIyByZWFkLW1vZGlmeS13cml0 ZW4gdW5kIHNpY2ggZGFiZWkgemVyc2NoaWVzc2VuLiBJbm5lcmhhbGIgRUlORVMgU2VydmVyLQ0K IyBQcm96ZXNzZXMgaXN0IEh0dHBMaXN0ZW5lciB6d2FyIHNlcmllbGwsIGFiZXIgZGVyIExvY2sg c2NodWV0enQgenVzYWV0emxpY2gNCiMgZ2VnZW4gcGFyYWxsZWxlIFNlcnZlci1TdGFydHMuDQoj IFBTLTUuMS1VbndyYXAtU2NodXR6IGZ1ZXIgYWRtaW4uanNvbi1MaXN0ZW5mZWxkZXI6IExpc3Rl biBtaXQgbnVyIGVpbmVtDQojIEVsZW1lbnQgd2VyZGVuIHZvbSBKU09OLVJvdW5kdHJpcCAoQ29u dmVydEZyb20tSnNvbiArIHNwYWV0ZXJlcyBDb252ZXJ0VG8tSnNvbikNCiMgcmVnZWxtYWVzc2ln IHp1IEVpbnplbC1PYmpla3RlbiBlbnRwYWNrdCwgd2FzIGltIENsaWVudCB6dSAieC5mb3JFYWNo IGlzIG5vdA0KIyBhIGZ1bmN0aW9uIiB1bmQgaW4gYWRtaW4uanNvbiB6dSBkZWdlbmVyaWVydGVy IFN0cnVrdHVyIGZ1ZWhydC4gRGllIExpc3RlDQojIHNwaWVnZWx0IEFETUlOX0xJU1RfRkVMREVS IGluIGpzL2NvcmVfZGF0ZW5MYWRlbi5qcyDigJQgd2VubiBkZXIgQ2xpZW50IGVpbmVuDQojIHdl aXRlcmVuIExpc3Rlbi1GZWxkIGRhenUgbmltbXQsIGhpZXIgbWl0IGF1Zm5laG1lbi4NCiRzY3Jp cHQ6QWRtaW5MaXN0RmVsZGVyID0gQCgNCiAgICAnZmVpZXJ0YWdlJywnZmVyaWVuJywnc29uZGVy dGVybWluZScsJ3NjaGljaHRjb2RlcycsJ2dydXBwZW4nLCdzdGFuZG9ydGUnLA0KICAgICdmdW5r dGlvbmVuJywnZGllbnN0Z3JhZGUnLCdzdXBlclVzZXInLCdmYWNoYXVmc2ljaHQnLCdkaXJla3Rp b25zbGVpdHVuZycsJ2Z1ZWhydW5nc3N0ZWxsZScsJ3NjaGljaHRmb2xnZW4nLCdyb2xsZW4nLCdt aWtyb3RlYW1zJywNCiAgICAnc3RhdGlzdGlrS2FjaGVsbicsJ3N0YXRpc3Rpa0xheW91dCcNCikN Cg0KZnVuY3Rpb24gTm9ybWFsaXNpZXJlLUFkbWluTGlzdGVuKCREYXRlbikgew0KICAgIGlmICgt bm90ICREYXRlbikgeyByZXR1cm4gfQ0KICAgIGZvcmVhY2ggKCRmZWxkIGluICRzY3JpcHQ6QWRt aW5MaXN0RmVsZGVyKSB7DQogICAgICAgIGlmICgtbm90ICREYXRlbi5QU09iamVjdC5Qcm9wZXJ0 aWVzWyRmZWxkXSkgeyBjb250aW51ZSB9DQogICAgICAgICR3ZXJ0ID0gJERhdGVuLiRmZWxkDQog ICAgICAgIGlmICgkbnVsbCAtZXEgJHdlcnQpIHsNCiAgICAgICAgICAgICREYXRlbi4kZmVsZCA9 IEAoKQ0KICAgICAgICB9IGVsc2VpZiAoJHdlcnQgLWlzIFtTeXN0ZW0uQXJyYXldKSB7DQogICAg ICAgICAgICAjIFNjaG9uIEFycmF5IOKAlCB0cm90emRlbSBhbHMgW29iamVjdFtdXSB6d2luZ2Vu LCBkYW1pdA0KICAgICAgICAgICAgIyBTaW5nbGUtRWxlbWVudC1BcnJheXMgbmFjaCBkZW0gbmFl Y2hzdGVuIENvbnZlcnRUby1Kc29uIG5pY2h0DQogICAgICAgICAgICAjIGVybmV1dCBlbnRwYWNr dCB3ZXJkZW4uDQogICAgICAgICAgICAkRGF0ZW4uJGZlbGQgPSBbb2JqZWN0W11dQCgkd2VydCkN CiAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICMgRWluemVsLU9iamVrdCBvZGVyIFNjYWxh ciAtPiBpbiBlaW5lbGVtZW50aWdlcyBBcnJheSBwYWNrZW4NCiAgICAgICAgICAgICREYXRlbi4k ZmVsZCA9IFtvYmplY3RbXV1AKCR3ZXJ0KQ0KICAgICAgICB9DQogICAgfQ0KfQ0KDQpmdW5jdGlv biBJbnZva2UtV2l0aEZpbGVMb2NrKCROYW1lLCAkQWN0aW9uLCAkTWF4V2FpdE1zID0gMjAwMCwg JFN0YWxlQWZ0ZXJTZWMgPSAxMCkgew0KICAgICRMb2NrUGF0aCA9IEpvaW4tUGF0aCAkRGF0YURp ciAoJE5hbWUgKyAnLmxvY2snKQ0KICAgICRTdGFydCA9IEdldC1EYXRlDQogICAgd2hpbGUgKCR0 cnVlKSB7DQogICAgICAgIHRyeSB7DQogICAgICAgICAgICAkU3RyZWFtID0gW1N5c3RlbS5JTy5G aWxlXTo6T3BlbigkTG9ja1BhdGgsIFtTeXN0ZW0uSU8uRmlsZU1vZGVdOjpDcmVhdGVOZXcsIFtT eXN0ZW0uSU8uRmlsZUFjY2Vzc106OldyaXRlLCBbU3lzdGVtLklPLkZpbGVTaGFyZV06Ok5vbmUp DQogICAgICAgICAgICB0cnkgew0KICAgICAgICAgICAgICAgIHJldHVybiAmICRBY3Rpb24NCiAg ICAgICAgICAgIH0gZmluYWxseSB7DQogICAgICAgICAgICAgICAgJFN0cmVhbS5DbG9zZSgpDQog ICAgICAgICAgICAgICAgdHJ5IHsgUmVtb3ZlLUl0ZW0gJExvY2tQYXRoIC1Gb3JjZSAtRXJyb3JB Y3Rpb24gU2lsZW50bHlDb250aW51ZSB9IGNhdGNoIHt9DQogICAgICAgICAgICB9DQogICAgICAg IH0gY2F0Y2ggW1N5c3RlbS5JTy5JT0V4Y2VwdGlvbl0gew0KICAgICAgICAgICAgaWYgKCgoR2V0 LURhdGUpIC0gJFN0YXJ0KS5Ub3RhbE1pbGxpc2Vjb25kcyAtZ3QgJE1heFdhaXRNcykgew0KICAg ICAgICAgICAgICAgIHRocm93ICJTcGVycmUgYXVmICROYW1lIGtvbm50ZSBuaWNodCBlcmxhbmd0 IHdlcmRlbiINCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgICMgU3RhbGUtTG9jay1Fcmtlbm51 bmc6IExvY2tmaWxlIGFlbHRlciBhbHMgTiBTZWt1bmRlbiAtPiBlbnRmZXJuZW4NCiAgICAgICAg ICAgIGlmIChUZXN0LVBhdGggJExvY2tQYXRoKSB7DQogICAgICAgICAgICAgICAgJEFnZSA9ICgo R2V0LURhdGUpIC0gKEdldC1JdGVtICRMb2NrUGF0aCkuTGFzdFdyaXRlVGltZSkuVG90YWxTZWNv bmRzDQogICAgICAgICAgICAgICAgaWYgKCRBZ2UgLWd0ICRTdGFsZUFmdGVyU2VjKSB7DQogICAg ICAgICAgICAgICAgICAgIHRyeSB7IFJlbW92ZS1JdGVtICRMb2NrUGF0aCAtRm9yY2UgLUVycm9y QWN0aW9uIFNpbGVudGx5Q29udGludWUgfSBjYXRjaCB7fQ0KICAgICAgICAgICAgICAgICAgICBj b250aW51ZQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIFN0 YXJ0LVNsZWVwIC1NaWxsaXNlY29uZHMgNTANCiAgICAgICAgfQ0KICAgIH0NCn0NCg0KZnVuY3Rp b24gUmVzb2x2ZS1TYWZlUGF0aCgkUmVsUGF0aCkgew0KICAgIHRyeSB7DQogICAgICAgICRGdWxs ID0gW1N5c3RlbS5JTy5QYXRoXTo6R2V0RnVsbFBhdGgoKEpvaW4tUGF0aCAkUm9vdCAkUmVsUGF0 aCkpDQogICAgfSBjYXRjaCB7IHJldHVybiAkbnVsbCB9DQogICAgIyBQcmVmaXgtQ2hlY2sgaXN0 IG51ciBzaWNoZXIsIHdlbm4gJFJvb3QgbWl0IERpcmVjdG9yeS1TZXBhcmF0b3IgZW5kZXQg4oCU DQogICAgIyBzb25zdCBwYXNzaWVydCAiQzpcVkkzX2V2aWwiIGRpZSBQcnVlZnVuZyBiZWkgJFJv b3Q9IkM6XFZJMyIuDQogICAgJHNlcCA9IFtTeXN0ZW0uSU8uUGF0aF06OkRpcmVjdG9yeVNlcGFy YXRvckNoYXINCiAgICAkcm9vdFdpdGhTZXAgPSBpZiAoJFJvb3QuRW5kc1dpdGgoJHNlcCkpIHsg JFJvb3QgfSBlbHNlIHsgJFJvb3QgKyAkc2VwIH0NCiAgICBpZiAoJEZ1bGwgLW5lICRSb290IC1h bmQgLW5vdCAkRnVsbC5TdGFydHNXaXRoKCRyb290V2l0aFNlcCwgW1N0cmluZ0NvbXBhcmlzb25d OjpPcmRpbmFsSWdub3JlQ2FzZSkpIHsNCiAgICAgICAgcmV0dXJuICRudWxsDQogICAgfQ0KICAg IHJldHVybiAkRnVsbA0KfQ0KDQojIC0tLSBIVFRQLUhlbGZlciAtLS0NCmZ1bmN0aW9uIEFkZC1T ZWN1cml0eUhlYWRlcnMoJFJlc3BvbnNlKSB7DQogICAgIyBXaXJkIGZ1ZXIgYWxsZSBBbnR3b3J0 ZW4gZ2VzZXR6dCDigJQgc3BpZWdlbHQgc2VydmVyLnB5LVZlcmhhbHRlbi4NCiAgICAkUmVzcG9u c2UuSGVhZGVycy5BZGQoJ0FjY2Vzcy1Db250cm9sLUFsbG93LU9yaWdpbicsICRzY3JpcHQ6Q29y c09yaWdpbikNCiAgICAkUmVzcG9uc2UuSGVhZGVycy5BZGQoJ0FjY2Vzcy1Db250cm9sLUFsbG93 LU1ldGhvZHMnLCAnR0VULCBQT1NULCBQVVQsIERFTEVURSwgT1BUSU9OUycpDQogICAgJFJlc3Bv bnNlLkhlYWRlcnMuQWRkKCdBY2Nlc3MtQ29udHJvbC1BbGxvdy1IZWFkZXJzJywgJ0NvbnRlbnQt VHlwZScpDQogICAgJFJlc3BvbnNlLkhlYWRlcnMuQWRkKCdDYWNoZS1Db250cm9sJywgJ25vLXN0 b3JlJykNCiAgICAkUmVzcG9uc2UuSGVhZGVycy5BZGQoJ1gtQ29udGVudC1UeXBlLU9wdGlvbnMn LCAnbm9zbmlmZicpDQogICAgJFJlc3BvbnNlLkhlYWRlcnMuQWRkKCdYLUZyYW1lLU9wdGlvbnMn LCAnREVOWScpDQogICAgJFJlc3BvbnNlLkhlYWRlcnMuQWRkKCdSZWZlcnJlci1Qb2xpY3knLCAn bm8tcmVmZXJyZXInKQ0KICAgICMgQ1NQIChTcHJpbnQgMSDigJQgU2ljaGVyaGVpdHMtTm90YnJl bXNlIDIwMjYtMDUtMjgpOg0KICAgICMgVmFuaWxsYS1KUy1BcHAgb2huZSBleHRlcm5lIENETnMs IGFsbGVzIG11c3Mgdm9uICdzZWxmJyBrb21tZW4uIElubGluZS0NCiAgICAjIFN0eWxlcyBzaW5k IHRvbGVyaWVydCAoU2NoaWNodGNvZGUtRmFyYmVuLCBBdmF0YXItU3R5bGUtQXR0cmlidXRlIHdl cmRlbg0KICAgICMgZHluYW1pc2NoIHZpYSBzdHlsZT0iLi4uIiBnZXNldHp0KS4gSW5saW5lLVNj cmlwdHMgTklDSFQgZXJsYXVidCDigJQgd2lyDQogICAgIyBudXR6ZW4gYXVzc2NobGllc3NsaWNo IDxzY3JpcHQgdHlwZT0ibW9kdWxlIiBzcmM9Ii4uLiI+LiBkYXRhOi1CaWxkZXINCiAgICAjIHNp bmQgZXJsYXVidCAoQXZhdGFyZSBrb2VubmVuIGJhc2U2NCBzZWluKS4gd29ya2VyLXNyYyBkZWNr dCBzeW5jLSB1bmQNCiAgICAjIGhlYXJ0YmVhdC1Xb3JrZXIgYWIuDQogICAgJFJlc3BvbnNlLkhl YWRlcnMuQWRkKCdDb250ZW50LVNlY3VyaXR5LVBvbGljeScsDQogICAgICAgICJkZWZhdWx0LXNy YyAnc2VsZic7ICIgKw0KICAgICAgICAic2NyaXB0LXNyYyAnc2VsZic7ICIgKw0KICAgICAgICAi c3R5bGUtc3JjICdzZWxmJyAndW5zYWZlLWlubGluZSc7ICIgKw0KICAgICAgICAiaW1nLXNyYyAn c2VsZicgZGF0YTo7ICIgKw0KICAgICAgICAiY29ubmVjdC1zcmMgJ3NlbGYnOyAiICsNCiAgICAg ICAgIndvcmtlci1zcmMgJ3NlbGYnOyAiICsNCiAgICAgICAgImZyYW1lLWFuY2VzdG9ycyAnbm9u ZSc7ICIgKw0KICAgICAgICAiYmFzZS11cmkgJ3NlbGYnOyAiICsNCiAgICAgICAgImZvcm0tYWN0 aW9uICdzZWxmJyIpDQp9DQoNCmZ1bmN0aW9uIFNlbmQtSnNvblRleHQoJFJlc3BvbnNlLCAkSnNv blRleHQsICRTdGF0dXNDb2RlID0gMjAwKSB7DQogICAgaWYgKCRudWxsIC1lcSAkSnNvblRleHQp IHsgJEpzb25UZXh0ID0gJ251bGwnIH0NCiAgICBpZiAoJEpzb25UZXh0Lkxlbmd0aCAtZ3QgMCAt YW5kIFtpbnRdKCRKc29uVGV4dFswXSkgLWVxIDB4RkVGRikgeyAkSnNvblRleHQgPSAkSnNvblRl eHQuU3Vic3RyaW5nKDEpIH0NCiAgICAkYnl0ZXMgPSBbU3lzdGVtLlRleHQuRW5jb2RpbmddOjpV VEY4LkdldEJ5dGVzKCRKc29uVGV4dCkNCiAgICB0cnkgew0KICAgICAgICAkUmVzcG9uc2UuU3Rh dHVzQ29kZSA9ICRTdGF0dXNDb2RlDQogICAgICAgICRSZXNwb25zZS5Db250ZW50VHlwZSA9ICdh cHBsaWNhdGlvbi9qc29uOyBjaGFyc2V0PXV0Zi04Jw0KICAgICAgICBBZGQtU2VjdXJpdHlIZWFk ZXJzICRSZXNwb25zZQ0KICAgICAgICAkUmVzcG9uc2UuQ29udGVudExlbmd0aDY0ID0gJGJ5dGVz Lkxlbmd0aA0KICAgICAgICAkUmVzcG9uc2UuT3V0cHV0U3RyZWFtLldyaXRlKCRieXRlcywgMCwg JGJ5dGVzLkxlbmd0aCkNCiAgICB9IGNhdGNoIHsNCiAgICAgICAgTG9nLUFwaSAoJ1NFTkQgRkVI TEVSOiB7MH0nIC1mICRfLkV4Y2VwdGlvbi5NZXNzYWdlKQ0KICAgIH0gZmluYWxseSB7DQogICAg ICAgIHRyeSB7ICRSZXNwb25zZS5PdXRwdXRTdHJlYW0uQ2xvc2UoKSB9IGNhdGNoIHt9DQogICAg fQ0KfQ0KDQpmdW5jdGlvbiBTZW5kLUpzb25PYmplY3QoJFJlc3BvbnNlLCAkRGF0YSwgJFN0YXR1 c0NvZGUgPSAyMDApIHsNCiAgICBpZiAoJG51bGwgLWVxICREYXRhKSB7ICR0ZXh0ID0gJ251bGwn IH0NCiAgICBlbHNlaWYgKCREYXRhIC1pcyBbc3RyaW5nXSkgeyAkdGV4dCA9ICREYXRhIH0NCiAg ICBlbHNlIHsNCiAgICAgICAgdHJ5IHsgJHRleHQgPSAoQ29udmVydFRvLUpzb25TYWZlICREYXRh KSB8IENvbnZlcnRUby1Kc29uIC1EZXB0aCAzMCAtQ29tcHJlc3MgfQ0KICAgICAgICBjYXRjaCB7 ICR0ZXh0ID0gJ3siZmVobGVyIjoiSlNPTi1Lb252ZXJ0aWVydW5nIGZlaGxnZXNjaGxhZ2VuIn0n IH0NCiAgICB9DQogICAgU2VuZC1Kc29uVGV4dCAkUmVzcG9uc2UgJHRleHQgJFN0YXR1c0NvZGUN Cn0NCg0KZnVuY3Rpb24gU2VuZC1FcnJvcigkUmVzcG9uc2UsICRNZXNzYWdlLCAkU3RhdHVzQ29k ZSA9IDUwMCkgew0KICAgIFNlbmQtSnNvbk9iamVjdCAkUmVzcG9uc2UgQHsgZmVobGVyID0gJE1l c3NhZ2UgfSAkU3RhdHVzQ29kZQ0KfQ0KDQpmdW5jdGlvbiBSZWFkLUJvZHkoJFJlcXVlc3QsICRN YXhTaXplID0gMTBNQikgew0KICAgICRsZW5ndGggPSBbaW50XSRSZXF1ZXN0LkNvbnRlbnRMZW5n dGg2NA0KICAgIGlmICgkbGVuZ3RoIC1sZSAwIC1vciAkbGVuZ3RoIC1ndCAkTWF4U2l6ZSkgeyBy ZXR1cm4gJG51bGwgfQ0KICAgICRidWZmZXIgPSBOZXctT2JqZWN0IGJ5dGVbXSAkbGVuZ3RoDQog ICAgJG9mZnNldCA9IDANCiAgICB3aGlsZSAoJG9mZnNldCAtbHQgJGxlbmd0aCkgew0KICAgICAg ICAkcmVhZCA9ICRSZXF1ZXN0LklucHV0U3RyZWFtLlJlYWQoJGJ1ZmZlciwgJG9mZnNldCwgJGxl bmd0aCAtICRvZmZzZXQpDQogICAgICAgIGlmICgkcmVhZCAtZXEgMCkgeyBicmVhayB9DQogICAg ICAgICRvZmZzZXQgKz0gJHJlYWQNCiAgICB9DQogICAgcmV0dXJuIFtTeXN0ZW0uVGV4dC5FbmNv ZGluZ106OlVURjguR2V0U3RyaW5nKCRidWZmZXIsIDAsICRvZmZzZXQpDQp9DQoNCiMgRS1NYWls LVZlcnNhbmQ6IGF1c3NjaGxpZXNzbGljaCBGcm9udGVuZC1zZWl0aWcgdmlhIG1haWx0bzotUG9w dXAgKE91dGxvb2sNCiMgb2VmZm5ldCBzaWNoIG1pdCB2b3JhdXNnZWZ1ZWxsdGVuIEZlbGRlcm4p LiBLZWluIFNNVFAsIGtlaW4gU2NoZWR1bGVyLg0KIyBEZXIgU2VydmVyIHBlcnNpc3RpZXJ0IG51 ciBWb3JsYWdlbiArIFRyaWdnZXItS29uZmlnIGluIGFkbWluLmpzb24gdW50ZXINCiMgZW1haWxW b3JsYWdlbiAvIGVtYWlsVHJpZ2dlci4NCiMgLS0tIExvZ2J1Y2ggLS0tDQpmdW5jdGlvbiBXcml0 ZS1Mb2dFaW50cmFnKCRBa3Rpb24sICREZXRhaWxzKSB7DQogICAgJGxvZ2J1Y2ggPSBSZWFkLUpz b25PYmplY3QgJ2xvZ2J1Y2guanNvbicNCiAgICBpZiAoJG51bGwgLWVxICRsb2didWNoKSB7ICRs b2didWNoID0gQCgpIH0NCiAgICAjIERldGFpbC1GZWxkZXIgd2VyZGVuIEZMQUNIIGluIGRlbiBF aW50cmFnIHVlYmVybm9tbWVuIChrb25zaXN0ZW50IG1pdA0KICAgICMgUHl0aG9uLURldi1TZXJ2 ZXIpLiBGcnVlaGVyIGFscyAkZWludHJhZy5kZXRhaWxzID0gJERldGFpbHMgZ2VuZXN0ZWQsDQog ICAgIyBhYmVyIGRlciBDbGllbnQgZ3JlaWZ0IGRpcmVrdCBhdWYgZS5hbHRlcldlcnQgLyBlLnBl cnNvbklkIHp1Lg0KICAgICRlaW50cmFnID0gW29yZGVyZWRdQHsNCiAgICAgICAgemVpdHN0ZW1w ZWwgPSAoR2V0LURhdGUgLUZvcm1hdCAneXl5eS1NTS1kZCBISDptbTpzcycpDQogICAgICAgIGJl bnV0emVyICAgID0gIiREb21haW5cJFVzZXJuYW1lIg0KICAgICAgICBha3Rpb24gICAgICA9ICRB a3Rpb24NCiAgICB9DQogICAgaWYgKCREZXRhaWxzKSB7DQogICAgICAgIGlmICgkRGV0YWlscyAt aXMgW1N5c3RlbS5Db2xsZWN0aW9ucy5JRGljdGlvbmFyeV0pIHsNCiAgICAgICAgICAgIGZvcmVh Y2ggKCRrIGluICREZXRhaWxzLktleXMpIHsgJGVpbnRyYWdbW3N0cmluZ10ka10gPSAkRGV0YWls c1ska10gfQ0KICAgICAgICB9IGVsc2VpZiAoJERldGFpbHMuUFNPYmplY3QpIHsNCiAgICAgICAg ICAgIGZvcmVhY2ggKCRwIGluICREZXRhaWxzLlBTT2JqZWN0LlByb3BlcnRpZXMpIHsgJGVpbnRy YWdbJHAuTmFtZV0gPSAkcC5WYWx1ZSB9DQogICAgICAgIH0NCiAgICB9DQogICAgJG5ldSA9IEAo JGVpbnRyYWcpICsgQCgkbG9nYnVjaCkNCiAgICBpZiAoJG5ldS5Db3VudCAtZ3QgMTAwMCkgeyAk bmV1ID0gJG5ldVswLi45OTldIH0NCiAgICBXcml0ZS1Kc29uT2JqZWN0ICdsb2didWNoLmpzb24n ICRuZXUgfCBPdXQtTnVsbA0KfQ0KDQpmdW5jdGlvbiBHZXQtQWt0dWVsbGVyQmVudXR6ZXIgeyBy ZXR1cm4gIiREb21haW5cJFVzZXJuYW1lIiB9DQoNCmZ1bmN0aW9uIFRlc3QtTWF0Y2hLZW5udW5n KCRFaW50cmFnKSB7DQogICAgaWYgKFtzdHJpbmddOjpJc051bGxPckVtcHR5KCRFaW50cmFnKSkg eyByZXR1cm4gJGZhbHNlIH0NCiAgICAkayA9ICRFaW50cmFnLlRvTG93ZXIoKQ0KICAgIHJldHVy biAoJGsgLWVxICRVc2VybmFtZS5Ub0xvd2VyKCkpIC1vciAoJGsgLWVxIChHZXQtQWt0dWVsbGVy QmVudXR6ZXIpLlRvTG93ZXIoKSkNCn0NCg0KIyBOb3RmYWxsLVN1cGVyVXNlcjogZGllc2UgS2Vu bnVuZ2VuIHNpbmQgSU1NRVIgU3VwZXJVc2VyLCBlZ2FsIHdhcyBpbg0KIyBhZG1pbi5qc29uIHN0 ZWh0LiBTY2h1ZXR6dCBkYXZvciwgc2ljaCBzZWxic3QgdmVyc2VoZW50bGljaCBhdXMgZGVyDQoj IFN1cGVyVXNlci1MaXN0ZSByYXVzenVuZWhtZW4gKG9kZXIgZHVyY2gga2FwdXR0ZSBhZG1pbi5q c29uIGF1c3p1c3BlcnJlbikuDQokc2NyaXB0Ok5vdGZhbGxTdXBlclVzZXIgPSBAKCdOVzA1MzYw OScsICdyaGlubycpDQoNCmZ1bmN0aW9uIFRlc3QtSXN0U3VwZXJVc2VyIHsNCiAgICAjIE5vdGZh bGwtQ2hlY2sgenVlcnN0OiBoYXJ0dmVyZHJhaHRldGUgS2VubnVuZ2VuIHNpbmQgaW1tZXIgU3Vw ZXJVc2VyDQogICAgJHVzZXJMb3dlciA9ICRVc2VybmFtZS5Ub0xvd2VyKCkNCiAgICBmb3JlYWNo ICgkayBpbiAkc2NyaXB0Ok5vdGZhbGxTdXBlclVzZXIpIHsNCiAgICAgICAgaWYgKCRrLlRvTG93 ZXIoKSAtZXEgJHVzZXJMb3dlcikgeyByZXR1cm4gJHRydWUgfQ0KICAgIH0NCiAgICAjIFJlZ3Vs YWVyZSBQcnVlZnVuZyB2aWEgYWRtaW4uanNvbg0KICAgICRhZG1pbiA9IFJlYWQtSnNvbk9iamVj dCAnYWRtaW4uanNvbicNCiAgICBpZiAoJG51bGwgLWVxICRhZG1pbiAtb3IgJG51bGwgLWVxICRh ZG1pbi5zdXBlclVzZXIpIHsgcmV0dXJuICRmYWxzZSB9DQogICAgZm9yZWFjaCAoJHN1IGluIEAo JGFkbWluLnN1cGVyVXNlcikpIHsNCiAgICAgICAgaWYgKFRlc3QtTWF0Y2hLZW5udW5nIChbc3Ry aW5nXSRzdS5ud0tlbm51bmcpKSB7IHJldHVybiAkdHJ1ZSB9DQogICAgfQ0KICAgIHJldHVybiAk ZmFsc2UNCn0NCg0KZnVuY3Rpb24gR2V0LUZhY2hhdWZzaWNodEVpbnRyYWcgew0KICAgICRhZG1p biA9IFJlYWQtSnNvbk9iamVjdCAnYWRtaW4uanNvbicNCiAgICBpZiAoJG51bGwgLWVxICRhZG1p biAtb3IgJG51bGwgLWVxICRhZG1pbi5mYWNoYXVmc2ljaHQpIHsgcmV0dXJuICRudWxsIH0NCiAg ICBmb3JlYWNoICgkZmEgaW4gQCgkYWRtaW4uZmFjaGF1ZnNpY2h0KSkgew0KICAgICAgICBpZiAo VGVzdC1NYXRjaEtlbm51bmcgKFtzdHJpbmddJGZhLm53S2VubnVuZykpIHsgcmV0dXJuICRmYSB9 DQogICAgfQ0KICAgIHJldHVybiAkbnVsbA0KfQ0KDQojIERpcmVrdGlvbnNsZWl0dW5nICsgRnVl aHJ1bmdzc3RlbGxlIChzZWl0IDIwMjYtMDUtMjMpIOKAlCBnbGVpY2hlcyBTY2hlbWENCiMgd2ll IEZhY2hhdWZzaWNodC4gR2VuZXJpc2NoZXIgSGVscGVyLCB3ZWlsIGRhcyBMb29rdXAtTXVzdGVy IGlkZW50aXNjaA0KIyBpc3QgdW5kIG51ciBkZXIgTGlzdGVuLU5hbWUgd2VjaHNlbHQuDQpmdW5j dGlvbiBHZXQtUm9sbGVuRWludHJhZyhbc3RyaW5nXSRMaXN0ZW5OYW1lKSB7DQogICAgJGFkbWlu ID0gUmVhZC1Kc29uT2JqZWN0ICdhZG1pbi5qc29uJw0KICAgIGlmICgkbnVsbCAtZXEgJGFkbWlu IC1vciAtbm90ICRhZG1pbi5QU09iamVjdC5Qcm9wZXJ0aWVzWyRMaXN0ZW5OYW1lXSkgeyByZXR1 cm4gJG51bGwgfQ0KICAgICRsaXN0ZSA9ICRhZG1pbi4kTGlzdGVuTmFtZQ0KICAgIGlmICgkbnVs bCAtZXEgJGxpc3RlKSB7IHJldHVybiAkbnVsbCB9DQogICAgZm9yZWFjaCAoJGUgaW4gQCgkbGlz dGUpKSB7DQogICAgICAgIGlmIChUZXN0LU1hdGNoS2VubnVuZyAoW3N0cmluZ10kZS5ud0tlbm51 bmcpKSB7IHJldHVybiAkZSB9DQogICAgfQ0KICAgIHJldHVybiAkbnVsbA0KfQ0KDQpmdW5jdGlv biBHZXQtTWVpbmVQZXJzb24gew0KICAgICRwbGFudW5nID0gUmVhZC1Kc29uT2JqZWN0ICdwbGFu dW5nLmpzb24nDQogICAgaWYgKCRudWxsIC1lcSAkcGxhbnVuZyAtb3IgJG51bGwgLWVxICRwbGFu dW5nLnBlcnNvbmVuKSB7IHJldHVybiAkbnVsbCB9DQogICAgZm9yZWFjaCAoJHAgaW4gQCgkcGxh bnVuZy5wZXJzb25lbikpIHsNCiAgICAgICAgaWYgKFRlc3QtTWF0Y2hLZW5udW5nIChbc3RyaW5n XSRwLm53S2VubnVuZykpIHsgcmV0dXJuICRwIH0NCiAgICB9DQogICAgcmV0dXJuICRudWxsDQp9 DQoNCiMgTXRpbWUtYmFzaWVydGVyIENhY2hlIGZ1ZXIgR2V0LVJlY2h0ZS4gRGVyIHplbnRyYWxl IFJlY2h0ZS1SZXNvbHZlciB3aXJkDQojIHBybyAvYXBpL2luZm8tUmVxdWVzdCBtZWhyZmFjaCBh dWZnZXJ1ZmVuIHVuZCBsaWVzdCBkYWJlaSBhZG1pbi5qc29uICsNCiMgcGxhbnVuZy5qc29uLiBT b2xhbmdlIGJlaWRlIERhdGVpZW4gbmljaHQgYWVuZGVydGVuLCBrb21tdCBkYXMgZ2xlaWNoZQ0K IyBFcmdlYm5pcyB6dXJ1ZWNrIOKAlCBkZXIgQ2FjaGUgaW52YWxpZGllcnQgYXV0b21hdGlzY2gg dWViZXIgTGFzdFdyaXRlVGltZVV0Yy4NCiRzY3JpcHQ6UmVjaHRlQ2FjaGUgPSBAeyBXZXJ0ID0g JG51bGw7IEFkbWluTXQgPSAwOyBQbGFudW5nTXQgPSAwIH0NCg0KZnVuY3Rpb24gR2V0LVJlY2h0 ZSB7DQogICAgIyBaZW50cmFsZXIgUm9sbGVuLSB1bmQgUmVjaHRlLVJlc29sdmVyIChQZW5kYW50 IHp1IHNlcnZlci5weSBiZXJlY2huZV9yZWNodGUoKSkuDQogICAgIyBMaWVmZXJ0IEhhc2h0YWJs ZSBtaXQgcm9sbGUsIGlzdFN1cGVyVXNlciwgaXN0RmFjaGF1ZnNpY2h0LCBzZWhlbnsuLi59LA0K ICAgICMgZWRpdGllcmVuey4uLn0gKG51bGwgPSB3aWxkY2FyZCBmdWVyIFN1cGVyVXNlciksIG1l aW5lUGVyc29uSWQuDQoNCiAgICAjIENhY2hlLVZhbGlkaWVydW5nIHVlYmVyIG10aW1lIGRlciBi ZWlkZW4gUXVlbGwtRGF0ZWllbi4NCiAgICAkYU10ID0gMDsgJHBNdCA9IDANCiAgICB0cnkgew0K ICAgICAgICAkYUZpbGUgPSBKb2luLVBhdGggJERhdGFEaXIgJ2FkbWluLmpzb24nDQogICAgICAg IGlmIChUZXN0LVBhdGggLUxpdGVyYWxQYXRoICRhRmlsZSkgeyAkYU10ID0gKEdldC1JdGVtIC1M aXRlcmFsUGF0aCAkYUZpbGUpLkxhc3RXcml0ZVRpbWVVdGMuVGlja3MgfQ0KICAgICAgICAkcEZp bGUgPSBKb2luLVBhdGggJERhdGFEaXIgJ3BsYW51bmcuanNvbicNCiAgICAgICAgaWYgKFRlc3Qt UGF0aCAtTGl0ZXJhbFBhdGggJHBGaWxlKSB7ICRwTXQgPSAoR2V0LUl0ZW0gLUxpdGVyYWxQYXRo ICRwRmlsZSkuTGFzdFdyaXRlVGltZVV0Yy5UaWNrcyB9DQogICAgfSBjYXRjaCB7fQ0KICAgIGlm ICgkc2NyaXB0OlJlY2h0ZUNhY2hlLldlcnQgLW5lICRudWxsIC1hbmQNCiAgICAgICAgJHNjcmlw dDpSZWNodGVDYWNoZS5BZG1pbk10IC1lcSAkYU10IC1hbmQNCiAgICAgICAgJHNjcmlwdDpSZWNo dGVDYWNoZS5QbGFudW5nTXQgLWVxICRwTXQpIHsNCiAgICAgICAgcmV0dXJuICRzY3JpcHQ6UmVj aHRlQ2FjaGUuV2VydA0KICAgIH0NCg0KICAgICRpc3RTVSA9IFRlc3QtSXN0U3VwZXJVc2VyDQog ICAgIyBSb2xsZW4tTG9va3VwOiBSZWloZW5mb2xnZSBiZXN0aW1tdCBWb3JyYW5nIGJlaSBLb25m bGlrdGVuLiBmYWNoYXVmc2ljaHQNCiAgICAjIHp1ZXJzdCAod2FyIGhpc3RvcmlzY2ggZXJzdGUg Um9sbGUpLCBkYW5uIGRpZSBuZXVlbiAiRGlyZWt0aW9uc2xlaXR1bmciDQogICAgIyB1bmQgIkZ1 ZWhydW5nc3N0ZWxsZSIgKDIwMjYtMDUtMjMpLiBEZXIgImlzdEZBIi1QZmFkIHdpcmQgZnVlciBh bGxlIGRyZWkNCiAgICAjIHdlaXRlcnZlcndlbmRldCDigJQgUm9sbGUgaW4gZGVyIEFQSSBpc3Qg dW50ZXJzY2hpZWRsaWNoLCBMb2dpayBpbiBkZXINCiAgICAjIFNpY2h0YmFya2VpdHMtL0VkaXQt QXVzd2VydHVuZyBpc3QgaWRlbnRpc2NoLg0KICAgICRmYSA9ICRudWxsDQogICAgJHJvbGxlUXVl bGxlID0gJG51bGwNCiAgICBpZiAoLW5vdCAkaXN0U1UpIHsNCiAgICAgICAgJGZhID0gR2V0LUZh Y2hhdWZzaWNodEVpbnRyYWcNCiAgICAgICAgaWYgKCRudWxsIC1uZSAkZmEpIHsgJHJvbGxlUXVl bGxlID0gJ2ZhY2hhdWZzaWNodCcgfQ0KICAgICAgICBlbHNlIHsNCiAgICAgICAgICAgICRmYSA9 IEdldC1Sb2xsZW5FaW50cmFnICdkaXJla3Rpb25zbGVpdHVuZycNCiAgICAgICAgICAgIGlmICgk bnVsbCAtbmUgJGZhKSB7ICRyb2xsZVF1ZWxsZSA9ICdkaXJla3Rpb25zbGVpdHVuZycgfQ0KICAg ICAgICAgICAgZWxzZSB7DQogICAgICAgICAgICAgICAgJGZhID0gR2V0LVJvbGxlbkVpbnRyYWcg J2Z1ZWhydW5nc3N0ZWxsZScNCiAgICAgICAgICAgICAgICBpZiAoJG51bGwgLW5lICRmYSkgeyAk cm9sbGVRdWVsbGUgPSAnZnVlaHJ1bmdzc3RlbGxlJyB9DQogICAgICAgICAgICB9DQogICAgICAg IH0NCiAgICB9DQogICAgJGlzdEZBID0gJG51bGwgLW5lICRmYQ0KDQogICAgJHNlaGVuID0gQHsg YWRtaW5pc3RyYXRpb24gPSAkZmFsc2U7IHN0YXRpc3RpayA9ICRmYWxzZTsgbG9nYnVjaCA9ICRm YWxzZTsgYmFja3VwcyA9ICRmYWxzZSB9DQogICAgaWYgKCRpc3RTVSkgew0KICAgICAgICBmb3Jl YWNoICgkayBpbiBAKCRzZWhlbi5LZXlzKSkgeyAkc2VoZW5bJGtdID0gJHRydWUgfQ0KICAgIH0g ZWxzZWlmICgkaXN0RkEgLWFuZCAkZmEuUFNPYmplY3QuUHJvcGVydGllc1snc2VoZW4nXSkgew0K ICAgICAgICBmb3JlYWNoICgkayBpbiBAKCdhZG1pbmlzdHJhdGlvbicsJ3N0YXRpc3RpaycsJ2xv Z2J1Y2gnLCdiYWNrdXBzJykpIHsNCiAgICAgICAgICAgIGlmICgkZmEuc2VoZW4uUFNPYmplY3Qu UHJvcGVydGllc1ska10pIHsgJHNlaGVuWyRrXSA9IFtib29sXSRmYS5zZWhlbi4kayB9DQogICAg ICAgIH0NCiAgICB9DQoNCiAgICAjIE1laW5lLVBlcnNvbiBlaW5tYWwgbGVzZW4g4oCUIHdpcmQg c293b2hsIGZ1ZXIgZWRpdFJlY2h0ZS1GYWxsYmFjayBhbHMNCiAgICAjIGF1Y2ggZnVlciBtZWlu ZUlkICsgcGVyLVBlcnNvbi1zZWhlbi1PdmVycmlkZXMgZ2VicmF1Y2h0Lg0KICAgICRtcCA9IEdl dC1NZWluZVBlcnNvbg0KDQogICAgJGVkaXRpZXJlbiA9ICRudWxsDQogICAgaWYgKC1ub3QgJGlz dFNVKSB7DQogICAgICAgICRxdWVsbGUgPSAkbnVsbA0KICAgICAgICBpZiAoJGlzdEZBIC1hbmQg JGZhLlBTT2JqZWN0LlByb3BlcnRpZXNbJ2VkaXRpZXJlbiddKSB7ICRxdWVsbGUgPSAkZmEuZWRp dGllcmVuIH0NCiAgICAgICAgZWxzZWlmICgkbXAgLWFuZCAkbXAuUFNPYmplY3QuUHJvcGVydGll c1snZWRpdFJlY2h0ZSddKSB7ICRxdWVsbGUgPSAkbXAuZWRpdFJlY2h0ZSB9DQogICAgICAgICMg U3Ryb25nLXR5cGVkIEFycmF5cyBlcnp3aW5nZW46IFBvd2VyU2hlbGwgNS4xIHVud3JhcHMgc2lu Z2xlLUVsZW1lbnQtDQogICAgICAgICMgUGlwZWxpbmVzIHp1IGVpbmVtIFNrYWxhciAoRm9yRWFj aC1PYmplY3QgeyBbaW50XSRfIH0gbGllZmVydCBiZWkgZWluZXINCiAgICAgICAgIyBMaXN0ZSBt aXQgMSBFaW50cmFnIGVpbmUgWmFobCBzdGF0dCBBcnJheSkuIENvbnZlcnRUby1Kc29uIHd1ZXJk ZSBkYW5uDQogICAgICAgICMgInBlcnNvbmVuSWRzIjogNSBzdGF0dCBbNV0gc2NocmVpYmVuIOKA lCBDbGllbnQtc2lkZSAuaW5kZXhPZigpIHNjaGxhZWd0DQogICAgICAgICMgZmVobCB1bmQgZGll IFBsYW51bmdzLUFuc2ljaHQgYmxlaWJ0IGxlZXIgKENoZXJyeS1QaWNrIDFhZWZlMjYgQnVnICMx KS4NCiAgICAgICAgJGVkaXRpZXJlbiA9IEB7IHBlcnNvbmVuSWRzID0gQCgpOyBkaWVuc3RncnVw cGVuID0gQCgpOyBzdGFuZG9ydGUgPSBAKCkgfQ0KICAgICAgICBpZiAoJHF1ZWxsZSkgew0KICAg ICAgICAgICAgaWYgKCRxdWVsbGUuUFNPYmplY3QuUHJvcGVydGllc1sncGVyc29uZW5JZHMnXSkg IHsgJGVkaXRpZXJlbi5wZXJzb25lbklkcyAgID0gW2ludFtdXSAgIEAoJHF1ZWxsZS5wZXJzb25l bklkcyAgIHwgRm9yRWFjaC1PYmplY3QgeyBbaW50XSRfIH0pIH0NCiAgICAgICAgICAgIGlmICgk cXVlbGxlLlBTT2JqZWN0LlByb3BlcnRpZXNbJ2RpZW5zdGdydXBwZW4nXSkgeyAkZWRpdGllcmVu LmRpZW5zdGdydXBwZW4gPSBbc3RyaW5nW11dQCgkcXVlbGxlLmRpZW5zdGdydXBwZW4gfCBGb3JF YWNoLU9iamVjdCB7IFtzdHJpbmddJF8gfSkgfQ0KICAgICAgICAgICAgaWYgKCRxdWVsbGUuUFNP YmplY3QuUHJvcGVydGllc1snc3RhbmRvcnRlJ10pICAgICB7ICRlZGl0aWVyZW4uc3RhbmRvcnRl ICAgICA9IFtzdHJpbmdbXV1AKCRxdWVsbGUuc3RhbmRvcnRlICAgICB8IEZvckVhY2gtT2JqZWN0 IHsgW3N0cmluZ10kXyB9KSB9DQogICAgICAgIH0NCiAgICAgICAgIyBTdGFuZGFyZHJlY2h0ZSAo Z2VnZW5zZWl0aWdlIFBsYW51bmcgamUgRGllbnN0Z3J1cHBlL1N0YW5kb3J0KSBhZGRpdGl2DQog ICAgICAgICMgaW4gZWRpdGllcmVuIGVpbndlYmVuIOKAlCBncmVpZnQgZGFubiBpbiBkYXJmX3pl bGxlX2VkaXRpZXJlbiB1bmQgaW0gQ2xpZW50Lg0KICAgICAgICB0cnkgew0KICAgICAgICAgICAg JHNyID0gJG51bGwNCiAgICAgICAgICAgICRhZG0yID0gUmVhZC1Kc29uT2JqZWN0ICdhZG1pbi5q c29uJw0KICAgICAgICAgICAgaWYgKCRhZG0yIC1hbmQgJGFkbTIuUFNPYmplY3QuUHJvcGVydGll c1snc3RhbmRhcmRSZWNodGUnXSkgeyAkc3IgPSAkYWRtMi5zdGFuZGFyZFJlY2h0ZSB9DQogICAg ICAgICAgICBpZiAoJHNyIC1hbmQgJG1wKSB7DQogICAgICAgICAgICAgICAgJG1nID0gaWYgKCRt cC5QU09iamVjdC5Qcm9wZXJ0aWVzWydncnVwcGUnXSkgeyBbc3RyaW5nXSRtcC5ncnVwcGUgfSBl bHNlIHsgJycgfQ0KICAgICAgICAgICAgICAgICRtbyA9IGlmICgkbXAuUFNPYmplY3QuUHJvcGVy dGllc1snb2UnXSkgICAgIHsgW3N0cmluZ10kbXAub2UgfSAgICAgZWxzZSB7ICcnIH0NCiAgICAg ICAgICAgICAgICAkZ2cgPSBAKCk7IGlmICgkc3IuUFNPYmplY3QuUHJvcGVydGllc1snZ2VnZW5z ZWl0aWdHcnVwcGVuJ10pICAgeyAkZ2cgPSBAKCRzci5nZWdlbnNlaXRpZ0dydXBwZW4gICB8IEZv ckVhY2gtT2JqZWN0IHsgW3N0cmluZ10kXyB9KSB9DQogICAgICAgICAgICAgICAgJGdzID0gQCgp OyBpZiAoJHNyLlBTT2JqZWN0LlByb3BlcnRpZXNbJ2dlZ2Vuc2VpdGlnU3RhbmRvcnRlJ10pIHsg JGdzID0gQCgkc3IuZ2VnZW5zZWl0aWdTdGFuZG9ydGUgfCBGb3JFYWNoLU9iamVjdCB7IFtzdHJp bmddJF8gfSkgfQ0KICAgICAgICAgICAgICAgIGlmICgkbWcgLWFuZCAoJGdnIC1jb250YWlucyAk bWcpIC1hbmQgLW5vdCAoJGVkaXRpZXJlbi5kaWVuc3RncnVwcGVuIC1jb250YWlucyAkbWcpKSB7 DQogICAgICAgICAgICAgICAgICAgICRlZGl0aWVyZW4uZGllbnN0Z3J1cHBlbiA9IFtzdHJpbmdb XV1AKCRlZGl0aWVyZW4uZGllbnN0Z3J1cHBlbiArICRtZykNCiAgICAgICAgICAgICAgICB9DQog ICAgICAgICAgICAgICAgaWYgKCRtbyAtYW5kICgkZ3MgLWNvbnRhaW5zICRtbykgLWFuZCAtbm90 ICgkZWRpdGllcmVuLnN0YW5kb3J0ZSAtY29udGFpbnMgJG1vKSkgew0KICAgICAgICAgICAgICAg ICAgICAkZWRpdGllcmVuLnN0YW5kb3J0ZSA9IFtzdHJpbmdbXV1AKCRlZGl0aWVyZW4uc3RhbmRv cnRlICsgJG1vKQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgfSBj YXRjaCB7fQ0KICAgIH0NCg0KICAgICRtZWluZUlkID0gJG51bGwNCiAgICBpZiAoJG1wKSB7ICRt ZWluZUlkID0gJG1wLmlkIH0NCg0KICAgICMgR2VzYW10dmVyYW50d29ydGxpY2hrZWl0OiBGbGFn IGFuIGRlciBGYWNoYXVmc2ljaHQgb2RlciBTdXBlclVzZXItQm9udXMNCiAgICAjIChTVSBkYXJm IHBlciBEZWZpbml0aW9uIGFsbGVzLCBiZWtvbW10IGFsc28gYXVjaCBkZW4gQmVzZXR6dW5nc2tv bnRyb2xsLVRhYikuDQogICAgJGlzdEdlc2FtdCA9ICRmYWxzZQ0KICAgIGlmICgkaXN0U1UpIHsg JGlzdEdlc2FtdCA9ICR0cnVlIH0NCiAgICBlbHNlaWYgKCRpc3RGQSAtYW5kICRmYS5QU09iamVj dC5Qcm9wZXJ0aWVzWydnZXNhbXR2ZXJhbnR3b3J0bGljaCddKSB7DQogICAgICAgICRpc3RHZXNh bXQgPSBbYm9vbF0kZmEuZ2VzYW10dmVyYW50d29ydGxpY2gNCiAgICB9DQoNCiAgICAjIEdyYW51 bGFyZSBTdWItU2ljaHRiYXJrZWl0IChGaW5kaW5nIEMuOSAvIFNwZWMgRi4yKToNCiAgICAjIFBy byBGYWNoYXVmc2ljaHQgb3B0aW9uYWwgZmEuYWRtaW5TaWNodGJhcmtlaXR7PHN1YnRhYj46IGJv b2x9IHVuZA0KICAgICMgZmEuc3RhdGlzdGlrU2ljaHRiYXJrZWl0ezxiZXJlaWNoPjogYm9vbH0u IFdlbm4gbmljaHQgZ2VzZXR6dCAtPiBmYWxsYmFjaw0KICAgICMgYXVmIGRhcyB1ZWJlcmdlb3Jk bmV0ZSBzZWhlbi5hZG1pbmlzdHJhdGlvbiAvIHNlaGVuLnN0YXRpc3RpayAoYWxsZXMgb2Rlcg0K ICAgICMgbmljaHRzKS4gU3VwZXJVc2VyIHNpZWh0IGltbWVyIGFsbGVzICgkbnVsbCA9IFdpbGRj YXJkKS4NCiAgICAkYWRtaW5TdWJ0YWJzID0gJG51bGwNCiAgICAkc3RhdEJlcmVpY2hlID0gJG51 bGwNCiAgICBpZiAoLW5vdCAkaXN0U1UpIHsNCiAgICAgICAgaWYgKCRpc3RGQSAtYW5kICRzZWhl bi5hZG1pbmlzdHJhdGlvbiAtYW5kICRmYS5QU09iamVjdC5Qcm9wZXJ0aWVzWydhZG1pblNpY2h0 YmFya2VpdCddIC1hbmQgJGZhLmFkbWluU2ljaHRiYXJrZWl0KSB7DQogICAgICAgICAgICAkYWRt aW5TdWJ0YWJzID0gQHt9DQogICAgICAgICAgICBmb3JlYWNoICgkcHJvcCBpbiAkZmEuYWRtaW5T aWNodGJhcmtlaXQuUFNPYmplY3QuUHJvcGVydGllcykgeyAkYWRtaW5TdWJ0YWJzWyRwcm9wLk5h bWVdID0gW2Jvb2xdJHByb3AuVmFsdWUgfQ0KICAgICAgICB9IGVsc2VpZiAoLW5vdCAoJGlzdEZB IC1hbmQgJHNlaGVuLmFkbWluaXN0cmF0aW9uKSkgew0KICAgICAgICAgICAgJGFkbWluU3VidGFi cyA9IEB7fSAgIyBsZWVyID0gbmljaHRzIGVybGF1YnQNCiAgICAgICAgfQ0KICAgICAgICBpZiAo JGlzdEZBIC1hbmQgJHNlaGVuLnN0YXRpc3RpayAtYW5kICRmYS5QU09iamVjdC5Qcm9wZXJ0aWVz WydzdGF0aXN0aWtTaWNodGJhcmtlaXQnXSAtYW5kICRmYS5zdGF0aXN0aWtTaWNodGJhcmtlaXQp IHsNCiAgICAgICAgICAgICRzdGF0QmVyZWljaGUgPSBAe30NCiAgICAgICAgICAgIGZvcmVhY2gg KCRwcm9wIGluICRmYS5zdGF0aXN0aWtTaWNodGJhcmtlaXQuUFNPYmplY3QuUHJvcGVydGllcykg eyAkc3RhdEJlcmVpY2hlWyRwcm9wLk5hbWVdID0gW2Jvb2xdJHByb3AuVmFsdWUgfQ0KICAgICAg ICB9IGVsc2VpZiAoLW5vdCAoJGlzdEZBIC1hbmQgJHNlaGVuLnN0YXRpc3RpaykpIHsNCiAgICAg ICAgICAgICRzdGF0QmVyZWljaGUgPSBAe30NCiAgICAgICAgfQ0KICAgIH0NCg0KICAgICMgUGVy LVBlcnNvbi1TaWNodGJhcmtlaXRzLU92ZXJyaWRlIChTY2hlbWEgYmxlaWJ0IGFrdGl2IHVuYWJo YWVuZ2lnIHZvbQ0KICAgICMgZmVhdHVyZXMucGVyUGVyc29uU2ljaHRiYXJrZWl0LVRvZ2dsZSDi gJQgZGVyIHNjaGFsdGV0IG51ciBkaWUgVUkgaW0NCiAgICAjIFBlcnNvbi1Nb2RhbCBmcmVpLiBX ZW5uIGRpZSBQZXJzb24gZWluIGBzZWhlbntsb2didWNoLHN0YXRpc3Rpa31gIFByb3BlcnR5DQog ICAgIyBtaXQgYm9vbC1XZXJ0IGhhdCAobmljaHQgJG51bGwpLCB1ZWJlcnNjaHJlaWJ0IGRhcyBk ZW4gUm9sbGVuLURlZmF1bHQuDQogICAgaWYgKCRtcCAtYW5kICRtcC5QU09iamVjdC5Qcm9wZXJ0 aWVzWydzZWhlbiddIC1hbmQgJG1wLnNlaGVuKSB7DQogICAgICAgIGZvcmVhY2ggKCRrIGluIEAo J2xvZ2J1Y2gnLCdzdGF0aXN0aWsnKSkgew0KICAgICAgICAgICAgaWYgKCRtcC5zZWhlbi5QU09i amVjdC5Qcm9wZXJ0aWVzWyRrXSkgew0KICAgICAgICAgICAgICAgICR2YWwgPSAkbXAuc2VoZW4u JGsNCiAgICAgICAgICAgICAgICBpZiAoJG51bGwgLW5lICR2YWwpIHsgJHNlaGVuWyRrXSA9IFti b29sXSR2YWwgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgfQ0KDQogICAgJHJvbGxl ID0gaWYgKCRpc3RTVSkgeyAnc3VwZXJ1c2VyJyB9IGVsc2VpZiAoJGlzdEZBKSB7ICRyb2xsZVF1 ZWxsZSB9IGVsc2UgeyAncmVndWxhZXInIH0NCiAgICAkZXJnZWJuaXMgPSBAew0KICAgICAgICBy b2xsZSAgICAgICAgICAgICAgICAgID0gJHJvbGxlDQogICAgICAgIGlzdFN1cGVyVXNlciAgICAg ICAgICAgPSAkaXN0U1UNCiAgICAgICAgaXN0RmFjaGF1ZnNpY2h0ICAgICAgICA9ICRpc3RGQQ0K ICAgICAgICBpc3RHZXNhbXR2ZXJhbnR3b3J0bGljaCA9ICRpc3RHZXNhbXQNCiAgICAgICAgc2Vo ZW4gICAgICAgICAgICAgICAgICA9ICRzZWhlbg0KICAgICAgICBhZG1pblN1YnRhYnMgICAgICAg ICAgID0gJGFkbWluU3VidGFicw0KICAgICAgICBzdGF0aXN0aWtCZXJlaWNoZSAgICAgID0gJHN0 YXRCZXJlaWNoZQ0KICAgICAgICBlZGl0aWVyZW4gICAgICAgICAgICAgID0gJGVkaXRpZXJlbg0K ICAgICAgICBtZWluZVBlcnNvbklkICAgICAgICAgID0gJG1laW5lSWQNCiAgICB9DQogICAgJHNj cmlwdDpSZWNodGVDYWNoZS5XZXJ0ICAgICAgPSAkZXJnZWJuaXMNCiAgICAkc2NyaXB0OlJlY2h0 ZUNhY2hlLkFkbWluTXQgICA9ICRhTXQNCiAgICAkc2NyaXB0OlJlY2h0ZUNhY2hlLlBsYW51bmdN dCA9ICRwTXQNCiAgICByZXR1cm4gJGVyZ2VibmlzDQp9DQoNCmZ1bmN0aW9uIFRlc3QtRGFyZkJl cmVpY2goW3N0cmluZ10kQmVyZWljaCkgew0KICAgICRyID0gR2V0LVJlY2h0ZQ0KICAgIGlmICgk ci5pc3RTdXBlclVzZXIpIHsgcmV0dXJuICR0cnVlIH0NCiAgICBpZiAoJHIuaXN0RmFjaGF1ZnNp Y2h0IC1hbmQgJHIuc2VoZW5bJEJlcmVpY2hdKSB7IHJldHVybiAkdHJ1ZSB9DQogICAgcmV0dXJu ICRmYWxzZQ0KfQ0KDQojID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCiMgSGlud2Vpcy1TeXN0ZW0gKElu LUFwcC1CYW5uZXIgKyBNb2RhbCBmdWVyIFN1cGVyVXNlciArIEdlc2FtdHZlcmFudHdvcnRsaWNo ZSkNCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBTdGF0dCBtYWlsdG8tVHJpZ2dlcm4gZnVlciBS b3V0aW5lLUVyZWlnbmlzc2UgKElkZW50aXRhZXRzLUFlbmRlcnVuZywgQmFja3VwLQ0KIyBSZXN0 b3JlLCBLcmFua21lbGR1bmcsIC4uLikgZXJ6ZXVndCBkZXIgU2VydmVyIGhpZXIgZWluZW4gSGlu d2Vpcy1FaW50cmFnIGluDQojIGRhdGEvaGlud2Vpc2UuanNvbi4gU3VwZXJVc2VyICsgR2VzYW10 dmVyYW50d29ydGxpY2hlIHNlaGVuIGVpbmVuIEJhbm5lciBtaXQNCiMgQW56YWhsICsgQmFkZ2Ug YW0gZWlnZW5lbiBOYW1lbiB1bmQga29lbm5lbiBkaWUgSGlud2Vpc2UgaW0gTW9kYWwgYWJuaWNr ZW4uDQojDQojIEVtcGZhZW5nZXItU25hcHNob3Qgd2lyZCBiZWltIEVyemV1Z2VuIGZlc3RnZXNj aHJpZWJlbjogV2VyIGJlaW0gVHJpZ2dlciBub2NoDQojIG5pY2h0IGluIGRlciBTVS0vR2VzYW10 dmVyYW50d29ydGxpY2gtTGlzdGUgc3RhbmQsIGJla29tbXQgZGVuIEhpbndlaXMgbmljaHQNCiMg bmFjaHRyYWVnbGljaC4gRGFzIGlzdCBiZXd1c3N0IHNvIChrZWluIHdhaHJlcyAiUHViL1N1YiIs IHNvbmRlcm4gQXVkaXQtTG9nKS4NCiMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KDQojIExpZWZlcnQg ZWluIEFycmF5IGVpbmRldXRpZ2VyIG53S2VubnVuZ2VuIGFsbGVyIGFrdHVlbGxlbiBTVSArIEdl c2FtdC0NCiMgdmVyYW50d29ydGxpY2hlbiBhdXMgYWRtaW4uanNvbi4gRm9ybWF0IHdpZSBpbiBh ZG1pbi5qc29uIGhpbnRlcmxlZ3QNCiMgKHR5cC4gIk5XMDUzNjA5IiBvZGVyICJET01BSU5cTlcw NTM2MDkiKS4gTWF0Y2ggbGFldWZ0IGNhc2UtaW5zZW5zaXRpdi4NCmZ1bmN0aW9uIEdldC1IaW53 ZWlzRW1wZmFlbmdlciB7DQogICAgJGFkbWluID0gUmVhZC1Kc29uT2JqZWN0ICdhZG1pbi5qc29u Jw0KICAgIGlmICgkbnVsbCAtZXEgJGFkbWluKSB7IHJldHVybiBAKCkgfQ0KICAgICRzZXQgPSBA e30NCiAgICBmb3JlYWNoICgkc3UgaW4gQCgkYWRtaW4uc3VwZXJVc2VyKSkgew0KICAgICAgICAk ayA9IFtzdHJpbmddJHN1Lm53S2VubnVuZw0KICAgICAgICBpZiAoJGspIHsgJHNldFskay5Ub0xv d2VyKCldID0gJGsgfQ0KICAgIH0NCiAgICBmb3JlYWNoICgkZmEgaW4gQCgkYWRtaW4uZmFjaGF1 ZnNpY2h0KSkgew0KICAgICAgICBpZiAoJGZhLlBTT2JqZWN0LlByb3BlcnRpZXNbJ2dlc2FtdHZl cmFudHdvcnRsaWNoJ10gLWFuZCBbYm9vbF0kZmEuZ2VzYW10dmVyYW50d29ydGxpY2gpIHsNCiAg ICAgICAgICAgICRrID0gW3N0cmluZ10kZmEubndLZW5udW5nDQogICAgICAgICAgICBpZiAoJGsp IHsgJHNldFskay5Ub0xvd2VyKCldID0gJGsgfQ0KICAgICAgICB9DQogICAgfQ0KICAgICMgTm90 ZmFsbC1TVSBzaW5kIGltbWVyIEVtcGZhZW5nZXIsIGF1Y2ggd2VubiBhZG1pbi5qc29uIHNpZSBu aWNodCBsaXN0ZXQNCiAgICBmb3JlYWNoICgkayBpbiAkc2NyaXB0Ok5vdGZhbGxTdXBlclVzZXIp IHsNCiAgICAgICAgaWYgKC1ub3QgJHNldC5Db250YWluc0tleSgkay5Ub0xvd2VyKCkpKSB7ICRz ZXRbJGsuVG9Mb3dlcigpXSA9ICRrIH0NCiAgICB9DQogICAgcmV0dXJuIEAoJHNldC5WYWx1ZXMp DQp9DQoNCiMgU2NocmVpYnQgZWluZW4gbmV1ZW4gSGlud2VpcyBpbiBkYXRhL2hpbndlaXNlLmpz b24uIEVtcGZhZW5nZXItU2xvdHMgd2VyZGVuDQojIG1pdCAkbnVsbCB2b3JiZWxlZ3QgKD0gdW5n ZWxlc2VuKS4gTG9jay1nZXNjaHVldHp0OyBiZWkgRmVobGVyIG51ciBsb2dnZW4sDQojIG5pY2h0 IHByb3BhZ2llcmVuLCBkYW1pdCBkZXIgYXVzbMO2c2VuZGUgUFVUIG5pY2h0IGtpcHB0Lg0KZnVu Y3Rpb24gTmV3LUhpbndlaXMoW3N0cmluZ10kVHlwLCAkS29udGV4dCwgW3N0cmluZ10kQXVzbG9l c2VyKSB7DQogICAgdHJ5IHsNCiAgICAgICAgJGVtcGZhZW5nZXIgPSBHZXQtSGlud2Vpc0VtcGZh ZW5nZXINCiAgICAgICAgaWYgKC1ub3QgJGVtcGZhZW5nZXIgLW9yICRlbXBmYWVuZ2VyLkNvdW50 IC1lcSAwKSB7IHJldHVybiAkbnVsbCB9DQogICAgICAgICRzY3JpcHQ6ZXJ6ZXVndGVJZCA9ICRu dWxsDQogICAgICAgIEludm9rZS1XaXRoRmlsZUxvY2sgJ2hpbndlaXNlLmpzb24nIHsNCiAgICAg ICAgICAgICRoID0gUmVhZC1Kc29uT2JqZWN0ICdoaW53ZWlzZS5qc29uJw0KICAgICAgICAgICAg aWYgKCRudWxsIC1lcSAkaCAtb3IgLW5vdCAkaC5QU09iamVjdC5Qcm9wZXJ0aWVzWydoaW53ZWlz ZSddIC1vciAtbm90ICRoLlBTT2JqZWN0LlByb3BlcnRpZXNbJ25hZWNoc3RlSWQnXSkgew0KICAg ICAgICAgICAgICAgICRoID0gW1BTQ3VzdG9tT2JqZWN0XUB7IGhpbndlaXNlID0gQCgpOyBuYWVj aHN0ZUlkID0gMSB9DQogICAgICAgICAgICB9DQogICAgICAgICAgICAkaWQgPSBbaW50XSRoLm5h ZWNoc3RlSWQNCiAgICAgICAgICAgICRrbiA9IFtvcmRlcmVkXUB7fQ0KICAgICAgICAgICAgZm9y ZWFjaCAoJGUgaW4gJGVtcGZhZW5nZXIpIHsgJGtuWyRlXSA9ICRudWxsIH0NCiAgICAgICAgICAg ICRlaW50cmFnID0gW29yZGVyZWRdQHsNCiAgICAgICAgICAgICAgICBpZCAgICAgICAgICAgID0g JGlkDQogICAgICAgICAgICAgICAgdHlwICAgICAgICAgICA9ICRUeXANCiAgICAgICAgICAgICAg ICBlcnN0ZWxsdEFtICAgID0gKEdldC1EYXRlKS5Ub1VuaXZlcnNhbFRpbWUoKS5Ub1N0cmluZygn eXl5eS1NTS1kZFRISDptbTpzc1onKQ0KICAgICAgICAgICAgICAgIGF1c2xvZXNlciAgICAgPSAk QXVzbG9lc2VyDQogICAgICAgICAgICAgICAga29udGV4dCAgICAgICA9ICRLb250ZXh0DQogICAg ICAgICAgICAgICAga2VubnRuaXNuYWhtZW4gPSAka24NCiAgICAgICAgICAgIH0NCiAgICAgICAg ICAgICMgUFMtNS4xLVVud3JhcC1TY2h1dHo6IGVpbnplbG5lcyBFbGVtZW50IG11c3MgYWxzIEFy cmF5IGJsZWliZW4uDQogICAgICAgICAgICAkaC5oaW53ZWlzZSAgID0gW29iamVjdFtdXUAoQCgk aC5oaW53ZWlzZSkgKyBAKFtQU0N1c3RvbU9iamVjdF0kZWludHJhZykpDQogICAgICAgICAgICAk aC5uYWVjaHN0ZUlkID0gJGlkICsgMQ0KICAgICAgICAgICAgV3JpdGUtSnNvbk9iamVjdCAnaGlu d2Vpc2UuanNvbicgJGggfCBPdXQtTnVsbA0KICAgICAgICAgICAgJHNjcmlwdDplcnpldWd0ZUlk ID0gJGlkDQogICAgICAgIH0gfCBPdXQtTnVsbA0KICAgICAgICBXcml0ZS1Mb2dFaW50cmFnICdo aW53ZWlzLmVyemV1Z3QnIEB7IHR5cCA9ICRUeXA7IGVtcGZhZW5nZXIgPSAkZW1wZmFlbmdlci5D b3VudCB9DQogICAgICAgIHJldHVybiAkc2NyaXB0OmVyemV1Z3RlSWQNCiAgICB9IGNhdGNoIHsN CiAgICAgICAgTG9nLUFwaSAoIkhJTldFSVMtRVJaRVVHRU4gRkVITEVSICh7MH0pOiB7MX0iIC1m ICRUeXAsICRfLkV4Y2VwdGlvbi5NZXNzYWdlKQ0KICAgICAgICByZXR1cm4gJG51bGwNCiAgICB9 DQp9DQoNCiMgRW50ZmVybnQgb2ZmZW5lIEtyYW5rbWVsZHVuZ3MtSGlud2Vpc2UgZnVlciBlaW5l IGtvbmtyZXRlIFBlcnNvbiArIERhdHVtLg0KIyBBdWZnZXJ1ZmVuIHZvbSBaZWxsLUVkaXQtSGFu ZGxlciwgd2VubiBlaW4gImtyIi8iS3VyIi1FaW50cmFnIHdpZWRlcg0KIyB6dXJ1ZWNrZ2Vub21t ZW4gd2lyZCDigJQgc29uc3QgYmxlaWJ0IGRlciBIaW53ZWlzIDMwIFRhZ2Ugb2ZmZW4sIG9id29o bA0KIyBkYXMgRXJlaWduaXMgZXJsZWRpZ3QgaXN0IChQaGFzZSBELjMsIDIwMjYtMDUtMjEpLg0K ZnVuY3Rpb24gUmVtb3ZlLU9mZmVuZUtyYW5rbWVsZHVuZ3NIaW53ZWlzZShbaW50XSRQZXJzb25J ZCwgW3N0cmluZ10kRGF0dW0pIHsNCiAgICB0cnkgew0KICAgICAgICBJbnZva2UtV2l0aEZpbGVM b2NrICdoaW53ZWlzZS5qc29uJyB7DQogICAgICAgICAgICAkaCA9IFJlYWQtSnNvbk9iamVjdCAn aGlud2Vpc2UuanNvbicNCiAgICAgICAgICAgIGlmICgkbnVsbCAtZXEgJGggLW9yIC1ub3QgJGgu UFNPYmplY3QuUHJvcGVydGllc1snaGlud2Vpc2UnXSkgeyByZXR1cm4gfQ0KICAgICAgICAgICAg JGJlaGFsdGVuID0gQCgpDQogICAgICAgICAgICAkZW50ZmVybnQgPSAwDQogICAgICAgICAgICBm b3JlYWNoICgkZSBpbiBAKCRoLmhpbndlaXNlKSkgew0KICAgICAgICAgICAgICAgIGlmICgkZS50 eXAgLWVxICdrcmFua21lbGR1bmcnIC1hbmQgJGUua29udGV4dCAtYW5kIGANCiAgICAgICAgICAg ICAgICAgICAgW2ludF0kZS5rb250ZXh0LnBlcnNvbl9pZCAtZXEgJFBlcnNvbklkIC1hbmQgYA0K ICAgICAgICAgICAgICAgICAgICBbc3RyaW5nXSRlLmtvbnRleHQuZGF0dW0gLWVxICREYXR1bSkg ew0KICAgICAgICAgICAgICAgICAgICAkZW50ZmVybnQrKw0KICAgICAgICAgICAgICAgICAgICBj b250aW51ZQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAkYmVoYWx0ZW4gKz0g JGUNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGlmICgkZW50ZmVybnQgLWd0IDApIHsNCiAg ICAgICAgICAgICAgICAkaC5oaW53ZWlzZSA9IFtvYmplY3RbXV0kYmVoYWx0ZW4NCiAgICAgICAg ICAgICAgICBXcml0ZS1Kc29uT2JqZWN0ICdoaW53ZWlzZS5qc29uJyAkaCB8IE91dC1OdWxsDQog ICAgICAgICAgICAgICAgV3JpdGUtTG9nRWludHJhZyAnaGlud2Vpcy5rcmFua21lbGR1bmcuenVy dWVja2dlbm9tbWVuJyBAeyBwZXJzb25JZCA9ICRQZXJzb25JZDsgZGF0dW0gPSAkRGF0dW07IGVu dGZlcm50ID0gJGVudGZlcm50IH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgfSB8IE91dC1OdWxs DQogICAgfSBjYXRjaCB7DQogICAgICAgIExvZy1BcGkgKCJISU5XRUlTLUtSQU5LTUVMRFVORy1D TEVBTlVQIEZFSExFUjogezB9IiAtZiAkXy5FeGNlcHRpb24uTWVzc2FnZSkNCiAgICB9DQp9DQoN CiMgTG9lc2NodCBhYmdlbGF1ZmVuZSBIaW53ZWlzZSAoYWxsZSBTbG90cyAhPSBudWxsIFVORCA+ IDMwIFRhZ2UpLiBXaXJkIGxhenkNCiMgYmVpbSBHRVQgL2FwaS9oaW53ZWlzZSBhdWZnZXJ1ZmVu LCBtYXguIDF4IHBybyBNaW51dGUgKFNjcmlwdC1TY29wZS1DYWNoZSkuDQokc2NyaXB0Okhpbndl aXNQcnVuZVp1bGV0enQgPSBbRGF0ZVRpbWVdOjpNaW5WYWx1ZQ0KZnVuY3Rpb24gSW52b2tlLUhp bndlaXNQcnVuaW5nIHsNCiAgICAkamV0enQgPSBHZXQtRGF0ZQ0KICAgIGlmICgoJGpldHp0IC0g JHNjcmlwdDpIaW53ZWlzUHJ1bmVadWxldHp0KS5Ub3RhbFNlY29uZHMgLWx0IDYwKSB7IHJldHVy biB9DQogICAgJHNjcmlwdDpIaW53ZWlzUHJ1bmVadWxldHp0ID0gJGpldHp0DQogICAgdHJ5IHsN CiAgICAgICAgSW52b2tlLVdpdGhGaWxlTG9jayAnaGlud2Vpc2UuanNvbicgew0KICAgICAgICAg ICAgJGggPSBSZWFkLUpzb25PYmplY3QgJ2hpbndlaXNlLmpzb24nDQogICAgICAgICAgICBpZiAo JG51bGwgLWVxICRoIC1vciAtbm90ICRoLlBTT2JqZWN0LlByb3BlcnRpZXNbJ2hpbndlaXNlJ10p IHsgcmV0dXJuIH0NCiAgICAgICAgICAgICRncmVuemUgPSAkamV0enQuQWRkRGF5cygtMzApLlRv VW5pdmVyc2FsVGltZSgpDQogICAgICAgICAgICAkYmVoYWx0ZW4gPSBAKCkNCiAgICAgICAgICAg IGZvcmVhY2ggKCRlaW50cmFnIGluIEAoJGguaGlud2Vpc2UpKSB7DQogICAgICAgICAgICAgICAg JGVyc3RlbGx0ID0gW0RhdGVUaW1lXTo6TWluVmFsdWUNCiAgICAgICAgICAgICAgICB0cnkgeyAk ZXJzdGVsbHQgPSBbRGF0ZVRpbWVdOjpQYXJzZShbc3RyaW5nXSRlaW50cmFnLmVyc3RlbGx0QW0p LlRvVW5pdmVyc2FsVGltZSgpIH0gY2F0Y2gge30NCiAgICAgICAgICAgICAgICAkYWxsZUdlbGVz ZW4gPSAkdHJ1ZQ0KICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRwIGluICRlaW50cmFnLmtlbm50 bmlzbmFobWVuLlBTT2JqZWN0LlByb3BlcnRpZXMpIHsNCiAgICAgICAgICAgICAgICAgICAgaWYg KCRudWxsIC1lcSAkcC5WYWx1ZSkgeyAkYWxsZUdlbGVzZW4gPSAkZmFsc2U7IGJyZWFrIH0NCiAg ICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgIyBCZWhhbHRlbiwgd2VubiBqdWVuZ2Vy IGFscyAzMCBUYWdlIE9ERVIgbm9jaCB1bmdlbGVzZW4NCiAgICAgICAgICAgICAgICBpZiAoJGVy c3RlbGx0IC1ndCAkZ3JlbnplIC1vciAtbm90ICRhbGxlR2VsZXNlbikgeyAkYmVoYWx0ZW4gKz0g JGVpbnRyYWcgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgaWYgKCRiZWhhbHRlbi5Db3Vu dCAtbmUgQCgkaC5oaW53ZWlzZSkuQ291bnQpIHsNCiAgICAgICAgICAgICAgICAkaC5oaW53ZWlz ZSA9IFtvYmplY3RbXV0kYmVoYWx0ZW4NCiAgICAgICAgICAgICAgICBXcml0ZS1Kc29uT2JqZWN0 ICdoaW53ZWlzZS5qc29uJyAkaCB8IE91dC1OdWxsDQogICAgICAgICAgICB9DQogICAgICAgIH0g fCBPdXQtTnVsbA0KICAgIH0gY2F0Y2ggew0KICAgICAgICBMb2ctQXBpICgiSElOV0VJUy1QUlVO SU5HIEZFSExFUjogezB9IiAtZiAkXy5FeGNlcHRpb24uTWVzc2FnZSkNCiAgICB9DQp9DQoNCiMg LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBNSVRURUlMVU5HRU4g4oCUIEZpbHRlciBmdWVyIGRlbiBh a3R1ZWxsZW4gVXNlci4gU3BpZWdlbCB2b24NCiMgX21pdHRlaWx1bmdlbl9mdWVyX2FrdHVlbGxl bl91c2VyKCkgaW0gUHl0aG9uLVNlcnZlciAoU3ByaW50IEQtM2EvRC0zYikuDQojIEJlYWNodGV0 IGVtcGZhZW5nZXIge2FsbGUsIHBlcnNvbmVuLCBncnVwcGVuLCByb2xsZW59LCBiaXNEYXR1bS1T dGljaHRhZw0KIyB1bmQgVHJpZ2dlci1SZWdlbCAoZWlubWFsIHZzLiBqZWRlc21hbC9iaXNEYXR1 bSBtaXQgIjF4IHBybyBLYWxlbmRlcnRhZyIpLg0KZnVuY3Rpb24gR2V0LU1pdHRlaWx1bmdlbkZ1 ZXJBa3R1ZWxsZW5Vc2VyIHsNCiAgICAkbSA9IFJlYWQtSnNvbk9iamVjdCAnbWl0dGVpbHVuZ2Vu Lmpzb24nDQogICAgaWYgKCRudWxsIC1lcSAkbSAtb3IgLW5vdCAkbS5QU09iamVjdC5Qcm9wZXJ0 aWVzWydtaXR0ZWlsdW5nZW4nXSkgeyByZXR1cm4gQCgpIH0NCiAgICAkZWludHJhZWdlID0gQCgk bS5taXR0ZWlsdW5nZW4pDQogICAgaWYgKCRlaW50cmFlZ2UuQ291bnQgLWVxIDApIHsgcmV0dXJu IEAoKSB9DQogICAgJHIgPSBHZXQtUmVjaHRlDQogICAgJHBpZCA9ICRyLm1laW5lUGVyc29uSWQN CiAgICAkcGVyc29uID0gJG51bGwNCiAgICBpZiAoJG51bGwgLW5lICRwaWQpIHsNCiAgICAgICAg JHBsYW51bmcgPSBSZWFkLUpzb25PYmplY3QgJ3BsYW51bmcuanNvbicNCiAgICAgICAgaWYgKCRu dWxsIC1uZSAkcGxhbnVuZyAtYW5kICRwbGFudW5nLlBTT2JqZWN0LlByb3BlcnRpZXNbJ3BlcnNv bmVuJ10pIHsNCiAgICAgICAgICAgIGZvcmVhY2ggKCRwIGluIEAoJHBsYW51bmcucGVyc29uZW4p KSB7DQogICAgICAgICAgICAgICAgaWYgKFtzdHJpbmddJHAuaWQgLWVxIFtzdHJpbmddJHBpZCkg eyAkcGVyc29uID0gJHA7IGJyZWFrIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgIH0N CiAgICAkbWVpbmVHcnVwcGUgICA9IGlmICgkcGVyc29uIC1hbmQgJHBlcnNvbi5QU09iamVjdC5Q cm9wZXJ0aWVzWydncnVwcGUnXSkgICB7IFtzdHJpbmddJHBlcnNvbi5ncnVwcGUgfSAgIGVsc2Ug eyAkbnVsbCB9DQogICAgJG1laW5lRnVua3Rpb24gPSBpZiAoJHBlcnNvbiAtYW5kICRwZXJzb24u UFNPYmplY3QuUHJvcGVydGllc1snZnVua3Rpb24nXSkgeyBbc3RyaW5nXSRwZXJzb24uZnVua3Rp b24gfSBlbHNlIHsgJG51bGwgfQ0KICAgICRpc3RTVSA9IFtib29sXSRyLmlzdFN1cGVyVXNlcg0K ICAgICRpc3RHViA9IFtib29sXSRyLmlzdEdlc2FtdHZlcmFudHdvcnRsaWNoDQogICAgJGhldXRl ID0gKEdldC1EYXRlKS5Ub1N0cmluZygneXl5eS1NTS1kZCcpDQogICAgJGdlbGVzZW5Vc2VyID0g W3BzY3VzdG9tb2JqZWN0XUB7fQ0KICAgIGlmICgkbnVsbCAtbmUgJHBpZCAtYW5kICRtLlBTT2Jq ZWN0LlByb3BlcnRpZXNbJ2dlbGVzZW4nXSkgew0KICAgICAgICAkcGlkU3RyID0gW3N0cmluZ10k cGlkDQogICAgICAgIGlmICgkbS5nZWxlc2VuLlBTT2JqZWN0LlByb3BlcnRpZXNbJHBpZFN0cl0p IHsNCiAgICAgICAgICAgICRnZWxlc2VuVXNlciA9ICRtLmdlbGVzZW4uJHBpZFN0cg0KICAgICAg ICB9DQogICAgfQ0KICAgICRyZWxldmFudCA9IEAoKQ0KICAgIGZvcmVhY2ggKCRlaW50cmFnIGlu ICRlaW50cmFlZ2UpIHsNCiAgICAgICAgaWYgKC1ub3QgJGVpbnRyYWcuUFNPYmplY3QuUHJvcGVy dGllc1snZW1wZmFlbmdlciddKSB7IGNvbnRpbnVlIH0NCiAgICAgICAgJGVtcCA9ICRlaW50cmFn LmVtcGZhZW5nZXINCiAgICAgICAgJGlzdFppZWxncnVwcGUgPSAkZmFsc2UNCiAgICAgICAgaWYg KCRlbXAuUFNPYmplY3QuUHJvcGVydGllc1snYWxsZSddIC1hbmQgJGVtcC5hbGxlKSB7ICRpc3Ra aWVsZ3J1cHBlID0gJHRydWUgfQ0KICAgICAgICBpZiAoJG51bGwgLW5lICRwaWQgLWFuZCAkZW1w LlBTT2JqZWN0LlByb3BlcnRpZXNbJ3BlcnNvbmVuJ10pIHsNCiAgICAgICAgICAgIGZvcmVhY2gg KCRwIGluIEAoJGVtcC5wZXJzb25lbikpIHsNCiAgICAgICAgICAgICAgICBpZiAoW3N0cmluZ10k cCAtZXEgW3N0cmluZ10kcGlkKSB7ICRpc3RaaWVsZ3J1cHBlID0gJHRydWU7IGJyZWFrIH0NCiAg ICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgICBpZiAoJG1laW5lR3J1cHBlIC1hbmQgJGVt cC5QU09iamVjdC5Qcm9wZXJ0aWVzWydncnVwcGVuJ10pIHsNCiAgICAgICAgICAgIGlmIChAKCRl bXAuZ3J1cHBlbikgLWNvbnRhaW5zICRtZWluZUdydXBwZSkgeyAkaXN0WmllbGdydXBwZSA9ICR0 cnVlIH0NCiAgICAgICAgfQ0KICAgICAgICAkcm9sbGVuID0gaWYgKCRlbXAuUFNPYmplY3QuUHJv cGVydGllc1sncm9sbGVuJ10pIHsgQCgkZW1wLnJvbGxlbikgfSBlbHNlIHsgQCgpIH0NCiAgICAg ICAgaWYgKCRtZWluZUZ1bmt0aW9uIC1hbmQgKCRyb2xsZW4gLWNvbnRhaW5zICRtZWluZUZ1bmt0 aW9uKSkgeyAkaXN0WmllbGdydXBwZSA9ICR0cnVlIH0NCiAgICAgICAgaWYgKCRpc3RTVSAtYW5k ICgkcm9sbGVuIC1jb250YWlucyAnU1UnKSkgICAgICAgICAgICAgICAgICAgeyAkaXN0WmllbGdy dXBwZSA9ICR0cnVlIH0NCiAgICAgICAgaWYgKCRpc3RHViAtYW5kICgkcm9sbGVuIC1jb250YWlu cyAnR2VzYW10dmVyYW50d29ydGxpY2gnKSkgeyAkaXN0WmllbGdydXBwZSA9ICR0cnVlIH0NCiAg ICAgICAgaWYgKC1ub3QgJGlzdFppZWxncnVwcGUpIHsgY29udGludWUgfQ0KICAgICAgICAjIGJp c0RhdHVtLVN0aWNodGFnDQogICAgICAgICRiaXMgPSBpZiAoJGVpbnRyYWcuUFNPYmplY3QuUHJv cGVydGllc1snYmlzRGF0dW0nXSkgeyBbc3RyaW5nXSRlaW50cmFnLmJpc0RhdHVtIH0gZWxzZSB7 ICRudWxsIH0NCiAgICAgICAgaWYgKCRiaXMgLWFuZCAoJGhldXRlIC1ndCAkYmlzKSkgeyBjb250 aW51ZSB9DQogICAgICAgICMgVHJpZ2dlci1SZWdlbA0KICAgICAgICAkdHJpZ2dlciA9IGlmICgk ZWludHJhZy5QU09iamVjdC5Qcm9wZXJ0aWVzWyd0cmlnZ2VyJ10gLWFuZCAkZWludHJhZy50cmln Z2VyKSB7IFtzdHJpbmddJGVpbnRyYWcudHJpZ2dlciB9IGVsc2UgeyAnZWlubWFsJyB9DQogICAg ICAgICRtaWQgPSBbc3RyaW5nXSRlaW50cmFnLmlkDQogICAgICAgICR6dWxldHp0R2VzZWhlbiA9 IGlmICgkZ2VsZXNlblVzZXIuUFNPYmplY3QuUHJvcGVydGllc1skbWlkXSkgeyBbc3RyaW5nXSRn ZWxlc2VuVXNlci4kbWlkIH0gZWxzZSB7ICRudWxsIH0NCiAgICAgICAgaWYgKCR0cmlnZ2VyIC1l cSAnZWlubWFsJykgew0KICAgICAgICAgICAgaWYgKCR6dWxldHp0R2VzZWhlbikgeyBjb250aW51 ZSB9DQogICAgICAgIH0gZWxzZWlmICgkdHJpZ2dlciAtZXEgJ2plZGVzbWFsJyAtb3IgJHRyaWdn ZXIgLWVxICdiaXNEYXR1bScpIHsNCiAgICAgICAgICAgIGlmICgkenVsZXR6dEdlc2VoZW4gLWVx ICRoZXV0ZSkgeyBjb250aW51ZSB9DQogICAgICAgIH0NCiAgICAgICAgJHJlbGV2YW50ICs9ICRl aW50cmFnDQogICAgfQ0KICAgIHJldHVybiBbb2JqZWN0W11dJHJlbGV2YW50DQp9DQoNCiMgLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQ0KIyBEaWZmLUhlbHBlciBmdWVyIFJvbGxlbi1FbmRwb2ludHMgKFNV ICsgRmFjaGF1ZnNpY2h0KS4gTGllZmVydCBNYWlsdG8tDQojIERpZmZzIChyZWluL3JhdXMgYXVz IFZlcmFudHdvcnR1bmcpIHVuZCBIaW53ZWlzLURpZmZzIChSb2xsZW4tVXBkYXRlcw0KIyBvaG5l IFZlcmFudHdvcnR1bmdzLVdlY2hzZWwpIGdldHJlbm50IHp1cnVlY2suDQojIC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0NCg0KZnVuY3Rpb24gX1BlcnNvbk5hbWVGdWVyS2VubnVuZyhbc3RyaW5nXSROd0tl bm51bmcpIHsNCiAgICBpZiAoLW5vdCAkTndLZW5udW5nKSB7IHJldHVybiAnJyB9DQogICAgJGtr ID0gJE53S2VubnVuZy5Ub0xvd2VyKCkNCiAgICAjIEJldm9yenVndDogUGVyc29uZW5kYXRlbiBh dXMgcGxhbnVuZy5qc29uIChpbmtsLiBWb3JuYW1lKS4NCiAgICAkcGwgPSBSZWFkLUpzb25PYmpl Y3QgJ3BsYW51bmcuanNvbicNCiAgICBpZiAoJHBsIC1hbmQgJHBsLnBlcnNvbmVuKSB7DQogICAg ICAgIGZvcmVhY2ggKCRwIGluIEAoJHBsLnBlcnNvbmVuKSkgew0KICAgICAgICAgICAgaWYgKFtz dHJpbmddJHAubndLZW5udW5nIC1hbmQgJHAubndLZW5udW5nLlRvTG93ZXIoKSAtZXEgJGtrKSB7 DQogICAgICAgICAgICAgICAgJHZuID0gJycNCiAgICAgICAgICAgICAgICBpZiAoJHAuUFNPYmpl Y3QuUHJvcGVydGllc1sndm9ybmFtZSddKSB7ICR2biA9IFtzdHJpbmddJHAudm9ybmFtZSB9DQog ICAgICAgICAgICAgICAgcmV0dXJuICgiJHZuICQoJHAubmFtZSkiKS5UcmltKCkNCiAgICAgICAg ICAgIH0NCiAgICAgICAgfQ0KICAgIH0NCiAgICAjIEZhbGxiYWNrOiBSb2xsZS1MaXN0ZW4gaW4g YWRtaW4uanNvbiAoU3VwZXJVc2VyLCBGYWNoYXVmc2ljaHQsDQogICAgIyBEaXJla3Rpb25zbGVp dHVuZywgRnVlaHJ1bmdzc3RlbGxlKS4gU29sY2hlIEVpbnRyYWVnZSBmdWVocmVuIGVpbg0KICAg ICMgZWlnZW5lcyBuYW1lLUZlbGQgdW5kIGtvbW1lbiBvZnQgb2huZSBwbGFudW5nLnBlcnNvbmVu LVBlbmRhbnQgdm9yDQogICAgIyAoei5CLiBTdXBlclVzZXIgb2huZSBTY2hpY2h0ZGllbnN0KS4g T2huZSBkaWVzZW4gRmFsbGJhY2sgZ3J1ZcOfdCBkZXINCiAgICAjIFNlcnZlciBkaWUgUGVyc29u IG1pdCBpaHJlciBOVy1LZW5udW5nIHN0YXR0IG1pdCBpaHJlbSBOYW1lbi4NCiAgICAkYWRtaW4g PSBSZWFkLUpzb25PYmplY3QgJ2FkbWluLmpzb24nDQogICAgaWYgKCRhZG1pbikgew0KICAgICAg ICBmb3JlYWNoICgkZmVsZCBpbiAnc3VwZXJVc2VyJywnZmFjaGF1ZnNpY2h0JywnZGlyZWt0aW9u c2xlaXR1bmcnLCdmdWVocnVuZ3NzdGVsbGUnKSB7DQogICAgICAgICAgICBpZiAoLW5vdCAkYWRt aW4uUFNPYmplY3QuUHJvcGVydGllc1skZmVsZF0pIHsgY29udGludWUgfQ0KICAgICAgICAgICAg Zm9yZWFjaCAoJGUgaW4gQCgkYWRtaW4uJGZlbGQpKSB7DQogICAgICAgICAgICAgICAgaWYgKC1u b3QgJGUpIHsgY29udGludWUgfQ0KICAgICAgICAgICAgICAgIGlmIChbc3RyaW5nXSRlLm53S2Vu bnVuZyAtYW5kICRlLm53S2VubnVuZy5Ub0xvd2VyKCkgLWVxICRraykgew0KICAgICAgICAgICAg ICAgICAgICBpZiAoJGUuUFNPYmplY3QuUHJvcGVydGllc1snbmFtZSddIC1hbmQgJGUubmFtZSkg ew0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFtzdHJpbmddJGUubmFtZQ0KICAgICAg ICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAg ICB9DQogICAgfQ0KICAgIHJldHVybiAnJw0KfQ0KDQojIEdlbmVyaXNjaGVyIERpZmYgZnVlciBy ZWluZSAiTGlzdGUgbWl0IG53S2VubnVuZyItRW5kcG9pbnRzIChTdXBlclVzZXIpLg0KIyBMaWVm ZXJ0IGVpbiBBcnJheSB2b24gbWFpbHRvLURpZmYtT2JqZWt0ZW46IHJlaW4vcmF1cywgamV3ZWls cyBtaXQgTmFtZS4NCmZ1bmN0aW9uIEdldC1Sb2xsZURpZmZzKCRhbHRMaXN0ZSwgJG5ldUxpc3Rl LCBbc3RyaW5nXSRSb2xsZUxhYmVsLCBbYm9vbF0kTnVyTWl0R2VzYW10RmxhZykgew0KICAgICRh bHRTZXQgPSBAe30NCiAgICBmb3JlYWNoICgkZSBpbiBAKCRhbHRMaXN0ZSkpIHsNCiAgICAgICAg aWYgKCRlIC1hbmQgJGUubndLZW5udW5nKSB7ICRhbHRTZXRbW3N0cmluZ10kZS5ud0tlbm51bmcu VG9Mb3dlcigpXSA9ICRlIH0NCiAgICB9DQogICAgJG5ldVNldCA9IEB7fQ0KICAgIGZvcmVhY2gg KCRlIGluIEAoJG5ldUxpc3RlKSkgew0KICAgICAgICBpZiAoJGUgLWFuZCAkZS5ud0tlbm51bmcp IHsgJG5ldVNldFtbc3RyaW5nXSRlLm53S2VubnVuZy5Ub0xvd2VyKCldID0gJGUgfQ0KICAgIH0N CiAgICAkZGlmZnMgPSBAKCkNCiAgICBmb3JlYWNoICgkayBpbiAkbmV1U2V0LktleXMpIHsNCiAg ICAgICAgaWYgKC1ub3QgJGFsdFNldC5Db250YWluc0tleSgkaykpIHsNCiAgICAgICAgICAgICRl ID0gJG5ldVNldFska10NCiAgICAgICAgICAgIGlmICgkTnVyTWl0R2VzYW10RmxhZyAtYW5kIC1u b3QgKFtib29sXSRlLmdlc2FtdHZlcmFudHdvcnRsaWNoKSkgeyBjb250aW51ZSB9DQogICAgICAg ICAgICAkZGlmZnMgKz0gW29yZGVyZWRdQHsNCiAgICAgICAgICAgICAgICByaWNodHVuZyAgID0g J3JlaW4nDQogICAgICAgICAgICAgICAgcm9sbGUgICAgICA9ICRSb2xsZUxhYmVsDQogICAgICAg ICAgICAgICAgbndLZW5udW5nICA9IFtzdHJpbmddJGUubndLZW5udW5nDQogICAgICAgICAgICAg ICAgbmFtZSAgICAgICA9IF9QZXJzb25OYW1lRnVlcktlbm51bmcoW3N0cmluZ10kZS5ud0tlbm51 bmcpDQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICB9DQogICAgZm9yZWFjaCAoJGsgaW4g JGFsdFNldC5LZXlzKSB7DQogICAgICAgIGlmICgtbm90ICRuZXVTZXQuQ29udGFpbnNLZXkoJGsp KSB7DQogICAgICAgICAgICAkZSA9ICRhbHRTZXRbJGtdDQogICAgICAgICAgICBpZiAoJE51ck1p dEdlc2FtdEZsYWcgLWFuZCAtbm90IChbYm9vbF0kZS5nZXNhbXR2ZXJhbnR3b3J0bGljaCkpIHsg Y29udGludWUgfQ0KICAgICAgICAgICAgJGRpZmZzICs9IFtvcmRlcmVkXUB7DQogICAgICAgICAg ICAgICAgcmljaHR1bmcgICA9ICdyYXVzJw0KICAgICAgICAgICAgICAgIHJvbGxlICAgICAgPSAk Um9sbGVMYWJlbA0KICAgICAgICAgICAgICAgIG53S2VubnVuZyAgPSBbc3RyaW5nXSRlLm53S2Vu bnVuZw0KICAgICAgICAgICAgICAgIG5hbWUgICAgICAgPSBfUGVyc29uTmFtZUZ1ZXJLZW5udW5n KFtzdHJpbmddJGUubndLZW5udW5nKQ0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgfQ0K ICAgIHJldHVybiBbb2JqZWN0W11dJGRpZmZzDQp9DQoNCiMgRmFjaGF1ZnNpY2h0LURpZmY6IHRy ZW5udCBtYWlsdG8td3VlcmRpZ2UgVmVyYW50d29ydHVuZ3MtVWViZXJnYWVuZ2UNCiMgKEdlc2Ft dHZlcmFudHdvcnRsaWNoLVN0YXR1cy1XZWNoc2VsKSB2b24gSW4tQXBwLUhpbndlaXNlbiAoRkEg aGluenUvDQojIGVudGZlcm50IG9obmUgR2VzYW10ZmxhZywgb2RlciBTZWhlbi1GbGFnLURpZmYp Lg0KZnVuY3Rpb24gR2V0LUZhY2hhdWZzaWNodERpZmZzKCRhbHRMaXN0ZSwgJG5ldUxpc3RlKSB7 DQogICAgJGFsdE1hcCA9IEB7fQ0KICAgIGZvcmVhY2ggKCRlIGluIEAoJGFsdExpc3RlKSkgew0K ICAgICAgICBpZiAoJGUgLWFuZCAkZS5ud0tlbm51bmcpIHsgJGFsdE1hcFtbc3RyaW5nXSRlLm53 S2VubnVuZy5Ub0xvd2VyKCldID0gJGUgfQ0KICAgIH0NCiAgICAkbmV1TWFwID0gQHt9DQogICAg Zm9yZWFjaCAoJGUgaW4gQCgkbmV1TGlzdGUpKSB7DQogICAgICAgIGlmICgkZSAtYW5kICRlLm53 S2VubnVuZykgeyAkbmV1TWFwW1tzdHJpbmddJGUubndLZW5udW5nLlRvTG93ZXIoKV0gPSAkZSB9 DQogICAgfQ0KICAgICRtYWlsdG8gID0gQCgpDQogICAgJGhpbndlaXMgPSBAKCkNCiAgICAjIFZl cmVpbmlndGUgS2VubnVuZ3MtTWVuZ2UNCiAgICAkYWxsZUtleXMgPSBAe30NCiAgICBmb3JlYWNo ICgkayBpbiAkYWx0TWFwLktleXMpIHsgJGFsbGVLZXlzWyRrXSA9ICR0cnVlIH0NCiAgICBmb3Jl YWNoICgkayBpbiAkbmV1TWFwLktleXMpIHsgJGFsbGVLZXlzWyRrXSA9ICR0cnVlIH0NCiAgICBm b3JlYWNoICgkayBpbiAkYWxsZUtleXMuS2V5cykgew0KICAgICAgICAkYSA9ICRhbHRNYXBbJGtd DQogICAgICAgICRuID0gJG5ldU1hcFska10NCiAgICAgICAgJGFsdEdlc2FtdCA9ICRmYWxzZTsg aWYgKCRhIC1hbmQgJGEuUFNPYmplY3QuUHJvcGVydGllc1snZ2VzYW10dmVyYW50d29ydGxpY2gn XSkgeyAkYWx0R2VzYW10ID0gW2Jvb2xdJGEuZ2VzYW10dmVyYW50d29ydGxpY2ggfQ0KICAgICAg ICAkbmV1R2VzYW10ID0gJGZhbHNlOyBpZiAoJG4gLWFuZCAkbi5QU09iamVjdC5Qcm9wZXJ0aWVz WydnZXNhbXR2ZXJhbnR3b3J0bGljaCddKSB7ICRuZXVHZXNhbXQgPSBbYm9vbF0kbi5nZXNhbXR2 ZXJhbnR3b3J0bGljaCB9DQogICAgICAgICRuYW1lID0gX1BlcnNvbk5hbWVGdWVyS2VubnVuZygk aykNCiAgICAgICAgJG53SyAgPSBpZiAoJG4pIHsgW3N0cmluZ10kbi5ud0tlbm51bmcgfSBlbHNl aWYgKCRhKSB7IFtzdHJpbmddJGEubndLZW5udW5nIH0gZWxzZSB7ICcnIH0NCg0KICAgICAgICAj IEdlc2FtdHZlcmFudHdvcnRsaWNoLVN0YXR1cy1XZWNoc2VsIC0+IG1haWx0bw0KICAgICAgICBp ZiAoJGFsdEdlc2FtdCAtbmUgJG5ldUdlc2FtdCkgew0KICAgICAgICAgICAgJHJpY2h0dW5nID0g aWYgKCRuZXVHZXNhbXQpIHsgJ3JlaW4nIH0gZWxzZSB7ICdyYXVzJyB9DQogICAgICAgICAgICAk bWFpbHRvICs9IFtvcmRlcmVkXUB7DQogICAgICAgICAgICAgICAgcmljaHR1bmcgID0gJHJpY2h0 dW5nDQogICAgICAgICAgICAgICAgcm9sbGUgICAgID0gJ0dlc2FtdHZlcmFudHdvcnRsaWNoJw0K ICAgICAgICAgICAgICAgIG53S2VubnVuZyA9ICRud0sNCiAgICAgICAgICAgICAgICBuYW1lICAg ICAgPSAkbmFtZQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgY29udGludWUNCiAgICAgICAg fQ0KDQogICAgICAgICMgR2xlaWNoZXIgR2VzYW10LVN0YXR1cywgYWJlciBFaW50cmFnIHJlaW4v cmF1cyAtPiBIaW53ZWlzICJGYWNoYXVmc2ljaHQiDQogICAgICAgIGlmICgkYSAtYW5kIC1ub3Qg JG4pIHsNCiAgICAgICAgICAgICRoaW53ZWlzICs9IFtvcmRlcmVkXUB7DQogICAgICAgICAgICAg ICAgcmljaHR1bmcgICAgPSAncmF1cycNCiAgICAgICAgICAgICAgICByb2xsZSAgICAgICA9ICdG YWNoYXVmc2ljaHQnDQogICAgICAgICAgICAgICAgbndLZW5udW5nICAgPSAkbndLDQogICAgICAg ICAgICAgICAgcGVyc29uX25hbWUgPSAkbmFtZQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAg Y29udGludWUNCiAgICAgICAgfQ0KICAgICAgICBpZiAoJG4gLWFuZCAtbm90ICRhKSB7DQogICAg ICAgICAgICAkaGlud2VpcyArPSBbb3JkZXJlZF1Aew0KICAgICAgICAgICAgICAgIHJpY2h0dW5n ICAgID0gJ3JlaW4nDQogICAgICAgICAgICAgICAgcm9sbGUgICAgICAgPSAnRmFjaGF1ZnNpY2h0 Jw0KICAgICAgICAgICAgICAgIG53S2VubnVuZyAgID0gJG53Sw0KICAgICAgICAgICAgICAgIHBl cnNvbl9uYW1lID0gJG5hbWUNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGNvbnRpbnVlDQog ICAgICAgIH0NCg0KICAgICAgICAjIEJlaWRlIGV4aXN0aWVyZW4sIGdsZWljaGVyIEdlc2FtdC1T dGF0dXM6IFNlaGVuLUZsYWdzIHZlcmdsZWljaGVuDQogICAgICAgICRzZWhlbkRpZmYgPSBAKCkN CiAgICAgICAgJGFsdFNlaGVuID0gaWYgKCRhLlBTT2JqZWN0LlByb3BlcnRpZXNbJ3NlaGVuJ10p IHsgJGEuc2VoZW4gfSBlbHNlIHsgJG51bGwgfQ0KICAgICAgICAkbmV1U2VoZW4gPSBpZiAoJG4u UFNPYmplY3QuUHJvcGVydGllc1snc2VoZW4nXSkgeyAkbi5zZWhlbiB9IGVsc2UgeyAkbnVsbCB9 DQogICAgICAgIGZvcmVhY2ggKCRmbGFnIGluIEAoJ2FkbWluaXN0cmF0aW9uJywnc3RhdGlzdGlr JywnbG9nYnVjaCcsJ2JhY2t1cHMnKSkgew0KICAgICAgICAgICAgJGF2ID0gJGZhbHNlOyBpZiAo JGFsdFNlaGVuIC1hbmQgJGFsdFNlaGVuLlBTT2JqZWN0LlByb3BlcnRpZXNbJGZsYWddKSB7ICRh diA9IFtib29sXSRhbHRTZWhlbi4kZmxhZyB9DQogICAgICAgICAgICAkbnYgPSAkZmFsc2U7IGlm ICgkbmV1U2VoZW4gLWFuZCAkbmV1U2VoZW4uUFNPYmplY3QuUHJvcGVydGllc1skZmxhZ10pIHsg JG52ID0gW2Jvb2xdJG5ldVNlaGVuLiRmbGFnIH0NCiAgICAgICAgICAgIGlmICgkYXYgLW5lICRu dikgeyAkc2VoZW5EaWZmICs9ICIkZmxhZyA6ICRhdiAtPiAkbnYiIH0NCiAgICAgICAgfQ0KICAg ICAgICBpZiAoJHNlaGVuRGlmZi5Db3VudCAtZ3QgMCkgew0KICAgICAgICAgICAgJGhpbndlaXMg Kz0gW29yZGVyZWRdQHsNCiAgICAgICAgICAgICAgICByaWNodHVuZyAgICA9ICdha3R1YWxpc2ll cnQnDQogICAgICAgICAgICAgICAgcm9sbGUgICAgICAgPSAnRmFjaGF1ZnNpY2h0LVJlY2h0ZScN CiAgICAgICAgICAgICAgICBud0tlbm51bmcgICA9ICRud0sNCiAgICAgICAgICAgICAgICBwZXJz b25fbmFtZSA9ICRuYW1lDQogICAgICAgICAgICAgICAgYWVuZGVydW5nZW4gPSAoJHNlaGVuRGlm ZiAtam9pbiAnOyAnKQ0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgfQ0KICAgIHJldHVy biBAeyBtYWlsdG9EaWZmcyA9IFtvYmplY3RbXV0kbWFpbHRvOyBoaW53ZWlzRGlmZnMgPSBbb2Jq ZWN0W11dJGhpbndlaXMgfQ0KfQ0KDQojID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCiMgU3RhdGlzdGlr LUJ1aWxkZXIgKEhlbHBlcikgLS0gbGllZmVydCBkYXMgUGVyLVBlcnNvbi1TdGF0aXN0aWstQXJy YXkuDQojIEhhdCBrZWluZW4gUmVzcG9uc2UtU2lkZS1FZmZlY3Q7IENhbGxlciBzZW5kIEpzb25P YmplY3QuDQojID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCmZ1bmN0aW9uIEdldC1TdGF0aXN0aWtEYXRh KCRwbGFudW5nLCAkYWRtaW4pIHsNCiAgICBpZiAoJG51bGwgLWVxICRwbGFudW5nKSB7IHJldHVy biBAKCkgfQ0KICAgICMgSGFzaHRhYmxlIHN0YXR0IEdlbmVyaWMgSGFzaFNldCAoQ0xNLXNpY2hl cikNCiAgICAkZmVpZXJ0YWdlID0gQHt9DQogICAgaWYgKCRhZG1pbiAtYW5kICRhZG1pbi5mZWll cnRhZ2UpIHsNCiAgICAgICAgZm9yZWFjaCAoJGYgaW4gQCgkYWRtaW4uZmVpZXJ0YWdlKSkgew0K ICAgICAgICAgICAgJGQgPSBbc3RyaW5nXSRmLmRhdHVtDQogICAgICAgICAgICAjIGFrdGl2PWZh bHNlIHVlYmVyc3ByaW5nZW4gKHouQi4gZnVlciBrdWx0dXJlbGxlL3JlbGlnaW9lc2UgRmVpZXIt DQogICAgICAgICAgICAjIHRhZ2UsIGRpZSBkZXIgVXNlciBwZXIgVG9nZ2xlIGF1c2dlYmxlbmRl dCBoYXQpLiBGZWhsZW5kZXMgYWt0aXYtDQogICAgICAgICAgICAjIEZlbGQgPT0gYWt0aXYgKEJh Y2t3YXJkcy1Db21wYXQpLg0KICAgICAgICAgICAgJGFrdGl2ID0gJHRydWUNCiAgICAgICAgICAg IGlmICgkZi5QU09iamVjdC5Qcm9wZXJ0aWVzWydha3RpdiddKSB7ICRha3RpdiA9IFtib29sXSRm LmFrdGl2IH0NCiAgICAgICAgICAgIGlmICgkZCAtYW5kICRha3RpdikgeyAkZmVpZXJ0YWdlWyRk XSA9ICR0cnVlIH0NCiAgICAgICAgfQ0KICAgIH0NCiAgICAjIFplaXRyYXVtLUN1dDogbnVyIHJl YWxpc2llcnRlICsgbmFlY2hzdGUgMTQgVGFnZSB6YWVobGVuLg0KICAgICRqYWhyUGxhbnVuZyA9 ICRudWxsDQogICAgaWYgKCRhZG1pbiAtYW5kICRhZG1pbi5QU09iamVjdC5Qcm9wZXJ0aWVzWydq YWhyJ10pIHsgJGphaHJQbGFudW5nID0gJGFkbWluLmphaHIgfQ0KICAgIGlmICgtbm90ICRqYWhy UGxhbnVuZykgeyAkamFoclBsYW51bmcgPSAoR2V0LURhdGUpLlllYXIgfQ0KICAgICRjdXRTdGFy dCA9ICgnezB9LTAxLTAxJyAtZiAkamFoclBsYW51bmcpDQogICAgJGN1dEVuZGUgID0gKEdldC1E YXRlKS5BZGREYXlzKDE0KS5Ub1N0cmluZygneXl5eS1NTS1kZCcpDQogICAgIyBTT0xMLVBvb2w6 IEFuemFobCBTYStTby1UYWdlIGltIEN1dCwgZGllIEtFSU4gRmVpZXJ0YWcgc2luZC4NCiAgICAk d2VUYWdlTWF4ID0gMA0KICAgICRfZCA9IFtkYXRldGltZV06OlBhcnNlRXhhY3QoJGN1dFN0YXJ0 LCAneXl5eS1NTS1kZCcsICRudWxsKQ0KICAgICRfZSA9IFtkYXRldGltZV06OlBhcnNlRXhhY3Qo JGN1dEVuZGUsICAneXl5eS1NTS1kZCcsICRudWxsKQ0KICAgIHdoaWxlICgkX2QgLWxlICRfZSkg ew0KICAgICAgICBpZiAoKCRfZC5EYXlPZldlZWsgLWVxICdTYXR1cmRheScgLW9yICRfZC5EYXlP ZldlZWsgLWVxICdTdW5kYXknKSAtYW5kIC1ub3QgJGZlaWVydGFnZS5Db250YWluc0tleSgkX2Qu VG9TdHJpbmcoJ3l5eXktTU0tZGQnKSkpIHsNCiAgICAgICAgICAgICR3ZVRhZ2VNYXgrKw0KICAg ICAgICB9DQogICAgICAgICRfZCA9ICRfZC5BZGREYXlzKDEpDQogICAgfQ0KICAgICRzdGF0aXN0 aWtlbiA9IE5ldy1PYmplY3QgJ1N5c3RlbS5Db2xsZWN0aW9ucy5BcnJheUxpc3QnDQogICAgJHBl cnNvbmVuID0gQCgpDQogICAgaWYgKCRwbGFudW5nLnBlcnNvbmVuKSB7ICRwZXJzb25lbiA9IEAo JHBsYW51bmcucGVyc29uZW4pIH0NCiAgICAkZGF0ZW5Tb3J0aWVydCA9IEAoKQ0KICAgIGlmICgk cGxhbnVuZy5laW50cmFlZ2UpIHsNCiAgICAgICAgJGRhdGVuU29ydGllcnQgPSBAKCRwbGFudW5n LmVpbnRyYWVnZS5QU09iamVjdC5Qcm9wZXJ0aWVzIHwgRm9yRWFjaC1PYmplY3QgeyAkXy5OYW1l IH0gfCBTb3J0LU9iamVjdCkNCiAgICB9DQogICAgZm9yZWFjaCAoJHBlcnNvbiBpbiAkcGVyc29u ZW4pIHsNCiAgICAgICAgaWYgKCRwZXJzb24uUFNPYmplY3QuUHJvcGVydGllc1snYWt0aXYnXSAt YW5kIC1ub3QgJHBlcnNvbi5ha3RpdikgeyBjb250aW51ZSB9DQogICAgICAgICRwZXJzb25JZCA9 IFtzdHJpbmddJHBlcnNvbi5pZA0KICAgICAgICAkdm9ybmFtZVR4dCA9ICcnDQogICAgICAgIGlm ICgkcGVyc29uLlBTT2JqZWN0LlByb3BlcnRpZXNbJ3Zvcm5hbWUnXSkgeyAkdm9ybmFtZVR4dCA9 IFtzdHJpbmddJHBlcnNvbi52b3JuYW1lIH0NCiAgICAgICAgJGdydXBwZVR4dCA9ICcnDQogICAg ICAgIGlmICgkcGVyc29uLlBTT2JqZWN0LlByb3BlcnRpZXNbJ2dydXBwZSddKSB7ICRncnVwcGVU eHQgPSBbc3RyaW5nXSRwZXJzb24uZ3J1cHBlIH0NCiAgICAgICAgJGRncmFkVHh0ID0gJycNCiAg ICAgICAgaWYgKCRwZXJzb24uUFNPYmplY3QuUHJvcGVydGllc1snZGllbnN0Z3JhZCddKSB7ICRk Z3JhZFR4dCA9IFtzdHJpbmddJHBlcnNvbi5kaWVuc3RncmFkIH0NCiAgICAgICAgJGZ1bmtUeHQg ID0gJycNCiAgICAgICAgaWYgKCRwZXJzb24uUFNPYmplY3QuUHJvcGVydGllc1snZnVua3Rpb24n XSkgICB7ICRmdW5rVHh0ICA9IFtzdHJpbmddJHBlcnNvbi5mdW5rdGlvbiB9DQogICAgICAgICRz dGF0cyA9IFtvcmRlcmVkXUB7DQogICAgICAgICAgICBwZXJzb25JZCAgICAgICAgPSAkcGVyc29u LmlkDQogICAgICAgICAgICBuYW1lICAgICAgICAgICAgPSAoJ3swfSwgezF9JyAtZiAkcGVyc29u Lm5hbWUsICR2b3JuYW1lVHh0KQ0KICAgICAgICAgICAgZGllbnN0Z3JhZCAgICAgID0gJGRncmFk VHh0DQogICAgICAgICAgICBmdW5rdGlvbiAgICAgICAgPSAkZnVua1R4dA0KICAgICAgICAgICAg Z3J1cHBlICAgICAgICAgID0gJGdydXBwZVR4dA0KICAgICAgICAgICAgZnJ1ZWggICAgICAgICAg ID0gMDsgc3BhZXQgPSAwOyBuYWNodCA9IDA7IGdlc2FtdCA9IDANCiAgICAgICAgICAgIGRnbCAg ICAgICAgICAgICA9IDA7IHdkZiA9IDA7IGZicCA9IDA7IHNvbmRlcmRpZW5zdCA9IDANCiAgICAg ICAgICAgIGtyYW5rICAgICAgICAgICA9IDA7IGt1ciA9IDA7IHVybGF1YiA9IDA7IGxlaHJnYW5n ID0gMDsgYXpBdXNnbGVpY2ggPSAwOyBzb25kZXJ1cmxhdWIgPSAwDQogICAgICAgICAgICB3b2No ZW5lbmRUYWdlICAgPSAwOyBmZWllcnRhZ1RhZ2UgPSAwOyB2b3JGZWllcnRhZ1RhZ2UgPSAwDQog ICAgICAgICAgICBzYW1zdGFnRGllbnN0ZSAgPSAwOyBzb25udGFnRGllbnN0ZSA9IDA7IGZlaWVy dGFnRGllbnN0ZSA9IDANCiAgICAgICAgICAgIGtvbXBsZXR0ZVdFICAgICA9IDANCiAgICAgICAg ICAgIHdlVGFnZU1heCAgICAgICA9ICR3ZVRhZ2VNYXgNCiAgICAgICAgICAgIHdlVGFnZUFid2Vz ZW5kICA9IDANCiAgICAgICAgICAgIHdlVGFnZVZlcmZ1ZWdiYXIgPSAwDQogICAgICAgICAgICBm b3J0YmlsZHVuZyAgICAgPSAwDQogICAgICAgICAgICBkaWVuc3R1bnRlcnJpY2h0ID0gMA0KICAg ICAgICAgICAgbGVocmdhbmdMYW5nICAgID0gMA0KICAgICAgICAgICAgd2FjaGZyZWkgICAgICAg ID0gMA0KICAgICAgICAgICAgZGllbnN0ZnJlaVRhZyAgID0gMA0KICAgICAgICAgICAgcGFyYWdy YXBoMjEgICAgID0gMA0KICAgICAgICAgICAgYXpBdXNnbGVpY2hSZWluID0gMA0KICAgICAgICAg ICAgZWluZ2VzcHJ1bmdlbiAgID0gMA0KICAgICAgICAgICAgZWluZ2VzcHJ1bmdlbl9mID0gMA0K ICAgICAgICAgICAgZWluZ2VzcHJ1bmdlbl9zID0gMA0KICAgICAgICAgICAgZWluZ2VzcHJ1bmdl bl9uID0gMA0KICAgICAgICAgICAga3JhbmtQZXJpb2RlbiAgID0gTmV3LU9iamVjdCAnU3lzdGVt LkNvbGxlY3Rpb25zLkFycmF5TGlzdCcNCiAgICAgICAgfQ0KICAgICAgICAka3JhbmtTdGFydCA9 ICRudWxsDQogICAgICAgICRsZXR6dGVyS3JhbmtUYWcgPSAkbnVsbA0KICAgICAgICAkd2VEaWVu c3RQcm9Xb2NoZSA9IEB7fQ0KICAgICAgICBmb3JlYWNoICgkZGF0dW0gaW4gJGRhdGVuU29ydGll cnQpIHsNCiAgICAgICAgICAgIGlmICgkZGF0dW0gLWx0ICRjdXRTdGFydCAtb3IgJGRhdHVtIC1n dCAkY3V0RW5kZSkgew0KICAgICAgICAgICAgICAgIGlmICgka3JhbmtTdGFydCkgew0KICAgICAg ICAgICAgICAgICAgICBbdm9pZF0kc3RhdHMua3JhbmtQZXJpb2Rlbi5BZGQoW29yZGVyZWRdQHsg dm9uID0gJGtyYW5rU3RhcnQ7IGJpcyA9ICRsZXR6dGVyS3JhbmtUYWcgfSkNCiAgICAgICAgICAg ICAgICAgICAgJGtyYW5rU3RhcnQgPSAkbnVsbA0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAg ICAgICAgICBjb250aW51ZQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgJGVpbnRyYWcgPSAk cGxhbnVuZy5laW50cmFlZ2UuJGRhdHVtDQogICAgICAgICAgICAkd2VydCA9ICRudWxsDQogICAg ICAgICAgICBpZiAoJGVpbnRyYWcgLWFuZCAkZWludHJhZy5QU09iamVjdC5Qcm9wZXJ0aWVzWyRw ZXJzb25JZF0pIHsgJHdlcnQgPSBbc3RyaW5nXSRlaW50cmFnLiRwZXJzb25JZCB9DQogICAgICAg ICAgICBpZiAoJG51bGwgLWVxICR3ZXJ0IC1vciAkd2VydCAtZXEgJycpIHsNCiAgICAgICAgICAg ICAgICBpZiAoJGtyYW5rU3RhcnQpIHsNCiAgICAgICAgICAgICAgICAgICAgW3ZvaWRdJHN0YXRz LmtyYW5rUGVyaW9kZW4uQWRkKFtvcmRlcmVkXUB7IHZvbiA9ICRrcmFua1N0YXJ0OyBiaXMgPSAk bGV0enRlcktyYW5rVGFnIH0pDQogICAgICAgICAgICAgICAgICAgICRrcmFua1N0YXJ0ID0gJG51 bGwNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgY29udGludWUNCiAgICAgICAg ICAgIH0NCiAgICAgICAgICAgIHRyeSB7ICRkYXR1bU9iaiA9IFtkYXRldGltZV06OlBhcnNlRXhh Y3QoJGRhdHVtLCAneXl5eS1NTS1kZCcsICRudWxsKSB9IGNhdGNoIHsgY29udGludWUgfQ0KICAg ICAgICAgICAgJGlzdFdFICAgICAgPSAkZGF0dW1PYmouRGF5T2ZXZWVrIC1lcSAnU2F0dXJkYXkn IC1vciAkZGF0dW1PYmouRGF5T2ZXZWVrIC1lcSAnU3VuZGF5Jw0KICAgICAgICAgICAgJGlzdEZl aWVyICAgPSAkZmVpZXJ0YWdlLkNvbnRhaW5zS2V5KCRkYXR1bSkNCiAgICAgICAgICAgICRtb3Jn ZW4gICAgID0gJGRhdHVtT2JqLkFkZERheXMoMSkuVG9TdHJpbmcoJ3l5eXktTU0tZGQnKQ0KICAg ICAgICAgICAgJGlzdFZvckZlaWVyID0gJGZlaWVydGFnZS5Db250YWluc0tleSgkbW9yZ2VuKQ0K ICAgICAgICAgICAgJHplaXRQcmVmaXggPSAnJw0KICAgICAgICAgICAgaWYgKCR3ZXJ0Lkxlbmd0 aCAtZ2UgMiAtYW5kICR3ZXJ0LlN1YnN0cmluZygxLDEpIC1lcSAnLScpIHsgJHplaXRQcmVmaXgg PSAkd2VydC5TdWJzdHJpbmcoMCwyKSB9DQogICAgICAgICAgICAkaXN0RGllbnN0ID0gJGZhbHNl DQogICAgICAgICAgICBzd2l0Y2ggKCR6ZWl0UHJlZml4KSB7DQogICAgICAgICAgICAgICAgJ0Yt JyB7ICRzdGF0cy5mcnVlaCsrOyAkc3RhdHMuZ2VzYW10Kys7ICRpc3REaWVuc3QgPSAkdHJ1ZSB9 DQogICAgICAgICAgICAgICAgJ1MtJyB7ICRzdGF0cy5zcGFldCsrOyAkc3RhdHMuZ2VzYW10Kys7 ICRpc3REaWVuc3QgPSAkdHJ1ZSB9DQogICAgICAgICAgICAgICAgJ04tJyB7ICRzdGF0cy5uYWNo dCsrOyAkc3RhdHMuZ2VzYW10Kys7ICRpc3REaWVuc3QgPSAkdHJ1ZSB9DQogICAgICAgICAgICB9 DQogICAgICAgICAgICBpZiAoLW5vdCAkaXN0RGllbnN0IC1hbmQgKCR3ZXJ0IC1lcSAnU0QnIC1v ciAkd2VydCAtZXEgJ1NFJykpIHsNCiAgICAgICAgICAgICAgICAkc3RhdHMuc29uZGVyZGllbnN0 Kys7ICRzdGF0cy5nZXNhbXQrKzsgJGlzdERpZW5zdCA9ICR0cnVlDQogICAgICAgICAgICB9DQog ICAgICAgICAgICBpZiAoJHplaXRQcmVmaXggLWluIEAoJ0YtJywnUy0nLCdOLScpIC1hbmQgJHdl cnQuTGVuZ3RoIC1nZSA1KSB7DQogICAgICAgICAgICAgICAgJHJvbGxlID0gJHdlcnQuU3Vic3Ry aW5nKDIsMykNCiAgICAgICAgICAgICAgICBpZiAoJHJvbGxlIC1lcSAnREdMJykgeyAkc3RhdHMu ZGdsKysgfQ0KICAgICAgICAgICAgICAgIGVsc2VpZiAoJHJvbGxlIC1lcSAnV0RGJykgeyAkc3Rh dHMud2RmKysgfQ0KICAgICAgICAgICAgICAgIGVsc2VpZiAoJHJvbGxlIC1lcSAnRkJQJykgeyAk c3RhdHMuZmJwKysgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgaWYgKCR3ZXJ0IC1lcSAn a3InKSB7DQogICAgICAgICAgICAgICAgJHN0YXRzLmtyYW5rKysNCiAgICAgICAgICAgICAgICAk bGV0enRlcktyYW5rVGFnID0gJGRhdHVtDQogICAgICAgICAgICAgICAgaWYgKC1ub3QgJGtyYW5r U3RhcnQpIHsgJGtyYW5rU3RhcnQgPSAkZGF0dW0gfQ0KICAgICAgICAgICAgfSBlbHNlIHsNCiAg ICAgICAgICAgICAgICBpZiAoJGtyYW5rU3RhcnQpIHsNCiAgICAgICAgICAgICAgICAgICAgW3Zv aWRdJHN0YXRzLmtyYW5rUGVyaW9kZW4uQWRkKFtvcmRlcmVkXUB7IHZvbiA9ICRrcmFua1N0YXJ0 OyBiaXMgPSAkbGV0enRlcktyYW5rVGFnIH0pDQogICAgICAgICAgICAgICAgICAgICRrcmFua1N0 YXJ0ID0gJG51bGwNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgICAg ICBpZiAoJHdlcnQgLWVxICdLdXInKSB7ICRzdGF0cy5rdXIrKyB9DQogICAgICAgICAgICBpZiAo JHdlcnQgLWVxICdVcmwnKSB7ICRzdGF0cy51cmxhdWIrKyB9DQogICAgICAgICAgICBpZiAoJHdl cnQgLWVxICdTVScpICB7ICRzdGF0cy5zb25kZXJ1cmxhdWIrKyB9DQogICAgICAgICAgICBpZiAo JHdlcnQgLWluIEAoJ0xHJywnVFQnLCdBdUYnLCdGQicsJ1NlbScsJ0VUTScsJ0RVJykpIHsgJHN0 YXRzLmxlaHJnYW5nKysgfQ0KICAgICAgICAgICAgaWYgKCR3ZXJ0IC1pbiBAKCfCpzIxJywnMjFh JywnQVpBJykpIHsgJHN0YXRzLmF6QXVzZ2xlaWNoKysgfQ0KICAgICAgICAgICAgaWYgKCR3ZXJ0 IC1pbiBAKCdBdUYnLCdFVE0nLCdTZW0nLCdUVCcsJ1R6RicpKSB7ICRzdGF0cy5mb3J0YmlsZHVu ZysrIH0NCiAgICAgICAgICAgIGlmICgkd2VydCAtZXEgJ0RVJykgICB7ICRzdGF0cy5kaWVuc3R1 bnRlcnJpY2h0KysgfQ0KICAgICAgICAgICAgaWYgKCR3ZXJ0IC1lcSAnTEcnKSAgIHsgJHN0YXRz LmxlaHJnYW5nTGFuZysrIH0NCiAgICAgICAgICAgIGlmICgkd2VydCAtaW4gQCgnwqcyMScsJzIx YScpKSB7ICRzdGF0cy5wYXJhZ3JhcGgyMSsrIH0NCiAgICAgICAgICAgIGlmICgkd2VydCAtZXEg J0FaQScpICB7ICRzdGF0cy5hekF1c2dsZWljaFJlaW4rKyB9DQogICAgICAgICAgICBpZiAoJHdl cnQgLWVxICd3ZnInKSAgeyAkc3RhdHMud2FjaGZyZWkrKyB9DQogICAgICAgICAgICBpZiAoJHdl cnQgLWVxICdkZnInKSAgeyAkc3RhdHMuZGllbnN0ZnJlaVRhZysrIH0NCiAgICAgICAgICAgIGlm ICgkaXN0V0UgLWFuZCAkaXN0RGllbnN0KSAgICAgICB7ICRzdGF0cy53b2NoZW5lbmRUYWdlKysg fQ0KICAgICAgICAgICAgaWYgKCRpc3RGZWllciAtYW5kICRpc3REaWVuc3QpICAgIHsgJHN0YXRz LmZlaWVydGFnVGFnZSsrIH0NCiAgICAgICAgICAgIGlmICgkaXN0Vm9yRmVpZXIgLWFuZCAkaXN0 RGllbnN0KSB7ICRzdGF0cy52b3JGZWllcnRhZ1RhZ2UrKyB9DQogICAgICAgICAgICBpZiAoJGlz dERpZW5zdCkgew0KICAgICAgICAgICAgICAgIGlmICgkaXN0RmVpZXIpIHsNCiAgICAgICAgICAg ICAgICAgICAgJHN0YXRzLmZlaWVydGFnRGllbnN0ZSsrDQogICAgICAgICAgICAgICAgfSBlbHNl aWYgKCRkYXR1bU9iai5EYXlPZldlZWsgLWVxICdTYXR1cmRheScpIHsNCiAgICAgICAgICAgICAg ICAgICAgJHN0YXRzLnNhbXN0YWdEaWVuc3RlKysNCiAgICAgICAgICAgICAgICB9IGVsc2VpZiAo JGRhdHVtT2JqLkRheU9mV2VlayAtZXEgJ1N1bmRheScpIHsNCiAgICAgICAgICAgICAgICAgICAg JHN0YXRzLnNvbm50YWdEaWVuc3RlKysNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9 DQogICAgICAgICAgICBpZiAoKCRkYXR1bU9iai5EYXlPZldlZWsgLWVxICdTYXR1cmRheScgLW9y ICRkYXR1bU9iai5EYXlPZldlZWsgLWVxICdTdW5kYXknKSAtYW5kIC1ub3QgJGlzdEZlaWVyIC1h bmQgJHdlcnQgLWluIEAoJ1VybCcsJ2tyJywnS3VyJywnU1UnLCdMRycsJ0F1RicsJ0VUTScsJ1Nl bScsJ1RUJywnVHpGJywnRFUnLCdCVicsJ2FiZycsJ0JBTycsJ0hPJykpIHsNCiAgICAgICAgICAg ICAgICAkc3RhdHMud2VUYWdlQWJ3ZXNlbmQrKw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAg aWYgKCRpc3REaWVuc3QgLWFuZCAoJGRhdHVtT2JqLkRheU9mV2VlayAtZXEgJ1NhdHVyZGF5JyAt b3IgJGRhdHVtT2JqLkRheU9mV2VlayAtZXEgJ1N1bmRheScpKSB7DQogICAgICAgICAgICAgICAg aWYgKCRkYXR1bU9iai5EYXlPZldlZWsgLWVxICdTYXR1cmRheScpIHsNCiAgICAgICAgICAgICAg ICAgICAgJGFua2VyID0gJGRhdHVtDQogICAgICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAg ICAgICAgICAgICAgJGFua2VyID0gJGRhdHVtT2JqLkFkZERheXMoLTEpLlRvU3RyaW5nKCd5eXl5 LU1NLWRkJykNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgaWYgKC1ub3QgJHdl RGllbnN0UHJvV29jaGUuQ29udGFpbnNLZXkoJGFua2VyKSkgew0KICAgICAgICAgICAgICAgICAg ICAkd2VEaWVuc3RQcm9Xb2NoZVskYW5rZXJdID0gQHsgc2EgPSAkZmFsc2U7IHNvID0gJGZhbHNl IH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgaWYgKCRkYXR1bU9iai5EYXlP ZldlZWsgLWVxICdTYXR1cmRheScpIHsNCiAgICAgICAgICAgICAgICAgICAgJHdlRGllbnN0UHJv V29jaGVbJGFua2VyXS5zYSA9ICR0cnVlDQogICAgICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAg ICAgICAgICAgICAgICAgJHdlRGllbnN0UHJvV29jaGVbJGFua2VyXS5zbyA9ICR0cnVlDQogICAg ICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgICAgIGlmICgka3Jh bmtTdGFydCkgew0KICAgICAgICAgICAgW3ZvaWRdJHN0YXRzLmtyYW5rUGVyaW9kZW4uQWRkKFtv cmRlcmVkXUB7IHZvbiA9ICRrcmFua1N0YXJ0OyBiaXMgPSAkbGV0enRlcktyYW5rVGFnIH0pDQog ICAgICAgIH0NCiAgICAgICAgZm9yZWFjaCAoJHcgaW4gJHdlRGllbnN0UHJvV29jaGUuVmFsdWVz KSB7DQogICAgICAgICAgICBpZiAoJHcuc2EgLWFuZCAkdy5zbykgeyAkc3RhdHMua29tcGxldHRl V0UrKyB9DQogICAgICAgIH0NCiAgICAgICAgJHN0YXRzLndlVGFnZVZlcmZ1ZWdiYXIgPSBbTWF0 aF06Ok1heCgwLCAkc3RhdHMud2VUYWdlTWF4IC0gJHN0YXRzLndlVGFnZUFid2VzZW5kKQ0KICAg ICAgICBbdm9pZF0kc3RhdGlzdGlrZW4uQWRkKCRzdGF0cykNCiAgICB9DQoNCiAgICAjID09PT09 IEFnZ3JlZ2F0aW9uICJFaW5nZXNwcnVuZ2VuIiBhdXMgZGVtIExvZ2J1Y2ggPT09PT0NCiAgICAj IFphZWhsdCB2ZXJhbnR3b3J0dW5nLmVpbmdlc3BydW5nZW4tRWludHJhZWdlIHBybyBQZXJzb24s IGdydXBwaWVydCBuYWNoDQogICAgIyBTY2hpY2h0IChGL1MvTikuIFZlcmJpbmRsaWNoa2VpdHNm ZW5zdGVyLUxvZ2lrIGxpZWd0IGltIENsaWVudCAoZGFzDQogICAgIyBFdmVudCB3aXJkIG9obmVo aW4gbnVyIGluIGRlciBWZXJiaW5kbGljaGtlaXQgZW1pdHRpZXJ0KSDigJQgd2lyIHN1bW1pZXJl bg0KICAgICMgaGllciBlaW5mYWNoIGFsbGUgZXhpc3RpZXJlbmRlbiBFaW50cmFlZ2UgaW0gQ3V0 LVplaXRyYXVtLg0KICAgICRsb2didWNoID0gJG51bGwNCiAgICB0cnkgeyAkbG9nYnVjaCA9IFJl YWQtSnNvbk9iamVjdCAnbG9nYnVjaC5qc29uJyB9IGNhdGNoIHsgJGxvZ2J1Y2ggPSAkbnVsbCB9 DQogICAgaWYgKCRsb2didWNoKSB7DQogICAgICAgICRzdGF0c0J5UGlkID0gQHt9DQogICAgICAg IGZvcmVhY2ggKCRzIGluICRzdGF0aXN0aWtlbikgeyAkc3RhdHNCeVBpZFtbc3RyaW5nXSRzLnBl cnNvbklkXSA9ICRzIH0NCiAgICAgICAgZm9yZWFjaCAoJGVudHJ5IGluIEAoJGxvZ2J1Y2gpKSB7 DQogICAgICAgICAgICBpZiAoLW5vdCAkZW50cnkpIHsgY29udGludWUgfQ0KICAgICAgICAgICAg aWYgKC1ub3QgJGVudHJ5LlBTT2JqZWN0LlByb3BlcnRpZXNbJ2FrdGlvbiddKSB7IGNvbnRpbnVl IH0NCiAgICAgICAgICAgIGlmIChbc3RyaW5nXSRlbnRyeS5ha3Rpb24gLW5lICd2ZXJhbnR3b3J0 dW5nLmVpbmdlc3BydW5nZW4nKSB7IGNvbnRpbnVlIH0NCiAgICAgICAgICAgICRwaWRLZXkgPSAn Jw0KICAgICAgICAgICAgaWYgKCRlbnRyeS5QU09iamVjdC5Qcm9wZXJ0aWVzWydwZXJzb25JZCdd KSB7ICRwaWRLZXkgPSBbc3RyaW5nXSRlbnRyeS5wZXJzb25JZCB9DQogICAgICAgICAgICBpZiAo LW5vdCAkc3RhdHNCeVBpZC5Db250YWluc0tleSgkcGlkS2V5KSkgeyBjb250aW51ZSB9DQogICAg ICAgICAgICAjIEN1dC1aZWl0cmF1bTogbnVyIEV2ZW50cyBtaXQgRGF0dW0gaW0gQ3V0IHphZWhs ZW4gKFZlcmJpbmRsaWNoa2VpdA0KICAgICAgICAgICAgIyBsaWVndCBoZXV0ZSArIDE0IFRhZ2Us IGRhaGVyIHBhc3NlbiBkaWUgRWluZ2VzcHJpbmdlbi1FdmVudHMgbmFoZXp1DQogICAgICAgICAg ICAjIGltbWVyIHJlaW4sIGFiZXIgVm9yYXVzLUtvcnJla3R1cmVuIGtvZW5udGVuIHdlaXRlciBk cmF1c3NlbiBsaWVnZW4pLg0KICAgICAgICAgICAgJGRhdHVtID0gJycNCiAgICAgICAgICAgIGlm ICgkZW50cnkuUFNPYmplY3QuUHJvcGVydGllc1snZGF0dW0nXSkgeyAkZGF0dW0gPSBbc3RyaW5n XSRlbnRyeS5kYXR1bSB9DQogICAgICAgICAgICBpZiAoJGRhdHVtIC1hbmQgKCRkYXR1bSAtbHQg JGN1dFN0YXJ0IC1vciAkZGF0dW0gLWd0ICRjdXRFbmRlKSkgeyBjb250aW51ZSB9DQogICAgICAg ICAgICAkcyA9ICRzdGF0c0J5UGlkWyRwaWRLZXldDQogICAgICAgICAgICAkcy5laW5nZXNwcnVu Z2VuKysNCiAgICAgICAgICAgICRzY2ggPSAnJw0KICAgICAgICAgICAgaWYgKCRlbnRyeS5QU09i amVjdC5Qcm9wZXJ0aWVzWydzY2hpY2h0J10pIHsgJHNjaCA9IFtzdHJpbmddJGVudHJ5LnNjaGlj aHQgfQ0KICAgICAgICAgICAgaWYgICAgICgkc2NoIC1lcSAnRicpIHsgJHMuZWluZ2VzcHJ1bmdl bl9mKysgfQ0KICAgICAgICAgICAgZWxzZWlmICgkc2NoIC1lcSAnUycpIHsgJHMuZWluZ2VzcHJ1 bmdlbl9zKysgfQ0KICAgICAgICAgICAgZWxzZWlmICgkc2NoIC1lcSAnTicpIHsgJHMuZWluZ2Vz cHJ1bmdlbl9uKysgfQ0KICAgICAgICB9DQogICAgfQ0KDQogICAgcmV0dXJuICwkc3RhdGlzdGlr ZW4NCn0NCg0KIyBMb2didWNoLVJlYWRlciAtLSBsaWVmZXJ0IGRlbiBVVEYtOC1UZXh0IGRlciBM b2didWNoLURhdGVpIChvZGVyICdbXScgd2VubiBsZWVyKS4NCmZ1bmN0aW9uIEdldC1Mb2didWNo VGV4dCB7DQogICAgJHR4dCA9IFJlYWQtVGV4dEZpbGUgJ2xvZ2J1Y2guanNvbicNCiAgICBpZiAo JG51bGwgLWVxICR0eHQpIHsgcmV0dXJuICdbXScgfQ0KICAgIHJldHVybiAkdHh0DQp9DQoNCmZ1 bmN0aW9uIFRlc3QtRGFyZlplbGxlRWRpdGllcmVuKCRaaWVsUGVyc29uKSB7DQogICAgJHIgPSBH ZXQtUmVjaHRlDQogICAgaWYgKCRudWxsIC1lcSAkci5lZGl0aWVyZW4pIHsgcmV0dXJuICR0cnVl IH0gICMgU3VwZXJVc2VyDQogICAgaWYgKCRudWxsIC1lcSAkWmllbFBlcnNvbikgeyByZXR1cm4g JGZhbHNlIH0NCiAgICBpZiAoJG51bGwgLW5lICRyLm1laW5lUGVyc29uSWQgLWFuZCBbaW50XSRa aWVsUGVyc29uLmlkIC1lcSBbaW50XSRyLm1laW5lUGVyc29uSWQpIHsgcmV0dXJuICR0cnVlIH0N CiAgICAjIE1pa3JvdGVhbS1NaXRnbGllZGVyIGR1ZXJmZW4gZWluYW5kZXIgbWl0LXBsYW5lbiAo VXNlci1XdW5zY2gNCiAgICAjIDIwMjYtMDUtMjMpLiBXaXIgbGVzZW4gTWlrcm90ZWFtLUxpc3Rl IGF1cyBhZG1pbi5qc29uIGZyaXNjaCDigJQgZGVyDQogICAgIyBtdGltZS1iYXNpZXJ0ZSBDYWNo ZSBpbiBHZXQtUmVjaHRlIGNhY2hlZCBkaWUgdm9sbGUgUmVjaHRlLVN0cnVrdHVyLA0KICAgICMg YWJlciBtaWtyb3RlYW1zIHNpbmQgZG9ydCBuaWNodCBlbnRoYWx0ZW4sIGRhaGVyIGhpZXIgb24t ZGVtYW5kLg0KICAgIGlmICgkbnVsbCAtbmUgJHIubWVpbmVQZXJzb25JZCkgew0KICAgICAgICB0 cnkgew0KICAgICAgICAgICAgJGFkbWluID0gUmVhZC1Kc29uT2JqZWN0ICdhZG1pbi5qc29uJw0K ICAgICAgICAgICAgaWYgKCRudWxsIC1uZSAkYWRtaW4gLWFuZCAkYWRtaW4uUFNPYmplY3QuUHJv cGVydGllc1snbWlrcm90ZWFtcyddKSB7DQogICAgICAgICAgICAgICAgJG1laW5lSWQgPSBbaW50 XSRyLm1laW5lUGVyc29uSWQNCiAgICAgICAgICAgICAgICAkemllbElkICA9IFtpbnRdJFppZWxQ ZXJzb24uaWQNCiAgICAgICAgICAgICAgICBmb3JlYWNoICgkdCBpbiBAKCRhZG1pbi5taWtyb3Rl YW1zKSkgew0KICAgICAgICAgICAgICAgICAgICBpZiAoJG51bGwgLWVxICR0IC1vciAtbm90ICR0 LlBTT2JqZWN0LlByb3BlcnRpZXNbJ3BlcnNvbklkcyddKSB7IGNvbnRpbnVlIH0NCiAgICAgICAg ICAgICAgICAgICAgJGlkcyA9IEAoJHQucGVyc29uSWRzIHwgRm9yRWFjaC1PYmplY3QgeyBbaW50 XSRfIH0pDQogICAgICAgICAgICAgICAgICAgIGlmICgkaWRzIC1jb250YWlucyAkbWVpbmVJZCAt YW5kICRpZHMgLWNvbnRhaW5zICR6aWVsSWQpIHsgcmV0dXJuICR0cnVlIH0NCiAgICAgICAgICAg ICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgIH0gY2F0Y2gge30NCiAgICB9DQogICAgJGVk ID0gJHIuZWRpdGllcmVuDQogICAgaWYgKCRlZC5wZXJzb25lbklkcyAtY29udGFpbnMgW2ludF0k WmllbFBlcnNvbi5pZCkgeyByZXR1cm4gJHRydWUgfQ0KICAgIGlmICgkWmllbFBlcnNvbi5QU09i amVjdC5Qcm9wZXJ0aWVzWydncnVwcGUnXSAtYW5kICRlZC5kaWVuc3RncnVwcGVuIC1jb250YWlu cyBbc3RyaW5nXSRaaWVsUGVyc29uLmdydXBwZSkgeyByZXR1cm4gJHRydWUgfQ0KICAgIGlmICgk WmllbFBlcnNvbi5QU09iamVjdC5Qcm9wZXJ0aWVzWydvZSddIC1hbmQgJGVkLnN0YW5kb3J0ZSAt Y29udGFpbnMgW3N0cmluZ10kWmllbFBlcnNvbi5vZSkgeyByZXR1cm4gJHRydWUgfQ0KICAgIHJl dHVybiAkZmFsc2UNCn0NCg0KIyBBbGlhcyBmdWVyIGJlc3RlaGVuZGUgR3VhcmRzIOKAlCBtYXBw dCBhdWYgJ2FkbWluaXN0cmF0aW9uJy1CZXJlaWNoLg0KZnVuY3Rpb24gVGVzdC1Jc3RBZG1pbiB7 IHJldHVybiAoVGVzdC1EYXJmQmVyZWljaCAnYWRtaW5pc3RyYXRpb24nKSB9DQoNCiMgRm9yY2Ut TG9jay1CZXJlY2h0aWd1bmc6IEZhY2hhdWZzaWNodCBvZGVyIFN1cGVyVXNlciBkdWVyZmVuIGpl ZGVuIEVkaXQtTG9jaw0KIyB1ZWJlcm5laG1lbi4gU2llaGUgUGhhc2UgRiAoTGl2ZS1TeW5jKS4N CmZ1bmN0aW9uIFRlc3QtRGFyZkxvY2tVZWJlcnNjaHJlaWJlbiB7DQogICAgJHIgPSBHZXQtUmVj aHRlDQogICAgaWYgKCRyLmlzdFN1cGVyVXNlcikgeyByZXR1cm4gJHRydWUgfQ0KICAgIGlmICgk ci5pc3RGYWNoYXVmc2ljaHQpIHsgcmV0dXJuICR0cnVlIH0NCiAgICByZXR1cm4gJGZhbHNlDQp9 DQoNCiMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0NCiMgWkVMTC1MT0NLICsgQ0hBTkdFLUxPRyAoTGl2 ZS1TeW5jKQ0KIyBTdG9yYWdlOiBkYXRhLy5sb2Nrcy96ZWxsZV88ZGF0dW0+XzxwZXJzb25JZD4u bG9jaw0KIyAgICAgICAgICBkYXRhL2NoYW5nZXMuanNvbiAoRklGTywgbWF4IDUwMCBFaW50cmFl Z2UpDQojIFN0YWxlLUxvY2stVFRMOiA2MHMgb2huZSBIZWFydGJlYXQgLT4gYXV0b21hdGlzY2gg ZW50ZmVybnQNCiMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCg0KJHNjcmlwdDpDZWxsTG9ja0RpciA9 IEpvaW4tUGF0aCAkRGF0YURpciAnLmxvY2tzJw0KJHNjcmlwdDpDZWxsTG9ja1N0YWxlU2VjID0g NjANCiRzY3JpcHQ6Q2hhbmdlTG9nTWF4ID0gNTAwDQoNCmZ1bmN0aW9uIEluaXRpYWxpemUtQ2Vs bExvY2tEaXIgew0KICAgIGlmICgtbm90IChUZXN0LVBhdGggJHNjcmlwdDpDZWxsTG9ja0Rpcikp IHsNCiAgICAgICAgdHJ5IHsgTmV3LUl0ZW0gLUl0ZW1UeXBlIERpcmVjdG9yeSAtUGF0aCAkc2Ny aXB0OkNlbGxMb2NrRGlyIC1Gb3JjZSB8IE91dC1OdWxsIH0gY2F0Y2gge30NCiAgICB9DQp9DQoN CmZ1bmN0aW9uIFRlc3QtTG9ja1NhZmVJZCgkV2VydCkgew0KICAgIGlmIChbc3RyaW5nXTo6SXNO dWxsT3JXaGl0ZVNwYWNlKCRXZXJ0KSkgeyByZXR1cm4gJGZhbHNlIH0NCiAgICByZXR1cm4gKCRX ZXJ0IC1tYXRjaCAnXltBLVphLXowLTlfXC1dKyQnKQ0KfQ0KDQpmdW5jdGlvbiBUZXN0LUxvY2tT YWZlRGF0dW0oJFdlcnQpIHsNCiAgICByZXR1cm4gKCRXZXJ0IC1tYXRjaCAnXlxkezR9LVxkezJ9 LVxkezJ9JCcpDQp9DQoNCmZ1bmN0aW9uIEdldC1DZWxsTG9ja1BhdGgoJERhdHVtLCAkUGVyc29u SWQpIHsNCiAgICBJbml0aWFsaXplLUNlbGxMb2NrRGlyDQogICAgJFNhZmUgPSAiemVsbGVfJCgk RGF0dW0pXyQoJFBlcnNvbklkKS5sb2NrIg0KICAgIHJldHVybiBKb2luLVBhdGggJHNjcmlwdDpD ZWxsTG9ja0RpciAkU2FmZQ0KfQ0KDQpmdW5jdGlvbiBSZWFkLUNlbGxMb2NrKCREYXR1bSwgJFBl cnNvbklkKSB7DQogICAgJFBhdGggPSBHZXQtQ2VsbExvY2tQYXRoICREYXR1bSAkUGVyc29uSWQN CiAgICBpZiAoLW5vdCAoVGVzdC1QYXRoICRQYXRoKSkgeyByZXR1cm4gJG51bGwgfQ0KICAgIHRy eSB7DQogICAgICAgICRDb250ZW50ID0gW1N5c3RlbS5JTy5GaWxlXTo6UmVhZEFsbFRleHQoJFBh dGgsIFtTeXN0ZW0uVGV4dC5FbmNvZGluZ106OlVURjgpDQogICAgICAgIGlmIChbc3RyaW5nXTo6 SXNOdWxsT3JXaGl0ZVNwYWNlKCRDb250ZW50KSkgeyByZXR1cm4gJG51bGwgfQ0KICAgICAgICAk TG9jayA9ICRDb250ZW50IHwgQ29udmVydEZyb20tSnNvbg0KICAgICAgICAkTGFzdEJlYXQgPSBb RGF0ZVRpbWVdOjpQYXJzZSgkTG9jay5sYXN0QmVhdCkuVG9Vbml2ZXJzYWxUaW1lKCkNCiAgICAg ICAgJEFnZVNlYyA9ICgoR2V0LURhdGUpLlRvVW5pdmVyc2FsVGltZSgpIC0gJExhc3RCZWF0KS5U b3RhbFNlY29uZHMNCiAgICAgICAgaWYgKCRBZ2VTZWMgLWd0ICRzY3JpcHQ6Q2VsbExvY2tTdGFs ZVNlYykgew0KICAgICAgICAgICAgdHJ5IHsgUmVtb3ZlLUl0ZW0gJFBhdGggLUZvcmNlIC1FcnJv ckFjdGlvbiBTaWxlbnRseUNvbnRpbnVlIH0gY2F0Y2gge30NCiAgICAgICAgICAgIHJldHVybiAk bnVsbA0KICAgICAgICB9DQogICAgICAgIHJldHVybiAkTG9jaw0KICAgIH0gY2F0Y2ggew0KICAg ICAgICB0cnkgeyBSZW1vdmUtSXRlbSAkUGF0aCAtRm9yY2UgLUVycm9yQWN0aW9uIFNpbGVudGx5 Q29udGludWUgfSBjYXRjaCB7fQ0KICAgICAgICByZXR1cm4gJG51bGwNCiAgICB9DQp9DQoNCmZ1 bmN0aW9uIFdyaXRlLUNlbGxMb2NrKCRMb2NrKSB7DQogICAgJFBhdGggPSBHZXQtQ2VsbExvY2tQ YXRoICRMb2NrLmRhdHVtICRMb2NrLnBlcnNvbklkDQogICAgJEpzb24gPSAkTG9jayB8IENvbnZl cnRUby1Kc29uIC1EZXB0aCA1IC1Db21wcmVzcw0KICAgIFtTeXN0ZW0uSU8uRmlsZV06OldyaXRl QWxsVGV4dCgkUGF0aCwgJEpzb24sIFtTeXN0ZW0uVGV4dC5FbmNvZGluZ106OlVURjgpDQp9DQoN CmZ1bmN0aW9uIEFjcXVpcmUtQ2VsbExvY2soJERhdHVtLCAkUGVyc29uSWQsICRVc2VyLCAkUm9s bGUsICRGb3JjZSA9ICRmYWxzZSkgew0KICAgICRFeGlzdGluZyA9IFJlYWQtQ2VsbExvY2sgJERh dHVtICRQZXJzb25JZA0KICAgIGlmICgkbnVsbCAtbmUgJEV4aXN0aW5nKSB7DQogICAgICAgICRT ZWxic3QgPSAoJEV4aXN0aW5nLnVzZXJuYW1lIC1pZXEgJFVzZXIpDQogICAgICAgIGlmICgtbm90 ICRTZWxic3QgLWFuZCAtbm90ICRGb3JjZSkgew0KICAgICAgICAgICAgcmV0dXJuIEB7IG9rID0g JGZhbHNlOyBleGlzdGluZyA9ICRFeGlzdGluZyB9DQogICAgICAgIH0NCiAgICB9DQogICAgJE5v dyA9IChHZXQtRGF0ZSkuVG9Vbml2ZXJzYWxUaW1lKCkuVG9TdHJpbmcoJ28nKQ0KICAgICRMb2Nr ID0gW29yZGVyZWRdQHsNCiAgICAgICAgdG9rZW4gICAgPSBbR3VpZF06Ok5ld0d1aWQoKS5Ub1N0 cmluZygpDQogICAgICAgIGRhdHVtICAgID0gJERhdHVtDQogICAgICAgIHBlcnNvbklkID0gJFBl cnNvbklkDQogICAgICAgIHVzZXJuYW1lID0gJFVzZXINCiAgICAgICAgcm9sbGUgICAgPSAkUm9s bGUNCiAgICAgICAgbG9ja2VkQXQgPSAkTm93DQogICAgICAgIGxhc3RCZWF0ID0gJE5vdw0KICAg IH0NCiAgICBXcml0ZS1DZWxsTG9jayAkTG9jaw0KICAgIGlmICgkbnVsbCAtbmUgJEV4aXN0aW5n IC1hbmQgLW5vdCAoJEV4aXN0aW5nLnVzZXJuYW1lIC1pZXEgJFVzZXIpKSB7DQogICAgICAgIEFk ZC1DaGFuZ2VMb2dFaW50cmFnICdsb2NrX2ZvcmNlJyBAew0KICAgICAgICAgICAgZGF0dW0gICAg ICA9ICREYXR1bQ0KICAgICAgICAgICAgcGVyc29uSWQgICA9ICRQZXJzb25JZA0KICAgICAgICAg ICAgdmVyZHJhZW5ndCA9ICRFeGlzdGluZy51c2VybmFtZQ0KICAgICAgICB9DQogICAgfQ0KICAg IHJldHVybiBAeyBvayA9ICR0cnVlOyBsb2NrID0gJExvY2sgfQ0KfQ0KDQpmdW5jdGlvbiBGaW5k LUNlbGxMb2NrQnlUb2tlbigkVG9rZW4pIHsNCiAgICBJbml0aWFsaXplLUNlbGxMb2NrRGlyDQog ICAgaWYgKFtzdHJpbmddOjpJc051bGxPcldoaXRlU3BhY2UoJFRva2VuKSkgeyByZXR1cm4gJG51 bGwgfQ0KICAgIGZvcmVhY2ggKCRGIGluIEdldC1DaGlsZEl0ZW0gLVBhdGggJHNjcmlwdDpDZWxs TG9ja0RpciAtRmlsdGVyICd6ZWxsZV8qLmxvY2snIC1GaWxlIC1FcnJvckFjdGlvbiBTaWxlbnRs eUNvbnRpbnVlKSB7DQogICAgICAgIHRyeSB7DQogICAgICAgICAgICAkTCA9IFtTeXN0ZW0uSU8u RmlsZV06OlJlYWRBbGxUZXh0KCRGLkZ1bGxOYW1lLCBbU3lzdGVtLlRleHQuRW5jb2RpbmddOjpV VEY4KSB8IENvbnZlcnRGcm9tLUpzb24NCiAgICAgICAgICAgIGlmICgkTC50b2tlbiAtZXEgJFRv a2VuKSB7IHJldHVybiBAeyBsb2NrID0gJEw7IHBhdGggPSAkRi5GdWxsTmFtZSB9IH0NCiAgICAg ICAgfSBjYXRjaCB7fQ0KICAgIH0NCiAgICByZXR1cm4gJG51bGwNCn0NCg0KZnVuY3Rpb24gUmVm cmVzaC1DZWxsTG9jaygkVG9rZW4pIHsNCiAgICAkRiA9IEZpbmQtQ2VsbExvY2tCeVRva2VuICRU b2tlbg0KICAgIGlmICgkbnVsbCAtZXEgJEYpIHsgcmV0dXJuIEB7IG9rID0gJGZhbHNlIH0gfQ0K ICAgICRMID0gJEYubG9jaw0KICAgICRMLmxhc3RCZWF0ID0gKEdldC1EYXRlKS5Ub1VuaXZlcnNh bFRpbWUoKS5Ub1N0cmluZygnbycpDQogICAgV3JpdGUtQ2VsbExvY2sgJEwNCiAgICByZXR1cm4g QHsgb2sgPSAkdHJ1ZTsgbG9jayA9ICRMIH0NCn0NCg0KZnVuY3Rpb24gUmVsZWFzZS1DZWxsTG9j aygkVG9rZW4pIHsNCiAgICAkRiA9IEZpbmQtQ2VsbExvY2tCeVRva2VuICRUb2tlbg0KICAgIGlm ICgkbnVsbCAtZXEgJEYpIHsgcmV0dXJuIEB7IG9rID0gJGZhbHNlIH0gfQ0KICAgIHRyeSB7IFJl bW92ZS1JdGVtICRGLnBhdGggLUZvcmNlIC1FcnJvckFjdGlvbiBTaWxlbnRseUNvbnRpbnVlIH0g Y2F0Y2gge30NCiAgICByZXR1cm4gQHsgb2sgPSAkdHJ1ZTsgbG9jayA9ICRGLmxvY2sgfQ0KfQ0K DQpmdW5jdGlvbiBHZXQtQWxsQWN0aXZlQ2VsbExvY2tzIHsNCiAgICBJbml0aWFsaXplLUNlbGxM b2NrRGlyDQogICAgJFJlc3VsdCA9IE5ldy1PYmplY3QgU3lzdGVtLkNvbGxlY3Rpb25zLkFycmF5 TGlzdA0KICAgIGZvcmVhY2ggKCRGIGluIEdldC1DaGlsZEl0ZW0gLVBhdGggJHNjcmlwdDpDZWxs TG9ja0RpciAtRmlsdGVyICd6ZWxsZV8qLmxvY2snIC1GaWxlIC1FcnJvckFjdGlvbiBTaWxlbnRs eUNvbnRpbnVlKSB7DQogICAgICAgIHRyeSB7DQogICAgICAgICAgICAkTCA9IFtTeXN0ZW0uSU8u RmlsZV06OlJlYWRBbGxUZXh0KCRGLkZ1bGxOYW1lLCBbU3lzdGVtLlRleHQuRW5jb2RpbmddOjpV VEY4KSB8IENvbnZlcnRGcm9tLUpzb24NCiAgICAgICAgICAgICRMYXN0QmVhdCA9IFtEYXRlVGlt ZV06OlBhcnNlKCRMLmxhc3RCZWF0KS5Ub1VuaXZlcnNhbFRpbWUoKQ0KICAgICAgICAgICAgJEFn ZVNlYyA9ICgoR2V0LURhdGUpLlRvVW5pdmVyc2FsVGltZSgpIC0gJExhc3RCZWF0KS5Ub3RhbFNl Y29uZHMNCiAgICAgICAgICAgIGlmICgkQWdlU2VjIC1ndCAkc2NyaXB0OkNlbGxMb2NrU3RhbGVT ZWMpIHsNCiAgICAgICAgICAgICAgICB0cnkgeyBSZW1vdmUtSXRlbSAkRi5GdWxsTmFtZSAtRm9y Y2UgLUVycm9yQWN0aW9uIFNpbGVudGx5Q29udGludWUgfSBjYXRjaCB7fQ0KICAgICAgICAgICAg ICAgIGNvbnRpbnVlDQogICAgICAgICAgICB9DQogICAgICAgICAgICBbdm9pZF0kUmVzdWx0LkFk ZChbb3JkZXJlZF1Aew0KICAgICAgICAgICAgICAgIGRhdHVtICAgID0gJEwuZGF0dW0NCiAgICAg ICAgICAgICAgICBwZXJzb25JZCA9ICRMLnBlcnNvbklkDQogICAgICAgICAgICAgICAgdXNlcm5h bWUgPSAkTC51c2VybmFtZQ0KICAgICAgICAgICAgICAgIHJvbGxlICAgID0gJEwucm9sbGUNCiAg ICAgICAgICAgICAgICBsb2NrZWRBdCA9ICRMLmxvY2tlZEF0DQogICAgICAgICAgICAgICAgbGFz dEJlYXQgPSAkTC5sYXN0QmVhdA0KICAgICAgICAgICAgfSkNCiAgICAgICAgfSBjYXRjaCB7fQ0K ICAgIH0NCiAgICByZXR1cm4gLCRSZXN1bHQuVG9BcnJheSgpDQp9DQoNCiMgLS0tIENoYW5nZS1M b2c6IGFwcGVuZC1vbmx5IExpc3RlIGRlciBsZXR6dGVuIEFlbmRlcnVuZ2VuLCBmdWVyIExpdmUt U3luYyAtLS0NCiMgV0lDSFRJRzogUmVhZC1Nb2RpZnktV3JpdGUgaW5uZXJoYWxiIGVpbmVzIEZp bGVMb2NrLCBzb25zdCBnZWhlbiBiZWkNCiMgY29uY3VycmVudCBTY2hyZWliZXJuICh6d2VpIFVz ZXIgc3BlaWNoZXJuIGdsZWljaHplaXRpZykgRWludHJhZWdlDQojIHZlcmxvcmVuIOKAlCBsZXR6 dGVyIFNjaHJlaWJlciBnZXdpbm50Lg0KIyBIb2VjaHN0ZSBzZXEgaW0gQ2hhbmdlLUxvZyAoRklG Ty1zaWNoZXI6IGJsZWlidCBtb25vdG9uLCBhdWNoIHdlbm4gYWx0ZQ0KIyBFaW50cmFlZ2UgcmF1 c2ZhbGxlbikuIFNwaWVnZWx0IF9tYXhfY2hhbmdlX3NlcSBpbiBkZXYvc2VydmVyLnB5Lg0KZnVu Y3Rpb24gR2V0LU1heENoYW5nZVNlcSgkTG9nKSB7DQogICAgJG0gPSAwDQogICAgZm9yZWFjaCAo JGUgaW4gQCgkTG9nKSkgew0KICAgICAgICBpZiAoJG51bGwgLWVxICRlKSB7IGNvbnRpbnVlIH0N CiAgICAgICAgJHMgPSAkbnVsbA0KICAgICAgICBpZiAoJGUgLWlzIFtTeXN0ZW0uQ29sbGVjdGlv bnMuSURpY3Rpb25hcnldKSB7ICRzID0gJGVbJ3NlcSddIH0NCiAgICAgICAgZWxzZWlmICgkZS5Q U09iamVjdCAtYW5kICRlLlBTT2JqZWN0LlByb3BlcnRpZXNbJ3NlcSddKSB7ICRzID0gJGUuc2Vx IH0NCiAgICAgICAgaWYgKCRudWxsIC1uZSAkcykgeyB0cnkgeyAkc3YgPSBbaW50XSRzOyBpZiAo JHN2IC1ndCAkbSkgeyAkbSA9ICRzdiB9IH0gY2F0Y2gge30gfQ0KICAgIH0NCiAgICByZXR1cm4g JG0NCn0NCg0KZnVuY3Rpb24gQWRkLUNoYW5nZUxvZ0VpbnRyYWcoJEtpbmQsICREZXRhaWxzKSB7 DQogICAgJGVpbnRyYWcgPSBbb3JkZXJlZF1Aew0KICAgICAgICB0cyAgICA9IChHZXQtRGF0ZSku VG9Vbml2ZXJzYWxUaW1lKCkuVG9TdHJpbmcoJ28nKQ0KICAgICAgICBraW5kICA9ICRLaW5kDQog ICAgICAgIHZvbiAgID0gIiREb21haW5cJFVzZXJuYW1lIg0KICAgICAgICByb2xsZSA9IChHZXQt UmVjaHRlKS5yb2xsZQ0KICAgIH0NCiAgICBpZiAoJERldGFpbHMpIHsNCiAgICAgICAgZm9yZWFj aCAoJGsgaW4gJERldGFpbHMuS2V5cykgeyAkZWludHJhZ1ska10gPSAkRGV0YWlsc1ska10gfQ0K ICAgIH0NCiAgICB0cnkgew0KICAgICAgICBJbnZva2UtV2l0aEZpbGVMb2NrICdjaGFuZ2VzLmpz b24nIHsNCiAgICAgICAgICAgICRsb2cgPSBSZWFkLUpzb25PYmplY3QgJ2NoYW5nZXMuanNvbicN CiAgICAgICAgICAgIGlmICgkbnVsbCAtZXEgJGxvZyAtb3IgLW5vdCAoJGxvZyAtaXMgW2FycmF5 XSkpIHsgJGxvZyA9IEAoKSB9DQogICAgICAgICAgICAjIE1vbm90b25lIHNlcSBmdWVyIGRlbiBy YWNlLWZyZWllbiBMaXZlLVN5bmMtQ3Vyc29yIChzdGF0dCBXYWxsLUNsb2NrKS4NCiAgICAgICAg ICAgICRlaW50cmFnWydzZXEnXSA9IChHZXQtTWF4Q2hhbmdlU2VxICRsb2cpICsgMQ0KICAgICAg ICAgICAgJG5ldSA9IEAoJGxvZykgKyBAKCRlaW50cmFnKQ0KICAgICAgICAgICAgaWYgKCRuZXUu Q291bnQgLWd0ICRzY3JpcHQ6Q2hhbmdlTG9nTWF4KSB7DQogICAgICAgICAgICAgICAgJG5ldSA9 ICRuZXVbKCRuZXUuQ291bnQgLSAkc2NyaXB0OkNoYW5nZUxvZ01heCkuLigkbmV1LkNvdW50IC0g MSldDQogICAgICAgICAgICB9DQogICAgICAgICAgICBXcml0ZS1Kc29uT2JqZWN0ICdjaGFuZ2Vz Lmpzb24nICRuZXUgfCBPdXQtTnVsbA0KICAgICAgICB9IHwgT3V0LU51bGwNCiAgICB9IGNhdGNo IHsNCiAgICAgICAgTG9nLUFwaSAoJ0NIQU5HRVMgV1JJVEUgRkVITEVSOiB7MH0nIC1mICRfLkV4 Y2VwdGlvbi5NZXNzYWdlKQ0KICAgIH0NCn0NCg0KIyBCYXRjaGVkLVZhcmlhbnRlIGZ1ZXIgQnVs ay1FbmRwb2ludHMgKHouQi4gL2FwaS9wbGFudW5nL3plbGxlbi1idWxrOg0KIyBEcmFnLUZpbGwg KyBMb2didWNoLVJlc3RvcmUpLiBTY2hyZWlidCBtZWhyZXJlIGNoYW5nZS1sb2ctRWludHJhZWdl DQojIGluIEVJTkVNIEZpbGUtTG9jayArIEVJTkVNIFJlYWQvV3JpdGUgZGVyIGNoYW5nZXMuanNv biDigJQgc29uc3Qgd3VlcmRlDQojIGVpbiAxNC1UYWdlLURyYWctRmlsbCAxNHggRmlsZS1Mb2Nr ICsgMTR4IFJlYWQvV3JpdGUgZXJ6ZXVnZW4uDQojIERldGFpbHNMaXN0ZSA9IExpc3RlIHZvbiBI YXNodGFibGVzLCBqZWRlIHRyYWVndCBkaWUgRGV0YWlsLUZlbGRlcg0KIyBmdWVyIGVpbmVuIGNo YW5nZSAoJ2RhdHVtJywgJ3BlcnNvbklkJywgJ2FsdCcsICduZXUnLCAuLi4pLiBGb3JtYXQNCiMg cHJvIEVpbnRyYWcgaXN0IGlkZW50aXNjaCB6dW0gU2luZ3VsYXItSGVscGVyIOKAlCBDbGllbnQt VmVyYXJiZWl0dW5nDQojIChzeW5jLmpzIHN5bmNDaGFuZ2VzQW53ZW5kZW4pIHVudmVyYWVuZGVy dC4NCmZ1bmN0aW9uIEFkZC1DaGFuZ2VMb2dFaW50cmFlZ2UoW3N0cmluZ10kS2luZCwgJERldGFp bHNMaXN0ZSkgew0KICAgIGlmICgtbm90ICREZXRhaWxzTGlzdGUpIHsgcmV0dXJuIH0NCiAgICAk bGlzdGVBcnIgPSBAKCREZXRhaWxzTGlzdGUpDQogICAgaWYgKCRsaXN0ZUFyci5Db3VudCAtZXEg MCkgeyByZXR1cm4gfQ0KICAgICR0cyAgICA9IChHZXQtRGF0ZSkuVG9Vbml2ZXJzYWxUaW1lKCku VG9TdHJpbmcoJ28nKQ0KICAgICR2b24gICA9ICIkRG9tYWluXCRVc2VybmFtZSINCiAgICAkcm9s bGUgPSAoR2V0LVJlY2h0ZSkucm9sbGUNCiAgICAkZWludHJhZWdlID0gTmV3LU9iamVjdCBTeXN0 ZW0uQ29sbGVjdGlvbnMuQXJyYXlMaXN0DQogICAgZm9yZWFjaCAoJGQgaW4gJGxpc3RlQXJyKSB7 DQogICAgICAgICRlID0gW29yZGVyZWRdQHsgdHMgPSAkdHM7IGtpbmQgPSAkS2luZDsgdm9uID0g JHZvbjsgcm9sbGUgPSAkcm9sbGUgfQ0KICAgICAgICBpZiAoJGQpIHsgZm9yZWFjaCAoJGsgaW4g JGQuS2V5cykgeyAkZVska10gPSAkZFska10gfSB9DQogICAgICAgIFt2b2lkXSRlaW50cmFlZ2Uu QWRkKCRlKQ0KICAgIH0NCiAgICB0cnkgew0KICAgICAgICBJbnZva2UtV2l0aEZpbGVMb2NrICdj aGFuZ2VzLmpzb24nIHsNCiAgICAgICAgICAgICRsb2cgPSBSZWFkLUpzb25PYmplY3QgJ2NoYW5n ZXMuanNvbicNCiAgICAgICAgICAgIGlmICgkbnVsbCAtZXEgJGxvZyAtb3IgLW5vdCAoJGxvZyAt aXMgW2FycmF5XSkpIHsgJGxvZyA9IEAoKSB9DQogICAgICAgICAgICAkYmFzZSA9IEdldC1NYXhD aGFuZ2VTZXEgJGxvZw0KICAgICAgICAgICAgJGkgPSAwDQogICAgICAgICAgICBmb3JlYWNoICgk ZSBpbiAkZWludHJhZWdlKSB7ICRlWydzZXEnXSA9ICRiYXNlICsgMSArICRpOyAkaSsrIH0NCiAg ICAgICAgICAgICRuZXUgPSBAKCRsb2cpICsgQCgkZWludHJhZWdlLlRvQXJyYXkoKSkNCiAgICAg ICAgICAgIGlmICgkbmV1LkNvdW50IC1ndCAkc2NyaXB0OkNoYW5nZUxvZ01heCkgew0KICAgICAg ICAgICAgICAgICRuZXUgPSAkbmV1WygkbmV1LkNvdW50IC0gJHNjcmlwdDpDaGFuZ2VMb2dNYXgp Li4oJG5ldS5Db3VudCAtIDEpXQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgV3JpdGUtSnNv bk9iamVjdCAnY2hhbmdlcy5qc29uJyAkbmV1IHwgT3V0LU51bGwNCiAgICAgICAgfSB8IE91dC1O dWxsDQogICAgfSBjYXRjaCB7DQogICAgICAgIExvZy1BcGkgKCdDSEFOR0VTIFdSSVRFIEZFSExF UjogezB9JyAtZiAkXy5FeGNlcHRpb24uTWVzc2FnZSkNCiAgICB9DQp9DQoNCmZ1bmN0aW9uIEdl dC1DaGFuZ2VzU2luY2UoJFNlaXQpIHsNCiAgICAkbG9nID0gUmVhZC1Kc29uT2JqZWN0ICdjaGFu Z2VzLmpzb24nDQogICAgaWYgKCRudWxsIC1lcSAkbG9nKSB7IHJldHVybiBAKCkgfQ0KICAgIGlm IChbc3RyaW5nXTo6SXNOdWxsT3JXaGl0ZVNwYWNlKCRTZWl0KSkgeyByZXR1cm4gLEAoJGxvZykg fQ0KICAgIHRyeSB7DQogICAgICAgICRzZWl0RHQgPSBbRGF0ZVRpbWVdOjpQYXJzZSgkU2VpdCku VG9Vbml2ZXJzYWxUaW1lKCkNCiAgICAgICAgJHJlc3VsdCA9IE5ldy1PYmplY3QgU3lzdGVtLkNv bGxlY3Rpb25zLkFycmF5TGlzdA0KICAgICAgICBmb3JlYWNoICgkZSBpbiBAKCRsb2cpKSB7DQog ICAgICAgICAgICB0cnkgew0KICAgICAgICAgICAgICAgICRlRHQgPSBbRGF0ZVRpbWVdOjpQYXJz ZShbc3RyaW5nXSRlLnRzKS5Ub1VuaXZlcnNhbFRpbWUoKQ0KICAgICAgICAgICAgICAgIGlmICgk ZUR0IC1ndCAkc2VpdER0KSB7IFt2b2lkXSRyZXN1bHQuQWRkKCRlKSB9DQogICAgICAgICAgICB9 IGNhdGNoIHt9DQogICAgICAgIH0NCiAgICAgICAgcmV0dXJuICwkcmVzdWx0LlRvQXJyYXkoKQ0K ICAgIH0gY2F0Y2ggew0KICAgICAgICByZXR1cm4gLEAoJGxvZykNCiAgICB9DQp9DQoNCiMgLS0t IEZ1ZWhydW5nc2tyYWZ0LVphZWhsdW5nIC8gVW50ZXJiZXNldHp1bmdzLVBydWVmdW5nIC0tLQ0K DQpmdW5jdGlvbiBHZXQtRnVlaHJ1bmdzU2NoaWNodExldHRlcigkV2VydCkgew0KICAgICMgTnVy IERHTCB6YWVobHQgYWxzIEZ1ZWhydW5nLiBXREYvRkJQIHNpbmQgUm9sbGVuIGltIERpZW5zdCwg YWJlciBrZWluZQ0KICAgICMgRnVlaHJ1bmdza3JhZWZ0ZSBmdWVyIGRpZSBNaW5kZXN0YmVzZXR6 dW5ncy1QcnVlZnVuZy4NCiAgICBpZiAoLW5vdCAkV2VydCAtb3IgJFdlcnQuTGVuZ3RoIC1sdCA1 KSB7IHJldHVybiAkbnVsbCB9DQogICAgJHByZWZpeCA9ICRXZXJ0LlN1YnN0cmluZygwLCAxKQ0K ICAgIGlmICgkcHJlZml4IC1uZSAnRicgLWFuZCAkcHJlZml4IC1uZSAnUycgLWFuZCAkcHJlZml4 IC1uZSAnTicpIHsgcmV0dXJuICRudWxsIH0NCiAgICBpZiAoJFdlcnQuU3Vic3RyaW5nKDIsIDMp IC1lcSAnREdMJykgeyByZXR1cm4gJHByZWZpeCB9DQogICAgcmV0dXJuICRudWxsDQp9DQoNCmZ1 bmN0aW9uIEdldC1GdWVocnVuZ3NDb3VudCgkUGxhbnVuZywgJERhdHVtLCAkU2NoaWNodCkgew0K ICAgIGlmICgkbnVsbCAtZXEgJFBsYW51bmcgLW9yICRudWxsIC1lcSAkUGxhbnVuZy5wZXJzb25l bikgeyByZXR1cm4gMCB9DQogICAgJGVpbnRyYWVnZSA9ICRudWxsDQogICAgaWYgKCRQbGFudW5n LlBTT2JqZWN0LlByb3BlcnRpZXNbJ2VpbnRyYWVnZSddIC1hbmQgJFBsYW51bmcuZWludHJhZWdl LlBTT2JqZWN0LlByb3BlcnRpZXNbJERhdHVtXSkgew0KICAgICAgICAkZWludHJhZWdlID0gJFBs YW51bmcuZWludHJhZWdlLiREYXR1bQ0KICAgIH0NCiAgICBpZiAoJG51bGwgLWVxICRlaW50cmFl Z2UpIHsgcmV0dXJuIDAgfQ0KICAgICRjb3VudCA9IDANCiAgICBmb3JlYWNoICgkcCBpbiBAKCRQ bGFudW5nLnBlcnNvbmVuKSkgew0KICAgICAgICBpZiAoJHAuUFNPYmplY3QuUHJvcGVydGllc1sn YWt0aXYnXSAtYW5kIC1ub3QgJHAuYWt0aXYpIHsgY29udGludWUgfQ0KICAgICAgICAkaWQgPSBb c3RyaW5nXSRwLmlkDQogICAgICAgIGlmICgtbm90ICRlaW50cmFlZ2UuUFNPYmplY3QuUHJvcGVy dGllc1skaWRdKSB7IGNvbnRpbnVlIH0NCiAgICAgICAgJHcgPSBbc3RyaW5nXSRlaW50cmFlZ2Uu JGlkDQogICAgICAgIGlmICgoR2V0LUZ1ZWhydW5nc1NjaGljaHRMZXR0ZXIgJHcpIC1lcSAkU2No aWNodCkgeyAkY291bnQrKyB9DQogICAgfQ0KICAgIHJldHVybiAkY291bnQNCn0NCg0KZnVuY3Rp b24gVGVzdC1JblZlcmJpbmRsaWNoa2VpdCgkRGF0dW1TdHIpIHsNCiAgICAjIFJlZ2VsOiBVbnRl cmJlc2V0enVuZ3MtQ2hlY2sgZ3JlaWZ0IG51ciBmdWVyIFRhZ2UgaW5uZXJoYWxiIGRlciBuYWVj aHN0ZW4NCiAgICAjIDE0IFRhZ2UgKGlua2wuIGhldXRlKS4gRGF2b3IvZGFuYWNoIGlzdCBkZXIg UGxhbnVuZ3MtS29ycmlkb3IgdW52ZXJiaW5kbGljaC4NCiAgICB0cnkgew0KICAgICAgICAkemll bCA9IFtkYXRldGltZV06OlBhcnNlRXhhY3QoJERhdHVtU3RyLCAneXl5eS1NTS1kZCcsICRudWxs KS5EYXRlDQogICAgICAgICRoZXV0ZSA9IChHZXQtRGF0ZSkuRGF0ZQ0KICAgICAgICAkZGlmZiA9 ICgkemllbCAtICRoZXV0ZSkuRGF5cw0KICAgICAgICByZXR1cm4gKCRkaWZmIC1nZSAwIC1hbmQg JGRpZmYgLWxlIDE0KQ0KICAgIH0gY2F0Y2ggeyByZXR1cm4gJGZhbHNlIH0NCn0NCg0KIyBQcmUt d2FybTogUmVhZC1Kc29uT2JqZWN0IHNjaG9uIGhpZXIgbGF1ZmVuIGxhc3NlbiwgZGFtaXQgZGVy IHRldXJlDQojIEVyc3QtUGFyc2UgKENvbnZlcnRGcm9tLUpzb24gZnVlciBkaWUgMjAwLUtCLUpT T05zKSB3YWVocmVuZCBkZXINCiMgU2VydmVyLVN0YXJ0LVBoYXNlIHBhc3NpZXJ0IOKAlCB1bmQg bmljaHQgenVtIFplaXRwdW5rdCwgYW4gZGVtIGRlcg0KIyBFbmRhbndlbmRlciBpbSBCcm93c2Vy IGF1ZiBkZW4gZXJzdGVuIC9hcGkvaW5mbyB3YXJ0ZXQuIFNwYXJ0IGF1Zg0KIyBCZWhvZXJkZW4t UENzIHNwdWVyYmFyIFdhcnRlemVpdCBiZWltIExvZ2luLg0KdHJ5IHsgUmVhZC1Kc29uT2JqZWN0 ICdhZG1pbi5qc29uJyAgIHwgT3V0LU51bGw7IExvZy1BcGkgJ1BSRVdBUk0gYWRtaW4uanNvbiBv aycgfSBjYXRjaCB7IExvZy1BcGkgKCdQUkVXQVJNIGFkbWluLmpzb24gRkVITEVSOiB7MH0nIC1m ICRfLkV4Y2VwdGlvbi5NZXNzYWdlKSB9DQp0cnkgeyBSZWFkLUpzb25PYmplY3QgJ3BsYW51bmcu anNvbicgfCBPdXQtTnVsbDsgTG9nLUFwaSAnUFJFV0FSTSBwbGFudW5nLmpzb24gb2snIH0gY2F0 Y2ggeyBMb2ctQXBpICgnUFJFV0FSTSBwbGFudW5nLmpzb24gRkVITEVSOiB7MH0nIC1mICRfLkV4 Y2VwdGlvbi5NZXNzYWdlKSB9DQoNCiMgPT09IFVwZGF0ZS1DaGVjayA9PT0NCiRzY3JpcHQ6VXBk YXRlQXZhaWxhYmxlICAgPSAkZmFsc2UNCiRzY3JpcHQ6UmVtb3RlVmVyc2lvbiAgICAgPSAnJw0K JHNjcmlwdDpVcGRhdGVMYXN0Q2hlY2tVdGMgPSBbZGF0ZXRpbWVdOjpNaW5WYWx1ZQ0KDQpmdW5j dGlvbiBSZWZyZXNoLVVwZGF0ZUNoZWNrIHsNCiAgICBpZiAoKFtkYXRldGltZV06OlV0Y05vdyAt ICRzY3JpcHQ6VXBkYXRlTGFzdENoZWNrVXRjKS5Ub3RhbE1pbnV0ZXMgLWx0IDYwKSB7IHJldHVy biB9DQogICAgJHNjcmlwdDpVcGRhdGVMYXN0Q2hlY2tVdGMgPSBbZGF0ZXRpbWVdOjpVdGNOb3cN CiAgICAkbG9jYWxWZXIgPSAnMC4wLjAnDQogICAgJF92ZiA9IEpvaW4tUGF0aCAkUm9vdCAnVkVS U0lPTicNCiAgICBpZiAoVGVzdC1QYXRoIC1MaXRlcmFsUGF0aCAkX3ZmKSB7ICRsb2NhbFZlciA9 IChHZXQtQ29udGVudCAtTGl0ZXJhbFBhdGggJF92ZiAtUmF3KS5UcmltKCkgfQ0KICAgIHRyeSB7 DQogICAgICAgICRydiA9IChJbnZva2UtV2ViUmVxdWVzdCAtVXJpICdodHRwczovL2dpdGVhLnJo aW5vLm5ydy9SaGluby9TdGF0dXNRdW9fVXBkYXRlcy9yYXcvYnJhbmNoL21haW4vVkkzREdML1ZF UlNJT04nIGANCiAgICAgICAgICAgICAgIC1Vc2VCYXNpY1BhcnNpbmcgLVRpbWVvdXRTZWMgMyAt RXJyb3JBY3Rpb24gU3RvcCkuQ29udGVudC5UcmltKCkNCiAgICAgICAgJHNjcmlwdDpSZW1vdGVW ZXJzaW9uICAgPSAkcnYNCiAgICAgICAgJHNjcmlwdDpVcGRhdGVBdmFpbGFibGUgPSAoW1N5c3Rl bS5WZXJzaW9uXSRydiAtZ3QgW1N5c3RlbS5WZXJzaW9uXSRsb2NhbFZlcikNCiAgICAgICAgTG9n LUFwaSAoIlVQREFURS1DSEVDSzogbG9rYWw9JGxvY2FsVmVyIHJlbW90ZT0kcnYgYXZhaWxhYmxl PSQoJHNjcmlwdDpVcGRhdGVBdmFpbGFibGUpIikNCiAgICB9IGNhdGNoIHsNCiAgICAgICAgTG9n LUFwaSAoIlVQREFURS1DSEVDSzogbmljaHQgZXJyZWljaGJhciAoJCgkXy5FeGNlcHRpb24uTWVz c2FnZSkpIikNCiAgICB9DQp9DQpSZWZyZXNoLVVwZGF0ZUNoZWNrDQoNCiMgSW5pdGlhbC1TbmFw c2hvdCBkZXIgT2ZmbGluZS1Xb2NoZW5wbGFuLmh0bWwgYmVpbSBTdGFydCByZWdlbmVyaWVyZW4N CiMgKGF1Y2ggd2VubiBzZWl0IGRlbSBsZXR6dGVuIExhdWYgbmljaHRzIGdlYWVuZGVydCB3dXJk ZSwgaGF0IHNpY2ggei5CLg0KIyBkYXMgRGF0dW0gdmVyc2Nob2JlbiB1bmQgZGVyIEhldXRlLU1h cmtlciB6ZWlndCBzb25zdCBkaWUgYWx0ZSBXb2NoZSkuDQp0cnkgeyBHZW5lcmF0ZS1Xb2NoZW5w bGFuU25hcHNob3QgfCBPdXQtTnVsbCB9IGNhdGNoIHsgTG9nLUFwaSAoJ1NOQVBTSE9UIChpbml0 aWFsKSBGRUhMRVI6IHswfScgLWYgJF8uRXhjZXB0aW9uLk1lc3NhZ2UpIH0NCg0KIyAtLS0gU2Vy dmVyIHN0YXJ0ZW4gLS0tDQokTGlzdGVuZXIgPSBOZXctT2JqZWN0IFN5c3RlbS5OZXQuSHR0cExp c3RlbmVyDQokTGlzdGVuZXIuUHJlZml4ZXMuQWRkKCJodHRwOi8vbG9jYWxob3N0OiRQb3J0LyIp DQp0cnkgew0KICAgICRMaXN0ZW5lci5TdGFydCgpDQp9IGNhdGNoIHsNCiAgICBXcml0ZS1Ib3N0 ICgnRkVITEVSOiBMaXN0ZW5lciBhdWYgUG9ydCB7MH0ga2FubiBuaWNodCBzdGFydGVuLicgLWYg JFBvcnQpIC1Gb3JlZ3JvdW5kQ29sb3IgUmVkDQogICAgV3JpdGUtSG9zdCAkXw0KICAgIExvZy1B cGkgKCdMSVNURU5FUiBGRUhMRVI6IHswfScgLWYgJF8uRXhjZXB0aW9uLk1lc3NhZ2UpDQogICAg U3RhcnQtU2xlZXAgLVNlY29uZHMgNQ0KICAgIGV4aXQgMQ0KfQ0KDQpXcml0ZS1Ib3N0ICgnVkkz IERHTC1QbGFudW5nIGF1ZiBodHRwOi8vbG9jYWxob3N0OnswfScgLWYgJFBvcnQpDQpXcml0ZS1I b3N0ICgnUm9vdDogICAgezB9JyAtZiAkUm9vdCkNCldyaXRlLUhvc3QgKCdEYXRhRGlyOiB7MH0n IC1mICREYXRhRGlyKQ0KV3JpdGUtSG9zdCAoJ0xvZzogICAgIHswfScgLWYgJHNjcmlwdDpBcGlM b2cpDQoNCiMgLS0tIEhlYXJ0YmVhdC1XYXRjaGRvZyAtLS0NCiRXYXRjaGRvZ1RpbWVyID0gTmV3 LU9iamVjdCBTeXN0ZW0uVGltZXJzLlRpbWVyDQokV2F0Y2hkb2dUaW1lci5JbnRlcnZhbCA9IDUw MDANCiRXYXRjaGRvZ1RpbWVyLkF1dG9SZXNldCA9ICR0cnVlDQpSZWdpc3Rlci1PYmplY3RFdmVu dCAtSW5wdXRPYmplY3QgJFdhdGNoZG9nVGltZXIgLUV2ZW50TmFtZSBFbGFwc2VkIC1BY3Rpb24g ew0KICAgICRlbGFwc2VkID0gKEdldC1EYXRlKSAtICRzY3JpcHQ6TGFzdEhlYXJ0YmVhdA0KICAg IGlmICgkZWxhcHNlZC5Ub3RhbFNlY29uZHMgLWd0IDMwKSB7DQogICAgICAgIGlmICgtbm90ICRz Y3JpcHQ6U2h1dGRvd25QZW5kaW5nKSB7DQogICAgICAgICAgICAkc2NyaXB0OlNodXRkb3duUGVu ZGluZyA9ICR0cnVlDQogICAgICAgIH0gZWxzZWlmICgkZWxhcHNlZC5Ub3RhbFNlY29uZHMgLWd0 IDM1KSB7DQogICAgICAgICAgICAkTGlzdGVuZXIuU3RvcCgpDQogICAgICAgICAgICBbRW52aXJv bm1lbnRdOjpFeGl0KDApDQogICAgICAgIH0NCiAgICB9DQp9IHwgT3V0LU51bGwNCiRXYXRjaGRv Z1RpbWVyLlN0YXJ0KCkNCg0KIyAtLS0gUmVxdWVzdC1Mb29wIC0tLQ0KdHJ5IHsNCiAgICB3aGls ZSAoJExpc3RlbmVyLklzTGlzdGVuaW5nKSB7DQogICAgICAgICRBc3luY1Jlc3VsdCA9ICRMaXN0 ZW5lci5CZWdpbkdldENvbnRleHQoJG51bGwsICRudWxsKQ0KICAgICAgICB3aGlsZSAoLW5vdCAk QXN5bmNSZXN1bHQuQXN5bmNXYWl0SGFuZGxlLldhaXRPbmUoMTAwMCkpIHsgfQ0KICAgICAgICAk Q29udGV4dCA9ICRMaXN0ZW5lci5FbmRHZXRDb250ZXh0KCRBc3luY1Jlc3VsdCkNCiAgICAgICAg JFJlcXVlc3QgPSAkQ29udGV4dC5SZXF1ZXN0DQogICAgICAgICRSZXNwb25zZSA9ICRDb250ZXh0 LlJlc3BvbnNlDQogICAgICAgICRNZXRob2QgPSAkUmVxdWVzdC5IdHRwTWV0aG9kDQogICAgICAg ICRQYXRoID0gJFJlcXVlc3QuVXJsLkFic29sdXRlUGF0aA0KICAgICAgICBMb2ctQXBpICgnUkVR IHswfSB7MX0nIC1mICRNZXRob2QsICRQYXRoKQ0KDQogICAgICAgIHRyeSB7DQogICAgICAgICAg ICAjID09PT09IENPUlMgUHJlZmxpZ2h0ID09PT09DQogICAgICAgICAgICBpZiAoJE1ldGhvZCAt ZXEgJ09QVElPTlMnKSB7DQogICAgICAgICAgICAgICAgJFJlc3BvbnNlLlN0YXR1c0NvZGUgPSAy MDQNCiAgICAgICAgICAgICAgICBBZGQtU2VjdXJpdHlIZWFkZXJzICRSZXNwb25zZQ0KICAgICAg ICAgICAgICAgICRSZXNwb25zZS5PdXRwdXRTdHJlYW0uQ2xvc2UoKQ0KICAgICAgICAgICAgICAg IGNvbnRpbnVlDQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICMgPT09PT0gU1lTVEVNID09 PT09DQogICAgICAgICAgICBpZiAoJFBhdGggLWVxICcvYXBpL2hlYXJ0YmVhdCcgLWFuZCAkTWV0 aG9kIC1lcSAnUE9TVCcpIHsNCiAgICAgICAgICAgICAgICAjIE9yaWdpbi1DaGVjayAoU3ByaW50 IDEg4oCUIFNpY2hlcmhlaXRzLU5vdGJyZW1zZSAyMDI2LTA1LTI4KToNCiAgICAgICAgICAgICAg ICAjIEhlYXJ0YmVhdCBha3plcHRpZXJ0IG51ciBSZXF1ZXN0cyB2b24gZGVyIGVpZ2VuZW4gQXBw LiBBbmRlcmUNCiAgICAgICAgICAgICAgICAjIGxva2FsZSBQcm96ZXNzZSBrb2VubnRlbiBzb25z dCBwZXIgTG9vcCBkaWUgQXV0by1TaHV0ZG93bi1Mb2dpaw0KICAgICAgICAgICAgICAgICMgdW1n ZWhlbiBvZGVyIGRlbiBTZXJ2ZXIgYmV3dXNzdCBhbSBMZWJlbiBoYWx0ZW4uIEJyb3dzZXIgc2Vu ZGV0DQogICAgICAgICAgICAgICAgIyBPcmlnaW4gYXV0b21hdGlzY2g7IGZlaGxlbmRlciBIZWFk ZXIgd2lyZCB0b2xlcmllcmVuIChzZW5kQmVhY29uDQogICAgICAgICAgICAgICAgIyBpbiBtYW5j aGVuIEJyb3dzZXJuKSwgYWJlciBGQUxTQ0hFUiBPcmlnaW4gd2lyZCBhYmdlbGVobnQuDQogICAg ICAgICAgICAgICAgJG9yaWdpbiA9ICRSZXF1ZXN0LkhlYWRlcnNbJ09yaWdpbiddDQogICAgICAg ICAgICAgICAgaWYgKCRvcmlnaW4gLWFuZCAkb3JpZ2luIC1uZSAkc2NyaXB0OkNvcnNPcmlnaW4p IHsNCiAgICAgICAgICAgICAgICAgICAgU2VuZC1FcnJvciAkUmVzcG9uc2UgJ09yaWdpbiBuaWNo dCBlcmxhdWJ0JyA0MDMNCiAgICAgICAgICAgICAgICAgICAgTG9nLUFwaSAoJ0hFQVJUQkVBVCA0 MDMgT3JpZ2luPXswfScgLWYgJG9yaWdpbikNCiAgICAgICAgICAgICAgICAgICAgY29udGludWUN CiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgJHNjcmlwdDpMYXN0SGVhcnRiZWF0 ID0gR2V0LURhdGUNCiAgICAgICAgICAgICAgICAkc2NyaXB0OlNodXRkb3duUGVuZGluZyA9ICRm YWxzZQ0KICAgICAgICAgICAgICAgICMgYWRtaW5WZXJzaW9uIC8gcGxhbnVuZ1ZlcnNpb246IG10 aW1lIGFscyBUaWNrcy4gRXJsYXVidCBkZW0NCiAgICAgICAgICAgICAgICAjIENsaWVudCwgUmVj aHRlLSBiencuIFBlcnNvbmVuLUFlbmRlcnVuZ2VuIGltIEhpbnRlcmdydW5kIHp1DQogICAgICAg ICAgICAgICAgIyBlcmtlbm5lbiB1bmQgWi5yZWNodGUvWi5wbGFudW5nIG5ldSB6dSBsYWRlbiwg b2huZSBkYXNzIGRlcg0KICAgICAgICAgICAgICAgICMgVXNlciBGNSBkcnVlY2tlbiBtdXNzLiBw bGFudW5nVmVyc2lvbiBkZWNrdCBpbnNiZXNvbmRlcmUNCiAgICAgICAgICAgICAgICAjIGVkaXRS ZWNodGUvc2VoZW4tVXBkYXRlcyBhYiwgZGllIGRlciBMaXZlLVN5bmMtRGVsdGEgbmljaHQNCiAg ICAgICAgICAgICAgICAjIGxpZWZlcnQgKENoZXJyeS1QaWNrIDFhZWZlMjYgQnVnICMzKS4NCiAg ICAgICAgICAgICAgICAkYWRtaW5WZXIgICA9IDANCiAgICAgICAgICAgICAgICAkcGxhbnVuZ1Zl ciA9IDANCiAgICAgICAgICAgICAgICB0cnkgew0KICAgICAgICAgICAgICAgICAgICAkYWRtaW5G aWxlID0gSm9pbi1QYXRoICREYXRhRGlyICdhZG1pbi5qc29uJw0KICAgICAgICAgICAgICAgICAg ICBpZiAoVGVzdC1QYXRoIC1MaXRlcmFsUGF0aCAkYWRtaW5GaWxlKSB7DQogICAgICAgICAgICAg ICAgICAgICAgICAkYWRtaW5WZXIgPSAoR2V0LUl0ZW0gLUxpdGVyYWxQYXRoICRhZG1pbkZpbGUp Lkxhc3RXcml0ZVRpbWVVdGMuVGlja3MNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAg ICAgICAgICAgICAkcGxhbnVuZ0ZpbGUgPSBKb2luLVBhdGggJERhdGFEaXIgJ3BsYW51bmcuanNv bicNCiAgICAgICAgICAgICAgICAgICAgaWYgKFRlc3QtUGF0aCAtTGl0ZXJhbFBhdGggJHBsYW51 bmdGaWxlKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAkcGxhbnVuZ1ZlciA9IChHZXQtSXRl bSAtTGl0ZXJhbFBhdGggJHBsYW51bmdGaWxlKS5MYXN0V3JpdGVUaW1lVXRjLlRpY2tzDQogICAg ICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9IGNhdGNoIHt9DQogICAgICAgICAg ICAgICAgU2VuZC1Kc29uT2JqZWN0ICRSZXNwb25zZSBAeyBzdGF0dXMgPSAnb2snOyBhZG1pblZl cnNpb24gPSAkYWRtaW5WZXI7IHBsYW51bmdWZXJzaW9uID0gJHBsYW51bmdWZXIgfQ0KICAgICAg ICAgICAgICAgIGNvbnRpbnVlDQogICAgICAgICAgICB9DQogICAgICAgICAgICBpZiAoJFBhdGgg LWVxICcvYXBpL3NodXRkb3duJyAtYW5kICRNZXRob2QgLWVxICdQT1NUJykgew0KICAgICAgICAg ICAgICAgIFNlbmQtSnNvbk9iamVjdCAkUmVzcG9uc2UgQHsgc3RhdHVzID0gJ3NodXRkb3duJyB9 DQogICAgICAgICAgICAgICAgU3RhcnQtU2xlZXAgLU1pbGxpc2Vjb25kcyAzMDANCiAgICAgICAg ICAgICAgICAkTGlzdGVuZXIuU3RvcCgpDQogICAgICAgICAgICAgICAgW0Vudmlyb25tZW50XTo6 RXhpdCgwKQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgaWYgKCRQYXRoIC1lcSAnL2FwaS9p bmZvJyAtYW5kICRNZXRob2QgLWVxICdHRVQnKSB7DQogICAgICAgICAgICAgICAgUmVmcmVzaC1V cGRhdGVDaGVjaw0KICAgICAgICAgICAgICAgICRyID0gR2V0LVJlY2h0ZQ0KICAgICAgICAgICAg ICAgICRpbmZvT2JqID0gQHsNCiAgICAgICAgICAgICAgICAgICAgYmVudXR6ZXIgICAgICAgICAg ICAgICAgPSAiJERvbWFpblwkVXNlcm5hbWUiDQogICAgICAgICAgICAgICAgICAgIHJvbGxlICAg ICAgICAgICAgICAgICAgID0gJHIucm9sbGUNCiAgICAgICAgICAgICAgICAgICAgaXN0U3VwZXJV c2VyICAgICAgICAgICAgPSAkci5pc3RTdXBlclVzZXINCiAgICAgICAgICAgICAgICAgICAgaXN0 RmFjaGF1ZnNpY2h0ICAgICAgICAgPSAkci5pc3RGYWNoYXVmc2ljaHQNCiAgICAgICAgICAgICAg ICAgICAgaXN0R2VzYW10dmVyYW50d29ydGxpY2ggPSAkci5pc3RHZXNhbXR2ZXJhbnR3b3J0bGlj aA0KICAgICAgICAgICAgICAgICAgICBzZWhlbiAgICAgICAgICAgICAgICAgICA9ICRyLnNlaGVu DQogICAgICAgICAgICAgICAgICAgIGFkbWluU3VidGFicyAgICAgICAgICAgID0gJHIuYWRtaW5T dWJ0YWJzDQogICAgICAgICAgICAgICAgICAgIHN0YXRpc3Rpa0JlcmVpY2hlICAgICAgID0gJHIu c3RhdGlzdGlrQmVyZWljaGUNCiAgICAgICAgICAgICAgICAgICAgZWRpdGllcmVuICAgICAgICAg ICAgICAgPSAkci5lZGl0aWVyZW4gICAjIG51bGwgYmVpIFN1cGVyVXNlciA9ICJhbGxlcyBlcmxh dWJ0Ig0KICAgICAgICAgICAgICAgICAgICBtZWluZVBlcnNvbklkICAgICAgICAgICA9ICRyLm1l aW5lUGVyc29uSWQNCiAgICAgICAgICAgICAgICAgICAgc2VydmVyICAgICAgICAgICAgICAgICAg PSAkc2NyaXB0OkNvcnNPcmlnaW4NCiAgICAgICAgICAgICAgICAgICAgdXBkYXRlQXZhaWxhYmxl ICAgICAgICAgPSAkc2NyaXB0OlVwZGF0ZUF2YWlsYWJsZQ0KICAgICAgICAgICAgICAgICAgICBy ZW1vdGVWZXJzaW9uICAgICAgICAgICA9ICRzY3JpcHQ6UmVtb3RlVmVyc2lvbg0KICAgICAgICAg ICAgICAgIH0NCiAgICAgICAgICAgICAgICBTZW5kLUpzb25PYmplY3QgJFJlc3BvbnNlICRpbmZv T2JqDQogICAgICAgICAgICAgICAgY29udGludWUNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAg IGlmICgkUGF0aCAtZXEgJy9hcGkvZGVidWcnIC1hbmQgJE1ldGhvZCAtZXEgJ0dFVCcpIHsNCiAg ICAgICAgICAgICAgICAkZGF0ID0gQHsgUm9vdCA9ICRSb290OyBEYXRhRGlyID0gJERhdGFEaXI7 IEZpbGVzID0gQHt9IH0NCiAgICAgICAgICAgICAgICBmb3JlYWNoICgkZiBpbiAnYWRtaW4uanNv bicsJ3BsYW51bmcuanNvbicsJ2xvZ2J1Y2guanNvbicpIHsNCiAgICAgICAgICAgICAgICAgICAg JGZwID0gSm9pbi1QYXRoICREYXRhRGlyICRmDQogICAgICAgICAgICAgICAgICAgICRpbmZvID0g QHsgZXhpc3RzID0gKFRlc3QtUGF0aCAtTGl0ZXJhbFBhdGggJGZwKSB9DQogICAgICAgICAgICAg ICAgICAgIGlmICgkaW5mby5leGlzdHMpIHsgJGluZm8uc2l6ZSA9IChHZXQtSXRlbSAtTGl0ZXJh bFBhdGggJGZwKS5MZW5ndGggfQ0KICAgICAgICAgICAgICAgICAgICAkZGF0LkZpbGVzWyRmXSA9 ICRpbmZvDQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICMgUmVjaHRlLUluZm8g KHdpY2h0aWcgZnVlciBBZG1pbi1UYWItU2ljaHRiYXJrZWl0KQ0KICAgICAgICAgICAgICAgICRk YXQuQmVudXR6ZXIgPSAiJERvbWFpblwkVXNlcm5hbWUiDQogICAgICAgICAgICAgICAgdHJ5IHsN CiAgICAgICAgICAgICAgICAgICAgJHIgPSBHZXQtUmVjaHRlDQogICAgICAgICAgICAgICAgICAg ICRkYXQuUmVjaHRlID0gQHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHJvbGxlICAgICAgICAg ICA9ICRyLnJvbGxlDQogICAgICAgICAgICAgICAgICAgICAgICBpc3RTdXBlclVzZXIgICAgPSAk ci5pc3RTdXBlclVzZXINCiAgICAgICAgICAgICAgICAgICAgICAgIGlzdEZhY2hhdWZzaWNodCA9 ICRyLmlzdEZhY2hhdWZzaWNodA0KICAgICAgICAgICAgICAgICAgICAgICAgc2VoZW4gICAgICAg ICAgID0gJHIuc2VoZW4NCiAgICAgICAgICAgICAgICAgICAgICAgIG1laW5lUGVyc29uSWQgICA9 ICRyLm1laW5lUGVyc29uSWQNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAg IH0gY2F0Y2ggew0KICAgICAgICAgICAgICAgICAgICAkZGF0LlJlY2h0ZSA9IEB7IGZlaGxlciA9 ICRfLkV4Y2VwdGlvbi5NZXNzYWdlIH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAg ICAgIyBBZG1pbi5qc29uIEt1cnpjaGVjaw0KICAgICAgICAgICAgICAgICRhZG1pbk9iaiA9IFJl YWQtSnNvbk9iamVjdCAnYWRtaW4uanNvbicNCiAgICAgICAgICAgICAgICBpZiAoJG51bGwgLWVx ICRhZG1pbk9iaikgew0KICAgICAgICAgICAgICAgICAgICAkZGF0LkFkbWluSnNvbkxlc2JhciA9 ICRmYWxzZQ0KICAgICAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgICAgICRh bnpTVSA9IDANCiAgICAgICAgICAgICAgICAgICAgaWYgKCRhZG1pbk9iai5zdXBlclVzZXIpIHsg JGFuelNVID0gQCgkYWRtaW5PYmouc3VwZXJVc2VyKS5Db3VudCB9DQogICAgICAgICAgICAgICAg ICAgICRzdUtlbm51bmdlbiA9IEAoKQ0KICAgICAgICAgICAgICAgICAgICBpZiAoJGFkbWluT2Jq LnN1cGVyVXNlcikgew0KICAgICAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCAoJHMgaW4gQCgk YWRtaW5PYmouc3VwZXJVc2VyKSkgeyAkc3VLZW5udW5nZW4gKz0gW3N0cmluZ10kcy5ud0tlbm51 bmcgfQ0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICRkYXQuQWRt aW5Kc29uTGVzYmFyID0gJHRydWUNCiAgICAgICAgICAgICAgICAgICAgJGRhdC5TdXBlclVzZXJB bnphaGwgPSAkYW56U1UNCiAgICAgICAgICAgICAgICAgICAgJGRhdC5TdXBlclVzZXJLZW5udW5n ZW4gPSAkc3VLZW5udW5nZW4NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgU2Vu ZC1Kc29uT2JqZWN0ICRSZXNwb25zZSAkZGF0DQogICAgICAgICAgICAgICAgY29udGludWUNCiAg ICAgICAgICAgIH0NCg0KICAgICAgICAgICAgIyA9PT09PSBTWU5DLUNIRUNLID09PT09DQogICAg ICAgICAgICAjIFZlcmdsZWljaHQgcHJvIFdlYi1Bc3NldCBkaWUgRGF0ZWktR3JvZXNzZSBpbiBk ZXIgU291cmNlIChnZXB1bGx0ZXMNCiAgICAgICAgICAgICMgUmVwbywgJHNjcmlwdDpBc3NldEZh bGxiYWNrKSBnZWdlbiBkaWUgRGF0ZWktR3JvZXNzZSBpbSBBc3NldC1DYWNoZQ0KICAgICAgICAg ICAgIyAoJFJvb3QsIFJvYm9jb3B5LVppZWwpLiBFcmtlbm50IHVudm9sbHN0YWVuZGlnZSBSb2Jv Y29weS1VZWJlci0NCiAgICAgICAgICAgICMgdHJhZ3VuZ2VuLCB2ZXJhbHRldGUgQXNzZXQtQ2Fj aGVzIHVuZCBmZWhsZW5kZSBEYXRlaWVuLg0KICAgICAgICAgICAgaWYgKCRQYXRoIC1lcSAnL2Fw aS9zeW5jLWNoZWNrL2RhdGVpZW4nIC1hbmQgJE1ldGhvZCAtZXEgJ0dFVCcpIHsNCiAgICAgICAg ICAgICAgICBpZiAoLW5vdCAoVGVzdC1Jc3RBZG1pbikpIHsgU2VuZC1FcnJvciAkUmVzcG9uc2Ug J0tlaW5lIEFkbWluLVJlY2h0ZScgNDAzOyBjb250aW51ZSB9DQogICAgICAgICAgICAgICAgaWYg KC1ub3QgJHNjcmlwdDpBc3NldEZhbGxiYWNrKSB7DQogICAgICAgICAgICAgICAgICAgIFNlbmQt SnNvbk9iamVjdCAkUmVzcG9uc2UgQHsNCiAgICAgICAgICAgICAgICAgICAgICAgIG9rID0gJGZh bHNlDQogICAgICAgICAgICAgICAgICAgICAgICBmZWhsZXIgPSAnQXNzZXRGYWxsYmFjayBuaWNo dCBrb25maWd1cmllcnQg4oCUIFNvdXJjZS1QZmFkIHVuYmVrYW5udCwgVmVyZ2xlaWNoIG5pY2h0 IG1vZWdsaWNoLiAoU2VydmVyIHd1cmRlIG9obmUgLUFzc2V0RmFsbGJhY2sgZ2VzdGFydGV0Likn DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgY29udGludWUNCiAg ICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgJHdlYkV4dCA9ICcuanMnLCcuY3NzJywn Lmh0bWwnLCcuaWNvJywnLnBuZycsJy5qcGcnLCcuanBlZycsJy5zdmcnDQogICAgICAgICAgICAg ICAgJGlnbm9yaWVyZVRvcCA9IEAoJy5naXQnLCdkb2NzJywnZGV2JywndGVzdHMnLCdkYXRhJywn Y2FjaGUnKQ0KICAgICAgICAgICAgICAgICRkYXRlaWVuID0gQCgpDQogICAgICAgICAgICAgICAg dHJ5IHsNCiAgICAgICAgICAgICAgICAgICAgJGFsbGUgPSBHZXQtQ2hpbGRJdGVtIC1MaXRlcmFs UGF0aCAkc2NyaXB0OkFzc2V0RmFsbGJhY2sgLVJlY3Vyc2UgLUZpbGUgLUVycm9yQWN0aW9uIFNp bGVudGx5Q29udGludWUNCiAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCAoJGYgaW4gJGFsbGUp IHsNCiAgICAgICAgICAgICAgICAgICAgICAgICRyZWwgPSAkZi5GdWxsTmFtZS5TdWJzdHJpbmco JHNjcmlwdDpBc3NldEZhbGxiYWNrLkxlbmd0aCArIDEpIC1yZXBsYWNlICdcXCcsICcvJw0KICAg ICAgICAgICAgICAgICAgICAgICAgJHRvcCA9ICgkcmVsIC1zcGxpdCAnLycpWzBdDQogICAgICAg ICAgICAgICAgICAgICAgICBpZiAoJGlnbm9yaWVyZVRvcCAtY29udGFpbnMgJHRvcCkgeyBjb250 aW51ZSB9DQogICAgICAgICAgICAgICAgICAgICAgICAkZXh0ID0gJGYuRXh0ZW5zaW9uLlRvTG93 ZXIoKQ0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCR3ZWJFeHQgLW5vdGNvbnRhaW5zICRl eHQpIHsgY29udGludWUgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgJGRhdGVpZW4gKz0gJHJl bA0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICMgZGF0YS8tU29u ZGVyZmFlbGxlOiBudXIgZGllIHp3ZWkgVGFybi1NYXJrdXBzLCBhbGxlcyBhbmRlcmUNCiAgICAg ICAgICAgICAgICAgICAgIyBsaWVndCBpbSBEYXRhRGlyIChhZG1pbi5qc29uL3BsYW51bmcuanNv bi8uLi4pIHVuZCB3aXJkIG5pY2h0DQogICAgICAgICAgICAgICAgICAgICMgaW4gZGVuIEFzc2V0 LUNhY2hlIGtvcGllcnQuDQogICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRleHRyYSBpbiAn ZGF0YS9tYWluZnJhbWUuaHRtbCcsJ2RhdGEvc2FuaXRpemVyLmh0bWwnKSB7DQogICAgICAgICAg ICAgICAgICAgICAgICAkc3JjRXh0cmEgPSBKb2luLVBhdGggJHNjcmlwdDpBc3NldEZhbGxiYWNr ICRleHRyYQ0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFRlc3QtUGF0aCAtTGl0ZXJhbFBh dGggJHNyY0V4dHJhKSB7ICRkYXRlaWVuICs9ICRleHRyYSB9DQogICAgICAgICAgICAgICAgICAg IH0NCiAgICAgICAgICAgICAgICB9IGNhdGNoIHsNCiAgICAgICAgICAgICAgICAgICAgU2VuZC1K c29uT2JqZWN0ICRSZXNwb25zZSBAeyBvayA9ICRmYWxzZTsgZmVobGVyID0gKCdTb3VyY2UtVmVy emVpY2huaXMgbmljaHQgbGVzYmFyOiAnICsgJF8uRXhjZXB0aW9uLk1lc3NhZ2UpIH0NCiAgICAg ICAgICAgICAgICAgICAgY29udGludWUNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAg ICAgJGRhdGVpZW4gPSAkZGF0ZWllbiB8IFNvcnQtT2JqZWN0IC1VbmlxdWUNCiAgICAgICAgICAg ICAgICAkZWludHJhZWdlID0gQCgpDQogICAgICAgICAgICAgICAgJGFuek9rID0gMDsgJGFuekRp ZmYgPSAwOyAkYW56RmVobHRBc3NldCA9IDA7ICRhbnpGZWhsdFNvdXJjZSA9IDANCiAgICAgICAg ICAgICAgICBmb3JlYWNoICgkcmVsIGluICRkYXRlaWVuKSB7DQogICAgICAgICAgICAgICAgICAg ICRhc3NldFBmYWQgID0gSm9pbi1QYXRoICRSb290ICRyZWwNCiAgICAgICAgICAgICAgICAgICAg JHNvdXJjZVBmYWQgPSBKb2luLVBhdGggJHNjcmlwdDpBc3NldEZhbGxiYWNrICRyZWwNCiAgICAg ICAgICAgICAgICAgICAgJGFzc2V0Qnl0ZXMgID0gJG51bGwNCiAgICAgICAgICAgICAgICAgICAg JHNvdXJjZUJ5dGVzID0gJG51bGwNCiAgICAgICAgICAgICAgICAgICAgaWYgKFRlc3QtUGF0aCAt TGl0ZXJhbFBhdGggJGFzc2V0UGZhZCkgIHsgJGFzc2V0Qnl0ZXMgID0gKEdldC1JdGVtIC1MaXRl cmFsUGF0aCAkYXNzZXRQZmFkKS5MZW5ndGggfQ0KICAgICAgICAgICAgICAgICAgICBpZiAoVGVz dC1QYXRoIC1MaXRlcmFsUGF0aCAkc291cmNlUGZhZCkgeyAkc291cmNlQnl0ZXMgPSAoR2V0LUl0 ZW0gLUxpdGVyYWxQYXRoICRzb3VyY2VQZmFkKS5MZW5ndGggfQ0KICAgICAgICAgICAgICAgICAg ICAkc3RhdHVzID0gJ3VuYmVrYW5udCcNCiAgICAgICAgICAgICAgICAgICAgaWYgKCRudWxsIC1l cSAkc291cmNlQnl0ZXMgLWFuZCAkbnVsbCAtZXEgJGFzc2V0Qnl0ZXMpIHsgJHN0YXR1cyA9ICdi ZWlkZV9mZWhsZW4nIH0NCiAgICAgICAgICAgICAgICAgICAgZWxzZWlmICgkbnVsbCAtZXEgJGFz c2V0Qnl0ZXMpICB7ICRzdGF0dXMgPSAnYXNzZXRfZmVobHQnOyAgJGFuekZlaGx0QXNzZXQrKyB9 DQogICAgICAgICAgICAgICAgICAgIGVsc2VpZiAoJG51bGwgLWVxICRzb3VyY2VCeXRlcykgeyAk c3RhdHVzID0gJ3NvdXJjZV9mZWhsdCc7ICRhbnpGZWhsdFNvdXJjZSsrIH0NCiAgICAgICAgICAg ICAgICAgICAgZWxzZWlmICgkYXNzZXRCeXRlcyAtZXEgJHNvdXJjZUJ5dGVzKSB7ICRzdGF0dXMg PSAnb2snOyAkYW56T2srKyB9DQogICAgICAgICAgICAgICAgICAgIGVsc2UgeyAkc3RhdHVzID0g J2dyb2Vzc2VfZGlmZic7ICRhbnpEaWZmKysgfQ0KICAgICAgICAgICAgICAgICAgICAkZWludHJh ZWdlICs9IFtvcmRlcmVkXUB7DQogICAgICAgICAgICAgICAgICAgICAgICBwZmFkICAgICAgICA9 ICRyZWwNCiAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZUJ5dGVzID0gJHNvdXJjZUJ5dGVz DQogICAgICAgICAgICAgICAgICAgICAgICBhc3NldEJ5dGVzICA9ICRhc3NldEJ5dGVzDQogICAg ICAgICAgICAgICAgICAgICAgICBkaWZmQnl0ZXMgICA9IGlmICgkbnVsbCAtbmUgJHNvdXJjZUJ5 dGVzIC1hbmQgJG51bGwgLW5lICRhc3NldEJ5dGVzKSB7ICRhc3NldEJ5dGVzIC0gJHNvdXJjZUJ5 dGVzIH0gZWxzZSB7ICRudWxsIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1cyAgICAg ID0gJHN0YXR1cw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KICAg ICAgICAgICAgICAgIFNlbmQtSnNvbk9iamVjdCAkUmVzcG9uc2UgQHsNCiAgICAgICAgICAgICAg ICAgICAgb2sgICAgICAgICAgPSAkdHJ1ZQ0KICAgICAgICAgICAgICAgICAgICBzb3VyY2VSb290 ICA9ICRzY3JpcHQ6QXNzZXRGYWxsYmFjaw0KICAgICAgICAgICAgICAgICAgICBhc3NldFJvb3Qg ICA9ICRSb290DQogICAgICAgICAgICAgICAgICAgIGFuemFobCAgICAgID0gJGVpbnRyYWVnZS5D b3VudA0KICAgICAgICAgICAgICAgICAgICBhbnpPayAgICAgICA9ICRhbnpPaw0KICAgICAgICAg ICAgICAgICAgICBhbnpEaWZmICAgICA9ICRhbnpEaWZmDQogICAgICAgICAgICAgICAgICAgIGFu ekZlaGx0QXNzZXQgID0gJGFuekZlaGx0QXNzZXQNCiAgICAgICAgICAgICAgICAgICAgYW56RmVo bHRTb3VyY2UgPSAkYW56RmVobHRTb3VyY2UNCiAgICAgICAgICAgICAgICAgICAgZGF0ZWllbiAg ICAgPSAkZWludHJhZWdlDQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGNvbnRp bnVlDQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICMgPT09PT0gQURNSU4gPT09PT0NCiAg ICAgICAgICAgIGlmICgkUGF0aCAtZXEgJy9hcGkvYWRtaW4nIC1hbmQgJE1ldGhvZCAtZXEgJ0dF VCcpIHsNCiAgICAgICAgICAgICAgICAkdHh0ID0gUmVhZC1UZXh0RmlsZSAnYWRtaW4uanNvbicN CiAgICAgICAgICAgICAgICBpZiAoJG51bGwgLWVxICR0eHQpIHsgU2VuZC1FcnJvciAkUmVzcG9u c2UgJ2FkbWluLmpzb24gbmljaHQgZ2VmdW5kZW4nIDQwNCB9DQogICAgICAgICAgICAgICAgZWxz ZSB7IFNlbmQtSnNvblRleHQgJFJlc3BvbnNlICR0eHQgfQ0KICAgICAgICAgICAgICAgIGNvbnRp bnVlDQogICAgICAgICAgICB9DQogICAgICAgICAgICBpZiAoJFBhdGggLWVxICcvYXBpL2FkbWlu JyAtYW5kICRNZXRob2QgLWVxICdQVVQnKSB7DQogICAgICAgICAgICAgICAgaWYgKC1ub3QgKFRl c3QtRGFyZkJlcmVpY2ggJ2FkbWluaXN0cmF0aW9uJykpIHsgU2VuZC1FcnJvciAkUmVzcG9uc2Ug J0tlaW5lIEFkbWluLVJlY2h0ZScgNDAzOyBjb250aW51ZSB9DQogICAgICAgICAgICAgICAgJGJv ZHkgPSBSZWFkLUJvZHkgJFJlcXVlc3QNCiAgICAgICAgICAgICAgICBpZiAoLW5vdCAkYm9keSkg eyBTZW5kLUVycm9yICRSZXNwb25zZSAnQW5mcmFnZSB6dSBncm9zcycgNDEzOyBjb250aW51ZSB9 DQogICAgICAgICAgICAgICAgJGRhdGVuID0gJGJvZHkgfCBDb252ZXJ0RnJvbS1Kc29uDQogICAg ICAgICAgICAgICAgaWYgKCRkYXRlbi5QU09iamVjdC5Qcm9wZXJ0aWVzWydhZG1pbktlbm51bmdl biddKSB7ICRkYXRlbi5QU09iamVjdC5Qcm9wZXJ0aWVzLlJlbW92ZSgnYWRtaW5LZW5udW5nZW4n KSB9DQogICAgICAgICAgICAgICAgIyBQUy01LjEtVW53cmFwLVNjaHV0ejogYWxsZSBMaXN0ZW4t RmVsZGVyLCBkaWUgZGVyIENsaWVudCB1bnRlcg0KICAgICAgICAgICAgICAgICMgQURNSU5fTElT VF9GRUxERVIgZnVlaHJ0LCBzZXJ2ZXItc2VpdGlnIGFscyBBcnJheXMgZXJ6d2luZ2VuLg0KICAg ICAgICAgICAgICAgICMgU29uc3Qgd2VyZGVuIExpc3RlbiBtaXQgbnVyIGVpbmVtIEVsZW1lbnQg dm9tIFBvd2VyU2hlbGwtSlNPTi0NCiAgICAgICAgICAgICAgICAjIFJvdW5kdHJpcCB6dW0gRWlu emVsLU9iamVrdCBlbnRwYWNrdCB1bmQgY2xpZW50LXNlaXRpZyBrb21tdA0KICAgICAgICAgICAg ICAgICMgYWRtaW5MaXN0ZW5Ob3JtYWxpc2llcmVuIGdnZi4genUgc3BhZXQgKHouQi4gbmFjaCBI b3QtUmVsb2FkKS4NCiAgICAgICAgICAgICAgICBOb3JtYWxpc2llcmUtQWRtaW5MaXN0ZW4gJGRh dGVuDQogICAgICAgICAgICAgICAgIyBTZXJ2ZXItc2VpdGlnZSBSaWNoLVRleHQtU2FuaXRpc2ll cnVuZyAoU3RvcmVkLVhTUy1TY2h1dHopLg0KICAgICAgICAgICAgICAgIEludm9rZS1BZG1pblJp Y2h0ZXh0U2FuaXRpemUgJGRhdGVuDQogICAgICAgICAgICAgICAgJGlzdFNVID0gVGVzdC1Jc3RT dXBlclVzZXINCiAgICAgICAgICAgICAgICAkbG9ja0VyZ2VibmlzID0gJG51bGwNCiAgICAgICAg ICAgICAgICB0cnkgew0KICAgICAgICAgICAgICAgICAgICAkbG9ja0VyZ2VibmlzID0gSW52b2tl LVdpdGhGaWxlTG9jayAnYWRtaW4uanNvbicgew0KICAgICAgICAgICAgICAgICAgICAgICAgIyBO dXIgU3VwZXJVc2VyIGRhcmYgZGllIFJvbGxlbi1MaXN0ZW4gc3VwZXJVc2VyL2ZhY2hhdWZzaWNo dA0KICAgICAgICAgICAgICAgICAgICAgICAgIyB1ZWJlciAvYXBpL2FkbWluIGFlbmRlcm4g4oCU IHNvbnN0IGtvZW5udGUgamVtYW5kIHNpY2ggc2VsYnN0DQogICAgICAgICAgICAgICAgICAgICAg ICAjIHp1bSBTdXBlclVzZXIgYmVmb2VyZGVybiB1bmQgZGFtaXQgZGllIHNlcGFyYXRlbiBHdWFy ZHMgYXVmDQogICAgICAgICAgICAgICAgICAgICAgICAjIC9hcGkvYWRtaW4vc3VwZXJ1c2VyIGJ6 dy4gL2FwaS9hZG1pbi9mYWNoYXVmc2ljaHQgdW1nZWhlbi4NCiAgICAgICAgICAgICAgICAgICAg ICAgICMgYWRtaW5LZW5udW5nZW4gaXN0IGdlbmVyZWxsIGFiZ2VzY2hhZmZ0IHVuZCB3aXJkIGVu dGZlcm50Lg0KICAgICAgICAgICAgICAgICAgICAgICAgIyBSZWFkIGRlciBhbHRlbiBXZXJ0ZSBt dXNzIElOTkVSSEFMQiBkZXMgTG9ja3MgcGFzc2llcmVuLA0KICAgICAgICAgICAgICAgICAgICAg ICAgIyBkYW1pdCBkaWUgU1UvRmFjaGF1ZnNpY2h0LUxpc3RlbiBhdG9tYXIgZXJoYWx0ZW4gYmxl aWJlbi4NCiAgICAgICAgICAgICAgICAgICAgICAgICRhbHQgPSBSZWFkLUpzb25PYmplY3QgJ2Fk bWluLmpzb24nDQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoLW5vdCAkaXN0U1UpIHsNCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JlYWNoICgkZmVsZCBpbiAnc3VwZXJVc2VyJywn ZmFjaGF1ZnNpY2h0JywnZGlyZWt0aW9uc2xlaXR1bmcnLCdmdWVocnVuZ3NzdGVsbGUnKSB7DQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkYWx0IC1hbmQgJGFsdC5QU09iamVj dC5Qcm9wZXJ0aWVzWyRmZWxkXSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgaWYgKCRkYXRlbi5QU09iamVjdC5Qcm9wZXJ0aWVzWyRmZWxkXSkgeyAkZGF0ZW4uJGZlbGQg PSAkYWx0LiRmZWxkIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Ug eyAkZGF0ZW4gfCBBZGQtTWVtYmVyIC1Ob3RlUHJvcGVydHlOYW1lICRmZWxkIC1Ob3RlUHJvcGVy dHlWYWx1ZSAkYWx0LiRmZWxkIC1Gb3JjZSB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIH0gZWxzZWlmICgkZGF0ZW4uUFNPYmplY3QuUHJvcGVydGllc1skZmVsZF0pIHsNCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRkYXRlbi5QU09iamVjdC5Qcm9wZXJ0aWVz LlJlbW92ZSgkZmVsZCkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAg ICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAg ICAgICAgICAgICAgICAgICAgICMgS2V5LVVuaW9uOiBuaWNodCBtaXRnZXNlbmRldGUgVG9wLUxl dmVsLUtleXMgZXJoYWx0ZW4uDQogICAgICAgICAgICAgICAgICAgICAgICBbdm9pZF0oTWVyZ2Ut QWRtaW5LZXlzICRhbHQgJGRhdGVuKQ0KICAgICAgICAgICAgICAgICAgICAgICAgV3JpdGUtSnNv bk9iamVjdCAnYWRtaW4uanNvbicgJGRhdGVuIHwgT3V0LU51bGwNCiAgICAgICAgICAgICAgICAg ICAgICAgIHJldHVybiBAeyBvayA9ICR0cnVlIH0NCiAgICAgICAgICAgICAgICAgICAgfQ0KICAg ICAgICAgICAgICAgIH0gY2F0Y2ggew0KICAgICAgICAgICAgICAgICAgICBTZW5kLUVycm9yICRS ZXNwb25zZSAoIkxvY2stRmVobGVyOiAkXyIpIDUwMzsgY29udGludWUNCiAgICAgICAgICAgICAg ICB9DQogICAgICAgICAgICAgICAgaWYgKC1ub3QgJGxvY2tFcmdlYm5pcy5vaykgeyBTZW5kLUVy cm9yICRSZXNwb25zZSAkbG9ja0VyZ2VibmlzLm1zZyAkbG9ja0VyZ2VibmlzLnN0YXR1czsgY29u dGludWUgfQ0KICAgICAgICAgICAgICAgIFdyaXRlLUxvZ0VpbnRyYWcgJ2FkbWluLmdlYWVuZGVy dCcgQHt9DQogICAgICAgICAgICAgICAgU2VuZC1Kc29uT2JqZWN0ICRSZXNwb25zZSBAeyBzdGF0 dXMgPSAnZ2VzcGVpY2hlcnQnIH0NCiAgICAgICAgICAgICAgICBjb250aW51ZQ0KICAgICAgICAg ICAgfQ0KDQogICAgICAgICAgICAjIFN1cGVyLVVzZXItTGlzdGU6IG51ciBTdXBlclVzZXIgZGFy ZiBTdXBlclVzZXIgdmVyd2FsdGVuDQogICAgICAgICAgICBpZiAoJFBhdGggLWVxICcvYXBpL2Fk bWluL3N1cGVydXNlcicgLWFuZCAkTWV0aG9kIC1lcSAnUFVUJykgew0KICAgICAgICAgICAgICAg IGlmICgtbm90IChUZXN0LUlzdFN1cGVyVXNlcikpIHsgU2VuZC1FcnJvciAkUmVzcG9uc2UgJ051 ciBTdXBlclVzZXIgZHVlcmZlbiBTdXBlclVzZXIgdmVyd2FsdGVuJyA0MDM7IGNvbnRpbnVlIH0N CiAgICAgICAgICAgICAgICAkYm9keSA9IFJlYWQtQm9keSAkUmVxdWVzdA0KICAgICAgICAgICAg ICAgIGlmICgtbm90ICRib2R5KSB7IFNlbmQtRXJyb3IgJFJlc3BvbnNlICdBbmZyYWdlIHp1IGdy b3NzJyA0MTM7IGNvbnRpbnVlIH0NCiAgICAgICAgICAgICAgICAjIEAoLi4uKSBlcnp3aW5ndCBB cnJheSBhdWNoIGJlaSAxIEVsZW1lbnQgKFBTIDUuMSBlbnRwYWNrdCBzb25zdCB6dSBFaW56ZWwt T2JqZWt0LA0KICAgICAgICAgICAgICAgICMgZGFubiB3aXJkIGRpZSBMaXN0ZSBpbiBhZG1pbi5q c29uIHp1bSBPYmpla3QgZGVnZW5lcmllcnQgLT4gQ2xpZW50LUZlaGxlcikuDQogICAgICAgICAg ICAgICAgJGJvZHlPYmogPSAkYm9keSB8IENvbnZlcnRGcm9tLUpzb24NCiAgICAgICAgICAgICAg ICAkZGF0ZW4gPSBbb2JqZWN0W11dQCgkYm9keU9iaikNCiAgICAgICAgICAgICAgICAkbG9ja0Vy Z2VibmlzID0gJG51bGwNCiAgICAgICAgICAgICAgICB0cnkgew0KICAgICAgICAgICAgICAgICAg ICAkbG9ja0VyZ2VibmlzID0gSW52b2tlLVdpdGhGaWxlTG9jayAnYWRtaW4uanNvbicgew0KICAg ICAgICAgICAgICAgICAgICAgICAgJGFkbWluID0gUmVhZC1Kc29uT2JqZWN0ICdhZG1pbi5qc29u Jw0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRudWxsIC1lcSAkYWRtaW4pIHsgcmV0dXJu IEB7IG9rID0gJGZhbHNlOyBzdGF0dXMgPSA1MDA7IG1zZyA9ICdhZG1pbi5qc29uIG5pY2h0IGxl c2JhcicgfSB9DQogICAgICAgICAgICAgICAgICAgICAgICAkd2lwZU1zZyA9IFRlc3QtV2lwZVNj aHV0eiAnc3VwZXJVc2VyJyAkZGF0ZW4gJGFkbWluICRSZXF1ZXN0ICRib2R5T2JqDQogICAgICAg ICAgICAgICAgICAgICAgICBpZiAoJHdpcGVNc2cpIHsgcmV0dXJuIEB7IG9rID0gJGZhbHNlOyBz dGF0dXMgPSA0MDk7IG1zZyA9ICR3aXBlTXNnIH0gfQ0KICAgICAgICAgICAgICAgICAgICAgICAg IyBBbHRlIExpc3RlIHZvciBkZW0gT3ZlcndyaXRlIHNuYXBzaG90dGVuIOKAlCB3aXIgYnJhdWNo ZW4NCiAgICAgICAgICAgICAgICAgICAgICAgICMgc2llIG5hY2ggZGVtIExvY2sgZnVlciBkaWUg RGlmZi1CZXJlY2hudW5nIChtYWlsdG8gYmVpDQogICAgICAgICAgICAgICAgICAgICAgICAjIFNV IHJlaW4vcmF1cykuDQogICAgICAgICAgICAgICAgICAgICAgICAkYWx0U1UgPSBAKCkNCiAgICAg ICAgICAgICAgICAgICAgICAgIGlmICgkYWRtaW4uUFNPYmplY3QuUHJvcGVydGllc1snc3VwZXJV c2VyJ10pIHsgJGFsdFNVID0gW29iamVjdFtdXUAoJGFkbWluLnN1cGVyVXNlcikgfQ0KICAgICAg ICAgICAgICAgICAgICAgICAgW3ZvaWRdKEJhY2t1cC1BZG1pbkpzb24gJ3N1cGVyVXNlcicpDQog ICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGFkbWluLlBTT2JqZWN0LlByb3BlcnRpZXNbJ3N1 cGVyVXNlciddKSB7ICRhZG1pbi5zdXBlclVzZXIgPSAkZGF0ZW4gfQ0KICAgICAgICAgICAgICAg ICAgICAgICAgZWxzZSB7ICRhZG1pbiB8IEFkZC1NZW1iZXIgLU5vdGVQcm9wZXJ0eU5hbWUgJ3N1 cGVyVXNlcicgLU5vdGVQcm9wZXJ0eVZhbHVlICRkYXRlbiAtRm9yY2UgfQ0KICAgICAgICAgICAg ICAgICAgICAgICAgV3JpdGUtSnNvbk9iamVjdCAnYWRtaW4uanNvbicgJGFkbWluIHwgT3V0LU51 bGwNCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBAeyBvayA9ICR0cnVlOyBhbHQgPSAk YWx0U1UgfQ0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfSBjYXRjaCB7 DQogICAgICAgICAgICAgICAgICAgIFNlbmQtRXJyb3IgJFJlc3BvbnNlICgiTG9jay1GZWhsZXI6 ICRfIikgNTAzOyBjb250aW51ZQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBp ZiAoLW5vdCAkbG9ja0VyZ2VibmlzLm9rKSB7IFNlbmQtRXJyb3IgJFJlc3BvbnNlICRsb2NrRXJn ZWJuaXMubXNnICRsb2NrRXJnZWJuaXMuc3RhdHVzOyBjb250aW51ZSB9DQogICAgICAgICAgICAg ICAgIyBEaWZmIGFsdC9uZXUgbmFjaCBud0tlbm51bmcuIFNVLVJlaW4vUmF1cyBsb2VzdCBtYWls dG8gdmlhIENsaWVudCBhdXMNCiAgICAgICAgICAgICAgICAjIChWZXJhbnR3b3J0dW5ncy1VZWJl cmdhbmcgVm9ybGFnZSAncm9sbGVfdmVyYW50d29ydHVuZycpLg0KICAgICAgICAgICAgICAgICRt YWlsdG9EaWZmcyA9IEdldC1Sb2xsZURpZmZzICRsb2NrRXJnZWJuaXMuYWx0ICRkYXRlbiAnU3Vw ZXJVc2VyJyAkZmFsc2UNCiAgICAgICAgICAgICAgICAjIGFuemFobCBtaXRnZWJlbiDigJQgZGVy IExvZ2J1Y2gtQ2xpZW50IGxpZXN0IGUuYW56YWhsOyBvaG5lIGRhcw0KICAgICAgICAgICAgICAg ICMgRmVsZCBibGllYiBkaWUgRGV0YWlsLVNwYWx0ZSBiZWkgU1UtTGlzdGVuYWVuZGVydW5nZW4g bGVlcg0KICAgICAgICAgICAgICAgICMgKGZhY2hhdWZzaWNodC5nZWFlbmRlcnQgdW50ZW4gbWFj aHQgZXMgZ2VuYXVzbykuDQogICAgICAgICAgICAgICAgV3JpdGUtTG9nRWludHJhZyAnc3VwZXJV c2VyLmdlYWVuZGVydCcgQHsgYW56YWhsID0gJGRhdGVuLkNvdW50OyBkaWZmcyA9ICRtYWlsdG9E aWZmcy5Db3VudCB9DQogICAgICAgICAgICAgICAgJHJlc3AgPSBAeyBzdGF0dXMgPSAnZ2VzcGVp Y2hlcnQnIH0NCiAgICAgICAgICAgICAgICBpZiAoJG1haWx0b0RpZmZzLkNvdW50IC1ndCAwKSB7 DQogICAgICAgICAgICAgICAgICAgICMgUFMtNS4xLVVud3JhcC1TY2h1dHo6IEAoJHgpIGVyendp bmd0IEFycmF5IGF1Y2ggYmVpIDEgRWxlbWVudC4NCiAgICAgICAgICAgICAgICAgICAgJHJlc3Bb J19icmF1Y2h0X21haWx0byddID0gW29yZGVyZWRdQHsgdHJpZ2dlciA9ICdyb2xsZV92ZXJhbnR3 b3J0dW5nJzsgZGlmZnMgPSBbb2JqZWN0W11dQCgkbWFpbHRvRGlmZnMpIH0NCiAgICAgICAgICAg ICAgICB9DQogICAgICAgICAgICAgICAgU2VuZC1Kc29uT2JqZWN0ICRSZXNwb25zZSAkcmVzcA0K ICAgICAgICAgICAgICAgIGNvbnRpbnVlDQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICMg RmFjaGF1ZnNpY2h0LUxpc3RlOiBudXIgU3VwZXJVc2VyIGRhcmYgRmFjaGF1ZnNpY2h0IHZlcndh bHRlbg0KICAgICAgICAgICAgaWYgKCRQYXRoIC1lcSAnL2FwaS9hZG1pbi9mYWNoYXVmc2ljaHQn IC1hbmQgJE1ldGhvZCAtZXEgJ1BVVCcpIHsNCiAgICAgICAgICAgICAgICBpZiAoLW5vdCAoVGVz dC1Jc3RTdXBlclVzZXIpKSB7IFNlbmQtRXJyb3IgJFJlc3BvbnNlICdOdXIgU3VwZXJVc2VyIGR1 ZXJmZW4gRmFjaGF1ZnNpY2h0IHZlcndhbHRlbicgNDAzOyBjb250aW51ZSB9DQogICAgICAgICAg ICAgICAgJGJvZHkgPSBSZWFkLUJvZHkgJFJlcXVlc3QNCiAgICAgICAgICAgICAgICBpZiAoLW5v dCAkYm9keSkgeyBTZW5kLUVycm9yICRSZXNwb25zZSAnQW5mcmFnZSB6dSBncm9zcycgNDEzOyBj b250aW51ZSB9DQogICAgICAgICAgICAgICAgJGJvZHlPYmogPSAkYm9keSB8IENvbnZlcnRGcm9t LUpzb24NCiAgICAgICAgICAgICAgICAkZGF0ZW4gPSBbb2JqZWN0W11dQCgkYm9keU9iaikNCiAg ICAgICAgICAgICAgICAkbG9ja0VyZ2VibmlzID0gJG51bGwNCiAgICAgICAgICAgICAgICB0cnkg ew0KICAgICAgICAgICAgICAgICAgICAkbG9ja0VyZ2VibmlzID0gSW52b2tlLVdpdGhGaWxlTG9j ayAnYWRtaW4uanNvbicgew0KICAgICAgICAgICAgICAgICAgICAgICAgJGFkbWluID0gUmVhZC1K c29uT2JqZWN0ICdhZG1pbi5qc29uJw0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRudWxs IC1lcSAkYWRtaW4pIHsgcmV0dXJuIEB7IG9rID0gJGZhbHNlOyBzdGF0dXMgPSA1MDA7IG1zZyA9 ICdhZG1pbi5qc29uIG5pY2h0IGxlc2JhcicgfSB9DQogICAgICAgICAgICAgICAgICAgICAgICAk d2lwZU1zZyA9IFRlc3QtV2lwZVNjaHV0eiAnZmFjaGF1ZnNpY2h0JyAkZGF0ZW4gJGFkbWluICRS ZXF1ZXN0ICRib2R5T2JqDQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHdpcGVNc2cpIHsg cmV0dXJuIEB7IG9rID0gJGZhbHNlOyBzdGF0dXMgPSA0MDk7IG1zZyA9ICR3aXBlTXNnIH0gfQ0K ICAgICAgICAgICAgICAgICAgICAgICAgJGFsdEZBID0gQCgpDQogICAgICAgICAgICAgICAgICAg ICAgICBpZiAoJGFkbWluLlBTT2JqZWN0LlByb3BlcnRpZXNbJ2ZhY2hhdWZzaWNodCddKSB7ICRh bHRGQSA9IFtvYmplY3RbXV1AKCRhZG1pbi5mYWNoYXVmc2ljaHQpIH0NCiAgICAgICAgICAgICAg ICAgICAgICAgIFt2b2lkXShCYWNrdXAtQWRtaW5Kc29uICdmYWNoYXVmc2ljaHQnKQ0KICAgICAg ICAgICAgICAgICAgICAgICAgaWYgKCRhZG1pbi5QU09iamVjdC5Qcm9wZXJ0aWVzWydmYWNoYXVm c2ljaHQnXSkgeyAkYWRtaW4uZmFjaGF1ZnNpY2h0ID0gJGRhdGVuIH0NCiAgICAgICAgICAgICAg ICAgICAgICAgIGVsc2UgeyAkYWRtaW4gfCBBZGQtTWVtYmVyIC1Ob3RlUHJvcGVydHlOYW1lICdm YWNoYXVmc2ljaHQnIC1Ob3RlUHJvcGVydHlWYWx1ZSAkZGF0ZW4gLUZvcmNlIH0NCiAgICAgICAg ICAgICAgICAgICAgICAgIFdyaXRlLUpzb25PYmplY3QgJ2FkbWluLmpzb24nICRhZG1pbiB8IE91 dC1OdWxsDQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gQHsgb2sgPSAkdHJ1ZTsgYWx0 ID0gJGFsdEZBIH0NCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0gY2F0 Y2ggew0KICAgICAgICAgICAgICAgICAgICBTZW5kLUVycm9yICRSZXNwb25zZSAoIkxvY2stRmVo bGVyOiAkXyIpIDUwMzsgY29udGludWUNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAg ICAgaWYgKC1ub3QgJGxvY2tFcmdlYm5pcy5vaykgeyBTZW5kLUVycm9yICRSZXNwb25zZSAkbG9j a0VyZ2VibmlzLm1zZyAkbG9ja0VyZ2VibmlzLnN0YXR1czsgY29udGludWUgfQ0KICAgICAgICAg ICAgICAgICMgRmFjaGF1ZnNpY2h0LURpZmY6IHRyZW5udCBtYWlsdG8td3VlcmRpZ2UgVmVyYW50 d29ydHVuZ3MtDQogICAgICAgICAgICAgICAgIyBVZWJlcmdhZW5nZSAoR2VzYW10dmVyYW50d29y dGxpY2ggcmVpbi9yYXVzKSB2b20gcmVzdGxpY2hlbg0KICAgICAgICAgICAgICAgICMgUm9sbGVu LVVwZGF0ZXMgKEZBIGhpbnp1L3JhdXMgb2huZSBHZXNhbXQsIG9kZXIgU2VoZW4tRmxhZy0NCiAg ICAgICAgICAgICAgICAjIFdlY2hzZWwpLiBFcnN0ZSBmbGllw59lbiBpbiBkZW4gbWFpbHRvLVRy aWdnZXIsIGRlciBSZXN0IHdpcmQNCiAgICAgICAgICAgICAgICAjIHp1IEluLUFwcC1IaW53ZWlz ZW4uDQogICAgICAgICAgICAgICAgJGZhQXVzd2VydHVuZyA9IEdldC1GYWNoYXVmc2ljaHREaWZm cyAkbG9ja0VyZ2VibmlzLmFsdCAkZGF0ZW4NCiAgICAgICAgICAgICAgICBXcml0ZS1Mb2dFaW50 cmFnICdmYWNoYXVmc2ljaHQuZ2VhZW5kZXJ0JyBAeyBhbnphaGwgPSAkZGF0ZW4uQ291bnQ7IG1h aWx0byA9ICRmYUF1c3dlcnR1bmcubWFpbHRvRGlmZnMuQ291bnQ7IGhpbndlaXNlID0gJGZhQXVz d2VydHVuZy5oaW53ZWlzRGlmZnMuQ291bnQgfQ0KICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRo IGluICRmYUF1c3dlcnR1bmcuaGlud2Vpc0RpZmZzKSB7DQogICAgICAgICAgICAgICAgICAgIE5l dy1IaW53ZWlzICdyb2xsZV9nZWFlbmRlcnQnICRoIChHZXQtQWt0dWVsbGVyQmVudXR6ZXIpIHwg T3V0LU51bGwNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgJHJlc3AgPSBAeyBz dGF0dXMgPSAnZ2VzcGVpY2hlcnQnIH0NCiAgICAgICAgICAgICAgICBpZiAoJGZhQXVzd2VydHVu Zy5tYWlsdG9EaWZmcy5Db3VudCAtZ3QgMCkgew0KICAgICAgICAgICAgICAgICAgICAjIFBTLTUu MS1VbndyYXAtU2NodXR6OiBAKCR4KSBlcnp3aW5ndCBBcnJheSBhdWNoIGJlaSAxIEVsZW1lbnQu DQogICAgICAgICAgICAgICAgICAgICRyZXNwWydfYnJhdWNodF9tYWlsdG8nXSA9IFtvcmRlcmVk XUB7IHRyaWdnZXIgPSAncm9sbGVfdmVyYW50d29ydHVuZyc7IGRpZmZzID0gW29iamVjdFtdXUAo JGZhQXVzd2VydHVuZy5tYWlsdG9EaWZmcykgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAg ICAgICAgICBTZW5kLUpzb25PYmplY3QgJFJlc3BvbnNlICRyZXNwDQogICAgICAgICAgICAgICAg Y29udGludWUNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgIyBEaXJla3Rpb25zbGVpdHVu ZyArIEZ1ZWhydW5nc3N0ZWxsZSAoZ2xlaWNoZXMgU2NoZW1hIHdpZQ0KICAgICAgICAgICAgIyBG YWNoYXVmc2ljaHQsIG51ciBzZXBhcmF0ZSBMaXN0ZW4pLiBCZWlkZSBSb3V0ZW4gdGVpbGVuIGRp ZQ0KICAgICAgICAgICAgIyBnbGVpY2hlIExvZ2lrOiBTVS1vbmx5IFBVVCwgQmFja3VwLCBTY2hy ZWliZW4sIERpZmZzIHp1DQogICAgICAgICAgICAjIEluLUFwcC1IaW53ZWlzZW4gdW1zZXR6ZW4u DQogICAgICAgICAgICBpZiAoKCRQYXRoIC1lcSAnL2FwaS9hZG1pbi9kaXJla3Rpb25zbGVpdHVu ZycgLW9yICRQYXRoIC1lcSAnL2FwaS9hZG1pbi9mdWVocnVuZ3NzdGVsbGUnKSAtYW5kICRNZXRo b2QgLWVxICdQVVQnKSB7DQogICAgICAgICAgICAgICAgaWYgKC1ub3QgKFRlc3QtSXN0U3VwZXJV c2VyKSkgeyBTZW5kLUVycm9yICRSZXNwb25zZSAnTnVyIFN1cGVyVXNlciBkdWVyZmVuIFJvbGxl biB2ZXJ3YWx0ZW4nIDQwMzsgY29udGludWUgfQ0KICAgICAgICAgICAgICAgICRmZWxkTmFtZSA9 IGlmICgkUGF0aCAtZXEgJy9hcGkvYWRtaW4vZGlyZWt0aW9uc2xlaXR1bmcnKSB7ICdkaXJla3Rp b25zbGVpdHVuZycgfSBlbHNlIHsgJ2Z1ZWhydW5nc3N0ZWxsZScgfQ0KICAgICAgICAgICAgICAg ICRib2R5ID0gUmVhZC1Cb2R5ICRSZXF1ZXN0DQogICAgICAgICAgICAgICAgaWYgKC1ub3QgJGJv ZHkpIHsgU2VuZC1FcnJvciAkUmVzcG9uc2UgJ0FuZnJhZ2UgenUgZ3Jvc3MnIDQxMzsgY29udGlu dWUgfQ0KICAgICAgICAgICAgICAgICRib2R5T2JqID0gJGJvZHkgfCBDb252ZXJ0RnJvbS1Kc29u DQogICAgICAgICAgICAgICAgJGRhdGVuID0gW29iamVjdFtdXUAoJGJvZHlPYmopDQogICAgICAg ICAgICAgICAgJGxvY2tFcmdlYm5pcyA9ICRudWxsDQogICAgICAgICAgICAgICAgdHJ5IHsNCiAg ICAgICAgICAgICAgICAgICAgJGxvY2tFcmdlYm5pcyA9IEludm9rZS1XaXRoRmlsZUxvY2sgJ2Fk bWluLmpzb24nIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICRhZG1pbiA9IFJlYWQtSnNvbk9i amVjdCAnYWRtaW4uanNvbicNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkbnVsbCAtZXEg JGFkbWluKSB7IHJldHVybiBAeyBvayA9ICRmYWxzZTsgc3RhdHVzID0gNTAwOyBtc2cgPSAnYWRt aW4uanNvbiBuaWNodCBsZXNiYXInIH0gfQ0KICAgICAgICAgICAgICAgICAgICAgICAgJGFsdCA9 IEAoKQ0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRhZG1pbi5QU09iamVjdC5Qcm9wZXJ0 aWVzWyRmZWxkTmFtZV0pIHsgJGFsdCA9IFtvYmplY3RbXV1AKCRhZG1pbi4kZmVsZE5hbWUpIH0N CiAgICAgICAgICAgICAgICAgICAgICAgIFt2b2lkXShCYWNrdXAtQWRtaW5Kc29uICRmZWxkTmFt ZSkNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkYWRtaW4uUFNPYmplY3QuUHJvcGVydGll c1skZmVsZE5hbWVdKSB7ICRhZG1pbi4kZmVsZE5hbWUgPSAkZGF0ZW4gfQ0KICAgICAgICAgICAg ICAgICAgICAgICAgZWxzZSB7ICRhZG1pbiB8IEFkZC1NZW1iZXIgLU5vdGVQcm9wZXJ0eU5hbWUg JGZlbGROYW1lIC1Ob3RlUHJvcGVydHlWYWx1ZSAkZGF0ZW4gLUZvcmNlIH0NCiAgICAgICAgICAg ICAgICAgICAgICAgIFdyaXRlLUpzb25PYmplY3QgJ2FkbWluLmpzb24nICRhZG1pbiB8IE91dC1O dWxsDQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gQHsgb2sgPSAkdHJ1ZTsgYWx0ID0g JGFsdCB9DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9IGNhdGNoIHsN CiAgICAgICAgICAgICAgICAgICAgU2VuZC1FcnJvciAkUmVzcG9uc2UgKCJMb2NrLUZlaGxlcjog JF8iKSA1MDM7IGNvbnRpbnVlDQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGlm ICgtbm90ICRsb2NrRXJnZWJuaXMub2spIHsgU2VuZC1FcnJvciAkUmVzcG9uc2UgJGxvY2tFcmdl Ym5pcy5tc2cgJGxvY2tFcmdlYm5pcy5zdGF0dXM7IGNvbnRpbnVlIH0NCiAgICAgICAgICAgICAg ICBXcml0ZS1Mb2dFaW50cmFnICgkZmVsZE5hbWUgKyAnLmdlYWVuZGVydCcpIEB7IGFuemFobCA9 ICRkYXRlbi5Db3VudCB9DQogICAgICAgICAgICAgICAgU2VuZC1Kc29uT2JqZWN0ICRSZXNwb25z ZSBAeyBzdGF0dXMgPSAnZ2VzcGVpY2hlcnQnIH0NCiAgICAgICAgICAgICAgICBjb250aW51ZQ0K ICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAjIEJlemVpY2hudW5nZW46IE9iamVrdCAoTWFw IGtleS0+bGFiZWwpLiBMZWVyZXMgT2JqZWt0ID0gUmVzZXQuDQogICAgICAgICAgICBpZiAoJFBh dGggLWVxICcvYXBpL2FkbWluL2JlemVpY2hudW5nZW4nIC1hbmQgJE1ldGhvZCAtZXEgJ1BVVCcp IHsNCiAgICAgICAgICAgICAgICBpZiAoLW5vdCAoVGVzdC1Jc3RBZG1pbikpIHsgU2VuZC1FcnJv ciAkUmVzcG9uc2UgJ0tlaW5lIEFkbWluLVJlY2h0ZScgNDAzOyBjb250aW51ZSB9DQogICAgICAg ICAgICAgICAgJGJvZHkgPSBSZWFkLUJvZHkgJFJlcXVlc3QNCiAgICAgICAgICAgICAgICBpZiAo LW5vdCAkYm9keSkgeyBTZW5kLUVycm9yICRSZXNwb25zZSAnQW5mcmFnZSB6dSBncm9zcycgNDEz OyBjb250aW51ZSB9DQogICAgICAgICAgICAgICAgJGRhdGVuID0gJGJvZHkgfCBDb252ZXJ0RnJv bS1Kc29uDQogICAgICAgICAgICAgICAgJGxvY2tFcmdlYm5pcyA9ICRudWxsDQogICAgICAgICAg ICAgICAgdHJ5IHsNCiAgICAgICAgICAgICAgICAgICAgJGxvY2tFcmdlYm5pcyA9IEludm9rZS1X aXRoRmlsZUxvY2sgJ2FkbWluLmpzb24nIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICRhZG1p biA9IFJlYWQtSnNvbk9iamVjdCAnYWRtaW4uanNvbicNCiAgICAgICAgICAgICAgICAgICAgICAg IGlmICgkbnVsbCAtZXEgJGFkbWluKSB7IHJldHVybiBAeyBvayA9ICRmYWxzZTsgc3RhdHVzID0g NTAwOyBtc2cgPSAnYWRtaW4uanNvbiBuaWNodCBsZXNiYXInIH0gfQ0KICAgICAgICAgICAgICAg ICAgICAgICAgaWYgKCRhZG1pbi5QU09iamVjdC5Qcm9wZXJ0aWVzWydiZXplaWNobnVuZ2VuJ10p IHsgJGFkbWluLmJlemVpY2hudW5nZW4gPSAkZGF0ZW4gfQ0KICAgICAgICAgICAgICAgICAgICAg ICAgZWxzZSB7ICRhZG1pbiB8IEFkZC1NZW1iZXIgLU5vdGVQcm9wZXJ0eU5hbWUgJ2JlemVpY2hu dW5nZW4nIC1Ob3RlUHJvcGVydHlWYWx1ZSAkZGF0ZW4gLUZvcmNlIH0NCiAgICAgICAgICAgICAg ICAgICAgICAgIFdyaXRlLUpzb25PYmplY3QgJ2FkbWluLmpzb24nICRhZG1pbiB8IE91dC1OdWxs DQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gQHsgb2sgPSAkdHJ1ZSB9DQogICAgICAg ICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9IGNhdGNoIHsNCiAgICAgICAgICAgICAg ICAgICAgU2VuZC1FcnJvciAkUmVzcG9uc2UgKCJMb2NrLUZlaGxlcjogJF8iKSA1MDM7IGNvbnRp bnVlDQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGlmICgtbm90ICRsb2NrRXJn ZWJuaXMub2spIHsgU2VuZC1FcnJvciAkUmVzcG9uc2UgJGxvY2tFcmdlYm5pcy5tc2cgJGxvY2tF cmdlYm5pcy5zdGF0dXM7IGNvbnRpbnVlIH0NCiAgICAgICAgICAgICAgICBXcml0ZS1Mb2dFaW50 cmFnICdiZXplaWNobnVuZ2VuLmdlYWVuZGVydCcgQHt9DQogICAgICAgICAgICAgICAgU2VuZC1K c29uT2JqZWN0ICRSZXNwb25zZSBAeyBzdGF0dXMgPSAnZ2VzcGVpY2hlcnQnIH0NCiAgICAgICAg ICAgICAgICBjb250aW51ZQ0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAjIFN0YXRpc3Rp ay1CYXVrYXN0ZW4gKHNlbGJzdGdlYmF1dGUgS2FjaGVsbikgKyBTdXBlclVzZXItTGF5b3V0LVJh c3Rlci4NCiAgICAgICAgICAgICMgR2F0ZSBiZXd1c3N0IFNVIE9ERVIgR2VzYW10dmVyYW50d29y dGxpY2ggKG5pY2h0IFRlc3QtSXN0QWRtaW4pIOKAlCBkZXINCiAgICAgICAgICAgICMgQnVpbGRl ciBsZWJ0IGltIFN0YXRpc3Rpay1UYWIgdW5kIG11c3MgYXVjaCBmdWVyIEdlc2FtdHZlcmFudHdv cnRsaWNoZQ0KICAgICAgICAgICAgIyBvaG5lIGFkbWluaXN0cmF0aW9uLVp1Z2FuZyBzcGVpY2hl cmJhciBzZWluLiBQYXJ0aWFsLU1lcmdlIG51ciBkZXINCiAgICAgICAgICAgICMgYmVpZGVuIGJl a2FubnRlbiBLZXlzOyBiZWlkZSBhbHMgW29iamVjdFtdXSB6d2luZ2VuIChQUy01LjEtVW53cmFw KS4NCiAgICAgICAgICAgIGlmICgkUGF0aCAtZXEgJy9hcGkvYWRtaW4vc3RhdGlzdGlrJyAtYW5k ICRNZXRob2QgLWVxICdQVVQnKSB7DQogICAgICAgICAgICAgICAgJHIgPSBHZXQtUmVjaHRlDQog ICAgICAgICAgICAgICAgaWYgKC1ub3QgKChUZXN0LUlzdEFkbWluKSAtb3IgJHIuaXN0R2VzYW10 dmVyYW50d29ydGxpY2gpKSB7DQogICAgICAgICAgICAgICAgICAgIFNlbmQtRXJyb3IgJFJlc3Bv bnNlICdOdXIgQWRtaW5zIHVuZCBHZXNhbXR2ZXJhbnR3b3J0bGljaGUgZHVlcmZlbiBTdGF0aXN0 aWstS2FjaGVsbiBhZW5kZXJuJyA0MDM7IGNvbnRpbnVlDQogICAgICAgICAgICAgICAgfQ0KICAg ICAgICAgICAgICAgICRib2R5ID0gUmVhZC1Cb2R5ICRSZXF1ZXN0DQogICAgICAgICAgICAgICAg aWYgKC1ub3QgJGJvZHkpIHsgU2VuZC1FcnJvciAkUmVzcG9uc2UgJ0FuZnJhZ2UgenUgZ3Jvc3Mn IDQxMzsgY29udGludWUgfQ0KICAgICAgICAgICAgICAgICRkYXRlbiA9ICRib2R5IHwgQ29udmVy dEZyb20tSnNvbg0KICAgICAgICAgICAgICAgICRoYXRLYWNoZWxuID0gKCRudWxsIC1uZSAkZGF0 ZW4gLWFuZCAkZGF0ZW4uUFNPYmplY3QuUHJvcGVydGllc1snc3RhdGlzdGlrS2FjaGVsbiddKQ0K ICAgICAgICAgICAgICAgICRoYXRMYXlvdXQgID0gKCRudWxsIC1uZSAkZGF0ZW4gLWFuZCAkZGF0 ZW4uUFNPYmplY3QuUHJvcGVydGllc1snc3RhdGlzdGlrTGF5b3V0J10pDQogICAgICAgICAgICAg ICAgJGxvY2tFcmdlYm5pcyA9ICRudWxsDQogICAgICAgICAgICAgICAgdHJ5IHsNCiAgICAgICAg ICAgICAgICAgICAgJGxvY2tFcmdlYm5pcyA9IEludm9rZS1XaXRoRmlsZUxvY2sgJ2FkbWluLmpz b24nIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICRhZG1pbiA9IFJlYWQtSnNvbk9iamVjdCAn YWRtaW4uanNvbicNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkbnVsbCAtZXEgJGFkbWlu KSB7IHJldHVybiBAeyBvayA9ICRmYWxzZTsgc3RhdHVzID0gNTAwOyBtc2cgPSAnYWRtaW4uanNv biBuaWNodCBsZXNiYXInIH0gfQ0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRoYXRLYWNo ZWxuKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGsgPSBbb2JqZWN0W11dQCgkZGF0 ZW4uc3RhdGlzdGlrS2FjaGVsbikNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGFk bWluLlBTT2JqZWN0LlByb3BlcnRpZXNbJ3N0YXRpc3Rpa0thY2hlbG4nXSkgeyAkYWRtaW4uc3Rh dGlzdGlrS2FjaGVsbiA9ICRrIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsg JGFkbWluIHwgQWRkLU1lbWJlciAtTm90ZVByb3BlcnR5TmFtZSAnc3RhdGlzdGlrS2FjaGVsbicg LU5vdGVQcm9wZXJ0eVZhbHVlICRrIC1Gb3JjZSB9DQogICAgICAgICAgICAgICAgICAgICAgICB9 DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGhhdExheW91dCkgew0KICAgICAgICAgICAg ICAgICAgICAgICAgICAgICRsID0gW29iamVjdFtdXUAoJGRhdGVuLnN0YXRpc3Rpa0xheW91dCkN CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGFkbWluLlBTT2JqZWN0LlByb3BlcnRp ZXNbJ3N0YXRpc3Rpa0xheW91dCddKSB7ICRhZG1pbi5zdGF0aXN0aWtMYXlvdXQgPSAkbCB9DQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7ICRhZG1pbiB8IEFkZC1NZW1iZXIgLU5v dGVQcm9wZXJ0eU5hbWUgJ3N0YXRpc3Rpa0xheW91dCcgLU5vdGVQcm9wZXJ0eVZhbHVlICRsIC1G b3JjZSB9DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAg ICBXcml0ZS1Kc29uT2JqZWN0ICdhZG1pbi5qc29uJyAkYWRtaW4gfCBPdXQtTnVsbA0KICAgICAg ICAgICAgICAgICAgICAgICAgcmV0dXJuIEB7IG9rID0gJHRydWUgfQ0KICAgICAgICAgICAgICAg ICAgICB9DQogICAgICAgICAgICAgICAgfSBjYXRjaCB7DQogICAgICAgICAgICAgICAgICAgIFNl bmQtRXJyb3IgJFJlc3BvbnNlICgiTG9jay1GZWhsZXI6ICRfIikgNTAzOyBjb250aW51ZQ0KICAg ICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBpZiAoLW5vdCAkbG9ja0VyZ2VibmlzLm9r KSB7IFNlbmQtRXJyb3IgJFJlc3BvbnNlICRsb2NrRXJnZWJuaXMubXNnICRsb2NrRXJnZWJuaXMu c3RhdHVzOyBjb250aW51ZSB9DQogICAgICAgICAgICAgICAgV3JpdGUtTG9nRWludHJhZyAnc3Rh dGlzdGlrLmNvbmZpZy5nZWFlbmRlcnQnIEB7fQ0KICAgICAgICAgICAgICAgIFNlbmQtSnNvbk9i amVjdCAkUmVzcG9uc2UgQHsgc3RhdHVzID0gJ2dlc3BlaWNoZXJ0JyB9DQogICAgICAgICAgICAg ICAgY29udGludWUNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgIyBTdGFuZGFyZHJlY2h0 ZSAocmVndWxhZXJlIFVzZXIpOiBnZWdlbnNlaXRpZ2UgUGxhbnVuZyBqZSBEaWVuc3RncnVwcGUv DQogICAgICAgICAgICAjIFN0YW5kb3J0LiBTVS1vbmx5LiBXaXJkIGluIEdldC1SZWNodGUgYWRk aXRpdiBpbiBlZGl0aWVyZW4gZWluZ2V3b2Jlbi4NCiAgICAgICAgICAgIGlmICgkUGF0aCAtZXEg Jy9hcGkvYWRtaW4vc3RhbmRhcmRyZWNodGUnIC1hbmQgJE1ldGhvZCAtZXEgJ1BVVCcpIHsNCiAg ICAgICAgICAgICAgICBpZiAoLW5vdCAoVGVzdC1Jc3RTdXBlclVzZXIpKSB7IFNlbmQtRXJyb3Ig JFJlc3BvbnNlICdOdXIgU3VwZXJVc2VyIGR1ZXJmZW4gU3RhbmRhcmRyZWNodGUgYWVuZGVybicg NDAzOyBjb250aW51ZSB9DQogICAgICAgICAgICAgICAgJGJvZHkgPSBSZWFkLUJvZHkgJFJlcXVl c3QNCiAgICAgICAgICAgICAgICBpZiAoLW5vdCAkYm9keSkgeyBTZW5kLUVycm9yICRSZXNwb25z ZSAnQW5mcmFnZSB6dSBncm9zcycgNDEzOyBjb250aW51ZSB9DQogICAgICAgICAgICAgICAgJGRh dGVuID0gJGJvZHkgfCBDb252ZXJ0RnJvbS1Kc29uDQogICAgICAgICAgICAgICAgJGdnID0gQCgp OyBpZiAoJGRhdGVuIC1hbmQgJGRhdGVuLlBTT2JqZWN0LlByb3BlcnRpZXNbJ2dlZ2Vuc2VpdGln R3J1cHBlbiddKSAgIHsgJGdnID0gW3N0cmluZ1tdXUAoJGRhdGVuLmdlZ2Vuc2VpdGlnR3J1cHBl biAgIHwgRm9yRWFjaC1PYmplY3QgeyBbc3RyaW5nXSRfIH0pIH0NCiAgICAgICAgICAgICAgICAk Z3MgPSBAKCk7IGlmICgkZGF0ZW4gLWFuZCAkZGF0ZW4uUFNPYmplY3QuUHJvcGVydGllc1snZ2Vn ZW5zZWl0aWdTdGFuZG9ydGUnXSkgeyAkZ3MgPSBbc3RyaW5nW11dQCgkZGF0ZW4uZ2VnZW5zZWl0 aWdTdGFuZG9ydGUgfCBGb3JFYWNoLU9iamVjdCB7IFtzdHJpbmddJF8gfSkgfQ0KICAgICAgICAg ICAgICAgICRzciA9IEB7IGdlZ2Vuc2VpdGlnR3J1cHBlbiA9ICRnZzsgZ2VnZW5zZWl0aWdTdGFu ZG9ydGUgPSAkZ3MgfQ0KICAgICAgICAgICAgICAgICRsb2NrRXJnZWJuaXMgPSAkbnVsbA0KICAg ICAgICAgICAgICAgIHRyeSB7DQogICAgICAgICAgICAgICAgICAgICRsb2NrRXJnZWJuaXMgPSBJ bnZva2UtV2l0aEZpbGVMb2NrICdhZG1pbi5qc29uJyB7DQogICAgICAgICAgICAgICAgICAgICAg ICAkYWRtaW4gPSBSZWFkLUpzb25PYmplY3QgJ2FkbWluLmpzb24nDQogICAgICAgICAgICAgICAg ICAgICAgICBpZiAoJG51bGwgLWVxICRhZG1pbikgeyByZXR1cm4gQHsgb2sgPSAkZmFsc2U7IHN0 YXR1cyA9IDUwMDsgbXNnID0gJ2FkbWluLmpzb24gbmljaHQgbGVzYmFyJyB9IH0NCiAgICAgICAg ICAgICAgICAgICAgICAgIGlmICgkYWRtaW4uUFNPYmplY3QuUHJvcGVydGllc1snc3RhbmRhcmRS ZWNodGUnXSkgeyAkYWRtaW4uc3RhbmRhcmRSZWNodGUgPSAkc3IgfQ0KICAgICAgICAgICAgICAg ICAgICAgICAgZWxzZSB7ICRhZG1pbiB8IEFkZC1NZW1iZXIgLU5vdGVQcm9wZXJ0eU5hbWUgJ3N0 YW5kYXJkUmVjaHRlJyAtTm90ZVByb3BlcnR5VmFsdWUgJHNyIC1Gb3JjZSB9DQogICAgICAgICAg ICAgICAgICAgICAgICBXcml0ZS1Kc29uT2JqZWN0ICdhZG1pbi5qc29uJyAkYWRtaW4gfCBPdXQt TnVsbA0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEB7IG9rID0gJHRydWUgfQ0KICAg ICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfSBjYXRjaCB7DQogICAgICAgICAg ICAgICAgICAgIFNlbmQtRXJyb3IgJFJlc3BvbnNlICgiTG9jay1GZWhsZXI6ICRfIikgNTAzOyBj b250aW51ZQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBpZiAoLW5vdCAkbG9j a0VyZ2VibmlzLm9rKSB7IFNlbmQtRXJyb3IgJFJlc3BvbnNlICRsb2NrRXJnZWJuaXMubXNnICRs b2NrRXJnZWJuaXMuc3RhdHVzOyBjb250aW51ZSB9DQogICAgICAgICAgICAgICAgV3JpdGUtTG9n RWludHJhZyAnc3RhbmRhcmRyZWNodGUuZ2VhZW5kZXJ0JyBAe30NCiAgICAgICAgICAgICAgICBT ZW5kLUpzb25PYmplY3QgJFJlc3BvbnNlIEB7IHN0YXR1cyA9ICdnZXNwZWljaGVydCcgfQ0KICAg ICAgICAgICAgICAgIGNvbnRpbnVlDQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICMgRS1N YWlsLVZvcmxhZ2VuOiBPYmpla3QgKG5pY2h0IEFycmF5KSDigJQgZWlnZW5lciBIYW5kbGVyLg0K ICAgICAgICAgICAgaWYgKCRQYXRoIC1lcSAnL2FwaS9hZG1pbi9lbWFpbHZvcmxhZ2VuJyAtYW5k ICRNZXRob2QgLWVxICdQVVQnKSB7DQogICAgICAgICAgICAgICAgaWYgKC1ub3QgKFRlc3QtSXN0 QWRtaW4pKSB7IFNlbmQtRXJyb3IgJFJlc3BvbnNlICdLZWluZSBBZG1pbi1SZWNodGUnIDQwMzsg Y29udGludWUgfQ0KICAgICAgICAgICAgICAgICRib2R5ID0gUmVhZC1Cb2R5ICRSZXF1ZXN0DQog ICAgICAgICAgICAgICAgaWYgKC1ub3QgJGJvZHkpIHsgU2VuZC1FcnJvciAkUmVzcG9uc2UgJ0Fu ZnJhZ2UgenUgZ3Jvc3MnIDQxMzsgY29udGludWUgfQ0KICAgICAgICAgICAgICAgICRkYXRlbiA9 ICRib2R5IHwgQ29udmVydEZyb20tSnNvbg0KICAgICAgICAgICAgICAgICMgUmljaC1UZXh0LUJv ZHkgamUgVm9ybGFnZSBzZXJ2ZXJzZWl0aWcgYmVyZWluaWdlbiAoU3RvcmVkLVhTUykuDQogICAg ICAgICAgICAgICAgaWYgKCRudWxsIC1uZSAkZGF0ZW4pIHsNCiAgICAgICAgICAgICAgICAgICAg Zm9yZWFjaCAoJHAgaW4gJGRhdGVuLlBTT2JqZWN0LlByb3BlcnRpZXMpIHsNCiAgICAgICAgICAg ICAgICAgICAgICAgICR2ID0gJHAuVmFsdWUNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgk bnVsbCAtbmUgJHYgLWFuZCAkdi5QU09iamVjdC5Qcm9wZXJ0aWVzWyd0ZXh0J10gLWFuZCAoJHYu dGV4dCAtaXMgW3N0cmluZ10pKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHYudGV4 dCA9IENvbnZlcnRUby1TYWZlUmljaEh0bWwgJHYudGV4dA0KICAgICAgICAgICAgICAgICAgICAg ICAgfQ0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAg ICAgICAgICRsb2NrRXJnZWJuaXMgPSAkbnVsbA0KICAgICAgICAgICAgICAgIHRyeSB7DQogICAg ICAgICAgICAgICAgICAgICRsb2NrRXJnZWJuaXMgPSBJbnZva2UtV2l0aEZpbGVMb2NrICdhZG1p bi5qc29uJyB7DQogICAgICAgICAgICAgICAgICAgICAgICAkYWRtaW4gPSBSZWFkLUpzb25PYmpl Y3QgJ2FkbWluLmpzb24nDQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoJG51bGwgLWVxICRh ZG1pbikgeyByZXR1cm4gQHsgb2sgPSAkZmFsc2U7IHN0YXR1cyA9IDUwMDsgbXNnID0gJ2FkbWlu Lmpzb24gbmljaHQgbGVzYmFyJyB9IH0NCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkYWRt aW4uUFNPYmplY3QuUHJvcGVydGllc1snZW1haWxWb3JsYWdlbiddKSB7ICRhZG1pbi5lbWFpbFZv cmxhZ2VuID0gJGRhdGVuIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgeyAkYWRtaW4g fCBBZGQtTWVtYmVyIC1Ob3RlUHJvcGVydHlOYW1lICdlbWFpbFZvcmxhZ2VuJyAtTm90ZVByb3Bl cnR5VmFsdWUgJGRhdGVuIC1Gb3JjZSB9DQogICAgICAgICAgICAgICAgICAgICAgICBXcml0ZS1K c29uT2JqZWN0ICdhZG1pbi5qc29uJyAkYWRtaW4gfCBPdXQtTnVsbA0KICAgICAgICAgICAgICAg ICAgICAgICAgcmV0dXJuIEB7IG9rID0gJHRydWUgfQ0KICAgICAgICAgICAgICAgICAgICB9DQog ICAgICAgICAgICAgICAgfSBjYXRjaCB7DQogICAgICAgICAgICAgICAgICAgIFNlbmQtRXJyb3Ig JFJlc3BvbnNlICgiTG9jay1GZWhsZXI6ICRfIikgNTAzOyBjb250aW51ZQ0KICAgICAgICAgICAg ICAgIH0NCiAgICAgICAgICAgICAgICBpZiAoLW5vdCAkbG9ja0VyZ2VibmlzLm9rKSB7IFNlbmQt RXJyb3IgJFJlc3BvbnNlICRsb2NrRXJnZWJuaXMubXNnICRsb2NrRXJnZWJuaXMuc3RhdHVzOyBj b250aW51ZSB9DQogICAgICAgICAgICAgICAgV3JpdGUtTG9nRWludHJhZyAnZW1haWx2b3JsYWdl bi5nZWFlbmRlcnQnIEB7fQ0KICAgICAgICAgICAgICAgIFNlbmQtSnNvbk9iamVjdCAkUmVzcG9u c2UgQHsgc3RhdHVzID0gJ2dlc3BlaWNoZXJ0JyB9DQogICAgICAgICAgICAgICAgY29udGludWUN CiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgIyBFLU1haWwtVHJpZ2dlci1Lb25maWcgKHBy byBUcmlnZ2VyOiBha3RpdiArIEVtcGZhZW5nZXItVGFncykg4oCUDQogICAgICAgICAgICAjIGF1 c3NjaGxpZXNzbGljaCBTdGV1ZXJ1bmcgZnVlciBkZW4gRnJvbnRlbmQtbWFpbHRvOi1EaXNwYXRj aGVyLg0KICAgICAgICAgICAgaWYgKCRQYXRoIC1lcSAnL2FwaS9hZG1pbi9lbWFpbHRyaWdnZXIn IC1hbmQgJE1ldGhvZCAtZXEgJ1BVVCcpIHsNCiAgICAgICAgICAgICAgICBpZiAoLW5vdCAoVGVz dC1Jc3RBZG1pbikpIHsgU2VuZC1FcnJvciAkUmVzcG9uc2UgJ0tlaW5lIEFkbWluLVJlY2h0ZScg NDAzOyBjb250aW51ZSB9DQogICAgICAgICAgICAgICAgJGJvZHkgPSBSZWFkLUJvZHkgJFJlcXVl c3QNCiAgICAgICAgICAgICAgICBpZiAoLW5vdCAkYm9keSkgeyBTZW5kLUVycm9yICRSZXNwb25z ZSAnQW5mcmFnZSB6dSBncm9zcycgNDEzOyBjb250aW51ZSB9DQogICAgICAgICAgICAgICAgJGRh dGVuID0gJGJvZHkgfCBDb252ZXJ0RnJvbS1Kc29uDQogICAgICAgICAgICAgICAgJGxvY2tFcmdl Ym5pcyA9ICRudWxsDQogICAgICAgICAgICAgICAgdHJ5IHsNCiAgICAgICAgICAgICAgICAgICAg JGxvY2tFcmdlYm5pcyA9IEludm9rZS1XaXRoRmlsZUxvY2sgJ2FkbWluLmpzb24nIHsNCiAgICAg ICAgICAgICAgICAgICAgICAgICRhZG1pbiA9IFJlYWQtSnNvbk9iamVjdCAnYWRtaW4uanNvbicN CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkbnVsbCAtZXEgJGFkbWluKSB7IHJldHVybiBA eyBvayA9ICRmYWxzZTsgc3RhdHVzID0gNTAwOyBtc2cgPSAnYWRtaW4uanNvbiBuaWNodCBsZXNi YXInIH0gfQ0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRhZG1pbi5QU09iamVjdC5Qcm9w ZXJ0aWVzWydlbWFpbFRyaWdnZXInXSkgeyAkYWRtaW4uZW1haWxUcmlnZ2VyID0gJGRhdGVuIH0N CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgeyAkYWRtaW4gfCBBZGQtTWVtYmVyIC1Ob3Rl UHJvcGVydHlOYW1lICdlbWFpbFRyaWdnZXInIC1Ob3RlUHJvcGVydHlWYWx1ZSAkZGF0ZW4gLUZv cmNlIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIFdyaXRlLUpzb25PYmplY3QgJ2FkbWluLmpz b24nICRhZG1pbiB8IE91dC1OdWxsDQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gQHsg b2sgPSAkdHJ1ZSB9DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9IGNh dGNoIHsNCiAgICAgICAgICAgICAgICAgICAgU2VuZC1FcnJvciAkUmVzcG9uc2UgKCJMb2NrLUZl aGxlcjogJF8iKSA1MDM7IGNvbnRpbnVlDQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAg ICAgIGlmICgtbm90ICRsb2NrRXJnZWJuaXMub2spIHsgU2VuZC1FcnJvciAkUmVzcG9uc2UgJGxv Y2tFcmdlYm5pcy5tc2cgJGxvY2tFcmdlYm5pcy5zdGF0dXM7IGNvbnRpbnVlIH0NCiAgICAgICAg ICAgICAgICAkYW56ID0gaWYgKCRkYXRlbikgeyAoJGRhdGVuLlBTT2JqZWN0LlByb3BlcnRpZXMg fCBNZWFzdXJlLU9iamVjdCkuQ291bnQgfSBlbHNlIHsgMCB9DQogICAgICAgICAgICAgICAgV3Jp dGUtTG9nRWludHJhZyAnZW1haWx0cmlnZ2VyLmdlYWVuZGVydCcgQHsgYW56YWhsX3RyaWdnZXIg PSAkYW56IH0NCiAgICAgICAgICAgICAgICBTZW5kLUpzb25PYmplY3QgJFJlc3BvbnNlIEB7IHN0 YXR1cyA9ICdnZXNwZWljaGVydCcgfQ0KICAgICAgICAgICAgICAgIGNvbnRpbnVlDQogICAgICAg ICAgICB9DQoNCiAgICAgICAgICAgICRhZG1pbktleXMgPSBAew0KICAgICAgICAgICAgICAgICcv YXBpL2FkbWluL2ZlaWVydGFnZScgICAgICA9ICdmZWllcnRhZ2UnDQogICAgICAgICAgICAgICAg Jy9hcGkvYWRtaW4vZmVyaWVuJyAgICAgICAgID0gJ2ZlcmllbicNCiAgICAgICAgICAgICAgICAn L2FwaS9hZG1pbi9zb25kZXJ0ZXJtaW5lJyAgPSAnc29uZGVydGVybWluZScNCiAgICAgICAgICAg ICAgICAnL2FwaS9hZG1pbi9zdGFuZG9ydGUnICAgICAgPSAnc3RhbmRvcnRlJw0KICAgICAgICAg ICAgfQ0KICAgICAgICAgICAgaWYgKCRhZG1pbktleXMuQ29udGFpbnNLZXkoJFBhdGgpIC1hbmQg JE1ldGhvZCAtZXEgJ1BVVCcpIHsNCiAgICAgICAgICAgICAgICBpZiAoLW5vdCAoVGVzdC1Jc3RB ZG1pbikpIHsgU2VuZC1FcnJvciAkUmVzcG9uc2UgJ0tlaW5lIEFkbWluLVJlY2h0ZScgNDAzOyBj b250aW51ZSB9DQogICAgICAgICAgICAgICAgJGJvZHkgPSBSZWFkLUJvZHkgJFJlcXVlc3QNCiAg ICAgICAgICAgICAgICBpZiAoLW5vdCAkYm9keSkgeyBTZW5kLUVycm9yICRSZXNwb25zZSAnQW5m cmFnZSB6dSBncm9zcycgNDEzOyBjb250aW51ZSB9DQogICAgICAgICAgICAgICAgJGtleSA9ICRh ZG1pbktleXNbJFBhdGhdDQogICAgICAgICAgICAgICAgIyBAKC4uLikgZXJ6d2luZ3QgQXJyYXkg YXVjaCBiZWkgMSBFbGVtZW50IChQUyA1LjEgZW50cGFja3Qgc29uc3QpLg0KICAgICAgICAgICAg ICAgICRib2R5T2JqID0gJGJvZHkgfCBDb252ZXJ0RnJvbS1Kc29uDQogICAgICAgICAgICAgICAg JGRhdGVuID0gW29iamVjdFtdXUAoJGJvZHlPYmopDQogICAgICAgICAgICAgICAgIyBzb25kZXJ0 ZXJtaW5lIHRyYWdlbiBSaWNoLVRleHQgKHRleHQpIOKAlCBzZXJ2ZXJzZWl0aWcgYmVyZWluaWdl bi4NCiAgICAgICAgICAgICAgICBpZiAoJGtleSAtZXEgJ3NvbmRlcnRlcm1pbmUnKSB7DQogICAg ICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRlIGluICRkYXRlbikgew0KICAgICAgICAgICAgICAg ICAgICAgICAgaWYgKCRudWxsIC1uZSAkZSAtYW5kICRlLlBTT2JqZWN0LlByb3BlcnRpZXNbJ3Rl eHQnXSAtYW5kICgkZS50ZXh0IC1pcyBbc3RyaW5nXSkpIHsNCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAkZS50ZXh0ID0gQ29udmVydFRvLVNhZmVSaWNoSHRtbCAkZS50ZXh0DQogICAgICAg ICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAg ICB9DQogICAgICAgICAgICAgICAgJGxvY2tFcmdlYm5pcyA9ICRudWxsDQogICAgICAgICAgICAg ICAgdHJ5IHsNCiAgICAgICAgICAgICAgICAgICAgJGxvY2tFcmdlYm5pcyA9IEludm9rZS1XaXRo RmlsZUxvY2sgJ2FkbWluLmpzb24nIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICRhZG1pbiA9 IFJlYWQtSnNvbk9iamVjdCAnYWRtaW4uanNvbicNCiAgICAgICAgICAgICAgICAgICAgICAgIGlm ICgkbnVsbCAtZXEgJGFkbWluKSB7IHJldHVybiBAeyBvayA9ICRmYWxzZTsgc3RhdHVzID0gNTAw OyBtc2cgPSAnYWRtaW4uanNvbiBuaWNodCBsZXNiYXInIH0gfQ0KICAgICAgICAgICAgICAgICAg ICAgICAgJHdpcGVNc2cgPSBUZXN0LVdpcGVTY2h1dHogJGtleSAkZGF0ZW4gJGFkbWluICRSZXF1 ZXN0ICRib2R5T2JqDQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHdpcGVNc2cpIHsgcmV0 dXJuIEB7IG9rID0gJGZhbHNlOyBzdGF0dXMgPSA0MDk7IG1zZyA9ICR3aXBlTXNnIH0gfQ0KICAg ICAgICAgICAgICAgICAgICAgICAgW3ZvaWRdKEJhY2t1cC1BZG1pbkpzb24gJGtleSkNCiAgICAg ICAgICAgICAgICAgICAgICAgIGlmICgkYWRtaW4uUFNPYmplY3QuUHJvcGVydGllc1ska2V5XSkg eyAkYWRtaW4uJGtleSA9ICRkYXRlbiB9DQogICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsg JGFkbWluIHwgQWRkLU1lbWJlciAtTm90ZVByb3BlcnR5TmFtZSAka2V5IC1Ob3RlUHJvcGVydHlW YWx1ZSAkZGF0ZW4gLUZvcmNlIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIFdyaXRlLUpzb25P YmplY3QgJ2FkbWluLmpzb24nICRhZG1pbiB8IE91dC1OdWxsDQogICAgICAgICAgICAgICAgICAg ICAgICByZXR1cm4gQHsgb2sgPSAkdHJ1ZSB9DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAg ICAgICAgICAgICB9IGNhdGNoIHsNCiAgICAgICAgICAgICAgICAgICAgU2VuZC1FcnJvciAkUmVz cG9uc2UgKCJMb2NrLUZlaGxlcjogJF8iKSA1MDM7IGNvbnRpbnVlDQogICAgICAgICAgICAgICAg fQ0KICAgICAgICAgICAgICAgIGlmICgtbm90ICRsb2NrRXJnZWJuaXMub2spIHsgU2VuZC1FcnJv ciAkUmVzcG9uc2UgJGxvY2tFcmdlYm5pcy5tc2cgJGxvY2tFcmdlYm5pcy5zdGF0dXM7IGNvbnRp bnVlIH0NCiAgICAgICAgICAgICAgICBXcml0ZS1Mb2dFaW50cmFnICIka2V5LmdlYWVuZGVydCIg QHt9DQogICAgICAgICAgICAgICAgU2VuZC1Kc29uT2JqZWN0ICRSZXNwb25zZSBAeyBzdGF0dXMg PSAnZ2VzcGVpY2hlcnQnIH0NCiAgICAgICAgICAgICAgICBjb250aW51ZQ0KICAgICAgICAgICAg fQ0KICAgICAgICAgICAgaWYgKCRQYXRoIC1lcSAnL2FwaS9hZG1pbi9laW5zdGVsbHVuZ2VuJyAt YW5kICRNZXRob2QgLWVxICdQVVQnKSB7DQogICAgICAgICAgICAgICAgaWYgKC1ub3QgKFRlc3Qt SXN0QWRtaW4pKSB7IFNlbmQtRXJyb3IgJFJlc3BvbnNlICdLZWluZSBBZG1pbi1SZWNodGUnIDQw MzsgY29udGludWUgfQ0KICAgICAgICAgICAgICAgICRib2R5ID0gUmVhZC1Cb2R5ICRSZXF1ZXN0 DQogICAgICAgICAgICAgICAgaWYgKC1ub3QgJGJvZHkpIHsgU2VuZC1FcnJvciAkUmVzcG9uc2Ug J0FuZnJhZ2UgenUgZ3Jvc3MnIDQxMzsgY29udGludWUgfQ0KICAgICAgICAgICAgICAgICRkYXRl biA9ICRib2R5IHwgQ29udmVydEZyb20tSnNvbg0KICAgICAgICAgICAgICAgICMgUmljaC1UZXh0 IHNlcnZlcnNlaXRpZyBzYW5pdGlzaWVyZW4g4oCUIGRpZXNlciBQZmFkIHNwZWljaGVydA0KICAg ICAgICAgICAgICAgICMgaW5mb3RleHQvaGlsZmV0ZXh0L2JlZGllbnVuZ3N0ZXh0ZS9pbXByZXNz dW0vc3VwcG9ydGluZm8vDQogICAgICAgICAgICAgICAgIyBzY2hsaWVzc2luZm8sIHdhciBhYmVy IGJpc2hlciBhbSBTZXJ2ZXItU2FuaXRpemVyIHZvcmJlaSAoZGVyDQogICAgICAgICAgICAgICAg IyBudXIgYW0gVm9sbC1QVVQgL2FwaS9hZG1pbiBoaW5nKS4gU2NodXR6IGdlZ2VuIG1hbmlwdWxp ZXJ0ZW4NCiAgICAgICAgICAgICAgICAjIENsaWVudCAvIERpcmVrdC1BUEktQ2FsbC4NCiAgICAg ICAgICAgICAgICBJbnZva2UtQWRtaW5SaWNodGV4dFNhbml0aXplICRkYXRlbg0KICAgICAgICAg ICAgICAgICRsb2NrRXJnZWJuaXMgPSAkbnVsbA0KICAgICAgICAgICAgICAgIHRyeSB7DQogICAg ICAgICAgICAgICAgICAgICRsb2NrRXJnZWJuaXMgPSBJbnZva2UtV2l0aEZpbGVMb2NrICdhZG1p bi5qc29uJyB7DQogICAgICAgICAgICAgICAgICAgICAgICAkYWRtaW4gPSBSZWFkLUpzb25PYmpl Y3QgJ2FkbWluLmpzb24nDQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoJG51bGwgLWVxICRh ZG1pbikgeyByZXR1cm4gQHsgb2sgPSAkZmFsc2U7IHN0YXR1cyA9IDUwMDsgbXNnID0gJ2FkbWlu Lmpzb24gbmljaHQgbGVzYmFyJyB9IH0NCiAgICAgICAgICAgICAgICAgICAgICAgIGZvcmVhY2gg KCRrIGluICdqYWhyJywnaW5mb3RleHQnLCdzdXBwb3J0aW5mbycsJ3NjaGxpZXNzaW5mbycsJ2hp bGZldGV4dCcsJ2JlZGllbnVuZ3N0ZXh0ZScsJ3BhcGllcmtvcmJUYWdlQXVmYmV3YWhydW5nJywn ZW1haWxBdXRvRG9tYWluJywnYXZhdGFyR3JvZXNzZScsJ2ltcHJlc3N1bScsJ3N1cHBvcnRNYWls VGV4dCcsJ2VkaXRvclRyaWdnZXInKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYg KCRkYXRlbi5QU09iamVjdC5Qcm9wZXJ0aWVzWyRrXSkgew0KICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBpZiAoJGFkbWluLlBTT2JqZWN0LlByb3BlcnRpZXNbJGtdKSB7ICRhZG1pbi4k ayA9ICRkYXRlbi4kayB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgeyAk YWRtaW4gfCBBZGQtTWVtYmVyIC1Ob3RlUHJvcGVydHlOYW1lICRrIC1Ob3RlUHJvcGVydHlWYWx1 ZSAkZGF0ZW4uJGsgLUZvcmNlIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAg ICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAjIGVkaXRvclRy aWdnZXIgaXN0IGVpbiBFbnVtIOKAlCBmcmVtZGUgV2VydGUgKERpcmVrdC1BUEkpIGF1Zg0KICAg ICAgICAgICAgICAgICAgICAgICAgIyBkZW4gRGVmYXVsdCBrbGVtbWVuLCBkYW1pdCBuaWUgTXVl bGwgaW4gYWRtaW4uanNvbiBsYW5kZXQuDQogICAgICAgICAgICAgICAgICAgICAgICAkZXRWYWwg PSBpZiAoJGFkbWluLlBTT2JqZWN0LlByb3BlcnRpZXNbJ2VkaXRvclRyaWdnZXInXSkgeyBbc3Ry aW5nXSRhZG1pbi5lZGl0b3JUcmlnZ2VyIH0gZWxzZSB7ICcnIH0NCiAgICAgICAgICAgICAgICAg ICAgICAgIGlmIChAKCdyZWNodHMnLCdsaW5rcycsJ21pdHRlJywnZG9wcGVsJykgLW5vdGNvbnRh aW5zICRldFZhbCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkYWRtaW4uUFNP YmplY3QuUHJvcGVydGllc1snZWRpdG9yVHJpZ2dlciddKSB7ICRhZG1pbi5lZGl0b3JUcmlnZ2Vy ID0gJ3JlY2h0cycgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgeyAkYWRtaW4g fCBBZGQtTWVtYmVyIC1Ob3RlUHJvcGVydHlOYW1lICdlZGl0b3JUcmlnZ2VyJyAtTm90ZVByb3Bl cnR5VmFsdWUgJ3JlY2h0cycgLUZvcmNlIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAg ICAgICAgICAgICAgICAgICAgICAgIFdyaXRlLUpzb25PYmplY3QgJ2FkbWluLmpzb24nICRhZG1p biB8IE91dC1OdWxsDQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gQHsgb2sgPSAkdHJ1 ZSB9DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9IGNhdGNoIHsNCiAg ICAgICAgICAgICAgICAgICAgU2VuZC1FcnJvciAkUmVzcG9uc2UgKCJMb2NrLUZlaGxlcjogJF8i KSA1MDM7IGNvbnRpbnVlDQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGlmICgt bm90ICRsb2NrRXJnZWJuaXMub2spIHsgU2VuZC1FcnJvciAkUmVzcG9uc2UgJGxvY2tFcmdlYm5p cy5tc2cgJGxvY2tFcmdlYm5pcy5zdGF0dXM7IGNvbnRpbnVlIH0NCiAgICAgICAgICAgICAgICBX cml0ZS1Mb2dFaW50cmFnICdlaW5zdGVsbHVuZ2VuLmdlYWVuZGVydCcgQHt9DQogICAgICAgICAg ICAgICAgU2VuZC1Kc29uT2JqZWN0ICRSZXNwb25zZSBAeyBzdGF0dXMgPSAnZ2VzcGVpY2hlcnQn IH0NCiAgICAgICAgICAgICAgICBjb250aW51ZQ0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAg ICAjID09PT09IFBMQU5VTkcgPT09PT0NCiAgICAgICAgICAgIGlmICgkUGF0aCAtZXEgJy9hcGkv cGxhbnVuZycgLWFuZCAkTWV0aG9kIC1lcSAnR0VUJykgew0KICAgICAgICAgICAgICAgICR0eHQg PSBSZWFkLVRleHRGaWxlICdwbGFudW5nLmpzb24nDQogICAgICAgICAgICAgICAgaWYgKCRudWxs IC1lcSAkdHh0KSB7IFNlbmQtRXJyb3IgJFJlc3BvbnNlICdwbGFudW5nLmpzb24gbmljaHQgZ2Vm dW5kZW4nIDQwNCB9DQogICAgICAgICAgICAgICAgZWxzZSB7DQogICAgICAgICAgICAgICAgICAg ICMgVmVyc2lvbnMtU3RlbXBlbCAobXRpbWUtVGlja3MpIGZ1ZXIgb3B0aW1pc3Rpc2NoZSBTcGVy cmUgZGVzDQogICAgICAgICAgICAgICAgICAgICMgRXhjZWwtSW1wb3J0cy4gRGVyIENsaWVudCBz Y2hpY2t0IGlobiBiZWltIFBVVCB6dXJ1ZWNrLg0KICAgICAgICAgICAgICAgICAgICB0cnkgew0K ICAgICAgICAgICAgICAgICAgICAgICAgJHBwViA9IEpvaW4tUGF0aCAkRGF0YURpciAncGxhbnVu Zy5qc29uJw0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFRlc3QtUGF0aCAtTGl0ZXJhbFBh dGggJHBwVikgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRSZXNwb25zZS5IZWFkZXJz LkFkZCgnWC1QbGFudW5nLVZlcnNpb24nLCBbc3RyaW5nXShHZXQtSXRlbSAtTGl0ZXJhbFBhdGgg JHBwVikuTGFzdFdyaXRlVGltZVV0Yy5UaWNrcykNCiAgICAgICAgICAgICAgICAgICAgICAgIH0N CiAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCB7fQ0KICAgICAgICAgICAgICAgICAgICBTZW5k LUpzb25UZXh0ICRSZXNwb25zZSAkdHh0DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAg ICAgIGNvbnRpbnVlDQogICAgICAgICAgICB9DQogICAgICAgICAgICBpZiAoJFBhdGggLWVxICcv YXBpL3BsYW51bmcnIC1hbmQgJE1ldGhvZCAtZXEgJ1BVVCcpIHsNCiAgICAgICAgICAgICAgICBp ZiAoLW5vdCAoVGVzdC1Jc3RBZG1pbikpIHsgU2VuZC1FcnJvciAkUmVzcG9uc2UgJ0tlaW5lIEFk bWluLVJlY2h0ZScgNDAzOyBjb250aW51ZSB9DQogICAgICAgICAgICAgICAgJGJvZHkgPSBSZWFk LUJvZHkgJFJlcXVlc3QNCiAgICAgICAgICAgICAgICBpZiAoLW5vdCAkYm9keSkgeyBTZW5kLUVy cm9yICRSZXNwb25zZSAnQW5mcmFnZSB6dSBncm9zcycgNDEzOyBjb250aW51ZSB9DQogICAgICAg ICAgICAgICAgIyBSZWFkLU1vZGlmeS1Xcml0ZSBhdG9tYXIgaW4gZGVyIGdsZWljaGVuIFNwZXJy ZSB3aWUgZGllIEVpbnplbC0NCiAgICAgICAgICAgICAgICAjIHplbGwtRW5kcG9pbnRzLCBkYW1p dCBkZXIgVm9sbC1JbXBvcnQgbmljaHQgbWl0IHBhcmFsbGVsZW4NCiAgICAgICAgICAgICAgICAj IFplbGwtU2NocmVpYnZvcmdhZW5nZW4gdmVyemFobnQuIE9wdGlvbmFsZXIgVmVyc2lvbnMtQ2hl Y2sNCiAgICAgICAgICAgICAgICAjIChvcHRpbWlzdGlzY2hlIE5lYmVubGFldWZpZ2tlaXQpOiBo YXQgZGVyIENsaWVudCBlaW5lbg0KICAgICAgICAgICAgICAgICMgSWYtUGxhbnVuZy1WZXJzaW9u LUhlYWRlciBnZXNjaGlja3QgdW5kIHN0aW1tdCBkZXIgbmljaHQgbWVocg0KICAgICAgICAgICAg ICAgICMgbWl0IGRlbSBha3R1ZWxsZW4gU3RhbmQgdWViZXJlaW4sIHd1cmRlIHp3aXNjaGVuemVp dGxpY2gNCiAgICAgICAgICAgICAgICAjIGdlc2NocmllYmVuIC0+IDQwOSwgTklDSFRTIHdpcmQg dWViZXJzY2hyaWViZW4uDQogICAgICAgICAgICAgICAgJGVyd2FydGV0ZVZlcnNpb24gPSAkUmVx dWVzdC5IZWFkZXJzWydJZi1QbGFudW5nLVZlcnNpb24nXQ0KICAgICAgICAgICAgICAgICRsb2Nr RXJnZWJuaXMgPSAkbnVsbA0KICAgICAgICAgICAgICAgIHRyeSB7DQogICAgICAgICAgICAgICAg ICAgICRsb2NrRXJnZWJuaXMgPSBJbnZva2UtV2l0aEZpbGVMb2NrICdwbGFudW5nLmpzb24nIHsN CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkZXJ3YXJ0ZXRlVmVyc2lvbikgew0KICAgICAg ICAgICAgICAgICAgICAgICAgICAgICRwcFYgPSBKb2luLVBhdGggJERhdGFEaXIgJ3BsYW51bmcu anNvbicNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkYWt0dWVsbGVWZXJzaW9uID0gJycN CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoVGVzdC1QYXRoIC1MaXRlcmFsUGF0aCAk cHBWKSB7ICRha3R1ZWxsZVZlcnNpb24gPSBbc3RyaW5nXShHZXQtSXRlbSAtTGl0ZXJhbFBhdGgg JHBwVikuTGFzdFdyaXRlVGltZVV0Yy5UaWNrcyB9DQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgaWYgKCRha3R1ZWxsZVZlcnNpb24gLW5lICRlcndhcnRldGVWZXJzaW9uKSB7DQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBAeyB0eXAgPSAna29uZmxpa3QnOyBha3R1 ZWxsID0gJGFrdHVlbGxlVmVyc2lvbiB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0K ICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgV3JpdGUt VGV4dEZpbGUgJ3BsYW51bmcuanNvbicgJGJvZHkgfCBPdXQtTnVsbA0KICAgICAgICAgICAgICAg ICAgICAgICAgcmV0dXJuIEB7IHR5cCA9ICdvaycgfQ0KICAgICAgICAgICAgICAgICAgICB9DQog ICAgICAgICAgICAgICAgfSBjYXRjaCB7DQogICAgICAgICAgICAgICAgICAgIFNlbmQtRXJyb3Ig JFJlc3BvbnNlICgiTG9jay1GZWhsZXI6ICRfIikgNTAzOyBjb250aW51ZQ0KICAgICAgICAgICAg ICAgIH0NCiAgICAgICAgICAgICAgICBpZiAoJGxvY2tFcmdlYm5pcy50eXAgLWVxICdrb25mbGlr dCcpIHsNCiAgICAgICAgICAgICAgICAgICAgU2VuZC1Kc29uT2JqZWN0ICRSZXNwb25zZSBAew0K ICAgICAgICAgICAgICAgICAgICAgICAgZmVobGVyICAgICAgICAgID0gJ2tvbmZsaWt0Jw0KICAg ICAgICAgICAgICAgICAgICAgICAgbWVsZHVuZyAgICAgICAgID0gJ0RpZSBQbGFudW5nIHd1cmRl IHp3aXNjaGVuemVpdGxpY2ggdm9uIGVpbmVyIGFuZGVyZW4gUGVyc29uIGdlYWVuZGVydC4nDQog ICAgICAgICAgICAgICAgICAgICAgICBha3R1ZWxsZVZlcnNpb24gPSAkbG9ja0VyZ2VibmlzLmFr dHVlbGwNCiAgICAgICAgICAgICAgICAgICAgfSA0MDkNCiAgICAgICAgICAgICAgICAgICAgY29u dGludWUNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgU2VuZC1Kc29uT2JqZWN0 ICRSZXNwb25zZSBAeyBzdGF0dXMgPSAnZ2VzcGVpY2hlcnQnIH0NCiAgICAgICAgICAgICAgICBj b250aW51ZQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgaWYgKCRQYXRoIC1lcSAnL2FwaS9w bGFudW5nL3plbGxlJyAtYW5kICRNZXRob2QgLWVxICdQT1NUJykgew0KICAgICAgICAgICAgICAg ICRib2R5ID0gUmVhZC1Cb2R5ICRSZXF1ZXN0DQogICAgICAgICAgICAgICAgaWYgKC1ub3QgJGJv ZHkpIHsgU2VuZC1FcnJvciAkUmVzcG9uc2UgJ0FuZnJhZ2UgenUgZ3Jvc3MnIDQxMzsgY29udGlu dWUgfQ0KICAgICAgICAgICAgICAgICRhID0gJGJvZHkgfCBDb252ZXJ0RnJvbS1Kc29uDQogICAg ICAgICAgICAgICAgJGRhdHVtID0gJGEuZGF0dW0NCiAgICAgICAgICAgICAgICAkcGVyc29uSWQg PSBbc3RyaW5nXSRhLnBlcnNvbklkDQogICAgICAgICAgICAgICAgJHdlcnQgPSBpZiAoJGEuUFNP YmplY3QuUHJvcGVydGllc1snd2VydCddKSB7ICRhLndlcnQgfSBlbHNlIHsgJycgfQ0KICAgICAg ICAgICAgICAgICMgT3B0aW1pc3RpYy1Db25jdXJyZW5jeTogV2VubiBkZXIgQ2xpZW50IHNlaW5l biB6dWxldHp0IGdlc2VoZW5lbg0KICAgICAgICAgICAgICAgICMgV2VydCBtaXRsaWVmZXJ0LCBw cnVlZmVuIHdpciB2b3IgZGVtIFNjaHJlaWJlbiBvYiBkZXIgU2VydmVyDQogICAgICAgICAgICAg ICAgIyBub2NoIGRlbnNlbGJlbiBTdGFuZCBoYXQuIE1pc21hdGNoIC0+IDQwOSBtaXQgYWt0dWVs bGVyV2VydC4NCiAgICAgICAgICAgICAgICAkaGF0RXJ3YXJ0ZXQgPSAkYS5QU09iamVjdC5Qcm9w ZXJ0aWVzWydlcndhcnRldGVyQWx0ZXJXZXJ0J10NCiAgICAgICAgICAgICAgICAkZXJ3YXJ0ZXQg PSBpZiAoJGhhdEVyd2FydGV0KSB7IFtzdHJpbmddJGEuZXJ3YXJ0ZXRlckFsdGVyV2VydCB9IGVs c2UgeyAkbnVsbCB9DQoNCiAgICAgICAgICAgICAgICAjIEVkaXQtUmVjaHQgZ2VnZW4gYWt0dWVs bGVuIFN0YW5kIHBydWVmZW4gKG5vY2ggb2huZSBMb2NrIOKAlCBudXIgTG9va3VwKQ0KICAgICAg ICAgICAgICAgICRwbGFudW5nQ2hlY2sgPSBSZWFkLUpzb25PYmplY3QgJ3BsYW51bmcuanNvbicN CiAgICAgICAgICAgICAgICBpZiAoJG51bGwgLWVxICRwbGFudW5nQ2hlY2spIHsgU2VuZC1FcnJv ciAkUmVzcG9uc2UgJ3BsYW51bmcuanNvbiBuaWNodCBnZWZ1bmRlbicgNDA0OyBjb250aW51ZSB9 DQogICAgICAgICAgICAgICAgJHppZWxQZXJzb24gPSAkbnVsbA0KICAgICAgICAgICAgICAgIGlm ICgkcGxhbnVuZ0NoZWNrLnBlcnNvbmVuKSB7DQogICAgICAgICAgICAgICAgICAgIGZvcmVhY2gg KCRwcCBpbiBAKCRwbGFudW5nQ2hlY2sucGVyc29uZW4pKSB7DQogICAgICAgICAgICAgICAgICAg ICAgICBpZiAoW3N0cmluZ10kcHAuaWQgLWVxICRwZXJzb25JZCkgeyAkemllbFBlcnNvbiA9ICRw cDsgYnJlYWsgfQ0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KICAg ICAgICAgICAgICAgIGlmICgtbm90IChUZXN0LURhcmZaZWxsZUVkaXRpZXJlbiAkemllbFBlcnNv bikpIHsNCiAgICAgICAgICAgICAgICAgICAgU2VuZC1FcnJvciAkUmVzcG9uc2UgJ0tlaW5lIEJl cmVjaHRpZ3VuZyBmdWVyIGRpZXNlIFplbGxlJyA0MDM7IGNvbnRpbnVlDQogICAgICAgICAgICAg ICAgfQ0KDQogICAgICAgICAgICAgICAgIyBSZWFkLU1vZGlmeS1Xcml0ZSBhdG9tYXIgaW4gTG9j azoNCiAgICAgICAgICAgICAgICAkY2xpZW50UXVpdHRpZXJ0ID0gKCRhLlBTT2JqZWN0LlByb3Bl cnRpZXNbJ3VudGVyYmVzZXR6dW5nU2NoaWNodCddIC1hbmQgJGEudW50ZXJiZXNldHp1bmdTY2hp Y2h0KQ0KICAgICAgICAgICAgICAgICRsb2NrRXJnZWJuaXMgPSAkbnVsbA0KICAgICAgICAgICAg ICAgIHRyeSB7DQogICAgICAgICAgICAgICAgICAgICRsb2NrRXJnZWJuaXMgPSBJbnZva2UtV2l0 aEZpbGVMb2NrICdwbGFudW5nLmpzb24nIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICRwbGFu dW5nID0gUmVhZC1Kc29uT2JqZWN0ICdwbGFudW5nLmpzb24nDQogICAgICAgICAgICAgICAgICAg ICAgICBpZiAoJG51bGwgLWVxICRwbGFudW5nKSB7IHJldHVybiBAeyB0eXAgPSAnZXJyb3InOyBj b2RlID0gNDA0OyBtc2cgPSAncGxhbnVuZy5qc29uIG5pY2h0IGdlZnVuZGVuJyB9IH0NCiAgICAg ICAgICAgICAgICAgICAgICAgIGlmICgtbm90ICRwbGFudW5nLlBTT2JqZWN0LlByb3BlcnRpZXNb J2VpbnRyYWVnZSddKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHBsYW51bmcgfCBB ZGQtTWVtYmVyIC1Ob3RlUHJvcGVydHlOYW1lICdlaW50cmFlZ2UnIC1Ob3RlUHJvcGVydHlWYWx1 ZSAoTmV3LU9iamVjdCBQU09iamVjdCkgLUZvcmNlDQogICAgICAgICAgICAgICAgICAgICAgICB9 DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoLW5vdCAkcGxhbnVuZy5laW50cmFlZ2UuUFNP YmplY3QuUHJvcGVydGllc1skZGF0dW1dKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAg JHBsYW51bmcuZWludHJhZWdlIHwgQWRkLU1lbWJlciAtTm90ZVByb3BlcnR5TmFtZSAkZGF0dW0g LU5vdGVQcm9wZXJ0eVZhbHVlIChOZXctT2JqZWN0IFBTT2JqZWN0KSAtRm9yY2UNCiAgICAgICAg ICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICRhbHRlciA9ICcnDQog ICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHBsYW51bmcuZWludHJhZWdlLiRkYXR1bS5QU09i amVjdC5Qcm9wZXJ0aWVzWyRwZXJzb25JZF0pIHsgJGFsdGVyID0gW3N0cmluZ10kcGxhbnVuZy5l aW50cmFlZ2UuJGRhdHVtLiRwZXJzb25JZCB9DQoNCiAgICAgICAgICAgICAgICAgICAgICAgICMg T3B0aW1pc3RpYy1Db25jdXJyZW5jeS1DaGVjaw0KICAgICAgICAgICAgICAgICAgICAgICAgaWYg KCRoYXRFcndhcnRldCAtYW5kICRlcndhcnRldCAtbmUgJGFsdGVyKSB7DQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgcmV0dXJuIEB7IHR5cCA9ICdrb25mbGlrdCc7IGFrdHVlbGwgPSAkYWx0 ZXIgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgICAgICAg ICAjIEZ1ZWhydW5ncy1VbnRlcmJlc2V0enVuZyAoVmVyYmluZGxpY2hrZWl0c2ZlbnN0ZXIpIC0g Z2xlaWNoZXMgUHJpbnppcCB3aWUgdm9yaGVyLA0KICAgICAgICAgICAgICAgICAgICAgICAgIyBq ZXR6dCBhYmVyIGdlZ2VuIGRlbiBnZWxvY2t0ZW4gU3RhbmQuDQogICAgICAgICAgICAgICAgICAg ICAgICBpZiAoLW5vdCAkY2xpZW50UXVpdHRpZXJ0IC1hbmQgKFRlc3QtSW5WZXJiaW5kbGljaGtl aXQgJGRhdHVtKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRhbHRlU2NoaWNodCA9 IEdldC1GdWVocnVuZ3NTY2hpY2h0TGV0dGVyICRhbHRlcg0KICAgICAgICAgICAgICAgICAgICAg ICAgICAgICRuZXVlU2NoaWNodCA9IEdldC1GdWVocnVuZ3NTY2hpY2h0TGV0dGVyICR3ZXJ0DQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRhbHRlU2NoaWNodCAtYW5kICRhbHRlU2No aWNodCAtbmUgJG5ldWVTY2hpY2h0KSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICRha3R1ZWxsQ291bnQgPSBHZXQtRnVlaHJ1bmdzQ291bnQgJHBsYW51bmcgJGRhdHVtICRhbHRl U2NoaWNodA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKCRha3R1ZWxsQ291 bnQgLSAxKSAtbHQgMikgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0 dXJuIEB7IHR5cCA9ICd1bnRlcmJlc2V0enVuZyc7IHNjaGljaHQgPSAkYWx0ZVNjaGljaHQ7IGFr dHVlbGxDb3VudCA9ICRha3R1ZWxsQ291bnQ7IGFsdGVyID0gJGFsdGVyIH0NCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAg ICAgICAgICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKC1u b3QgJHdlcnQgLW9yIFtzdHJpbmddOjpJc051bGxPcldoaXRlU3BhY2UoJHdlcnQpKSB7DQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRwbGFudW5nLmVpbnRyYWVnZS4kZGF0dW0uUFNP YmplY3QuUHJvcGVydGllc1skcGVyc29uSWRdKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICRwbGFudW5nLmVpbnRyYWVnZS4kZGF0dW0uUFNPYmplY3QuUHJvcGVydGllcy5SZW1v dmUoJHBlcnNvbklkKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAg ICAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRw bGFudW5nLmVpbnRyYWVnZS4kZGF0dW0uUFNPYmplY3QuUHJvcGVydGllc1skcGVyc29uSWRdKSB7 ICRwbGFudW5nLmVpbnRyYWVnZS4kZGF0dW0uJHBlcnNvbklkID0gJHdlcnQgfQ0KICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGVsc2UgeyAkcGxhbnVuZy5laW50cmFlZ2UuJGRhdHVtIHwgQWRk LU1lbWJlciAtTm90ZVByb3BlcnR5TmFtZSAkcGVyc29uSWQgLU5vdGVQcm9wZXJ0eVZhbHVlICR3 ZXJ0IC1Gb3JjZSB9DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAg ICAgICAgICBXcml0ZS1Kc29uT2JqZWN0ICdwbGFudW5nLmpzb24nICRwbGFudW5nIHwgT3V0LU51 bGwNCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBAeyB0eXAgPSAnb2snOyBhbHRlciA9 ICRhbHRlciB9DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9IGNhdGNo IHsNCiAgICAgICAgICAgICAgICAgICAgU2VuZC1FcnJvciAkUmVzcG9uc2UgKCJMb2NrLUZlaGxl cjogJF8iKSA1MDM7IGNvbnRpbnVlDQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAg ICAgaWYgKCRsb2NrRXJnZWJuaXMudHlwIC1lcSAnZXJyb3InKSB7IFNlbmQtRXJyb3IgJFJlc3Bv bnNlICRsb2NrRXJnZWJuaXMubXNnICRsb2NrRXJnZWJuaXMuY29kZTsgY29udGludWUgfQ0KICAg ICAgICAgICAgICAgIGlmICgkbG9ja0VyZ2VibmlzLnR5cCAtZXEgJ2tvbmZsaWt0Jykgew0KICAg ICAgICAgICAgICAgICAgICBTZW5kLUpzb25PYmplY3QgJFJlc3BvbnNlIEB7DQogICAgICAgICAg ICAgICAgICAgICAgICBmZWhsZXIgICAgICAgID0gJ2tvbmZsaWt0Jw0KICAgICAgICAgICAgICAg ICAgICAgICAgbWVsZHVuZyAgICAgICA9ICdEaWVzZSBaZWxsZSB3dXJkZSBpbnp3aXNjaGVuIGdl YWVuZGVydC4nDQogICAgICAgICAgICAgICAgICAgICAgICBha3R1ZWxsZXJXZXJ0ID0gJGxvY2tF cmdlYm5pcy5ha3R1ZWxsDQogICAgICAgICAgICAgICAgICAgIH0gNDA5DQogICAgICAgICAgICAg ICAgICAgIGNvbnRpbnVlDQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGlmICgk bG9ja0VyZ2VibmlzLnR5cCAtZXEgJ3VudGVyYmVzZXR6dW5nJykgew0KICAgICAgICAgICAgICAg ICAgICBTZW5kLUpzb25PYmplY3QgJFJlc3BvbnNlIEB7DQogICAgICAgICAgICAgICAgICAgICAg ICBmZWhsZXIgICAgICAgICA9ICdGdWVocnVuZ3MtVW50ZXJiZXNldHp1bmcnDQogICAgICAgICAg ICAgICAgICAgICAgICBrb25mbGlrdFR5cCAgICA9ICd1bnRlcmJlc2V0enVuZycNCiAgICAgICAg ICAgICAgICAgICAgICAgIHNjaGljaHQgICAgICAgID0gJGxvY2tFcmdlYm5pcy5zY2hpY2h0DQog ICAgICAgICAgICAgICAgICAgICAgICBha3R1ZWxsQ291bnQgICA9ICRsb2NrRXJnZWJuaXMuYWt0 dWVsbENvdW50DQogICAgICAgICAgICAgICAgICAgICAgICBhbHRlcldlcnQgICAgICA9ICRsb2Nr RXJnZWJuaXMuYWx0ZXINCiAgICAgICAgICAgICAgICAgICAgICAgIG5ldWVyV2VydCAgICAgID0g JHdlcnQNCiAgICAgICAgICAgICAgICAgICAgfSA0MDkNCiAgICAgICAgICAgICAgICAgICAgY29u dGludWUNCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICAkYWx0ZXIgPSAkbG9j a0VyZ2VibmlzLmFsdGVyDQogICAgICAgICAgICAgICAgV3JpdGUtTG9nRWludHJhZyAnemVsbGUu Z2VhZW5kZXJ0JyBAeyBkYXR1bSA9ICRkYXR1bTsgcGVyc29uSWQgPSAkcGVyc29uSWQ7IGFsdGVy V2VydCA9ICIkYWx0ZXIiOyBuZXVlcldlcnQgPSAiJHdlcnQiIH0NCiAgICAgICAgICAgICAgICAj IExpdmUtU3luYzogQ2hhbmdlLUxvZyBmdWVyIGRlbiBzeW5jLXdvcmtlci4NCiAgICAgICAgICAg ICAgICBBZGQtQ2hhbmdlTG9nRWludHJhZyAnemVsbGUnIEB7DQogICAgICAgICAgICAgICAgICAg IGRhdHVtICAgID0gJGRhdHVtDQogICAgICAgICAgICAgICAgICAgIHBlcnNvbklkID0gJHBlcnNv bklkDQogICAgICAgICAgICAgICAgICAgIGFsdCAgICAgID0gIiRhbHRlciINCiAgICAgICAgICAg ICAgICAgICAgbmV1ICAgICAgPSAiJHdlcnQiDQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAg ICAgICAgICAgIyBVbnRlcmJlc2V0enVuZ3MtUXVpdHR1bmc6IGV4dHJhIExvZ2J1Y2gtRWludHJh ZywgZGVuIEZhY2hhdWZzaWNodC9XTCBzZWhlbiBzb2xsDQogICAgICAgICAgICAgICAgaWYgKCRh LlBTT2JqZWN0LlByb3BlcnRpZXNbJ3VudGVyYmVzZXR6dW5nU2NoaWNodCddIC1hbmQgJGEudW50 ZXJiZXNldHp1bmdTY2hpY2h0KSB7DQogICAgICAgICAgICAgICAgICAgICRzY2hpY2h0TGV0dGVy ID0gW3N0cmluZ10kYS51bnRlcmJlc2V0enVuZ1NjaGljaHQNCiAgICAgICAgICAgICAgICAgICAg JHNjaGljaHRUZXh0ID0gc3dpdGNoICgkc2NoaWNodExldHRlcikgew0KICAgICAgICAgICAgICAg ICAgICAgICAgJ0YnIHsgJ0ZydWVoc2NoaWNodCcgfQ0KICAgICAgICAgICAgICAgICAgICAgICAg J1MnIHsgJ1NwYWV0c2NoaWNodCcgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgJ04nIHsgJ05h Y2h0c2NoaWNodCcgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdCB7ICRzY2hpY2h0 TGV0dGVyIH0NCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAkb2VU eHQgPSAnJw0KICAgICAgICAgICAgICAgICAgICBpZiAoJHppZWxQZXJzb24gLWFuZCAkemllbFBl cnNvbi5QU09iamVjdC5Qcm9wZXJ0aWVzWydvZSddKSB7ICRvZVR4dCA9IFtzdHJpbmddJHppZWxQ ZXJzb24ub2UgfQ0KICAgICAgICAgICAgICAgICAgICAkbmFtZVR4dCA9ICcnDQogICAgICAgICAg ICAgICAgICAgIGlmICgkemllbFBlcnNvbikgew0KICAgICAgICAgICAgICAgICAgICAgICAgJHZu ID0gJyc7IGlmICgkemllbFBlcnNvbi5QU09iamVjdC5Qcm9wZXJ0aWVzWyd2b3JuYW1lJ10pIHsg JHZuID0gW3N0cmluZ10kemllbFBlcnNvbi52b3JuYW1lIH0NCiAgICAgICAgICAgICAgICAgICAg ICAgICRuYW1lVHh0ID0gKCIkdm4gJCgkemllbFBlcnNvbi5uYW1lKSIpLlRyaW0oKQ0KICAgICAg ICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIFdyaXRlLUxvZ0VpbnRyYWcgJ3Vu dGVyYmVzZXR6dW5nLnF1aXR0aWVydCcgQHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdHVt ICAgICA9ICRkYXR1bQ0KICAgICAgICAgICAgICAgICAgICAgICAgcGVyc29uSWQgID0gJHBlcnNv bklkDQogICAgICAgICAgICAgICAgICAgICAgICBwZXJzb24gICAgPSAkbmFtZVR4dA0KICAgICAg ICAgICAgICAgICAgICAgICAgb2UgICAgICAgID0gJG9lVHh0DQogICAgICAgICAgICAgICAgICAg ICAgICBzY2hpY2h0ICAgPSAkc2NoaWNodFRleHQNCiAgICAgICAgICAgICAgICAgICAgICAgIGFs dGVyV2VydCA9ICIkYWx0ZXIiDQogICAgICAgICAgICAgICAgICAgICAgICBuZXVlcldlcnQgPSAi JHdlcnQiDQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAg ICAgICAgICAgIyBQaGFzZSBELjMgKDIwMjYtMDUtMjEpOiB3ZW5uIGRpZSBLcmFua21lbGR1bmcg enVydWVja2dlbm9tbWVuDQogICAgICAgICAgICAgICAgIyB3aXJkIChhbHRlciBXZXJ0IHdhciBr ci9LdXIsIG5ldWVyIFdlcnQgaXN0IGVzIG5pY2h0IG1laHIpLA0KICAgICAgICAgICAgICAgICMg ZW50ZmVybmVuIHdpciBkZW4gb2ZmZW5lbiBIaW53ZWlzIOKAlCBzb25zdCBpc3QgZXIgYmlzIHp1 DQogICAgICAgICAgICAgICAgIyAzMCBUYWdlIHByYWVzZW50LCBvYndvaGwgZGFzIEVyZWlnbmlz IGVybGVkaWd0IGlzdC4NCiAgICAgICAgICAgICAgICBpZiAoKCRhbHRlciAtZXEgJ2tyJyAtb3Ig JGFsdGVyIC1lcSAnS3VyJykgLWFuZCAoJHdlcnQgLW5lICdrcicgLWFuZCAkd2VydCAtbmUgJ0t1 cicpKSB7DQogICAgICAgICAgICAgICAgICAgIFJlbW92ZS1PZmZlbmVLcmFua21lbGR1bmdzSGlu d2Vpc2UgJHBlcnNvbklkICRkYXR1bQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAg ICAjIEhpbndlaXMtVHJpZ2dlcjogS3JhbmttZWxkdW5nIGVyemV1Z3QgZWluZW4gSW4tQXBwLUhp bndlaXMNCiAgICAgICAgICAgICAgICAjIGZ1ZXIgU1UgKyBHZXNhbXR2ZXJhbnR3b3J0bGljaGUg KFNjaGljaHRsb2NoIGltIE1vZGFsIGRpcmVrdA0KICAgICAgICAgICAgICAgICMgYWRyZXNzaWVy YmFyIHZpYSAiS2FuZGlkYXRlbiBhbnNjaHJlaWJlbiItQnV0dG9uKS4NCiAgICAgICAgICAgICAg ICBpZiAoJHdlcnQgLWVxICdrcicgLW9yICR3ZXJ0IC1lcSAnS3VyJykgew0KICAgICAgICAgICAg ICAgICAgICAka21OYW1lID0gJycNCiAgICAgICAgICAgICAgICAgICAgaWYgKCR6aWVsUGVyc29u KSB7DQogICAgICAgICAgICAgICAgICAgICAgICAka3ZuID0gJyc7IGlmICgkemllbFBlcnNvbi5Q U09iamVjdC5Qcm9wZXJ0aWVzWyd2b3JuYW1lJ10pIHsgJGt2biA9IFtzdHJpbmddJHppZWxQZXJz b24udm9ybmFtZSB9DQogICAgICAgICAgICAgICAgICAgICAgICAka21OYW1lID0gKCIka3ZuICQo JHppZWxQZXJzb24ubmFtZSkiKS5UcmltKCkNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAg ICAgICAgICAgICAgICAka21HcnVwcGUgPSAnJw0KICAgICAgICAgICAgICAgICAgICBpZiAoJHpp ZWxQZXJzb24gLWFuZCAkemllbFBlcnNvbi5QU09iamVjdC5Qcm9wZXJ0aWVzWydncnVwcGUnXSkg eyAka21HcnVwcGUgPSBbc3RyaW5nXSR6aWVsUGVyc29uLmdydXBwZSB9DQogICAgICAgICAgICAg ICAgICAgICRrbVNjaGljaHRMZXR0ZXIgPSAnJw0KICAgICAgICAgICAgICAgICAgICBpZiAoIiRh bHRlciIgLW1hdGNoICdeKFtGU05dKS0nKSB7ICRrbVNjaGljaHRMZXR0ZXIgPSAkTWF0Y2hlc1sx XSB9DQogICAgICAgICAgICAgICAgICAgIE5ldy1IaW53ZWlzICdrcmFua21lbGR1bmcnIChbb3Jk ZXJlZF1Aew0KICAgICAgICAgICAgICAgICAgICAgICAgcGVyc29uX2lkICAgID0gJHBlcnNvbklk DQogICAgICAgICAgICAgICAgICAgICAgICBwZXJzb25fbmFtZSAgPSAka21OYW1lDQogICAgICAg ICAgICAgICAgICAgICAgICBncnVwcGUgICAgICAgPSAka21HcnVwcGUNCiAgICAgICAgICAgICAg ICAgICAgICAgIGRhdHVtICAgICAgICA9ICRkYXR1bQ0KICAgICAgICAgICAgICAgICAgICAgICAg c2NoaWNodENvZGUgID0gIiRhbHRlciINCiAgICAgICAgICAgICAgICAgICAgICAgIHNjaGljaHRL dXJ6ICA9ICRrbVNjaGljaHRMZXR0ZXINCiAgICAgICAgICAgICAgICAgICAgICAgIGNvZGUgICAg ICAgICA9ICIkd2VydCINCiAgICAgICAgICAgICAgICAgICAgfSkgKEdldC1Ba3R1ZWxsZXJCZW51 dHplcikgfCBPdXQtTnVsbA0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBTZW5k LUpzb25PYmplY3QgJFJlc3BvbnNlIEB7IHN0YXR1cyA9ICdnZXNwZWljaGVydCc7IGFsdGVyV2Vy dCA9ICRhbHRlciB9DQogICAgICAgICAgICAgICAgY29udGludWUNCiAgICAgICAgICAgIH0NCiAg ICAgICAgICAgICMgQnVsay1TY2hyZWliZW4gbWVocmVyZXIgWmVsbGVuIGluIGVpbmVtIFNjaHJp dHQg4oCUIGF1ZmdlcnVmZW4NCiAgICAgICAgICAgICMgdm9tIEV4Y2VsLUZ1ZWxsLUdyaWZmLiBT cGFydCBwcm8gRHJhZyBiaXMgenUgMTAwKyBIVFRQLVJvdW5kdHJpcHMNCiAgICAgICAgICAgICMg dW5kIERhdGVpLVNjaHJlaWJ2b3JnYWVuZ2UuIFBlcm1pc3Npb24tQ2hlY2sgcHJvIFplbGxlLCBl aW4NCiAgICAgICAgICAgICMgZWluemlnZXIgTG9nYnVjaC1FaW50cmFnIGZhc3N0IGRpZSBBa3Rp b24genVzYW1tZW4uDQogICAgICAgICAgICBpZiAoJFBhdGggLWVxICcvYXBpL3BsYW51bmcvemVs bGVuLWJ1bGsnIC1hbmQgJE1ldGhvZCAtZXEgJ1BPU1QnKSB7DQogICAgICAgICAgICAgICAgJGJv ZHkgPSBSZWFkLUJvZHkgJFJlcXVlc3QNCiAgICAgICAgICAgICAgICBpZiAoLW5vdCAkYm9keSkg eyBTZW5kLUVycm9yICRSZXNwb25zZSAnQW5mcmFnZSB6dSBncm9zcycgNDEzOyBjb250aW51ZSB9 DQogICAgICAgICAgICAgICAgJGEgPSAkYm9keSB8IENvbnZlcnRGcm9tLUpzb24NCiAgICAgICAg ICAgICAgICAkZWludHJhZWdlID0gQCgkYS5laW50cmFlZ2UpDQogICAgICAgICAgICAgICAgaWYg KC1ub3QgJGVpbnRyYWVnZSAtb3IgJGVpbnRyYWVnZS5Db3VudCAtZXEgMCkgew0KICAgICAgICAg ICAgICAgICAgICBTZW5kLUpzb25PYmplY3QgJFJlc3BvbnNlIEB7IHN0YXR1cyA9ICdvayc7IG9r ID0gMDsgYWJnZWxlaG50ID0gQCgpIH0NCiAgICAgICAgICAgICAgICAgICAgY29udGludWUNCiAg ICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgIyBSZWFkLU1vZGlmeS1Xcml0ZSBhdG9t YXIgaW4gZGVyIERhdGVpLVNwZXJyZSDigJQgd2llIGRlciBFaW56ZWwtDQogICAgICAgICAgICAg ICAgIyB6ZWxsLUVuZHBvaW50LiBPaG5lIExvY2sga2FubiBlaW4gcGFyYWxsZWxlciBFZGl0L0J1 bGsgKGF1Y2gNCiAgICAgICAgICAgICAgICAjIGF1cyBlaW5lbSBhbmRlcmVuIFNlcnZlci1Qcm96 ZXNzIGF1ZiBkZW1zZWxiZW4gU2hhcmUpIGRlbg0KICAgICAgICAgICAgICAgICMgZ2VyYWRlIGdl bGVzZW5lbiBHZXNhbXRzdGFuZCB1ZWJlcnNjaHJlaWJlbiAoTG9zdCBVcGRhdGUgdWViZXINCiAg ICAgICAgICAgICAgICAjIGRpZSBHQU5aRSBEYXRlaSkuIExvZ2J1Y2ggKyBMaXZlLVN5bmMgbGF1 ZmVuIE5BQ0ggZGVyIFNwZXJyZSwNCiAgICAgICAgICAgICAgICAjIHVtIGdlc2NoYWNodGVsdGUg TG9ja3MgKGxvZ2J1Y2gvY2hhbmdlcykgenUgdmVybWVpZGVuLg0KICAgICAgICAgICAgICAgICRy ZXMgPSAkbnVsbA0KICAgICAgICAgICAgICAgIHRyeSB7DQogICAgICAgICAgICAgICAgICAgICRy ZXMgPSBJbnZva2UtV2l0aEZpbGVMb2NrICdwbGFudW5nLmpzb24nIHsNCiAgICAgICAgICAgICAg ICAgICAgICAgICRwbGFudW5nID0gUmVhZC1Kc29uT2JqZWN0ICdwbGFudW5nLmpzb24nDQogICAg ICAgICAgICAgICAgICAgICAgICBpZiAoJG51bGwgLWVxICRwbGFudW5nKSB7IHJldHVybiBAeyB0 eXAgPSAnZXJyb3InOyBjb2RlID0gNDA0OyBtc2cgPSAncGxhbnVuZy5qc29uIG5pY2h0IGdlZnVu ZGVuJyB9IH0NCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgtbm90ICRwbGFudW5nLlBTT2Jq ZWN0LlByb3BlcnRpZXNbJ2VpbnRyYWVnZSddKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgJHBsYW51bmcgfCBBZGQtTWVtYmVyIC1Ob3RlUHJvcGVydHlOYW1lICdlaW50cmFlZ2UnIC1O b3RlUHJvcGVydHlWYWx1ZSAoW1BTQ3VzdG9tT2JqZWN0XUB7fSkgLUZvcmNlDQogICAgICAgICAg ICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAjIFBlcnNvbmVuLU1hcCBl aW5tYWwgYXVmYmF1ZW4g4oCUIFBlcm1pc3Npb24tQ2hlY2sgcHJvDQogICAgICAgICAgICAgICAg ICAgICAgICAjIEVpbnRyYWcgb2huZSBSZXNjYW4gZGVyIFBlcnNvbmVubGlzdGUuDQogICAgICAg ICAgICAgICAgICAgICAgICAkcGVyc29uTWFwID0gQHt9DQogICAgICAgICAgICAgICAgICAgICAg ICBpZiAoJHBsYW51bmcucGVyc29uZW4pIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBm b3JlYWNoICgkcHAgaW4gQCgkcGxhbnVuZy5wZXJzb25lbikpIHsgJHBlcnNvbk1hcFtbc3RyaW5n XSRwcC5pZF0gPSAkcHAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAg ICAgICAgICAgICAgJG9rQ291bnQgPSAwDQogICAgICAgICAgICAgICAgICAgICAgICAkYWJnZWxl aG50ID0gQCgpDQogICAgICAgICAgICAgICAgICAgICAgICAkZXJzdGVzUGlkID0gJG51bGwNCiAg ICAgICAgICAgICAgICAgICAgICAgICRlcnN0ZXNXZXJ0ID0gJG51bGwNCiAgICAgICAgICAgICAg ICAgICAgICAgICRlcnN0ZXNEYXR1bSA9ICRudWxsDQogICAgICAgICAgICAgICAgICAgICAgICAk bGV0enRlc0RhdHVtID0gJG51bGwNCiAgICAgICAgICAgICAgICAgICAgICAgICMgYWx0ZVdlcnRl LU1hcCBmdWVyIExvZ2J1Y2gtUmVzdG9yZTogS2V5ID0gIjxkYXR1bT58PHBlcnNvbklkPiIuDQog ICAgICAgICAgICAgICAgICAgICAgICAkYWx0ZVdlcnRlID0gQHt9DQogICAgICAgICAgICAgICAg ICAgICAgICAjIHN5bmNFaW50cmFlZ2U6IHBybyBnZW11dGllcnRlciBaZWxsZSBlaW4gRWludHJh ZyBmdWVyDQogICAgICAgICAgICAgICAgICAgICAgICAjIGRlbiBMaXZlLVN5bmMtQ2hhbmdlLUxv ZyAoRm9ybWF0IHdpZSBTaW5nbGUtQ2VsbCkuDQogICAgICAgICAgICAgICAgICAgICAgICAkc3lu Y0VpbnRyYWVnZSA9IE5ldy1PYmplY3QgU3lzdGVtLkNvbGxlY3Rpb25zLkFycmF5TGlzdA0KICAg ICAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCAoJGUgaW4gJGVpbnRyYWVnZSkgew0KICAgICAg ICAgICAgICAgICAgICAgICAgICAgICRkYXR1bSA9IFtzdHJpbmddJGUuZGF0dW0NCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAkcGVyc29uSWQgPSBbc3RyaW5nXSRlLnBlcnNvbklkDQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgJHdlcnQgPSBpZiAoJGUuUFNPYmplY3QuUHJvcGVydGll c1snd2VydCddIC1hbmQgJG51bGwgLW5lICRlLndlcnQpIHsgW3N0cmluZ10kZS53ZXJ0IH0gZWxz ZSB7ICcnIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoLW5vdCAkZGF0dW0gLW9y IC1ub3QgJHBlcnNvbklkKSB7ICRhYmdlbGVobnQgKz0gQHsgZGF0dW0gPSAkZGF0dW07IHBlcnNv bklkID0gJHBlcnNvbklkOyBncnVuZCA9ICd1bnZvbGxzdGFlbmRpZycgfTsgY29udGludWUgfQ0K ICAgICAgICAgICAgICAgICAgICAgICAgICAgICR6aWVsUGVyc29uID0gJHBlcnNvbk1hcFskcGVy c29uSWRdDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKC1ub3QgKFRlc3QtRGFyZlpl bGxlRWRpdGllcmVuICR6aWVsUGVyc29uKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAkYWJnZWxlaG50ICs9IEB7IGRhdHVtID0gJGRhdHVtOyBwZXJzb25JZCA9ICRwZXJzb25J ZDsgZ3J1bmQgPSAna2Vpbi1yZWNodCcgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBjb250aW51ZQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICBpZiAoLW5vdCAkcGxhbnVuZy5laW50cmFlZ2UuUFNPYmplY3QuUHJvcGVy dGllc1skZGF0dW1dKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRwbGFudW5n LmVpbnRyYWVnZSB8IEFkZC1NZW1iZXIgLU5vdGVQcm9wZXJ0eU5hbWUgJGRhdHVtIC1Ob3RlUHJv cGVydHlWYWx1ZSAoW1BTQ3VzdG9tT2JqZWN0XUB7fSkgLUZvcmNlDQogICAgICAgICAgICAgICAg ICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQWx0ZW4gV2VydCBt ZXJrZW4gQkVWT1Igd2lyIGRpZSBaZWxsZSB1ZWJlcnNjaHJlaWJlbi4NCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAkYWx0ZXJXZXJ0ID0gJycNCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICBpZiAoJHBsYW51bmcuZWludHJhZWdlLiRkYXR1bS5QU09iamVjdC5Qcm9wZXJ0aWVzWyRwZXJz b25JZF0pIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGFsdGVyV2VydCA9IFtz dHJpbmddJHBsYW51bmcuZWludHJhZWdlLiRkYXR1bS4kcGVyc29uSWQNCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGFsdGVXZXJ0ZVso InswfXx7MX0iIC1mICRkYXR1bSwgJHBlcnNvbklkKV0gPSAkYWx0ZXJXZXJ0DQogICAgICAgICAg ICAgICAgICAgICAgICAgICAgaWYgKFtzdHJpbmddOjpJc051bGxPckVtcHR5KCR3ZXJ0KSkgew0K ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHBsYW51bmcuZWludHJhZWdlLiRk YXR1bS5QU09iamVjdC5Qcm9wZXJ0aWVzWyRwZXJzb25JZF0pIHsNCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICRwbGFudW5nLmVpbnRyYWVnZS4kZGF0dW0uUFNPYmplY3QuUHJv cGVydGllcy5SZW1vdmUoJHBlcnNvbklkKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgaWYgKCRwbGFudW5nLmVpbnRyYWVnZS4kZGF0dW0uUFNPYmplY3Qu UHJvcGVydGllc1skcGVyc29uSWRdKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAkcGxhbnVuZy5laW50cmFlZ2UuJGRhdHVtLiRwZXJzb25JZCA9ICR3ZXJ0DQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAkcGxhbnVuZy5laW50cmFlZ2UuJGRhdHVtIHwgQWRkLU1lbWJlciAtTm90 ZVByb3BlcnR5TmFtZSAkcGVyc29uSWQgLU5vdGVQcm9wZXJ0eVZhbHVlICR3ZXJ0IC1Gb3JjZQ0K ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRva0NvdW50KysNCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICBpZiAoJG51bGwgLWVxICRlcnN0ZXNQaWQpIHsgJGVyc3Rlc1Bp ZCA9ICRwZXJzb25JZDsgJGVyc3Rlc1dlcnQgPSAkd2VydDsgJGVyc3Rlc0RhdHVtID0gJGRhdHVt IH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbGV0enRlc0RhdHVtID0gJGRhdHVtDQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZvaWRdJHN5bmNFaW50cmFlZ2UuQWRkKEB7IGRh dHVtID0gJGRhdHVtOyBwZXJzb25JZCA9ICRwZXJzb25JZDsgYWx0ID0gIiRhbHRlcldlcnQiOyBu ZXUgPSAiJHdlcnQiIH0pDQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAg ICAgICAgICAgICAjIERhdGVpIG51ciBzY2hyZWliZW4sIHdlbm4gdGF0c2FlY2hsaWNoIHdhcyBn ZWFlbmRlcnQgd3VyZGUuDQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoJG9rQ291bnQgLWd0 IDApIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBXcml0ZS1Kc29uT2JqZWN0ICdwbGFu dW5nLmpzb24nICRwbGFudW5nIHwgT3V0LU51bGwNCiAgICAgICAgICAgICAgICAgICAgICAgIH0N CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBAeyB0eXAgPSAnb2snOyBva0NvdW50ID0g JG9rQ291bnQ7IGFiZ2VsZWhudCA9ICRhYmdlbGVobnQ7IGVyc3Rlc1BpZCA9ICRlcnN0ZXNQaWQ7 IGVyc3Rlc1dlcnQgPSAkZXJzdGVzV2VydDsgZXJzdGVzRGF0dW0gPSAkZXJzdGVzRGF0dW07IGxl dHp0ZXNEYXR1bSA9ICRsZXR6dGVzRGF0dW07IGFsdGVXZXJ0ZSA9ICRhbHRlV2VydGU7IHN5bmNF aW50cmFlZ2UgPSAkc3luY0VpbnRyYWVnZSB9DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAg ICAgICAgICAgICB9IGNhdGNoIHsNCiAgICAgICAgICAgICAgICAgICAgU2VuZC1FcnJvciAkUmVz cG9uc2UgKCJMb2NrLUZlaGxlcjogJF8iKSA1MDM7IGNvbnRpbnVlDQogICAgICAgICAgICAgICAg fQ0KICAgICAgICAgICAgICAgIGlmICgkcmVzLnR5cCAtZXEgJ2Vycm9yJykgeyBTZW5kLUVycm9y ICRSZXNwb25zZSAkcmVzLm1zZyAkcmVzLmNvZGU7IGNvbnRpbnVlIH0NCiAgICAgICAgICAgICAg ICAjIExvZ2J1Y2ggKyBMaXZlLVN5bmMgTkFDSCBkZW0gTG9jayAoa2VpbiBnZXNjaGFjaHRlbHRl cyBMb2NrKS4NCiAgICAgICAgICAgICAgICBpZiAoJHJlcy5va0NvdW50IC1ndCAwKSB7DQogICAg ICAgICAgICAgICAgICAgIFdyaXRlLUxvZ0VpbnRyYWcgJ3plbGxlbi5idWxrLmdlYWVuZGVydCcg QHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHBlcnNvbklkICAgID0gJHJlcy5lcnN0ZXNQaWQN CiAgICAgICAgICAgICAgICAgICAgICAgIHdlcnQgICAgICAgID0gJHJlcy5lcnN0ZXNXZXJ0DQog ICAgICAgICAgICAgICAgICAgICAgICBhbnphaGwgICAgICA9ICRyZXMub2tDb3VudA0KICAgICAg ICAgICAgICAgICAgICAgICAgZXJzdGVyVGFnICAgPSAkcmVzLmVyc3Rlc0RhdHVtDQogICAgICAg ICAgICAgICAgICAgICAgICBsZXR6dGVyVGFnICA9ICRyZXMubGV0enRlc0RhdHVtDQogICAgICAg ICAgICAgICAgICAgICAgICBhYmdlbGVobnQgICA9ICRyZXMuYWJnZWxlaG50LkNvdW50DQogICAg ICAgICAgICAgICAgICAgICAgICAjIFJlc3RvcmUtUGF5bG9hZDogcHJvIFplbGxlIGRlciBXZXJ0 IHZvciBkZXIgQWVuZGVydW5nLg0KICAgICAgICAgICAgICAgICAgICAgICAgYWx0ZVdlcnRlICAg PSAkcmVzLmFsdGVXZXJ0ZQ0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAg ICAgICMgTGl2ZS1TeW5jOiBwcm8gWmVsbGUgZWluICd6ZWxsZSctRWludHJhZyBpbnMgY2hhbmdl cy5qc29uLg0KICAgICAgICAgICAgICAgICAgICBBZGQtQ2hhbmdlTG9nRWludHJhZWdlICd6ZWxs ZScgJHJlcy5zeW5jRWludHJhZWdlDQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAg IFNlbmQtSnNvbk9iamVjdCAkUmVzcG9uc2UgQHsgc3RhdHVzID0gJ29rJzsgb2sgPSAkcmVzLm9r Q291bnQ7IGFiZ2VsZWhudCA9IEAoJHJlcy5hYmdlbGVobnQpIH0NCiAgICAgICAgICAgICAgICBj b250aW51ZQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgIyBQT1NUIC9hcGkvcGxhbnVuZy9r b21tZW50YXINCiAgICAgICAgICAgICMgSGFlbmd0IGVpbmVuIG5ldWVuIEtvbW1lbnRhciBhbiBk aWUgTGlzdGUgZnVlciAoZGF0dW0scGVyc29uSWQpIGFuLg0KICAgICAgICAgICAgIyBTY2hlbWEt TWlncmF0aW9uIChsYXp5KTogdm9yaGFuZGVuZXIgU3RyaW5nIG9kZXIgT2JqZWt0LUVpbnRyYWcg d2lyZA0KICAgICAgICAgICAgIyBiZWltIGVyc3RlbiBTY2hyZWliZW4gaW4gZWluZSBMaXN0ZSBr b252ZXJ0aWVydC4gTGVlcmVyIFRleHQgd2lyZA0KICAgICAgICAgICAgIyBhYmdlbGVobnQg4oCU IExvZXNjaGVuIGVpbnplbG5lciBLb21tZW50YXJlIGxhZXVmdCB1ZWJlciBkZW4gREVMRVRFLQ0K ICAgICAgICAgICAgIyBFbmRwdW5rdCAobWl0IEtvbW1lbnRhci1JRCksIGRhcyBMb2VzY2hlbiBn YW56ZXIgTGlzdGVuIGlzdCB1ZWJlcg0KICAgICAgICAgICAgIyBkaWUgQVBJIG5pY2h0IG1laHIg bW9lZ2xpY2ggKHZlcnNlaGVudGxpY2hlciBWZXJsdXN0IGF1c2dlc2NobG9zc2VuKS4NCiAgICAg ICAgICAgIGlmICgkUGF0aCAtZXEgJy9hcGkvcGxhbnVuZy9rb21tZW50YXInIC1hbmQgJE1ldGhv ZCAtZXEgJ1BPU1QnKSB7DQogICAgICAgICAgICAgICAgJGJvZHkgPSBSZWFkLUJvZHkgJFJlcXVl c3QNCiAgICAgICAgICAgICAgICBpZiAoLW5vdCAkYm9keSkgeyBTZW5kLUVycm9yICRSZXNwb25z ZSAnQW5mcmFnZSB6dSBncm9zcycgNDEzOyBjb250aW51ZSB9DQogICAgICAgICAgICAgICAgJGEg PSAkYm9keSB8IENvbnZlcnRGcm9tLUpzb24NCiAgICAgICAgICAgICAgICAkZGF0dW0gPSAkYS5k YXR1bQ0KICAgICAgICAgICAgICAgICRwZXJzb25JZCA9IFtzdHJpbmddJGEucGVyc29uSWQNCiAg ICAgICAgICAgICAgICAkdGV4dCA9IGlmICgkYS5QU09iamVjdC5Qcm9wZXJ0aWVzWyd0ZXh0J10p IHsgKCIkKCRhLnRleHQpIikuVHJpbSgpIH0gZWxzZSB7ICcnIH0NCiAgICAgICAgICAgICAgICBp ZiAoLW5vdCAkdGV4dCkgew0KICAgICAgICAgICAgICAgICAgICBTZW5kLUVycm9yICRSZXNwb25z ZSAnTGVlcmVyIEtvbW1lbnRhciDigJQgYml0dGUgREVMRVRFIC9hcGkvcGxhbnVuZy9rb21tZW50 YXIgZnVlciBMb2VzY2hlbiB2ZXJ3ZW5kZW4nIDQwMA0KICAgICAgICAgICAgICAgICAgICBjb250 aW51ZQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAjIEVkaXQtUmVjaHQgdm9y IExvY2sgcHJ1ZWZlbg0KICAgICAgICAgICAgICAgICRwbGFudW5nQ2hlY2sgPSBSZWFkLUpzb25P YmplY3QgJ3BsYW51bmcuanNvbicNCiAgICAgICAgICAgICAgICBpZiAoJG51bGwgLWVxICRwbGFu dW5nQ2hlY2spIHsgU2VuZC1FcnJvciAkUmVzcG9uc2UgJ3BsYW51bmcuanNvbiBuaWNodCBnZWZ1 bmRlbicgNDA0OyBjb250aW51ZSB9DQogICAgICAgICAgICAgICAgJHppZWxQZXJzb24gPSAkbnVs bA0KICAgICAgICAgICAgICAgIGlmICgkcGxhbnVuZ0NoZWNrLnBlcnNvbmVuKSB7DQogICAgICAg ICAgICAgICAgICAgIGZvcmVhY2ggKCRwcCBpbiBAKCRwbGFudW5nQ2hlY2sucGVyc29uZW4pKSB7 DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoW3N0cmluZ10kcHAuaWQgLWVxICRwZXJzb25J ZCkgeyAkemllbFBlcnNvbiA9ICRwcDsgYnJlYWsgfQ0KICAgICAgICAgICAgICAgICAgICB9DQog ICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGlmICgtbm90IChUZXN0LURhcmZaZWxs ZUVkaXRpZXJlbiAkemllbFBlcnNvbikpIHsNCiAgICAgICAgICAgICAgICAgICAgU2VuZC1FcnJv ciAkUmVzcG9uc2UgJ0tlaW5lIEJlcmVjaHRpZ3VuZyBmdWVyIGRpZXNlbiBLb21tZW50YXInIDQw MzsgY29udGludWUNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgJGpldHp0ID0g KEdldC1EYXRlKS5Ub1N0cmluZygnbycpICAjIElTTyA4NjAxIG1pdCBaZWl0em9uZQ0KICAgICAg ICAgICAgICAgICRiZW51dHplciA9ICIkRG9tYWluXCRVc2VybmFtZSINCiAgICAgICAgICAgICAg ICAkbmV1ZUlkID0gJ2tfJyArIChbRGF0ZVRpbWVPZmZzZXRdOjpOb3cuVG9Vbml4VGltZU1pbGxp c2Vjb25kcygpKSArICdfJyArIChHZXQtUmFuZG9tIC1NYXhpbXVtIDk5OTk5KQ0KICAgICAgICAg ICAgICAgIHRyeSB7DQogICAgICAgICAgICAgICAgICAgICRudWxsID0gSW52b2tlLVdpdGhGaWxl TG9jayAncGxhbnVuZy5qc29uJyB7DQogICAgICAgICAgICAgICAgICAgICAgICAkcGxhbnVuZyA9 IFJlYWQtSnNvbk9iamVjdCAncGxhbnVuZy5qc29uJw0KICAgICAgICAgICAgICAgICAgICAgICAg aWYgKCRudWxsIC1lcSAkcGxhbnVuZykgeyByZXR1cm4gJG51bGwgfQ0KICAgICAgICAgICAgICAg ICAgICAgICAgaWYgKC1ub3QgJHBsYW51bmcuUFNPYmplY3QuUHJvcGVydGllc1sna29tbWVudGFy ZSddKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHBsYW51bmcgfCBBZGQtTWVtYmVy IC1Ob3RlUHJvcGVydHlOYW1lICdrb21tZW50YXJlJyAtTm90ZVByb3BlcnR5VmFsdWUgKE5ldy1P YmplY3QgUFNPYmplY3QpIC1Gb3JjZQ0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAg ICAgICAgICAgICAgICAgICAgaWYgKC1ub3QgJHBsYW51bmcua29tbWVudGFyZS5QU09iamVjdC5Q cm9wZXJ0aWVzWyRkYXR1bV0pIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcGxhbnVu Zy5rb21tZW50YXJlIHwgQWRkLU1lbWJlciAtTm90ZVByb3BlcnR5TmFtZSAkZGF0dW0gLU5vdGVQ cm9wZXJ0eVZhbHVlIChOZXctT2JqZWN0IFBTT2JqZWN0KSAtRm9yY2UNCiAgICAgICAgICAgICAg ICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICMgQWt0dWVsbGUgTGlzdGUgaGVy YXVzemllaGVuICsgZ2dmLiBhdXMgQWx0c2NoZW1hIG1pZ3JpZXJlbi4NCiAgICAgICAgICAgICAg ICAgICAgICAgICMgTGlzdGUgaXN0IGNocm9ub2xvZ2lzY2ggKGFlbHRlc3RlIHp1ZXJzdCksIGRl ciBuZXVlDQogICAgICAgICAgICAgICAgICAgICAgICAjIEVpbnRyYWcgd2lyZCBoaW50ZW4gYW5n ZWhhZW5ndC4NCiAgICAgICAgICAgICAgICAgICAgICAgICRsaXN0ZSA9IE5ldy1PYmplY3QgU3lz dGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuTGlzdFtvYmplY3RdDQogICAgICAgICAgICAgICAgICAg ICAgICBpZiAoJHBsYW51bmcua29tbWVudGFyZS4kZGF0dW0uUFNPYmplY3QuUHJvcGVydGllc1sk cGVyc29uSWRdKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHZvcmggPSAkcGxhbnVu Zy5rb21tZW50YXJlLiRkYXR1bS4kcGVyc29uSWQNCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICBpZiAoJHZvcmggLWlzIFtzdHJpbmddIC1hbmQgJHZvcmgpIHsNCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIyBBbHRlciBTdHJpbmctRWludHJhZyDigJQgZWluIEVsZW1lbnQgb2hu ZSBNZXRhDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRsaXN0ZS5BZGQoW1BTQ3Vz dG9tT2JqZWN0XUB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCAgICAg ICAgICAgPSAna19sZWdhY3lfJyArIChHZXQtUmFuZG9tIC1NYXhpbXVtIDk5OTk5KQ0KICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dCAgICAgICAgID0gJHZvcmgNCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlYWVuZGVydEFtICA9ICRudWxsDQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZWFlbmRlcnRWb24gPSAkbnVsbA0KICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSB8IE91dC1OdWxsDQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgfSBlbHNlaWYgKCR2b3JoIC1pcyBbYXJyYXldIC1vciAoJHZvcmggLWlz IFtTeXN0ZW0uQ29sbGVjdGlvbnMuSUVudW1lcmFibGVdIC1hbmQgLW5vdCAoJHZvcmggLWlzIFtz dHJpbmddKSkpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBTY2hvbiBlaW4g QXJyYXkgKG5ldWVzIFNjaGVtYSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9y ZWFjaCAoJGUgaW4gQCgkdm9yaCkpIHsgJGxpc3RlLkFkZCgkZSkgfCBPdXQtTnVsbCB9DQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlaWYgKCR2b3JoIC1hbmQgJHZvcmguUFNPYmpl Y3QuUHJvcGVydGllc1sndGV4dCddKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICMgQWx0ZXMgT2JqZWt0LVNjaGVtYSB7IHRleHQsIGdlYWVuZGVydEFtLCBnZWFlbmRlcnRWb24g fQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbWlnSWQgPSBpZiAoJHZvcmguUFNP YmplY3QuUHJvcGVydGllc1snaWQnXSkgeyBbc3RyaW5nXSR2b3JoLmlkIH0gZWxzZSB7ICdrX2xl Z2FjeV8nICsgKEdldC1SYW5kb20gLU1heGltdW0gOTk5OTkpIH0NCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgJGxpc3RlLkFkZChbUFNDdXN0b21PYmplY3RdQHsNCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGlkICAgICAgICAgICA9ICRtaWdJZA0KICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dCAgICAgICAgID0gW3N0cmluZ10kdm9yaC50 ZXh0DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZWFlbmRlcnRBbSAgPSBp ZiAoJHZvcmguUFNPYmplY3QuUHJvcGVydGllc1snZ2VhZW5kZXJ0QW0nXSkgIHsgJHZvcmguZ2Vh ZW5kZXJ0QW0gfSAgZWxzZSB7ICRudWxsIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGdlYWVuZGVydFZvbiA9IGlmICgkdm9yaC5QU09iamVjdC5Qcm9wZXJ0aWVzWydnZWFl bmRlcnRWb24nXSkgeyAkdm9yaC5nZWFlbmRlcnRWb24gfSBlbHNlIHsgJG51bGwgfQ0KICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB9KSB8IE91dC1OdWxsDQogICAgICAgICAgICAgICAg ICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAg ICAgICAgICAgJGxpc3RlLkFkZChbUFNDdXN0b21PYmplY3RdQHsNCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICBpZCAgICAgICAgICAgPSAkbmV1ZUlkDQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgdGV4dCAgICAgICAgID0gJHRleHQNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBn ZWFlbmRlcnRBbSAgPSAkamV0enQNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZWFlbmRl cnRWb24gPSAkYmVudXR6ZXINCiAgICAgICAgICAgICAgICAgICAgICAgIH0pIHwgT3V0LU51bGwN CiAgICAgICAgICAgICAgICAgICAgICAgICMgWnVydWVjayBhbHMgQXJyYXkgKFBTLVNlcmlhbGlz aWVydW5nKQ0KICAgICAgICAgICAgICAgICAgICAgICAgJGFyciA9IEAoJGxpc3RlLlRvQXJyYXko KSkNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkcGxhbnVuZy5rb21tZW50YXJlLiRkYXR1 bS5QU09iamVjdC5Qcm9wZXJ0aWVzWyRwZXJzb25JZF0pIHsNCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAkcGxhbnVuZy5rb21tZW50YXJlLiRkYXR1bS4kcGVyc29uSWQgPSAkYXJyDQogICAg ICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICAgICAgICAg ICRwbGFudW5nLmtvbW1lbnRhcmUuJGRhdHVtIHwgQWRkLU1lbWJlciAtTm90ZVByb3BlcnR5TmFt ZSAkcGVyc29uSWQgLU5vdGVQcm9wZXJ0eVZhbHVlICRhcnIgLUZvcmNlDQogICAgICAgICAgICAg ICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICBXcml0ZS1Kc29uT2JqZWN0ICdw bGFudW5nLmpzb24nICRwbGFudW5nIHwgT3V0LU51bGwNCiAgICAgICAgICAgICAgICAgICAgICAg IHJldHVybiAkbnVsbA0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfSBj YXRjaCB7DQogICAgICAgICAgICAgICAgICAgIFNlbmQtRXJyb3IgJFJlc3BvbnNlICgiTG9jay1G ZWhsZXI6ICRfIikgNTAzOyBjb250aW51ZQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAg ICAgICAjIFJlZGFjdGlvbiB3aWUgYmVpIGtvbW1lbnRhci5nZWxvZXNjaHQgKFNwcmludCAxIOKA lCBTaWNoZXJoZWl0cy0NCiAgICAgICAgICAgICAgICAjIE5vdGJyZW1zZSAyMDI2LTA1LTI4KTog Vm9sbHRleHQgYmxlaWJ0IGluIHBsYW51bmcuanNvbiAoZG9ydA0KICAgICAgICAgICAgICAgICMg ZWRpdGllcmJhci9sb2VzY2hiYXIpLCBkYXMgTG9nYnVjaCBiZWtvbW10IG51ciBWb3JzY2hhdSAr IExhZW5nZS4NCiAgICAgICAgICAgICAgICAjIFZlcm1laWRldCBQSUktRWNobywgd2VubiBlaW4g S29tbWVudGFyIHNwYWV0ZXIgZ2Vsb2VzY2h0IHdpcmQNCiAgICAgICAgICAgICAgICAjIGFiZXIg aW0gTG9nIGltbWVyIG5vY2gga29tcGxldHQgbGllc3Qgc3RlaHQuDQogICAgICAgICAgICAgICAg JHRleHRWb3JzY2hhdSA9ICR0ZXh0DQogICAgICAgICAgICAgICAgaWYgKCR0ZXh0Vm9yc2NoYXUu TGVuZ3RoIC1ndCA0MCkgeyAkdGV4dFZvcnNjaGF1ID0gJHRleHRWb3JzY2hhdS5TdWJzdHJpbmco MCwgNDApICsgJ+KApicgfQ0KICAgICAgICAgICAgICAgIFdyaXRlLUxvZ0VpbnRyYWcgJ2tvbW1l bnRhci5oaW56dWdlZnVlZ3QnIEB7DQogICAgICAgICAgICAgICAgICAgIGRhdHVtICAgICAgICAg PSAkZGF0dW0NCiAgICAgICAgICAgICAgICAgICAgcGVyc29uSWQgICAgICA9ICRwZXJzb25JZA0K ICAgICAgICAgICAgICAgICAgICBrb21tZW50YXJJZCAgID0gJG5ldWVJZA0KICAgICAgICAgICAg ICAgICAgICB0ZXh0Vm9yc2NoYXUgID0gJHRleHRWb3JzY2hhdQ0KICAgICAgICAgICAgICAgICAg ICB0ZXh0TGFlbmdlICAgID0gJHRleHQuTGVuZ3RoDQogICAgICAgICAgICAgICAgfQ0KICAgICAg ICAgICAgICAgIEFkZC1DaGFuZ2VMb2dFaW50cmFnICdrb21tZW50YXInIEB7DQogICAgICAgICAg ICAgICAgICAgIGRhdHVtICAgID0gJGRhdHVtDQogICAgICAgICAgICAgICAgICAgIHBlcnNvbklk ID0gJHBlcnNvbklkDQogICAgICAgICAgICAgICAgICAgIGtvbW1lbnRhcklkID0gJG5ldWVJZA0K ICAgICAgICAgICAgICAgICAgICAjIExpdmUtU3luYyBicmF1Y2h0IGRlbiBUZXh0IG5pY2h0IOKA lCBuYWVjaHN0ZXIgUmVuZGVyIGxhZWR0DQogICAgICAgICAgICAgICAgICAgICMgaWhuIGF1cyBw bGFudW5nLmpzb24uIE51ciBNZXRhZGF0ZW4gZnVlciBBa3Rpdml0YWV0cy1BbnplaWdlLg0KICAg ICAgICAgICAgICAgICAgICB6ZWl0c3RlbXBlbCA9ICRqZXR6dA0KICAgICAgICAgICAgICAgIH0N CiAgICAgICAgICAgICAgICBTZW5kLUpzb25PYmplY3QgJFJlc3BvbnNlIEB7DQogICAgICAgICAg ICAgICAgICAgIHN0YXR1cyAgICAgICA9ICdoaW56dWdlZnVlZ3QnDQogICAgICAgICAgICAgICAg ICAgIGtvbW1lbnRhcklkICA9ICRuZXVlSWQNCiAgICAgICAgICAgICAgICAgICAgZ2VhZW5kZXJ0 QW0gID0gJGpldHp0DQogICAgICAgICAgICAgICAgICAgIGdlYWVuZGVydFZvbiA9ICRiZW51dHpl cg0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBjb250aW51ZQ0KICAgICAgICAg ICAgfQ0KDQogICAgICAgICAgICAjIERFTEVURSAvYXBpL3BsYW51bmcva29tbWVudGFyDQogICAg ICAgICAgICAjIEJvZHk6IHsgZGF0dW0sIHBlcnNvbklkLCBrb21tZW50YXJJZCB9DQogICAgICAg ICAgICAjIEJlcmVjaHRpZ3VuZzogU3VwZXJVc2VyIG9kZXIgR2VzYW10dmVyYW50d29ydGxpY2hl LiBBbmRlcmUgUm9sbGVuDQogICAgICAgICAgICAjIGJla29tbWVuIDQwMyDigJQgYXVjaCBkZXIg VmVyZmFzc2VyIHNlbGJzdCBkYXJmIG5pY2h0IGxvZXNjaGVuDQogICAgICAgICAgICAjIChiZXd1 c3N0ZSBEZXNpZ25lbnRzY2hlaWR1bmc6IEtvbW1lbnRhci1WZXJsYXVmIGlzdCBDaHJvbmlrKS4N CiAgICAgICAgICAgIGlmICgkUGF0aCAtZXEgJy9hcGkvcGxhbnVuZy9rb21tZW50YXInIC1hbmQg JE1ldGhvZCAtZXEgJ0RFTEVURScpIHsNCiAgICAgICAgICAgICAgICAkYm9keSA9IFJlYWQtQm9k eSAkUmVxdWVzdA0KICAgICAgICAgICAgICAgIGlmICgtbm90ICRib2R5KSB7IFNlbmQtRXJyb3Ig JFJlc3BvbnNlICdBbmZyYWdlIHp1IGdyb3NzJyA0MTM7IGNvbnRpbnVlIH0NCiAgICAgICAgICAg ICAgICAkYSA9ICRib2R5IHwgQ29udmVydEZyb20tSnNvbg0KICAgICAgICAgICAgICAgICRkYXR1 bSA9ICRhLmRhdHVtDQogICAgICAgICAgICAgICAgJHBlcnNvbklkID0gW3N0cmluZ10kYS5wZXJz b25JZA0KICAgICAgICAgICAgICAgICRrb21tZW50YXJJZCA9IFtzdHJpbmddJGEua29tbWVudGFy SWQNCiAgICAgICAgICAgICAgICBpZiAoLW5vdCAkZGF0dW0gLW9yIC1ub3QgJHBlcnNvbklkIC1v ciAtbm90ICRrb21tZW50YXJJZCkgew0KICAgICAgICAgICAgICAgICAgICBTZW5kLUVycm9yICRS ZXNwb25zZSAnZGF0dW0sIHBlcnNvbklkIHVuZCBrb21tZW50YXJJZCBzaW5kIFBmbGljaHQnIDQw MDsgY29udGludWUNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgJHIgPSBHZXQt UmVjaHRlDQogICAgICAgICAgICAgICAgaWYgKC1ub3QgKCRyLmlzdFN1cGVyVXNlciAtb3IgJHIu aXN0R2VzYW10dmVyYW50d29ydGxpY2gpKSB7DQogICAgICAgICAgICAgICAgICAgIFNlbmQtRXJy b3IgJFJlc3BvbnNlICdOdXIgU3VwZXJVc2VyIHVuZCBHZXNhbXR2ZXJhbnR3b3J0bGljaGUgZHVl cmZlbiBLb21tZW50YXJlIGxvZXNjaGVuJyA0MDMNCiAgICAgICAgICAgICAgICAgICAgY29udGlu dWUNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgJGdlbG9lc2NodGVyVGV4dCA9 ICRudWxsDQogICAgICAgICAgICAgICAgdHJ5IHsNCiAgICAgICAgICAgICAgICAgICAgJGVyZyA9 IEludm9rZS1XaXRoRmlsZUxvY2sgJ3BsYW51bmcuanNvbicgew0KICAgICAgICAgICAgICAgICAg ICAgICAgJHBsYW51bmcgPSBSZWFkLUpzb25PYmplY3QgJ3BsYW51bmcuanNvbicNCiAgICAgICAg ICAgICAgICAgICAgICAgIGlmICgkbnVsbCAtZXEgJHBsYW51bmcgLW9yIC1ub3QgJHBsYW51bmcu UFNPYmplY3QuUHJvcGVydGllc1sna29tbWVudGFyZSddKSB7IHJldHVybiBAeyB0ZXh0ID0gJG51 bGwgfSB9DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoLW5vdCAkcGxhbnVuZy5rb21tZW50 YXJlLlBTT2JqZWN0LlByb3BlcnRpZXNbJGRhdHVtXSkgeyByZXR1cm4gQHsgdGV4dCA9ICRudWxs IH0gfQ0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKC1ub3QgJHBsYW51bmcua29tbWVudGFy ZS4kZGF0dW0uUFNPYmplY3QuUHJvcGVydGllc1skcGVyc29uSWRdKSB7IHJldHVybiBAeyB0ZXh0 ID0gJG51bGwgfSB9DQogICAgICAgICAgICAgICAgICAgICAgICAkdm9yaCA9ICRwbGFudW5nLmtv bW1lbnRhcmUuJGRhdHVtLiRwZXJzb25JZA0KICAgICAgICAgICAgICAgICAgICAgICAgIyBDb21w YXQgZnVlciBBbHQtRm9ybWF0ZSAoU3ByaW50IDMg4oCUIERyaWZ0L1JvYnVzdGhlaXQNCiAgICAg ICAgICAgICAgICAgICAgICAgICMgMjAyNi0wNS0yOCk6IENsaWVudCBrZW5uemVpY2huZXQgU3Ry aW5nLSBvZGVyIFNpbmdsZS0NCiAgICAgICAgICAgICAgICAgICAgICAgICMgT2JqZWN0LW9obmUt SUQgRWludHJhZWdlIGluIGtvbW1lbnRhckxpc3RlKCkgbWl0DQogICAgICAgICAgICAgICAgICAg ICAgICAjIFNlbnRpbmVsLUlEICdrX2xlZ2FjeScuIERFTEVURSBtaXQgZGllc2VyIElEIGdlZ2Vu DQogICAgICAgICAgICAgICAgICAgICAgICAjIGVpbmVuIEFsdC1FaW50cmFnID0ga29tcGxldHRl ciBFaW50cmFnIHdpcmQgZW50ZmVybnQNCiAgICAgICAgICAgICAgICAgICAgICAgICMgKE1pZ3Jh dGlvbiArIExvZXNjaHVuZyBpbiBlaW5lbSBTY2hyaXR0KS4NCiAgICAgICAgICAgICAgICAgICAg ICAgICR0cmVmZmVyID0gJG51bGwNCiAgICAgICAgICAgICAgICAgICAgICAgICRuZXVlTGlzdGUg PSBOZXctT2JqZWN0IFN5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljLkxpc3Rbb2JqZWN0XQ0KICAg ICAgICAgICAgICAgICAgICAgICAgaWYgKCR2b3JoIC1pcyBbc3RyaW5nXSAtYW5kICR2b3JoKSB7 DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRrb21tZW50YXJJZCAtZXEgJ2tfbGVn YWN5Jykgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdHJlZmZlciA9IFtQU0N1 c3RvbU9iamVjdF1AeyB0ZXh0ID0gJHZvcmggfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAg IH0gZWxzZSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBAeyB0ZXh0 ID0gJG51bGw7IGZlaGxlciA9ICdrb21tZW50YXJOaWNodEdlZnVuZGVuJyB9DQogICAgICAgICAg ICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAkbGlzdGUgPSBAKCkNCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICBpZiAoJHZvcmggLWlzIFthcnJheV0gLW9yICgkdm9yaCAtaXMgW1N5c3RlbS5D b2xsZWN0aW9ucy5JRW51bWVyYWJsZV0gLWFuZCAtbm90ICgkdm9yaCAtaXMgW3N0cmluZ10pKSkg ew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbGlzdGUgPSBAKCR2b3JoKQ0KICAg ICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZWlmICgkdm9yaCAtYW5kICR2b3JoLlBTT2Jq ZWN0LlByb3BlcnRpZXNbJ3RleHQnXSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAkYWx0SWQgPSBpZiAoJHZvcmguUFNPYmplY3QuUHJvcGVydGllc1snaWQnXSkgeyBbc3RyaW5n XSR2b3JoLmlkIH0gZWxzZSB7ICcnIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg aWYgKC1ub3QgJGFsdElkKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp ZiAoJGtvbW1lbnRhcklkIC1lcSAna19sZWdhY3knKSB7DQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgJHRyZWZmZXIgPSAkdm9yaA0KICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICByZXR1cm4gQHsgdGV4dCA9ICRudWxsOyBmZWhsZXIgPSAna29tbWVudGFyTmljaHRH ZWZ1bmRlbicgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgJGxpc3RlID0gQCgkdm9yaCkNCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICBpZiAoLW5vdCAkdHJlZmZlcikgew0KICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBmb3JlYWNoICgkZSBpbiAkbGlzdGUpIHsNCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICRlaWQgPSBpZiAoJGUgLWFuZCAkZS5QU09iamVjdC5Qcm9wZXJ0aWVz WydpZCddKSB7IFtzdHJpbmddJGUuaWQgfSBlbHNlIHsgJycgfQ0KICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgaWYgKCRlaWQgLWVxICRrb21tZW50YXJJZCkgew0KICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0cmVmZmVyID0gJGUNCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgJG5ldWVMaXN0ZS5BZGQoJGUpIHwgT3V0LU51bGwNCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAg ICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgtbm90ICR0cmVmZmVyKSB7IHJl dHVybiBAeyB0ZXh0ID0gJG51bGw7IGZlaGxlciA9ICdrb21tZW50YXJOaWNodEdlZnVuZGVuJyB9 IH0NCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkbmV1ZUxpc3RlLkNvdW50IC1lcSAwKSB7 DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBMZXR6dGVyIEtvbW1lbnRhciBlbnRmZXJu dCAtPiBQcm9wZXJ0eSBrb21wbGV0dCByYXVzDQogICAgICAgICAgICAgICAgICAgICAgICAgICAg JHBsYW51bmcua29tbWVudGFyZS4kZGF0dW0uUFNPYmplY3QuUHJvcGVydGllcy5SZW1vdmUoJHBl cnNvbklkKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgTGVlcmVyIFRhZ2VzLUJ1Y2tl dCBhdWZyYWV1bWVuDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRhZ1Byb3BzID0gQCgk cGxhbnVuZy5rb21tZW50YXJlLiRkYXR1bS5QU09iamVjdC5Qcm9wZXJ0aWVzKQ0KICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGlmICgkdGFnUHJvcHMuQ291bnQgLWVxIDApIHsNCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgJHBsYW51bmcua29tbWVudGFyZS5QU09iamVjdC5Qcm9w ZXJ0aWVzLlJlbW92ZSgkZGF0dW0pDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAg ICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAkcGxhbnVuZy5rb21tZW50YXJlLiRkYXR1bS4kcGVyc29uSWQgPSBAKCRuZXVlTGlzdGUuVG9B cnJheSgpKQ0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAg ICAgV3JpdGUtSnNvbk9iamVjdCAncGxhbnVuZy5qc29uJyAkcGxhbnVuZyB8IE91dC1OdWxsDQog ICAgICAgICAgICAgICAgICAgICAgICAkZW50ZmVybnRUZXh0ID0gaWYgKCR0cmVmZmVyLlBTT2Jq ZWN0LlByb3BlcnRpZXNbJ3RleHQnXSkgeyBbc3RyaW5nXSR0cmVmZmVyLnRleHQgfSBlbHNlIHsg JycgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEB7IHRleHQgPSAkZW50ZmVybnRU ZXh0IH0NCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICBpZiAoJGVy Zy5mZWhsZXIpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkZXJnLmZlaGxlciAtZXEg J2tvbW1lbnRhck5pY2h0R2VmdW5kZW4nKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAg U2VuZC1FcnJvciAkUmVzcG9uc2UgJ0tvbW1lbnRhciBtaXQgZGllc2VyIElEIG5pY2h0IGdlZnVu ZGVuJyA0MDQ7IGNvbnRpbnVlDQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAg ICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgJGdlbG9lc2NodGVyVGV4dCA9ICRlcmcu dGV4dA0KICAgICAgICAgICAgICAgIH0gY2F0Y2ggew0KICAgICAgICAgICAgICAgICAgICBTZW5k LUVycm9yICRSZXNwb25zZSAoIkxvY2stRmVobGVyOiAkXyIpIDUwMzsgY29udGludWUNCiAgICAg ICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgIyBSZWRhY3Rpb24gKFNwcmludCAxIOKAlCBT aWNoZXJoZWl0cy1Ob3RicmVtc2UgMjAyNi0wNS0yOCk6DQogICAgICAgICAgICAgICAgIyBQSUkt U2NodXR6LiBGcnVlaGVyIGxhbmRldGUgZGVyIHZvbGxzdGFlbmRpZ2UgS29tbWVudGFyLVRleHQg aW0NCiAgICAgICAgICAgICAgICAjIExvZ2J1Y2gg4oCUIHdlbm4gZGVyIEtvbW1lbnRhciBLcmFu a2hlaXRzLS9EaXN6aXBsaW5hci1JbmZvIGVudGhpZWx0LA0KICAgICAgICAgICAgICAgICMgbGVi dGUgc2llIG5hY2ggJ0xvZXNjaGVuJyB3ZWl0ZXIgaW0gTG9nLiBKZXR6dCBudXIgTGFlbmdlICsg a3VyemVyDQogICAgICAgICAgICAgICAgIyBBdXN6dWcgKDQwIFplaWNoZW4pLCBnZW51ZyBmdWVy IE5hY2h2b2xsemllaGJhcmtlaXQgb2huZSBWb2xsdGV4dC4NCiAgICAgICAgICAgICAgICAkdGV4 dFZvcnNjaGF1ID0gJycNCiAgICAgICAgICAgICAgICBpZiAoJGdlbG9lc2NodGVyVGV4dCkgew0K ICAgICAgICAgICAgICAgICAgICAka3VyeiA9ICRnZWxvZXNjaHRlclRleHQNCiAgICAgICAgICAg ICAgICAgICAgaWYgKCRrdXJ6Lkxlbmd0aCAtZ3QgNDApIHsgJGt1cnogPSAka3Vyei5TdWJzdHJp bmcoMCwgNDApICsgJ+KApicgfQ0KICAgICAgICAgICAgICAgICAgICAkdGV4dFZvcnNjaGF1ID0g JGt1cnoNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgJHRleHRMYWVuZ2UgPSBp ZiAoJGdlbG9lc2NodGVyVGV4dCkgeyAkZ2Vsb2VzY2h0ZXJUZXh0Lkxlbmd0aCB9IGVsc2UgeyAw IH0NCiAgICAgICAgICAgICAgICBXcml0ZS1Mb2dFaW50cmFnICdrb21tZW50YXIuZ2Vsb2VzY2h0 JyBAew0KICAgICAgICAgICAgICAgICAgICBkYXR1bSAgICAgICAgID0gJGRhdHVtDQogICAgICAg ICAgICAgICAgICAgIHBlcnNvbklkICAgICAgPSAkcGVyc29uSWQNCiAgICAgICAgICAgICAgICAg ICAga29tbWVudGFySWQgICA9ICRrb21tZW50YXJJZA0KICAgICAgICAgICAgICAgICAgICB0ZXh0 Vm9yc2NoYXUgID0gJHRleHRWb3JzY2hhdQ0KICAgICAgICAgICAgICAgICAgICB0ZXh0TGFlbmdl ICAgID0gJHRleHRMYWVuZ2UNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgQWRk LUNoYW5nZUxvZ0VpbnRyYWcgJ2tvbW1lbnRhcicgQHsNCiAgICAgICAgICAgICAgICAgICAgZGF0 dW0gICAgPSAkZGF0dW0NCiAgICAgICAgICAgICAgICAgICAgcGVyc29uSWQgPSAkcGVyc29uSWQN CiAgICAgICAgICAgICAgICAgICAga29tbWVudGFySWQgPSAka29tbWVudGFySWQNCiAgICAgICAg ICAgICAgICAgICAgIyBMaXZlLVN5bmMtQ2hhbm5lbCBicmF1Y2h0IGRlbiBUZXh0IG5pY2h0IOKA lCBCcm93c2VyIGxhZWR0DQogICAgICAgICAgICAgICAgICAgICMgYmVpIG5hZWNoc3RlbSBSZW5k ZXIgZWggYXVzIHBsYW51bmcuanNvbiAod28gZGVyIEVpbnRyYWcNCiAgICAgICAgICAgICAgICAg ICAgIyB3ZWcgaXN0KS4gSGllciBudXIgTWV0YWRhdGVuIGZ1ZXIgQWt0aXZpdGFldHMtQW56ZWln ZS4NCiAgICAgICAgICAgICAgICAgICAgbmV1ICAgICAgPSAnJw0KICAgICAgICAgICAgICAgICAg ICB6ZWl0c3RlbXBlbCA9IChHZXQtRGF0ZSkuVG9TdHJpbmcoJ28nKQ0KICAgICAgICAgICAgICAg IH0NCiAgICAgICAgICAgICAgICBTZW5kLUpzb25PYmplY3QgJFJlc3BvbnNlIEB7IHN0YXR1cyA9 ICdnZWxvZXNjaHQnOyBrb21tZW50YXJJZCA9ICRrb21tZW50YXJJZCB9DQogICAgICAgICAgICAg ICAgY29udGludWUNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgIyA9PT09PSBQRVJTT05F TiA9PT09PQ0KICAgICAgICAgICAgaWYgKCRQYXRoIC1lcSAnL2FwaS9wZXJzb25lbicgLWFuZCAk TWV0aG9kIC1lcSAnUE9TVCcpIHsNCiAgICAgICAgICAgICAgICBpZiAoLW5vdCAoVGVzdC1Jc3RB ZG1pbikpIHsgU2VuZC1FcnJvciAkUmVzcG9uc2UgJ0tlaW5lIEFkbWluLVJlY2h0ZScgNDAzOyBj b250aW51ZSB9DQogICAgICAgICAgICAgICAgJGJvZHkgPSBSZWFkLUJvZHkgJFJlcXVlc3QNCiAg ICAgICAgICAgICAgICBpZiAoLW5vdCAkYm9keSkgeyBTZW5kLUVycm9yICRSZXNwb25zZSAnQW5m cmFnZSB6dSBncm9zcycgNDEzOyBjb250aW51ZSB9DQogICAgICAgICAgICAgICAgJG5ldSA9ICRi b2R5IHwgQ29udmVydEZyb20tSnNvbg0KICAgICAgICAgICAgICAgICMgUmVhZC1Nb2RpZnktV3Jp dGUgYXRvbWFyIGluIGRlciBEYXRlaS1TcGVycmUuIFdpY2h0aWcgbmljaHQgbnVyDQogICAgICAg ICAgICAgICAgIyBnZWdlbiBMb3N0IFVwZGF0ZXMsIHNvbmRlcm4gZ2VnZW4gZGllIG1heElkLVJh Y2U6IHp3ZWkgcGFyYWxsZWxlDQogICAgICAgICAgICAgICAgIyBQZXJzb25lbi1BbmxhZ2VuIHd1 ZXJkZW4gc29uc3QgZGllc2VsYmUgbWF4SWQgbGVzZW4gdW5kIElERU5USVNDSEUNCiAgICAgICAg ICAgICAgICAjIElEcyB2ZXJnZWJlbiAoZG9wcGVsdGUgUGVyc29uZW4tSURzID0ga29ycnVwdGVy IFN0YXRlKS4NCiAgICAgICAgICAgICAgICAkcGVyc1JlcyA9ICRudWxsDQogICAgICAgICAgICAg ICAgdHJ5IHsNCiAgICAgICAgICAgICAgICAkcGVyc1JlcyA9IEludm9rZS1XaXRoRmlsZUxvY2sg J3BsYW51bmcuanNvbicgew0KICAgICAgICAgICAgICAgICRwbGFudW5nID0gUmVhZC1Kc29uT2Jq ZWN0ICdwbGFudW5nLmpzb24nDQogICAgICAgICAgICAgICAgJG1heElkID0gMA0KICAgICAgICAg ICAgICAgIGZvcmVhY2ggKCRwIGluICRwbGFudW5nLnBlcnNvbmVuKSB7IGlmICgkcC5pZCAtZ3Qg JG1heElkKSB7ICRtYXhJZCA9ICRwLmlkIH0gfQ0KICAgICAgICAgICAgICAgICRuZXVlSWQgPSAk bWF4SWQgKyAxDQoNCiAgICAgICAgICAgICAgICAjIEVpbnJlaWh1bmdzLUxvZ2lrOiAidW50ZW4i IChEZWZhdWx0KSwgInZvciIgb2RlciAibmFjaCIgZWluZXIgUmVmZXJlbnpwZXJzb24NCiAgICAg ICAgICAgICAgICAkZWlucmVpaGVuID0gJ3VudGVuJw0KICAgICAgICAgICAgICAgIGlmICgkbmV1 LlBTT2JqZWN0LlByb3BlcnRpZXNbJ2VpbnJlaWhlbiddIC1hbmQgJG5ldS5laW5yZWloZW4pIHsg JGVpbnJlaWhlbiA9IChbc3RyaW5nXSRuZXUuZWlucmVpaGVuKS5Ub0xvd2VyKCkgfQ0KICAgICAg ICAgICAgICAgICRyZWZJZCA9ICRudWxsDQogICAgICAgICAgICAgICAgaWYgKCRuZXUuUFNPYmpl Y3QuUHJvcGVydGllc1sncmVmZXJlbnpJZCddIC1hbmQgJG51bGwgLW5lICRuZXUucmVmZXJlbnpJ ZCkgeyAkcmVmSWQgPSBbaW50XSRuZXUucmVmZXJlbnpJZCB9DQoNCiAgICAgICAgICAgICAgICAk emllbFBvcyA9ICRudWxsDQogICAgICAgICAgICAgICAgaWYgKCgkZWlucmVpaGVuIC1lcSAndm9y JyAtb3IgJGVpbnJlaWhlbiAtZXEgJ25hY2gnKSAtYW5kICRudWxsIC1uZSAkcmVmSWQpIHsNCiAg ICAgICAgICAgICAgICAgICAgJHJlZlBvcyA9ICRudWxsDQogICAgICAgICAgICAgICAgICAgIGZv cmVhY2ggKCRwIGluICRwbGFudW5nLnBlcnNvbmVuKSB7DQogICAgICAgICAgICAgICAgICAgICAg ICBpZiAoW2ludF0kcC5pZCAtZXEgJHJlZklkKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgJHJlZlBvcyA9IGlmICgkcC5QU09iamVjdC5Qcm9wZXJ0aWVzWydwb3NpdGlvbiddIC1hbmQg JHAucG9zaXRpb24pIHsgW2ludF0kcC5wb3NpdGlvbiB9IGVsc2UgeyAwIH0NCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICBicmVhaw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAg ICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIGlmICgkbnVsbCAtbmUgJHJlZlBv cykgew0KICAgICAgICAgICAgICAgICAgICAgICAgJHppZWxQb3MgPSBpZiAoJGVpbnJlaWhlbiAt ZXEgJ3ZvcicpIHsgJHJlZlBvcyB9IGVsc2UgeyAkcmVmUG9zICsgMSB9DQogICAgICAgICAgICAg ICAgICAgICAgICAjIFBvc2l0aW9uZW4gYWIgemllbFBvcyB1bSAxIG5hY2ggaGludGVuIHNjaGll YmVuDQogICAgICAgICAgICAgICAgICAgICAgICBmb3JlYWNoICgkcCBpbiAkcGxhbnVuZy5wZXJz b25lbikgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRwcCA9IGlmICgkcC5QU09iamVj dC5Qcm9wZXJ0aWVzWydwb3NpdGlvbiddIC1hbmQgJHAucG9zaXRpb24pIHsgW2ludF0kcC5wb3Np dGlvbiB9IGVsc2UgeyAwIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHBwIC1n ZSAkemllbFBvcykgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHAuUFNP YmplY3QuUHJvcGVydGllc1sncG9zaXRpb24nXSkgeyAkcC5wb3NpdGlvbiA9ICRwcCArIDEgfQ0K ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsgJHAgfCBBZGQtTWVtYmVyIC1O b3RlUHJvcGVydHlOYW1lICdwb3NpdGlvbicgLU5vdGVQcm9wZXJ0eVZhbHVlICgkcHAgKyAxKSAt Rm9yY2UgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAg ICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAg ICAgICAgICAgICBpZiAoJG51bGwgLWVxICR6aWVsUG9zKSB7DQogICAgICAgICAgICAgICAgICAg ICRtYXhQb3MgPSAwDQogICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRwIGluICRwbGFudW5n LnBlcnNvbmVuKSB7ICRwb3MgPSBpZiAoJHAucG9zaXRpb24pIHsgW2ludF0kcC5wb3NpdGlvbiB9 IGVsc2UgeyAwIH07IGlmICgkcG9zIC1ndCAkbWF4UG9zKSB7ICRtYXhQb3MgPSAkcG9zIH0gfQ0K ICAgICAgICAgICAgICAgICAgICAkemllbFBvcyA9ICRtYXhQb3MgKyAxDQogICAgICAgICAgICAg ICAgfQ0KDQogICAgICAgICAgICAgICAgJHBlcnNvbiA9IFtvcmRlcmVkXUB7DQogICAgICAgICAg ICAgICAgICAgIGlkID0gJG5ldWVJZA0KICAgICAgICAgICAgICAgICAgICBha3RpdiA9IGlmICgk bmV1LlBTT2JqZWN0LlByb3BlcnRpZXNbJ2FrdGl2J10pIHsgJG5ldS5ha3RpdiB9IGVsc2UgeyAk dHJ1ZSB9DQogICAgICAgICAgICAgICAgICAgIG5hbWUgPSAkbmV1Lm5hbWUNCiAgICAgICAgICAg ICAgICAgICAgdm9ybmFtZSA9IGlmICgkbmV1LlBTT2JqZWN0LlByb3BlcnRpZXNbJ3Zvcm5hbWUn XSkgeyAkbmV1LnZvcm5hbWUgfSBlbHNlIHsgJycgfQ0KICAgICAgICAgICAgICAgICAgICBkaWVu c3RncmFkID0gaWYgKCRuZXUuUFNPYmplY3QuUHJvcGVydGllc1snZGllbnN0Z3JhZCddKSB7ICRu ZXUuZGllbnN0Z3JhZCB9IGVsc2UgeyAnJyB9DQogICAgICAgICAgICAgICAgICAgIGZ1bmt0aW9u ID0gaWYgKCRuZXUuUFNPYmplY3QuUHJvcGVydGllc1snZnVua3Rpb24nXSkgeyAkbmV1LmZ1bmt0 aW9uIH0gZWxzZSB7ICcnIH0NCiAgICAgICAgICAgICAgICAgICAgZ3J1cHBlID0gaWYgKCRuZXUu UFNPYmplY3QuUHJvcGVydGllc1snZ3J1cHBlJ10pIHsgJG5ldS5ncnVwcGUgfSBlbHNlIHsgJycg fQ0KICAgICAgICAgICAgICAgICAgICBvZSA9IGlmICgkbmV1LlBTT2JqZWN0LlByb3BlcnRpZXNb J29lJ10pIHsgJG5ldS5vZSB9IGVsc2UgeyAnJyB9DQogICAgICAgICAgICAgICAgICAgIGRpZW5z dG51bW1lciA9IGlmICgkbmV1LlBTT2JqZWN0LlByb3BlcnRpZXNbJ2RpZW5zdG51bW1lciddKSB7 ICRuZXUuZGllbnN0bnVtbWVyIH0gZWxzZSB7ICcnIH0NCiAgICAgICAgICAgICAgICAgICAgdGVs ZWZvbiA9IGlmICgkbmV1LlBTT2JqZWN0LlByb3BlcnRpZXNbJ3RlbGVmb24nXSkgeyAkbmV1LnRl bGVmb24gfSBlbHNlIHsgJycgfQ0KICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbiA9ICR6aWVs UG9zDQogICAgICAgICAgICAgICAgICAgIGVtYWlsID0gaWYgKCRuZXUuUFNPYmplY3QuUHJvcGVy dGllc1snZW1haWwnXSkgeyAkbmV1LmVtYWlsIH0gZWxzZSB7ICcnIH0NCiAgICAgICAgICAgICAg ICAgICAgbndLZW5udW5nID0gaWYgKCRuZXUuUFNPYmplY3QuUHJvcGVydGllc1snbndLZW5udW5n J10pIHsgJG5ldS5ud0tlbm51bmcgfSBlbHNlIHsgJycgfQ0KICAgICAgICAgICAgICAgICAgICBn ZWJ1cnRzZGF0dW0gPSBpZiAoJG5ldS5QU09iamVjdC5Qcm9wZXJ0aWVzWydnZWJ1cnRzZGF0dW0n XSkgeyAkbmV1LmdlYnVydHNkYXR1bSB9IGVsc2UgeyAnJyB9DQogICAgICAgICAgICAgICAgICAg IGVsRGdsUXVhbGlmaXppZXJ0ID0gaWYgKCRuZXUuUFNPYmplY3QuUHJvcGVydGllc1snZWxEZ2xR dWFsaWZpemllcnQnXSkgeyBbYm9vbF0kbmV1LmVsRGdsUXVhbGlmaXppZXJ0IH0gZWxzZSB7ICRm YWxzZSB9DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICMgTWFya2VyIGZ1ZXIg UGVyc29uZW4sIGRpZSBwZXIgRXhjZWwtSW1wb3J0IGZyaXNjaCBhbmdlbGVndA0KICAgICAgICAg ICAgICAgICMgd3VyZGVuLiBQZXJzb25hbHZlcndhbHR1bmcgYmxlbmRldCBzaWUgaW0gTmV1aW1w b3J0LUJsb2NrDQogICAgICAgICAgICAgICAgIyBvYmVuIGVpbiwgYmlzIGRhcyBGbGFnIG1hbnVl bGwgd2VnZ2VzZXR6dCB3aXJkIChFcmxlZGlndC0NCiAgICAgICAgICAgICAgICAjIEJ1dHRvbikg b2RlciBkYXMgbGV0enRlIFBmbGljaHRmZWxkIChEaWVuc3RncnVwcGUpIGdlcGZsZWd0DQogICAg ICAgICAgICAgICAgIyBpc3QgdW5kIGRlciBVc2VyIGF1ZiAiQmxvY2sgbGVlcmVuIiBrbGlja3Qu DQogICAgICAgICAgICAgICAgaWYgKCRuZXUuUFNPYmplY3QuUHJvcGVydGllc1snaW1wb3J0TmV1 QW0nXSAtYW5kICRuZXUuaW1wb3J0TmV1QW0pIHsNCiAgICAgICAgICAgICAgICAgICAgJHBlcnNv blsnaW1wb3J0TmV1QW0nXSA9IFtzdHJpbmddJG5ldS5pbXBvcnROZXVBbQ0KICAgICAgICAgICAg ICAgIH0NCiAgICAgICAgICAgICAgICAkcGxhbnVuZy5wZXJzb25lbiArPSBbUFNDdXN0b21PYmpl Y3RdJHBlcnNvbg0KICAgICAgICAgICAgICAgIFdyaXRlLUpzb25PYmplY3QgJ3BsYW51bmcuanNv bicgJHBsYW51bmcgfCBPdXQtTnVsbA0KICAgICAgICAgICAgICAgIHJldHVybiBAeyBuZXVlSWQg PSAkbmV1ZUlkOyB6aWVsUG9zID0gJHppZWxQb3M7IGVpbnJlaWhlbiA9ICRlaW5yZWloZW4gfQ0K ICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9IGNhdGNoIHsNCiAgICAgICAgICAg ICAgICAgICAgU2VuZC1FcnJvciAkUmVzcG9uc2UgKCJMb2NrLUZlaGxlcjogJF8iKSA1MDM7IGNv bnRpbnVlDQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIFdyaXRlLUxvZ0VpbnRy YWcgJ3BlcnNvbi5hbmdlbGVndCcgQHsgcGVyc29uSWQgPSAkcGVyc1Jlcy5uZXVlSWQ7IG5hbWUg PSAiJCgkbmV1LnZvcm5hbWUpICQoJG5ldS5uYW1lKSIuVHJpbSgpOyBlaW5yZWloZW4gPSAkcGVy c1Jlcy5laW5yZWloZW47IHBvc2l0aW9uID0gJHBlcnNSZXMuemllbFBvcyB9DQogICAgICAgICAg ICAgICAgU2VuZC1Kc29uT2JqZWN0ICRSZXNwb25zZSBAeyBzdGF0dXMgPSAnYW5nZWxlZ3QnOyBp ZCA9ICRwZXJzUmVzLm5ldWVJZDsgcG9zaXRpb24gPSAkcGVyc1Jlcy56aWVsUG9zIH0NCiAgICAg ICAgICAgICAgICBjb250aW51ZQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgaWYgKCRQYXRo IC1tYXRjaCAnXi9hcGkvcGVyc29uZW4vKFxkKykkJyAtYW5kICRNZXRob2QgLWVxICdQVVQnKSB7 DQogICAgICAgICAgICAgICAgaWYgKC1ub3QgKFRlc3QtSXN0QWRtaW4pKSB7IFNlbmQtRXJyb3Ig JFJlc3BvbnNlICdLZWluZSBBZG1pbi1SZWNodGUnIDQwMzsgY29udGludWUgfQ0KICAgICAgICAg ICAgICAgICRwZXJzb25JZCA9IFtpbnRdJE1hdGNoZXNbMV0NCiAgICAgICAgICAgICAgICAkYm9k eSA9IFJlYWQtQm9keSAkUmVxdWVzdA0KICAgICAgICAgICAgICAgIGlmICgtbm90ICRib2R5KSB7 IFNlbmQtRXJyb3IgJFJlc3BvbnNlICdBbmZyYWdlIHp1IGdyb3NzJyA0MTM7IGNvbnRpbnVlIH0N CiAgICAgICAgICAgICAgICAkdXBkYXRlID0gJGJvZHkgfCBDb252ZXJ0RnJvbS1Kc29uDQogICAg ICAgICAgICAgICAgIyBBdWRpdC1QaGFzZSBBLjMgKDIwMjYtMDUtMjEpOiBQcml2aWxlZ2llbi1T Y2h1dHouIFJlaW5lDQogICAgICAgICAgICAgICAgIyBGYWNoYXVmc2ljaHQtQWRtaW5zIChzZWhl bi5hZG1pbmlzdHJhdGlvbj10cnVlLCBhYmVyIGtlaW4gU1UpDQogICAgICAgICAgICAgICAgIyBk dWVyZmVuIFN0YW1tZGF0ZW4gZWRpdGllcmVuLCBhYmVyIEtFSU5FIFNpY2h0YmFya2VpdHMtDQog ICAgICAgICAgICAgICAgIyBPdmVycmlkZXMgKGBzZWhlbmApIG9kZXIgZWRpdGllci1SZWNodGUg KGBlZGl0UmVjaHRlYCkgc2V0emVuDQogICAgICAgICAgICAgICAgIyDigJQgc29uc3Qga29lbm50 ZW4gc2llIHNpY2ggTG9nYnVjaC0vU3RhdGlzdGlrLVNpY2h0IHNlbGJzdA0KICAgICAgICAgICAg ICAgICMgZnJlaXNjaGFsdGVuLiBQZXIgRGV2VG9vbHMtbWFuaXB1bGllcnRlcyBQYXlsb2FkIGFi ZmFuZ2VuLg0KICAgICAgICAgICAgICAgIGlmICgtbm90IChUZXN0LUlzdFN1cGVyVXNlcikpIHsN CiAgICAgICAgICAgICAgICAgICAgaWYgKCR1cGRhdGUuUFNPYmplY3QuUHJvcGVydGllc1snc2Vo ZW4nXSkgICAgICB7ICR1cGRhdGUuUFNPYmplY3QuUHJvcGVydGllcy5SZW1vdmUoJ3NlaGVuJykg fQ0KICAgICAgICAgICAgICAgICAgICBpZiAoJHVwZGF0ZS5QU09iamVjdC5Qcm9wZXJ0aWVzWydl ZGl0UmVjaHRlJ10pIHsgJHVwZGF0ZS5QU09iamVjdC5Qcm9wZXJ0aWVzLlJlbW92ZSgnZWRpdFJl Y2h0ZScpIH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgJHB1dFJlcyA9ICRu dWxsDQogICAgICAgICAgICAgICAgdHJ5IHsNCiAgICAgICAgICAgICAgICAkcHV0UmVzID0gSW52 b2tlLVdpdGhGaWxlTG9jayAncGxhbnVuZy5qc29uJyB7DQogICAgICAgICAgICAgICAgJHBsYW51 bmcgPSBSZWFkLUpzb25PYmplY3QgJ3BsYW51bmcuanNvbicNCiAgICAgICAgICAgICAgICAkZ2Vm dW5kZW4gICA9ICRmYWxzZQ0KICAgICAgICAgICAgICAgICRhbHRlV2VydGUgID0gQHt9DQogICAg ICAgICAgICAgICAgJHBlcnNvbk5hbWUgPSAnJw0KICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRw IGluICRwbGFudW5nLnBlcnNvbmVuKSB7DQogICAgICAgICAgICAgICAgICAgIGlmICgkcC5pZCAt ZXEgJHBlcnNvbklkKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAkcGVyc29uTmFtZSA9ICgo IiQoJHAudm9ybmFtZSkgJCgkcC5uYW1lKSIpLlRyaW0oKSkNCiAgICAgICAgICAgICAgICAgICAg ICAgIGZvcmVhY2ggKCRwcm9wIGluICR1cGRhdGUuUFNPYmplY3QuUHJvcGVydGllcykgew0KICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkcHJvcC5OYW1lIC1uZSAnaWQnKSB7DQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICRhbHRlV2VydGVbJHByb3AuTmFtZV0gPSBpZiAo JHAuUFNPYmplY3QuUHJvcGVydGllc1skcHJvcC5OYW1lXSkgeyAkcC4oJHByb3AuTmFtZSkgfSBl bHNlIHsgJG51bGwgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHAuUFNP YmplY3QuUHJvcGVydGllc1skcHJvcC5OYW1lXSkgeyAkcC4oJHByb3AuTmFtZSkgPSAkcHJvcC5W YWx1ZSB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgeyAkcCB8IEFkZC1N ZW1iZXIgLU5vdGVQcm9wZXJ0eU5hbWUgJHByb3AuTmFtZSAtTm90ZVByb3BlcnR5VmFsdWUgJHBy b3AuVmFsdWUgLUZvcmNlIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAg ICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAkZ2VmdW5kZW4gPSAk dHJ1ZQ0KICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsNCiAgICAgICAgICAgICAgICAgICAg fQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBpZiAoLW5vdCAkZ2VmdW5kZW4p IHsgcmV0dXJuIEB7IGdlZnVuZGVuID0gJGZhbHNlIH0gfQ0KICAgICAgICAgICAgICAgIFdyaXRl LUpzb25PYmplY3QgJ3BsYW51bmcuanNvbicgJHBsYW51bmcgfCBPdXQtTnVsbA0KICAgICAgICAg ICAgICAgIHJldHVybiBAeyBnZWZ1bmRlbiA9ICR0cnVlOyBhbHRlV2VydGUgPSAkYWx0ZVdlcnRl OyBwZXJzb25OYW1lID0gJHBlcnNvbk5hbWUgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAg ICAgICAgICB9IGNhdGNoIHsNCiAgICAgICAgICAgICAgICAgICAgU2VuZC1FcnJvciAkUmVzcG9u c2UgKCJMb2NrLUZlaGxlcjogJF8iKSA1MDM7IGNvbnRpbnVlDQogICAgICAgICAgICAgICAgfQ0K ICAgICAgICAgICAgICAgIGlmICgtbm90ICRwdXRSZXMuZ2VmdW5kZW4pIHsgU2VuZC1FcnJvciAk UmVzcG9uc2UgIlBlcnNvbiAkcGVyc29uSWQgbmljaHQgZ2VmdW5kZW4iIDQwNDsgY29udGludWUg fQ0KICAgICAgICAgICAgICAgICRhbHRlV2VydGUgID0gJHB1dFJlcy5hbHRlV2VydGUNCiAgICAg ICAgICAgICAgICAkcGVyc29uTmFtZSA9ICRwdXRSZXMucGVyc29uTmFtZQ0KDQogICAgICAgICAg ICAgICAgIyBEaWZmLURpY3Qg4oCUIG51ciBGZWxkZXIsIGluIGRlbmVuIHNpY2ggZGVyIFdlcnQg dGF0c2FlY2hsaWNoDQogICAgICAgICAgICAgICAgIyBnZWFlbmRlcnQgaGF0LiBKU09OLXN0YWJp bGUgVmVyZ2xlaWNoc2Jhc2lzLg0KICAgICAgICAgICAgICAgICRnZWFlbmRlcnQgPSBbb3JkZXJl ZF1Ae30NCiAgICAgICAgICAgICAgICBmb3JlYWNoICgkcHJvcCBpbiAkdXBkYXRlLlBTT2JqZWN0 LlByb3BlcnRpZXMpIHsNCiAgICAgICAgICAgICAgICAgICAgaWYgKCRwcm9wLk5hbWUgLWVxICdp ZCcpIHsgY29udGludWUgfQ0KICAgICAgICAgICAgICAgICAgICAkYWx0VmFsICA9ICRhbHRlV2Vy dGVbJHByb3AuTmFtZV0NCiAgICAgICAgICAgICAgICAgICAgJG5ldVZhbCAgPSAkcHJvcC5WYWx1 ZQ0KICAgICAgICAgICAgICAgICAgICAkYWx0SnNvbiA9ICgkYWx0VmFsIHwgQ29udmVydFRvLUpz b24gLUNvbXByZXNzIC1EZXB0aCA4KQ0KICAgICAgICAgICAgICAgICAgICAkbmV1SnNvbiA9ICgk bmV1VmFsIHwgQ29udmVydFRvLUpzb24gLUNvbXByZXNzIC1EZXB0aCA4KQ0KICAgICAgICAgICAg ICAgICAgICBpZiAoJGFsdEpzb24gLW5lICRuZXVKc29uKSB7DQogICAgICAgICAgICAgICAgICAg ICAgICAkZ2VhZW5kZXJ0WyRwcm9wLk5hbWVdID0gW29yZGVyZWRdQHsgYWx0ID0gJGFsdFZhbDsg bmV1ID0gJG5ldVZhbCB9DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9 DQoNCiAgICAgICAgICAgICAgICBXcml0ZS1Mb2dFaW50cmFnICdwZXJzb24uZ2VhZW5kZXJ0JyAo W29yZGVyZWRdQHsNCiAgICAgICAgICAgICAgICAgICAgcGVyc29uSWQgID0gJHBlcnNvbklkDQog ICAgICAgICAgICAgICAgICAgIG5hbWUgICAgICA9ICRwZXJzb25OYW1lDQogICAgICAgICAgICAg ICAgICAgIGdlYWVuZGVydCA9ICRnZWFlbmRlcnQNCiAgICAgICAgICAgICAgICB9KQ0KICAgICAg ICAgICAgICAgICMgSGlud2Vpcy1UcmlnZ2VyOiBJZGVudGl0YWV0cy1BZW5kZXJ1bmcgKG53S2Vu bnVuZyAvIGVtYWlsKSBiZWtvbW10DQogICAgICAgICAgICAgICAgIyBlaW5lbiBJbi1BcHAtSGlu d2VpcyBmdWVyIFNVICsgR2VzYW10dmVyYW50d29ydGxpY2hlLiBQcm8gRmVsZCBlaW4NCiAgICAg ICAgICAgICAgICAjIGVpZ2VuZXIgRWludHJhZywgZGFtaXQgZGFzIE1vZGFsIGxlc2JhciBibGVp YnQuDQogICAgICAgICAgICAgICAgZm9yZWFjaCAoJGZlbGQgaW4gQCgnbndLZW5udW5nJywgJ2Vt YWlsJykpIHsNCiAgICAgICAgICAgICAgICAgICAgaWYgKCRnZWFlbmRlcnQuQ29udGFpbnMoJGZl bGQpKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAkZGlmZiA9ICRnZWFlbmRlcnRbJGZlbGRd DQogICAgICAgICAgICAgICAgICAgICAgICBOZXctSGlud2VpcyAnaWRlbnRpdGFldF9nZWFlbmRl cnQnIChbb3JkZXJlZF1Aew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlcnNvbl9pZCAg ID0gJHBlcnNvbklkDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVyc29uX25hbWUgPSAk cGVyc29uTmFtZQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZlbGQgICAgICAgID0gJGZl bGQNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHRlcl93ZXJ0ICA9ICIkKCRkaWZmLmFs dCkiDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV1ZXJfd2VydCAgPSAiJCgkZGlmZi5u ZXUpIg0KICAgICAgICAgICAgICAgICAgICAgICAgfSkgKEdldC1Ba3R1ZWxsZXJCZW51dHplcikg fCBPdXQtTnVsbA0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KICAg ICAgICAgICAgICAgIFNlbmQtSnNvbk9iamVjdCAkUmVzcG9uc2UgQHsgc3RhdHVzID0gJ2FrdHVh bGlzaWVydCcgfQ0KICAgICAgICAgICAgICAgIGNvbnRpbnVlDQogICAgICAgICAgICB9DQogICAg ICAgICAgICAjIERFTEVURSAvYXBpL3BlcnNvbmVuL3tpZH0gICAgICAgICAgICAtPiBTb2Z0LURl bGV0ZSAoZ2Vsb2VzY2h0QW0gZ2VzZXR6dCwgUGVyc29uIGJsZWlidCBpbSBEYXRlbnNhdHogZnVl ciBQYXBpZXJrb3JiLVJ1ZWNraG9sdW5nKQ0KICAgICAgICAgICAgIyBERUxFVEUgL2FwaS9wZXJz b25lbi97aWR9P2VuZGd1ZWx0aWc9MSAtPiBIYXJkLURlbGV0ZSAoUGVyc29uIGtvbXBsZXR0IGVu dGZlcm5lbiwgRWludHJhZWdlL0tvbW1lbnRhcmUgdmVyd2Fpc2VuKQ0KICAgICAgICAgICAgIyBW b3IgZGVtIFNvZnQtRGVsZXRlIHdlcmRlbiBpbSBzZWxiZW4gWnVnIGJlcmVpdHMgUGFwaWVya29y Yi1FaW50cmFlZ2UgYXVmZ2VyYWV1bXQsIGRpZSBhZWx0ZXIgYWxzDQogICAgICAgICAgICAjIGFk bWluLnBhcGllcmtvcmJUYWdlQXVmYmV3YWhydW5nIChEZWZhdWx0IDMwIFRhZ2UpIHNpbmQuIFNv IGJsZWlidCBkZXIgRGF0ZW5zYXR6IHNjaGxhbmssIG9obmUNCiAgICAgICAgICAgICMgZWluZW4g c2VwYXJhdGVuIENyb24tSm9iIHp1IGJyYXVjaGVuLg0KICAgICAgICAgICAgaWYgKCRQYXRoIC1t YXRjaCAnXi9hcGkvcGVyc29uZW4vKFxkKykkJyAtYW5kICRNZXRob2QgLWVxICdERUxFVEUnKSB7 DQogICAgICAgICAgICAgICAgaWYgKC1ub3QgKFRlc3QtSXN0QWRtaW4pKSB7IFNlbmQtRXJyb3Ig JFJlc3BvbnNlICdLZWluZSBBZG1pbi1SZWNodGUnIDQwMzsgY29udGludWUgfQ0KICAgICAgICAg ICAgICAgICRwZXJzb25JZCA9IFtpbnRdJE1hdGNoZXNbMV0NCiAgICAgICAgICAgICAgICAkZW5k Z3VlbHRpZyA9ICRmYWxzZQ0KICAgICAgICAgICAgICAgIGlmICgkUmVxdWVzdC5VcmwuUXVlcnkp IHsNCiAgICAgICAgICAgICAgICAgICAgJHEgPSBbU3lzdGVtLldlYi5IdHRwVXRpbGl0eV06OlBh cnNlUXVlcnlTdHJpbmcoJFJlcXVlc3QuVXJsLlF1ZXJ5KQ0KICAgICAgICAgICAgICAgICAgICAk ZW5kZ3VlbHRpZyA9IChbc3RyaW5nXSRxWydlbmRndWVsdGlnJ10pIC1lcSAnMScNCiAgICAgICAg ICAgICAgICB9DQogICAgICAgICAgICAgICAgJGRlbFJlcyA9ICRudWxsDQogICAgICAgICAgICAg ICAgdHJ5IHsNCiAgICAgICAgICAgICAgICAkZGVsUmVzID0gSW52b2tlLVdpdGhGaWxlTG9jayAn cGxhbnVuZy5qc29uJyB7DQogICAgICAgICAgICAgICAgJHBsYW51bmcgPSBSZWFkLUpzb25PYmpl Y3QgJ3BsYW51bmcuanNvbicNCiAgICAgICAgICAgICAgICAkYWRtaW4gICA9IFJlYWQtSnNvbk9i amVjdCAnYWRtaW4uanNvbicNCiAgICAgICAgICAgICAgICAkYXVmYmV3YWhydW5nID0gMzANCiAg ICAgICAgICAgICAgICBpZiAoJGFkbWluIC1hbmQgJGFkbWluLlBTT2JqZWN0LlByb3BlcnRpZXNb J3BhcGllcmtvcmJUYWdlQXVmYmV3YWhydW5nJ10pIHsNCiAgICAgICAgICAgICAgICAgICAgdHJ5 IHsgJGF1ZmJld2FocnVuZyA9IFtpbnRdJGFkbWluLnBhcGllcmtvcmJUYWdlQXVmYmV3YWhydW5n IH0gY2F0Y2gge30NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgJGpldHp0ID0g KEdldC1EYXRlKS5Ub1N0cmluZygnbycpDQogICAgICAgICAgICAgICAgJHBlcnNvbk5hbWUgPSAn Jw0KICAgICAgICAgICAgICAgICRnZWZ1bmRlbiA9ICRmYWxzZQ0KICAgICAgICAgICAgICAgICRu ZXVlUGVyc29uZW4gPSBAKCkNCiAgICAgICAgICAgICAgICBmb3JlYWNoICgkcCBpbiAkcGxhbnVu Zy5wZXJzb25lbikgew0KICAgICAgICAgICAgICAgICAgICBpZiAoJHAuaWQgLWVxICRwZXJzb25J ZCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgJGdlZnVuZGVuID0gJHRydWUNCiAgICAgICAg ICAgICAgICAgICAgICAgICRwZXJzb25OYW1lID0gKCgiJCgkcC52b3JuYW1lKSAkKCRwLm5hbWUp IikuVHJpbSgpKQ0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRlbmRndWVsdGlnKSB7DQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBIYXJkLURlbGV0ZTogdWViZXJzcHJpbmdlbiwg UGVyc29uIGZsaWVndCByYXVzDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUN CiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgaWYgKCRwLlBTT2JqZWN0LlByb3BlcnRpZXNbJ2dlbG9lc2NodEFtJ10pIHsgJHAuZ2Vs b2VzY2h0QW0gPSAkamV0enQgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgeyAk cCB8IEFkZC1NZW1iZXIgLU5vdGVQcm9wZXJ0eU5hbWUgJ2dlbG9lc2NodEFtJyAtTm90ZVByb3Bl cnR5VmFsdWUgJGpldHp0IC1Gb3JjZSB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJG5l dWVQZXJzb25lbiArPSAkcA0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAg ICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICAgICAgIyBBdXRvLVB1cmdlOiBT b2Z0LURlbGV0ZWQtUGVyc29uZW4sIGRlcmVuIGdlbG9lc2NodEFtIGFlbHRlcg0KICAgICAgICAg ICAgICAgICAgICAgICAgIyBhbHMgJGF1ZmJld2FocnVuZyBUYWdlIGlzdCwgd2VyZGVuIGhpZXIg ZW5kZ3VlbHRpZyBlbnRmZXJudC4NCiAgICAgICAgICAgICAgICAgICAgICAgICRwdXJnZSA9ICRm YWxzZQ0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRwLlBTT2JqZWN0LlByb3BlcnRpZXNb J2dlbG9lc2NodEFtJ10gLWFuZCAkcC5nZWxvZXNjaHRBbSkgew0KICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHRyeSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRhbHRlciA9 IFtkYXRldGltZV0kcC5nZWxvZXNjaHRBbQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBpZiAoKE5ldy1UaW1lU3BhbiAtU3RhcnQgJGFsdGVyIC1FbmQgKEdldC1EYXRlKSkuVG90YWxE YXlzIC1ndCAkYXVmYmV3YWhydW5nKSB7ICRwdXJnZSA9ICR0cnVlIH0NCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICB9IGNhdGNoIHt9DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAg ICAgICAgICAgICAgICAgICAgICBpZiAoLW5vdCAkcHVyZ2UpIHsgJG5ldWVQZXJzb25lbiArPSAk cCB9DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAg ICAgICAgaWYgKC1ub3QgJGdlZnVuZGVuKSB7IHJldHVybiBAeyBnZWZ1bmRlbiA9ICRmYWxzZSB9 IH0NCiAgICAgICAgICAgICAgICAkcGxhbnVuZy5wZXJzb25lbiA9IFtvYmplY3RbXV1AKCRuZXVl UGVyc29uZW4pDQogICAgICAgICAgICAgICAgV3JpdGUtSnNvbk9iamVjdCAncGxhbnVuZy5qc29u JyAkcGxhbnVuZyB8IE91dC1OdWxsDQogICAgICAgICAgICAgICAgcmV0dXJuIEB7IGdlZnVuZGVu ID0gJHRydWU7IHBlcnNvbk5hbWUgPSAkcGVyc29uTmFtZTsgamV0enQgPSAkamV0enQgfQ0KICAg ICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9IGNhdGNoIHsNCiAgICAgICAgICAgICAg ICAgICAgU2VuZC1FcnJvciAkUmVzcG9uc2UgKCJMb2NrLUZlaGxlcjogJF8iKSA1MDM7IGNvbnRp bnVlDQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGlmICgtbm90ICRkZWxSZXMu Z2VmdW5kZW4pIHsgU2VuZC1FcnJvciAkUmVzcG9uc2UgIlBlcnNvbiAkcGVyc29uSWQgbmljaHQg Z2VmdW5kZW4iIDQwNDsgY29udGludWUgfQ0KICAgICAgICAgICAgICAgICRwZXJzb25OYW1lID0g JGRlbFJlcy5wZXJzb25OYW1lDQogICAgICAgICAgICAgICAgJGpldHp0ID0gJGRlbFJlcy5qZXR6 dA0KICAgICAgICAgICAgICAgIGlmICgkZW5kZ3VlbHRpZykgew0KICAgICAgICAgICAgICAgICAg ICBXcml0ZS1Mb2dFaW50cmFnICdwZXJzb24uZW5kZ3VlbHRpZy5nZWxvZXNjaHQnIEB7IHBlcnNv bklkID0gJHBlcnNvbklkOyBuYW1lID0gJHBlcnNvbk5hbWUgfQ0KICAgICAgICAgICAgICAgIH0g ZWxzZSB7DQogICAgICAgICAgICAgICAgICAgIFdyaXRlLUxvZ0VpbnRyYWcgJ3BlcnNvbi5pbi5w YXBpZXJrb3JiJyBAeyBwZXJzb25JZCA9ICRwZXJzb25JZDsgbmFtZSA9ICRwZXJzb25OYW1lOyBn ZWxvZXNjaHRBbSA9ICRqZXR6dCB9DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAg IFNlbmQtSnNvbk9iamVjdCAkUmVzcG9uc2UgQHsgc3RhdHVzID0gJ2dlbG9lc2NodCc7IG1vZHVz ID0gaWYgKCRlbmRndWVsdGlnKSB7ICdlbmRndWVsdGlnJyB9IGVsc2UgeyAncGFwaWVya29yYicg fSB9DQogICAgICAgICAgICAgICAgY29udGludWUNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAg IGlmICgkUGF0aCAtZXEgJy9hcGkvcGVyc29uZW4vcmVpaGVuZm9sZ2UnIC1hbmQgJE1ldGhvZCAt ZXEgJ1BVVCcpIHsNCiAgICAgICAgICAgICAgICBpZiAoLW5vdCAoVGVzdC1Jc3RBZG1pbikpIHsg U2VuZC1FcnJvciAkUmVzcG9uc2UgJ0tlaW5lIEFkbWluLVJlY2h0ZScgNDAzOyBjb250aW51ZSB9 DQogICAgICAgICAgICAgICAgJGJvZHkgPSBSZWFkLUJvZHkgJFJlcXVlc3QNCiAgICAgICAgICAg ICAgICBpZiAoLW5vdCAkYm9keSkgeyBTZW5kLUVycm9yICRSZXNwb25zZSAnQW5mcmFnZSB6dSBn cm9zcycgNDEzOyBjb250aW51ZSB9DQogICAgICAgICAgICAgICAgJHJlaWhlbmZvbGdlID0gJGJv ZHkgfCBDb252ZXJ0RnJvbS1Kc29uDQogICAgICAgICAgICAgICAgdHJ5IHsNCiAgICAgICAgICAg ICAgICAgICAgSW52b2tlLVdpdGhGaWxlTG9jayAncGxhbnVuZy5qc29uJyB7DQogICAgICAgICAg ICAgICAgICAgICAgICAkcGxhbnVuZyA9IFJlYWQtSnNvbk9iamVjdCAncGxhbnVuZy5qc29uJw0K ICAgICAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCAoJHIgaW4gJHJlaWhlbmZvbGdlKSB7DQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCAoJHAgaW4gJHBsYW51bmcucGVyc29u ZW4pIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRwLmlkIC1lcSAkci5p ZCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRwLlBTT2JqZWN0 LlByb3BlcnRpZXNbJ3Bvc2l0aW9uJ10pIHsgJHAucG9zaXRpb24gPSAkci5wb3NpdGlvbiB9DQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsgJHAgfCBBZGQtTWVtYmVy IC1Ob3RlUHJvcGVydHlOYW1lICdwb3NpdGlvbicgLU5vdGVQcm9wZXJ0eVZhbHVlICRyLnBvc2l0 aW9uIC1Gb3JjZSB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaw0K ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAg ICAgV3JpdGUtSnNvbk9iamVjdCAncGxhbnVuZy5qc29uJyAkcGxhbnVuZyB8IE91dC1OdWxsDQog ICAgICAgICAgICAgICAgICAgIH0gfCBPdXQtTnVsbA0KICAgICAgICAgICAgICAgIH0gY2F0Y2gg ew0KICAgICAgICAgICAgICAgICAgICBTZW5kLUVycm9yICRSZXNwb25zZSAoIkxvY2stRmVobGVy OiAkXyIpIDUwMzsgY29udGludWUNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAg V3JpdGUtTG9nRWludHJhZyAncGVyc29uZW4ucmVpaGVuZm9sZ2UuZ2VhZW5kZXJ0JyBAe30NCiAg ICAgICAgICAgICAgICBTZW5kLUpzb25PYmplY3QgJFJlc3BvbnNlIEB7IHN0YXR1cyA9ICdha3R1 YWxpc2llcnQnIH0NCiAgICAgICAgICAgICAgICBjb250aW51ZQ0KICAgICAgICAgICAgfQ0KDQog ICAgICAgICAgICAjID09PT09IEhJTldFSVNFIChJbi1BcHAtQmFubmVyL01vZGFsLVN5c3RlbSkg PT09PT0NCiAgICAgICAgICAgICMgR0VUICAvYXBpL2hpbndlaXNlICAgICAgICAgICAgLT4gb2Zm ZW5lIEhpbndlaXNlIGZ1ZXIgZGVuIGVpbmdlbG9nZ3RlbiBVc2VyDQogICAgICAgICAgICAjIFBP U1QgL2FwaS9oaW53ZWlzZS97aWR9L2tlbm50bmlzIC0+IEtlbm50bmlzbmFobWUgc2V0emVuDQog ICAgICAgICAgICAjIEdFVCAgL2FwaS9oaW53ZWlzZS91ZWJlcnNpY2h0IC0+IFNVLW9ubHksIHZv bGxzdGFlbmRpZ2UgU2ljaHQgaW5rbC4gTGVzZS1TdGF0dXMNCiAgICAgICAgICAgIGlmICgkUGF0 aCAtZXEgJy9hcGkvaGlud2Vpc2UnIC1hbmQgJE1ldGhvZCAtZXEgJ0dFVCcpIHsNCiAgICAgICAg ICAgICAgICAjIEdhdGVkOiBudXIgRW1wZmFlbmdlciAoU1Ugb2RlciBHZXNhbXR2ZXJhbnR3b3J0 bGljaCkgZHVlcmZlbiB1ZWJlcmhhdXB0IGZyYWdlbg0KICAgICAgICAgICAgICAgICRyID0gR2V0 LVJlY2h0ZQ0KICAgICAgICAgICAgICAgIGlmICgtbm90ICgkci5pc3RTdXBlclVzZXIgLW9yICRy LmlzdEdlc2FtdHZlcmFudHdvcnRsaWNoKSkgew0KICAgICAgICAgICAgICAgICAgICBTZW5kLUpz b25PYmplY3QgJFJlc3BvbnNlIEB7IGhpbndlaXNlID0gQCgpIH0NCiAgICAgICAgICAgICAgICAg ICAgY29udGludWUNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgSW52b2tlLUhp bndlaXNQcnVuaW5nDQogICAgICAgICAgICAgICAgJGggPSBSZWFkLUpzb25PYmplY3QgJ2hpbndl aXNlLmpzb24nDQogICAgICAgICAgICAgICAgaWYgKCRudWxsIC1lcSAkaCAtb3IgLW5vdCAkaC5Q U09iamVjdC5Qcm9wZXJ0aWVzWydoaW53ZWlzZSddKSB7DQogICAgICAgICAgICAgICAgICAgIFNl bmQtSnNvbk9iamVjdCAkUmVzcG9uc2UgQHsgaGlud2Vpc2UgPSBAKCkgfQ0KICAgICAgICAgICAg ICAgICAgICBjb250aW51ZQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAkb2Zm ZW4gPSBAKCkNCiAgICAgICAgICAgICAgICBmb3JlYWNoICgkZWludHJhZyBpbiBAKCRoLmhpbndl aXNlKSkgew0KICAgICAgICAgICAgICAgICAgICAkaXN0RW1wZmFlbmdlciA9ICRmYWxzZQ0KICAg ICAgICAgICAgICAgICAgICAkaXN0R2VsZXNlbiAgICA9ICRmYWxzZQ0KICAgICAgICAgICAgICAg ICAgICBmb3JlYWNoICgkcCBpbiAkZWludHJhZy5rZW5udG5pc25haG1lbi5QU09iamVjdC5Qcm9w ZXJ0aWVzKSB7DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoVGVzdC1NYXRjaEtlbm51bmcg KFtzdHJpbmddJHAuTmFtZSkpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaXN0RW1w ZmFlbmdlciA9ICR0cnVlDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRudWxsIC1u ZSAkcC5WYWx1ZSkgeyAkaXN0R2VsZXNlbiA9ICR0cnVlIH0NCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICBicmVhaw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAg ICAgICB9DQogICAgICAgICAgICAgICAgICAgIGlmICgkaXN0RW1wZmFlbmdlciAtYW5kIC1ub3Qg JGlzdEdlbGVzZW4pIHsgJG9mZmVuICs9ICRlaW50cmFnIH0NCiAgICAgICAgICAgICAgICB9DQog ICAgICAgICAgICAgICAgU2VuZC1Kc29uT2JqZWN0ICRSZXNwb25zZSBAeyBoaW53ZWlzZSA9IFtv YmplY3RbXV0kb2ZmZW4gfQ0KICAgICAgICAgICAgICAgIGNvbnRpbnVlDQogICAgICAgICAgICB9 DQogICAgICAgICAgICBpZiAoJFBhdGggLW1hdGNoICdeL2FwaS9oaW53ZWlzZS8oXGQrKS9rZW5u dG5pcyQnIC1hbmQgJE1ldGhvZCAtZXEgJ1BPU1QnKSB7DQogICAgICAgICAgICAgICAgJGhpbndl aXNJZCA9IFtpbnRdJE1hdGNoZXNbMV0NCiAgICAgICAgICAgICAgICAkciA9IEdldC1SZWNodGUN CiAgICAgICAgICAgICAgICBpZiAoLW5vdCAoJHIuaXN0U3VwZXJVc2VyIC1vciAkci5pc3RHZXNh bXR2ZXJhbnR3b3J0bGljaCkpIHsNCiAgICAgICAgICAgICAgICAgICAgU2VuZC1FcnJvciAkUmVz cG9uc2UgJ0tlaW5lIEJlcmVjaHRpZ3VuZycgNDAzOyBjb250aW51ZQ0KICAgICAgICAgICAgICAg IH0NCiAgICAgICAgICAgICAgICAkc2NyaXB0OmhpbndlaXNLZW5udG5pc0dlc2V0enQgPSAkZmFs c2UNCiAgICAgICAgICAgICAgICAkc2NyaXB0OmhpbndlaXNLZW5udG5pc1R5cCA9ICRudWxsDQog ICAgICAgICAgICAgICAgSW52b2tlLVdpdGhGaWxlTG9jayAnaGlud2Vpc2UuanNvbicgew0KICAg ICAgICAgICAgICAgICAgICAkaCA9IFJlYWQtSnNvbk9iamVjdCAnaGlud2Vpc2UuanNvbicNCiAg ICAgICAgICAgICAgICAgICAgaWYgKCRudWxsIC1lcSAkaCAtb3IgLW5vdCAkaC5QU09iamVjdC5Q cm9wZXJ0aWVzWydoaW53ZWlzZSddKSB7IHJldHVybiB9DQogICAgICAgICAgICAgICAgICAgIGZv cmVhY2ggKCRlaW50cmFnIGluIEAoJGguaGlud2Vpc2UpKSB7DQogICAgICAgICAgICAgICAgICAg ICAgICBpZiAoW2ludF0kZWludHJhZy5pZCAtbmUgJGhpbndlaXNJZCkgeyBjb250aW51ZSB9DQog ICAgICAgICAgICAgICAgICAgICAgICAjIEVyc3QgZGVuIE1hdGNoLVNsb3QgZXJtaXR0ZWxuLCBk YW5uIGF1c3NlcmhhbGIgZGVyDQogICAgICAgICAgICAgICAgICAgICAgICAjIFByb3BlcnR5LUVu dW1lcmF0aW9uIGluLXBsYWNlIHNldHplbiAoUFMgNS4xIG1hZyBkYXMNCiAgICAgICAgICAgICAg ICAgICAgICAgICMgTW9kaWZpemllcmVuIHdhZWhyZW5kIGZvcmVhY2ggbmljaHQgaW1tZXIpLg0K ICAgICAgICAgICAgICAgICAgICAgICAgJG1hdGNoTmFtZSA9ICRudWxsDQogICAgICAgICAgICAg ICAgICAgICAgICBmb3JlYWNoICgkcCBpbiAkZWludHJhZy5rZW5udG5pc25haG1lbi5QU09iamVj dC5Qcm9wZXJ0aWVzKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFRlc3QtTWF0 Y2hLZW5udW5nIChbc3RyaW5nXSRwLk5hbWUpKSB7ICRtYXRjaE5hbWUgPSAkcC5OYW1lOyBicmVh ayB9DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICBp ZiAoJG1hdGNoTmFtZSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0cyA9IChHZXQt RGF0ZSkuVG9Vbml2ZXJzYWxUaW1lKCkuVG9TdHJpbmcoJ3l5eXktTU0tZGRUSEg6bW06c3NaJykN CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZWludHJhZy5rZW5udG5pc25haG1lbiB8IEFk ZC1NZW1iZXIgLU5vdGVQcm9wZXJ0eU5hbWUgJG1hdGNoTmFtZSAtTm90ZVByb3BlcnR5VmFsdWUg JHRzIC1Gb3JjZQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY3JpcHQ6aGlud2Vpc0tl bm50bmlzR2VzZXR6dCA9ICR0cnVlDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRl aW50cmFnLlBTT2JqZWN0LlByb3BlcnRpZXNbJ3R5cCddKSB7ICRzY3JpcHQ6aGlud2Vpc0tlbm50 bmlzVHlwID0gW3N0cmluZ10kZWludHJhZy50eXAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAg fQ0KICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsNCiAgICAgICAgICAgICAgICAgICAgfQ0K ICAgICAgICAgICAgICAgICAgICBpZiAoJHNjcmlwdDpoaW53ZWlzS2VubnRuaXNHZXNldHp0KSB7 DQogICAgICAgICAgICAgICAgICAgICAgICBXcml0ZS1Kc29uT2JqZWN0ICdoaW53ZWlzZS5qc29u JyAkaCB8IE91dC1OdWxsDQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9 IHwgT3V0LU51bGwNCiAgICAgICAgICAgICAgICAkZ2VzZXR6dCA9IFtib29sXSRzY3JpcHQ6aGlu d2Vpc0tlbm50bmlzR2VzZXR6dA0KICAgICAgICAgICAgICAgICRrZW5udG5pc1R5cCA9ICRzY3Jp cHQ6aGlud2Vpc0tlbm50bmlzVHlwDQogICAgICAgICAgICAgICAgJHNjcmlwdDpoaW53ZWlzS2Vu bnRuaXNHZXNldHp0ID0gJGZhbHNlDQogICAgICAgICAgICAgICAgJHNjcmlwdDpoaW53ZWlzS2Vu bnRuaXNUeXAgPSAkbnVsbA0KICAgICAgICAgICAgICAgIGlmICgtbm90ICRnZXNldHp0KSB7DQog ICAgICAgICAgICAgICAgICAgIFNlbmQtRXJyb3IgJFJlc3BvbnNlICJIaW53ZWlzICRoaW53ZWlz SWQgbmljaHQgZ2VmdW5kZW4gb2RlciBuaWNodCBmdWVyIFNpZSBiZXN0aW1tdCIgNDA0OyBjb250 aW51ZQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAkbG9nRmVsZGVyID0gQHsg aGlud2Vpc0lkID0gJGhpbndlaXNJZCB9DQogICAgICAgICAgICAgICAgaWYgKCRrZW5udG5pc1R5 cCkgeyAkbG9nRmVsZGVyWyd0eXAnXSA9ICRrZW5udG5pc1R5cCB9DQogICAgICAgICAgICAgICAg V3JpdGUtTG9nRWludHJhZyAnaGlud2Vpcy5rZW5udG5pcycgJGxvZ0ZlbGRlcg0KICAgICAgICAg ICAgICAgIFNlbmQtSnNvbk9iamVjdCAkUmVzcG9uc2UgQHsgc3RhdHVzID0gJ2tlbm50bmlzX2dl c2V0enQnIH0NCiAgICAgICAgICAgICAgICBjb250aW51ZQ0KICAgICAgICAgICAgfQ0KICAgICAg ICAgICAgaWYgKCRQYXRoIC1lcSAnL2FwaS9oaW53ZWlzZS91ZWJlcnNpY2h0JyAtYW5kICRNZXRo b2QgLWVxICdHRVQnKSB7DQogICAgICAgICAgICAgICAgaWYgKC1ub3QgKFRlc3QtSXN0U3VwZXJV c2VyKSkgeyBTZW5kLUVycm9yICRSZXNwb25zZSAnTnVyIFN1cGVyVXNlcicgNDAzOyBjb250aW51 ZSB9DQogICAgICAgICAgICAgICAgSW52b2tlLUhpbndlaXNQcnVuaW5nDQogICAgICAgICAgICAg ICAgJGggPSBSZWFkLUpzb25PYmplY3QgJ2hpbndlaXNlLmpzb24nDQogICAgICAgICAgICAgICAg aWYgKCRudWxsIC1lcSAkaCAtb3IgLW5vdCAkaC5QU09iamVjdC5Qcm9wZXJ0aWVzWydoaW53ZWlz ZSddKSB7DQogICAgICAgICAgICAgICAgICAgIFNlbmQtSnNvbk9iamVjdCAkUmVzcG9uc2UgQHsg aGlud2Vpc2UgPSBAKCkgfQ0KICAgICAgICAgICAgICAgICAgICBjb250aW51ZQ0KICAgICAgICAg ICAgICAgIH0NCiAgICAgICAgICAgICAgICBTZW5kLUpzb25PYmplY3QgJFJlc3BvbnNlIEB7IGhp bndlaXNlID0gW29iamVjdFtdXUAoJGguaGlud2Vpc2UpIH0NCiAgICAgICAgICAgICAgICBjb250 aW51ZQ0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAjID09PT09IE1JVFRFSUxVTkdFTiAo U3ByaW50IEQtM2IsIDIwMjYtMDUtMjkpID09PT09DQogICAgICAgICAgICAjIFZvbSBTVSBtYW51 ZWxsIGdlcGZsZWd0ZXMgSGlud2Vpcy1Nb2RhbC1TeXN0ZW0gKHNlcGFyYXQgdm9uDQogICAgICAg ICAgICAjIC9hcGkvaGlud2Vpc2UsIGRhcyBpc3QgbnVyIGZ1ZXIgU3lzdGVtLUVyZWlnbmlzc2Ug U1UvR1YpLg0KICAgICAgICAgICAgIyBTY2hlbWEgKyBGaWx0ZXJ1bmctTG9naWsgZ2VzcGllZ2Vs dCBhdXMgZGV2L3NlcnZlci5weToNCiAgICAgICAgICAgICMgICBfbWl0dGVpbHVuZ2VuX2Z1ZXJf YWt0dWVsbGVuX3VzZXIoKSBiencuIF9wZXJzb25fYXVzX3BpZCgpLg0KICAgICAgICAgICAgaWYg KCRQYXRoIC1lcSAnL2FwaS9taXR0ZWlsdW5nZW4nIC1hbmQgJE1ldGhvZCAtZXEgJ0dFVCcpIHsN CiAgICAgICAgICAgICAgICBTZW5kLUpzb25PYmplY3QgJFJlc3BvbnNlIEB7IG1pdHRlaWx1bmdl biA9IChHZXQtTWl0dGVpbHVuZ2VuRnVlckFrdHVlbGxlblVzZXIpIH0NCiAgICAgICAgICAgICAg ICBjb250aW51ZQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgaWYgKCRQYXRoIC1lcSAnL2Fw aS9taXR0ZWlsdW5nZW4vYWxsZScgLWFuZCAkTWV0aG9kIC1lcSAnR0VUJykgew0KICAgICAgICAg ICAgICAgIGlmICgtbm90IChUZXN0LUlzdFN1cGVyVXNlcikpIHsgU2VuZC1FcnJvciAkUmVzcG9u c2UgJ051ciBTdXBlclVzZXInIDQwMzsgY29udGludWUgfQ0KICAgICAgICAgICAgICAgICRtID0g UmVhZC1Kc29uT2JqZWN0ICdtaXR0ZWlsdW5nZW4uanNvbicNCiAgICAgICAgICAgICAgICAkbGlz dGUgPSBAKCkNCiAgICAgICAgICAgICAgICBpZiAoJG51bGwgLW5lICRtIC1hbmQgJG0uUFNPYmpl Y3QuUHJvcGVydGllc1snbWl0dGVpbHVuZ2VuJ10pIHsNCiAgICAgICAgICAgICAgICAgICAgJGxp c3RlID0gQCgkbS5taXR0ZWlsdW5nZW4pDQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAg ICAgIFNlbmQtSnNvbk9iamVjdCAkUmVzcG9uc2UgQHsgbWl0dGVpbHVuZ2VuID0gW29iamVjdFtd XSRsaXN0ZSB9DQogICAgICAgICAgICAgICAgY29udGludWUNCiAgICAgICAgICAgIH0NCiAgICAg ICAgICAgIGlmICgkUGF0aCAtZXEgJy9hcGkvbWl0dGVpbHVuZ2VuJyAtYW5kICRNZXRob2QgLWVx ICdQT1NUJykgew0KICAgICAgICAgICAgICAgIGlmICgtbm90IChUZXN0LUlzdFN1cGVyVXNlcikp IHsgU2VuZC1FcnJvciAkUmVzcG9uc2UgJ051ciBTdXBlclVzZXIgZHVlcmZlbiBNaXR0ZWlsdW5n ZW4gYW5sZWdlbicgNDAzOyBjb250aW51ZSB9DQogICAgICAgICAgICAgICAgJHJhdyA9IFJlYWQt Qm9keSAkUmVxdWVzdA0KICAgICAgICAgICAgICAgIGlmICgtbm90ICRyYXcpIHsgU2VuZC1FcnJv ciAkUmVzcG9uc2UgJ0JvZHkgZmVobHQnIDQwMDsgY29udGludWUgfQ0KICAgICAgICAgICAgICAg IHRyeSB7ICRib2R5ID0gJHJhdyB8IENvbnZlcnRGcm9tLUpzb24gfSBjYXRjaCB7IFNlbmQtRXJy b3IgJFJlc3BvbnNlICdVbmd1ZWx0aWdlcyBKU09OJyA0MDA7IGNvbnRpbnVlIH0NCiAgICAgICAg ICAgICAgICAjIFNlcnZlci1zZWl0aWdlIFNhbml0aXNpZXJ1bmcgKFN0b3JlZC1YU1MpOiB0aXRl bCArIHRleHQgd2VyZGVuDQogICAgICAgICAgICAgICAgIyBpbSBDbGllbnQgdmlhIGlubmVySFRN TCBnZXJlbmRlcnQuDQogICAgICAgICAgICAgICAgJHRpdGVsID0gQ29udmVydFRvLVNhZmVSaWNo SHRtbCAoKFtzdHJpbmddKCRib2R5LnRpdGVsKSkuVHJpbSgpKQ0KICAgICAgICAgICAgICAgICR0 ZXh0ICA9IENvbnZlcnRUby1TYWZlUmljaEh0bWwgKChbc3RyaW5nXSgkYm9keS50ZXh0KSkuVHJp bSgpKQ0KICAgICAgICAgICAgICAgIGlmICgtbm90ICR0aXRlbCkgeyBTZW5kLUVycm9yICRSZXNw b25zZSAnVGl0ZWwgaXN0IFBmbGljaHRmZWxkJyA0MDA7IGNvbnRpbnVlIH0NCiAgICAgICAgICAg ICAgICBpZiAoLW5vdCAkdGV4dCkgIHsgU2VuZC1FcnJvciAkUmVzcG9uc2UgJ1RleHQgaXN0IFBm bGljaHRmZWxkJyAgNDAwOyBjb250aW51ZSB9DQogICAgICAgICAgICAgICAgJHJhbmQgPSAtam9p biAoKDQ4Li41NykgKyAoOTcuLjEyMikgfCBHZXQtUmFuZG9tIC1Db3VudCA2IHwgRm9yRWFjaC1P YmplY3QgeyBbY2hhcl0kXyB9KQ0KICAgICAgICAgICAgICAgICRtcyA9IFtpbnQ2NF0oW0RhdGVU aW1lT2Zmc2V0XTo6VXRjTm93LlRvVW5peFRpbWVNaWxsaXNlY29uZHMoKSkNCiAgICAgICAgICAg ICAgICAkbmV1ZUlkID0gIm1fJHttc31fJHtyYW5kfSINCiAgICAgICAgICAgICAgICAkZW1wZkRl ZmF1bHQgPSBbcHNjdXN0b21vYmplY3RdQHsNCiAgICAgICAgICAgICAgICAgICAgYWxsZSA9ICR0 cnVlOyBwZXJzb25lbiA9IEAoKTsgZ3J1cHBlbiA9IEAoKTsgcm9sbGVuID0gQCgpDQogICAgICAg ICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICRlbXBmID0gaWYgKCRib2R5LlBTT2JqZWN0LlBy b3BlcnRpZXNbJ2VtcGZhZW5nZXInXSkgeyAkYm9keS5lbXBmYWVuZ2VyIH0gZWxzZSB7ICRlbXBm RGVmYXVsdCB9DQogICAgICAgICAgICAgICAgJG5ldSA9IFtwc2N1c3RvbW9iamVjdF1Aew0KICAg ICAgICAgICAgICAgICAgICBpZCAgICAgICAgICAgPSAkbmV1ZUlkDQogICAgICAgICAgICAgICAg ICAgIHRpdGVsICAgICAgICA9ICR0aXRlbA0KICAgICAgICAgICAgICAgICAgICB0ZXh0ICAgICAg ICAgPSAkdGV4dA0KICAgICAgICAgICAgICAgICAgICB0aHVtYm5haWwgICAgPSBpZiAoJGJvZHku UFNPYmplY3QuUHJvcGVydGllc1sndGh1bWJuYWlsJ10pIHsgJGJvZHkudGh1bWJuYWlsIH0gZWxz ZSB7ICRudWxsIH0NCiAgICAgICAgICAgICAgICAgICAgcGRmICAgICAgICAgID0gaWYgKCRib2R5 LlBTT2JqZWN0LlByb3BlcnRpZXNbJ3BkZiddKSAgICAgICB7ICRib2R5LnBkZiB9ICAgICAgIGVs c2UgeyAkbnVsbCB9DQogICAgICAgICAgICAgICAgICAgIHRyaWdnZXIgICAgICA9IGlmICgkYm9k eS5QU09iamVjdC5Qcm9wZXJ0aWVzWyd0cmlnZ2VyJ10gLWFuZCAkYm9keS50cmlnZ2VyKSB7IFtz dHJpbmddJGJvZHkudHJpZ2dlciB9IGVsc2UgeyAnZWlubWFsJyB9DQogICAgICAgICAgICAgICAg ICAgIGJpc0RhdHVtICAgICA9IGlmICgkYm9keS5QU09iamVjdC5Qcm9wZXJ0aWVzWydiaXNEYXR1 bSddKSAgeyAkYm9keS5iaXNEYXR1bSB9ICBlbHNlIHsgJG51bGwgfQ0KICAgICAgICAgICAgICAg ICAgICBlbXBmYWVuZ2VyICAgPSAkZW1wZg0KICAgICAgICAgICAgICAgICAgICBlcnN0ZWxsdEFt ICAgPSAoR2V0LURhdGUpLlRvVW5pdmVyc2FsVGltZSgpLlRvU3RyaW5nKCd5eXl5LU1NLWRkVEhI Om1tOnNzWicpDQogICAgICAgICAgICAgICAgICAgIGVyc3RlbGx0Vm9uICA9IChHZXQtQWt0dWVs bGVyQmVudXR6ZXIpDQogICAgICAgICAgICAgICAgICAgIGdlYWVuZGVydEFtICA9ICRudWxsDQog ICAgICAgICAgICAgICAgICAgIGdlYWVuZGVydFZvbiA9ICRudWxsDQogICAgICAgICAgICAgICAg fQ0KICAgICAgICAgICAgICAgIEludm9rZS1XaXRoRmlsZUxvY2sgJ21pdHRlaWx1bmdlbi5qc29u JyB7DQogICAgICAgICAgICAgICAgICAgICRtID0gUmVhZC1Kc29uT2JqZWN0ICdtaXR0ZWlsdW5n ZW4uanNvbicNCiAgICAgICAgICAgICAgICAgICAgaWYgKCRudWxsIC1lcSAkbSkgeyAkbSA9IFtw c2N1c3RvbW9iamVjdF1AeyBtaXR0ZWlsdW5nZW4gPSBAKCk7IGdlbGVzZW4gPSBbcHNjdXN0b21v YmplY3RdQHt9IH0gfQ0KICAgICAgICAgICAgICAgICAgICBpZiAoLW5vdCAkbS5QU09iamVjdC5Q cm9wZXJ0aWVzWydtaXR0ZWlsdW5nZW4nXSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgJG0g fCBBZGQtTWVtYmVyIC1Ob3RlUHJvcGVydHlOYW1lIG1pdHRlaWx1bmdlbiAtTm90ZVByb3BlcnR5 VmFsdWUgQCgpIC1Gb3JjZQ0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAg ICAgIGlmICgtbm90ICRtLlBTT2JqZWN0LlByb3BlcnRpZXNbJ2dlbGVzZW4nXSkgew0KICAgICAg ICAgICAgICAgICAgICAgICAgJG0gfCBBZGQtTWVtYmVyIC1Ob3RlUHJvcGVydHlOYW1lIGdlbGVz ZW4gLU5vdGVQcm9wZXJ0eVZhbHVlIChbcHNjdXN0b21vYmplY3RdQHt9KSAtRm9yY2UNCiAgICAg ICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAjIG5ldWVzdGUgb2Jlbg0KICAg ICAgICAgICAgICAgICAgICAkbS5taXR0ZWlsdW5nZW4gPSBAKCRuZXUpICsgQCgkbS5taXR0ZWls dW5nZW4pDQogICAgICAgICAgICAgICAgICAgIFdyaXRlLUpzb25PYmplY3QgJ21pdHRlaWx1bmdl bi5qc29uJyAkbSB8IE91dC1OdWxsDQogICAgICAgICAgICAgICAgfSB8IE91dC1OdWxsDQogICAg ICAgICAgICAgICAgV3JpdGUtTG9nRWludHJhZyAnbWl0dGVpbHVuZy5hbmdlbGVndCcgQHsgaWQg PSAkbmV1ZUlkOyB0aXRlbCA9ICR0aXRlbCB9DQogICAgICAgICAgICAgICAgU2VuZC1Kc29uT2Jq ZWN0ICRSZXNwb25zZSBAeyBzdGF0dXMgPSAnYW5nZWxlZ3QnOyBtaXR0ZWlsdW5nID0gJG5ldSB9 DQogICAgICAgICAgICAgICAgY29udGludWUNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGlm ICgkUGF0aCAtbWF0Y2ggJ14vYXBpL21pdHRlaWx1bmdlbi8oW1x3LV0rKSQnIC1hbmQgJE1ldGhv ZCAtZXEgJ1BVVCcpIHsNCiAgICAgICAgICAgICAgICBpZiAoLW5vdCAoVGVzdC1Jc3RTdXBlclVz ZXIpKSB7IFNlbmQtRXJyb3IgJFJlc3BvbnNlICdOdXIgU3VwZXJVc2VyJyA0MDM7IGNvbnRpbnVl IH0NCiAgICAgICAgICAgICAgICAkbWlkID0gJE1hdGNoZXNbMV0NCiAgICAgICAgICAgICAgICAk cmF3ID0gUmVhZC1Cb2R5ICRSZXF1ZXN0DQogICAgICAgICAgICAgICAgaWYgKC1ub3QgJHJhdykg eyBTZW5kLUVycm9yICRSZXNwb25zZSAnQm9keSBmZWhsdCcgNDAwOyBjb250aW51ZSB9DQogICAg ICAgICAgICAgICAgdHJ5IHsgJGJvZHkgPSAkcmF3IHwgQ29udmVydEZyb20tSnNvbiB9IGNhdGNo IHsgU2VuZC1FcnJvciAkUmVzcG9uc2UgJ1VuZ3VlbHRpZ2VzIEpTT04nIDQwMDsgY29udGludWUg fQ0KICAgICAgICAgICAgICAgICRzY3JpcHQ6bWl0dGVpbHVuZ0dlZnVuZGVuID0gJGZhbHNlDQog ICAgICAgICAgICAgICAgJHNjcmlwdDptaXR0ZWlsdW5nWmllbCA9ICRudWxsDQogICAgICAgICAg ICAgICAgSW52b2tlLVdpdGhGaWxlTG9jayAnbWl0dGVpbHVuZ2VuLmpzb24nIHsNCiAgICAgICAg ICAgICAgICAgICAgJG0gPSBSZWFkLUpzb25PYmplY3QgJ21pdHRlaWx1bmdlbi5qc29uJw0KICAg ICAgICAgICAgICAgICAgICBpZiAoJG51bGwgLWVxICRtIC1vciAtbm90ICRtLlBTT2JqZWN0LlBy b3BlcnRpZXNbJ21pdHRlaWx1bmdlbiddKSB7IHJldHVybiB9DQogICAgICAgICAgICAgICAgICAg IGZvcmVhY2ggKCRlaW50cmFnIGluIEAoJG0ubWl0dGVpbHVuZ2VuKSkgew0KICAgICAgICAgICAg ICAgICAgICAgICAgaWYgKFtzdHJpbmddJGVpbnRyYWcuaWQgLW5lICRtaWQpIHsgY29udGludWUg fQ0KICAgICAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCAoJGZlbGQgaW4gJ3RpdGVsJywndGV4 dCcsJ3RodW1ibmFpbCcsJ3BkZicsJ3RyaWdnZXInLCdiaXNEYXR1bScsJ2VtcGZhZW5nZXInKSB7 DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRib2R5LlBTT2JqZWN0LlByb3BlcnRp ZXNbJGZlbGRdKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR3ZXJ0ID0gJGJv ZHkuJGZlbGQNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCgkZmVsZCAtZXEg J3RpdGVsJyAtb3IgJGZlbGQgLWVxICd0ZXh0JykgLWFuZCAoJHdlcnQgLWlzIFtzdHJpbmddKSkg ew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHdlcnQgPSBDb252ZXJ0VG8t U2FmZVJpY2hIdG1sICR3ZXJ0DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGVpbnRyYWcgfCBBZGQtTWVtYmVyIC1Ob3Rl UHJvcGVydHlOYW1lICRmZWxkIC1Ob3RlUHJvcGVydHlWYWx1ZSAkd2VydCAtRm9yY2UNCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAg ICAgICAgICAgICAgICAgICAgICAkZWludHJhZyB8IEFkZC1NZW1iZXIgLU5vdGVQcm9wZXJ0eU5h bWUgZ2VhZW5kZXJ0QW0gIC1Ob3RlUHJvcGVydHlWYWx1ZSAoKEdldC1EYXRlKS5Ub1VuaXZlcnNh bFRpbWUoKS5Ub1N0cmluZygneXl5eS1NTS1kZFRISDptbTpzc1onKSkgLUZvcmNlDQogICAgICAg ICAgICAgICAgICAgICAgICAkZWludHJhZyB8IEFkZC1NZW1iZXIgLU5vdGVQcm9wZXJ0eU5hbWUg Z2VhZW5kZXJ0Vm9uIC1Ob3RlUHJvcGVydHlWYWx1ZSAoR2V0LUFrdHVlbGxlckJlbnV0emVyKSAt Rm9yY2UNCiAgICAgICAgICAgICAgICAgICAgICAgICRzY3JpcHQ6bWl0dGVpbHVuZ0dlZnVuZGVu ID0gJHRydWUNCiAgICAgICAgICAgICAgICAgICAgICAgICRzY3JpcHQ6bWl0dGVpbHVuZ1ppZWwg PSAkZWludHJhZw0KICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsNCiAgICAgICAgICAgICAg ICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICBpZiAoJHNjcmlwdDptaXR0ZWlsdW5nR2VmdW5k ZW4pIHsgV3JpdGUtSnNvbk9iamVjdCAnbWl0dGVpbHVuZ2VuLmpzb24nICRtIHwgT3V0LU51bGwg fQ0KICAgICAgICAgICAgICAgIH0gfCBPdXQtTnVsbA0KICAgICAgICAgICAgICAgIGlmICgtbm90 ICRzY3JpcHQ6bWl0dGVpbHVuZ0dlZnVuZGVuKSB7DQogICAgICAgICAgICAgICAgICAgIFNlbmQt RXJyb3IgJFJlc3BvbnNlICJNaXR0ZWlsdW5nICRtaWQgbmljaHQgZ2VmdW5kZW4iIDQwNDsgY29u dGludWUNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgJHppZWwgPSAkc2NyaXB0 Om1pdHRlaWx1bmdaaWVsDQogICAgICAgICAgICAgICAgJHNjcmlwdDptaXR0ZWlsdW5nR2VmdW5k ZW4gPSAkZmFsc2U7ICRzY3JpcHQ6bWl0dGVpbHVuZ1ppZWwgPSAkbnVsbA0KICAgICAgICAgICAg ICAgIFdyaXRlLUxvZ0VpbnRyYWcgJ21pdHRlaWx1bmcuZ2VhZW5kZXJ0JyBAeyBpZCA9ICRtaWQg fQ0KICAgICAgICAgICAgICAgIFNlbmQtSnNvbk9iamVjdCAkUmVzcG9uc2UgQHsgc3RhdHVzID0g J2dlYWVuZGVydCc7IG1pdHRlaWx1bmcgPSAkemllbCB9DQogICAgICAgICAgICAgICAgY29udGlu dWUNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGlmICgkUGF0aCAtbWF0Y2ggJ14vYXBpL21p dHRlaWx1bmdlbi8oW1x3LV0rKSQnIC1hbmQgJE1ldGhvZCAtZXEgJ0RFTEVURScpIHsNCiAgICAg ICAgICAgICAgICBpZiAoLW5vdCAoVGVzdC1Jc3RTdXBlclVzZXIpKSB7IFNlbmQtRXJyb3IgJFJl c3BvbnNlICdOdXIgU3VwZXJVc2VyJyA0MDM7IGNvbnRpbnVlIH0NCiAgICAgICAgICAgICAgICAk bWlkID0gJE1hdGNoZXNbMV0NCiAgICAgICAgICAgICAgICAkc2NyaXB0Om1pdHRlaWx1bmdHZWxv ZXNjaHQgPSAkZmFsc2UNCiAgICAgICAgICAgICAgICBJbnZva2UtV2l0aEZpbGVMb2NrICdtaXR0 ZWlsdW5nZW4uanNvbicgew0KICAgICAgICAgICAgICAgICAgICAkbSA9IFJlYWQtSnNvbk9iamVj dCAnbWl0dGVpbHVuZ2VuLmpzb24nDQogICAgICAgICAgICAgICAgICAgIGlmICgkbnVsbCAtZXEg JG0gLW9yIC1ub3QgJG0uUFNPYmplY3QuUHJvcGVydGllc1snbWl0dGVpbHVuZ2VuJ10pIHsgcmV0 dXJuIH0NCiAgICAgICAgICAgICAgICAgICAgJHZvcmhlciA9IEAoJG0ubWl0dGVpbHVuZ2VuKQ0K ICAgICAgICAgICAgICAgICAgICAkbmFjaGhlciA9IEAoJHZvcmhlciB8IFdoZXJlLU9iamVjdCB7 IFtzdHJpbmddJF8uaWQgLW5lICRtaWQgfSkNCiAgICAgICAgICAgICAgICAgICAgaWYgKCR2b3Jo ZXIuQ291bnQgLWVxICRuYWNoaGVyLkNvdW50KSB7IHJldHVybiB9DQogICAgICAgICAgICAgICAg ICAgICRtLm1pdHRlaWx1bmdlbiA9ICRuYWNoaGVyDQogICAgICAgICAgICAgICAgICAgICMgZ2Vs ZXNlbi1FaW50cmFlZ2UgZnVlciBkaWVzZSBNaXR0ZWlsdW5nIGF1ZnJhZXVtZW4NCiAgICAgICAg ICAgICAgICAgICAgaWYgKCRtLlBTT2JqZWN0LlByb3BlcnRpZXNbJ2dlbGVzZW4nXSkgew0KICAg ICAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCAoJHAgaW4gQCgkbS5nZWxlc2VuLlBTT2JqZWN0 LlByb3BlcnRpZXMpKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRwLlZhbHVl LlBTT2JqZWN0LlByb3BlcnRpZXNbJG1pZF0pIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgJHAuVmFsdWUuUFNPYmplY3QuUHJvcGVydGllcy5SZW1vdmUoJG1pZCkNCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAg ICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgV3JpdGUtSnNvbk9iamVjdCAnbWl0 dGVpbHVuZ2VuLmpzb24nICRtIHwgT3V0LU51bGwNCiAgICAgICAgICAgICAgICAgICAgJHNjcmlw dDptaXR0ZWlsdW5nR2Vsb2VzY2h0ID0gJHRydWUNCiAgICAgICAgICAgICAgICB9IHwgT3V0LU51 bGwNCiAgICAgICAgICAgICAgICBpZiAoLW5vdCAkc2NyaXB0Om1pdHRlaWx1bmdHZWxvZXNjaHQp IHsNCiAgICAgICAgICAgICAgICAgICAgU2VuZC1FcnJvciAkUmVzcG9uc2UgIk1pdHRlaWx1bmcg JG1pZCBuaWNodCBnZWZ1bmRlbiIgNDA0OyBjb250aW51ZQ0KICAgICAgICAgICAgICAgIH0NCiAg ICAgICAgICAgICAgICAkc2NyaXB0Om1pdHRlaWx1bmdHZWxvZXNjaHQgPSAkZmFsc2UNCiAgICAg ICAgICAgICAgICBXcml0ZS1Mb2dFaW50cmFnICdtaXR0ZWlsdW5nLmdlbG9lc2NodCcgQHsgaWQg PSAkbWlkIH0NCiAgICAgICAgICAgICAgICBTZW5kLUpzb25PYmplY3QgJFJlc3BvbnNlIEB7IHN0 YXR1cyA9ICdnZWxvZXNjaHQnIH0NCiAgICAgICAgICAgICAgICBjb250aW51ZQ0KICAgICAgICAg ICAgfQ0KICAgICAgICAgICAgIyBQT1NUIC9hcGkvbWl0dGVpbHVuZ2VuL3VwbG9hZCDigJQgU1Ut b25seSwgQmlsZCAoMiBNQikgb2RlciBQREYgKDEwIE1CKQ0KICAgICAgICAgICAgIyBCb2R5OiB7 ImFydCI6ICJiaWxkInwicGRmIiwgImRhdGVpbmFtZSI6ICJ4LnBuZyIsICJkYXRhVXJsIjogImRh dGE6Li4uIn0NCiAgICAgICAgICAgIGlmICgkUGF0aCAtZXEgJy9hcGkvbWl0dGVpbHVuZ2VuL3Vw bG9hZCcgLWFuZCAkTWV0aG9kIC1lcSAnUE9TVCcpIHsNCiAgICAgICAgICAgICAgICBpZiAoLW5v dCAoVGVzdC1Jc3RTdXBlclVzZXIpKSB7IFNlbmQtRXJyb3IgJFJlc3BvbnNlICdOdXIgU3VwZXJV c2VyIGR1ZXJmZW4gTWl0dGVpbHVuZ3MtQW5oYWVuZ2UgaG9jaGxhZGVuJyA0MDM7IGNvbnRpbnVl IH0NCiAgICAgICAgICAgICAgICAjIDE0IE1CIE1heFNpemUsIHdlaWwgMTBNQiBQREYgYmFzZTY0 LWNvZGllcnQgfjEzLjQgTUIgUGF5bG9hZCB3aXJkDQogICAgICAgICAgICAgICAgJHJhdyA9IFJl YWQtQm9keSAkUmVxdWVzdCAtTWF4U2l6ZSAxNE1CDQogICAgICAgICAgICAgICAgaWYgKC1ub3Qg JHJhdykgeyBTZW5kLUVycm9yICRSZXNwb25zZSAnQW5mcmFnZSB6dSBncm9zcyAobWF4IDE0IE1C KScgNDEzOyBjb250aW51ZSB9DQogICAgICAgICAgICAgICAgdHJ5IHsgJGJvZHkgPSAkcmF3IHwg Q29udmVydEZyb20tSnNvbiB9IGNhdGNoIHsgU2VuZC1FcnJvciAkUmVzcG9uc2UgJ1VuZ3VlbHRp Z2VzIEpTT04nIDQwMDsgY29udGludWUgfQ0KICAgICAgICAgICAgICAgICRhcnQgPSAoW3N0cmlu Z10kYm9keS5hcnQpLlRvTG93ZXIoKQ0KICAgICAgICAgICAgICAgICRkYXRhVXJsID0gW3N0cmlu Z10kYm9keS5kYXRhVXJsDQogICAgICAgICAgICAgICAgaWYgKCRhcnQgLW5lICdiaWxkJyAtYW5k ICRhcnQgLW5lICdwZGYnKSB7DQogICAgICAgICAgICAgICAgICAgIFNlbmQtRXJyb3IgJFJlc3Bv bnNlICdhcnQgbXVzcyAiYmlsZCIgb2RlciAicGRmIiBzZWluJyA0MDA7IGNvbnRpbnVlDQogICAg ICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICRleHQgPSAkbnVsbDsgJG1heEJ5dGVzID0g MA0KICAgICAgICAgICAgICAgIGlmICgkYXJ0IC1lcSAnYmlsZCcpIHsNCiAgICAgICAgICAgICAg ICAgICAgaWYgKCRkYXRhVXJsIC1tYXRjaCAnXmRhdGE6aW1hZ2UvKGpwZWd8anBnfHBuZ3x3ZWJw KTtiYXNlNjQsJykgew0KICAgICAgICAgICAgICAgICAgICAgICAgJGV4dCA9ICgkTWF0Y2hlc1sx XSAtcmVwbGFjZSAnanBlZycsJ2pwZycpDQogICAgICAgICAgICAgICAgICAgICAgICAkbWF4Qnl0 ZXMgPSAyICogMTAyNCAqIDEwMjQNCiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAg ICAgICAgICAgICAgICAgICAgIFNlbmQtRXJyb3IgJFJlc3BvbnNlICdCaWxkOiBlcndhcnRldCBk YXRhOmltYWdlLyhqcGVnfHBuZ3x3ZWJwKTtiYXNlNjQsLi4uJyA0MDA7IGNvbnRpbnVlDQogICAg ICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAg ICAgICAgICBpZiAoJGRhdGFVcmwgLWxpa2UgJ2RhdGE6YXBwbGljYXRpb24vcGRmO2Jhc2U2NCwq Jykgew0KICAgICAgICAgICAgICAgICAgICAgICAgJGV4dCA9ICdwZGYnDQogICAgICAgICAgICAg ICAgICAgICAgICAkbWF4Qnl0ZXMgPSAxMCAqIDEwMjQgKiAxMDI0DQogICAgICAgICAgICAgICAg ICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgICAgICAgICBTZW5kLUVycm9yICRSZXNwb25z ZSAnUERGOiBlcndhcnRldCBkYXRhOmFwcGxpY2F0aW9uL3BkZjtiYXNlNjQsLi4uJyA0MDA7IGNv bnRpbnVlDQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAg ICAgICAgICAgJGJhc2U2NCA9ICRkYXRhVXJsIC1yZXBsYWNlICdeZGF0YTpbXjtdKztiYXNlNjQs JywgJycNCiAgICAgICAgICAgICAgICB0cnkgeyAkYnl0ZXMgPSBbU3lzdGVtLkNvbnZlcnRdOjpG cm9tQmFzZTY0U3RyaW5nKCRiYXNlNjQpIH0NCiAgICAgICAgICAgICAgICBjYXRjaCB7IFNlbmQt RXJyb3IgJFJlc3BvbnNlICdVbmd1ZWx0aWdlIGJhc2U2NC1EYXRlbicgNDAwOyBjb250aW51ZSB9 DQogICAgICAgICAgICAgICAgaWYgKCRieXRlcy5MZW5ndGggLWd0ICRtYXhCeXRlcykgew0KICAg ICAgICAgICAgICAgICAgICAkbGltaXRLYiA9IFtpbnRdKCRtYXhCeXRlcyAvIDEwMjQpDQogICAg ICAgICAgICAgICAgICAgIFNlbmQtRXJyb3IgJFJlc3BvbnNlICIkYXJ0IHp1IGdyb3NzIChtYXgg JGxpbWl0S2IgS0IpIiA0MTM7IGNvbnRpbnVlDQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAg ICAgICAgICR1cGxvYWREaXIgPSBKb2luLVBhdGggJERhdGFEaXIgJ3VwbG9hZHMnIHwgSm9pbi1Q YXRoIC1DaGlsZFBhdGggJ21pdHRlaWx1bmdlbicNCiAgICAgICAgICAgICAgICBpZiAoLW5vdCAo VGVzdC1QYXRoIC1MaXRlcmFsUGF0aCAkdXBsb2FkRGlyKSkgew0KICAgICAgICAgICAgICAgICAg ICB0cnkgeyBOZXctSXRlbSAtSXRlbVR5cGUgRGlyZWN0b3J5IC1QYXRoICR1cGxvYWREaXIgLUZv cmNlIHwgT3V0LU51bGwgfSBjYXRjaCB7fQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAg ICAgICAkcmFuZCA9IC1qb2luICgoNDguLjU3KSArICg5Ny4uMTIyKSB8IEdldC1SYW5kb20gLUNv dW50IDYgfCBGb3JFYWNoLU9iamVjdCB7IFtjaGFyXSRfIH0pDQogICAgICAgICAgICAgICAgJG1z ID0gW2ludDY0XShbRGF0ZVRpbWVPZmZzZXRdOjpVdGNOb3cuVG9Vbml4VGltZU1pbGxpc2Vjb25k cygpKQ0KICAgICAgICAgICAgICAgICRmaWxlbmFtZSA9ICJtXyR7bXN9XyR7cmFuZH0uJGV4dCIN CiAgICAgICAgICAgICAgICAkemllbFBmYWQgPSBKb2luLVBhdGggJHVwbG9hZERpciAkZmlsZW5h bWUNCiAgICAgICAgICAgICAgICBbU3lzdGVtLklPLkZpbGVdOjpXcml0ZUFsbEJ5dGVzKCR6aWVs UGZhZCwgJGJ5dGVzKQ0KICAgICAgICAgICAgICAgICMgS2VpbmUgQUNMLVJlc3RyaWN0aW9uOiBV cGxvYWRzIHNpbmQgZnVlciBkaWUgRW1wZmFlbmdlci0NCiAgICAgICAgICAgICAgICAjIEdydXBw ZSAobWFudWVsbCB2b20gU1UgdmVydGVpbHQpIGdlZGFjaHQsIG5pY2h0IGdlaGVpbS4NCiAgICAg ICAgICAgICAgICAkcmVsUGZhZCA9ICIvZGF0YS91cGxvYWRzL21pdHRlaWx1bmdlbi8kZmlsZW5h bWUiDQogICAgICAgICAgICAgICAgV3JpdGUtTG9nRWludHJhZyAnbWl0dGVpbHVuZy51cGxvYWQn IEB7IGFydCA9ICRhcnQ7IGRhdGVpID0gJGZpbGVuYW1lOyBieXRlcyA9ICRieXRlcy5MZW5ndGgg fQ0KICAgICAgICAgICAgICAgIFNlbmQtSnNvbk9iamVjdCAkUmVzcG9uc2UgQHsgc3RhdHVzID0g J29rJzsgcGZhZCA9ICRyZWxQZmFkOyBieXRlcyA9ICRieXRlcy5MZW5ndGggfQ0KICAgICAgICAg ICAgICAgIGNvbnRpbnVlDQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGlmICgkUGF0aCAt bWF0Y2ggJ14vYXBpL21pdHRlaWx1bmdlbi8oW1x3LV0rKS9rZW5udG5pcyQnIC1hbmQgJE1ldGhv ZCAtZXEgJ1BPU1QnKSB7DQogICAgICAgICAgICAgICAgJG1pZCA9ICRNYXRjaGVzWzFdDQogICAg ICAgICAgICAgICAgJHIgPSBHZXQtUmVjaHRlDQogICAgICAgICAgICAgICAgJHBpZCA9ICRyLm1l aW5lUGVyc29uSWQNCiAgICAgICAgICAgICAgICBpZiAoJG51bGwgLWVxICRwaWQpIHsgU2VuZC1F cnJvciAkUmVzcG9uc2UgJ0tlaW5lIFBlcnNvbiB6dWdlb3JkbmV0JyA0MDM7IGNvbnRpbnVlIH0N CiAgICAgICAgICAgICAgICAkc2NyaXB0Om1pdHRlaWx1bmdLZW5udG5pc09LID0gJGZhbHNlDQog ICAgICAgICAgICAgICAgSW52b2tlLVdpdGhGaWxlTG9jayAnbWl0dGVpbHVuZ2VuLmpzb24nIHsN CiAgICAgICAgICAgICAgICAgICAgJG0gPSBSZWFkLUpzb25PYmplY3QgJ21pdHRlaWx1bmdlbi5q c29uJw0KICAgICAgICAgICAgICAgICAgICBpZiAoJG51bGwgLWVxICRtIC1vciAtbm90ICRtLlBT T2JqZWN0LlByb3BlcnRpZXNbJ21pdHRlaWx1bmdlbiddKSB7IHJldHVybiB9DQogICAgICAgICAg ICAgICAgICAgICRleGlzdGllcnQgPSBAKCRtLm1pdHRlaWx1bmdlbiB8IFdoZXJlLU9iamVjdCB7 IFtzdHJpbmddJF8uaWQgLWVxICRtaWQgfSkuQ291bnQgLWd0IDANCiAgICAgICAgICAgICAgICAg ICAgaWYgKC1ub3QgJGV4aXN0aWVydCkgeyByZXR1cm4gfQ0KICAgICAgICAgICAgICAgICAgICBp ZiAoLW5vdCAkbS5QU09iamVjdC5Qcm9wZXJ0aWVzWydnZWxlc2VuJ10pIHsNCiAgICAgICAgICAg ICAgICAgICAgICAgICRtIHwgQWRkLU1lbWJlciAtTm90ZVByb3BlcnR5TmFtZSBnZWxlc2VuIC1O b3RlUHJvcGVydHlWYWx1ZSAoW3BzY3VzdG9tb2JqZWN0XUB7fSkgLUZvcmNlDQogICAgICAgICAg ICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgJHBpZFN0ciA9IFtzdHJpbmddJHBpZA0K ICAgICAgICAgICAgICAgICAgICBpZiAoLW5vdCAkbS5nZWxlc2VuLlBTT2JqZWN0LlByb3BlcnRp ZXNbJHBpZFN0cl0pIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICRtLmdlbGVzZW4gfCBBZGQt TWVtYmVyIC1Ob3RlUHJvcGVydHlOYW1lICRwaWRTdHIgLU5vdGVQcm9wZXJ0eVZhbHVlIChbcHNj dXN0b21vYmplY3RdQHt9KSAtRm9yY2UNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAg ICAgICAgICAgICAkaGV1dGUgPSAoR2V0LURhdGUpLlRvU3RyaW5nKCd5eXl5LU1NLWRkJykNCiAg ICAgICAgICAgICAgICAgICAgJG0uZ2VsZXNlbi4kcGlkU3RyIHwgQWRkLU1lbWJlciAtTm90ZVBy b3BlcnR5TmFtZSAkbWlkIC1Ob3RlUHJvcGVydHlWYWx1ZSAkaGV1dGUgLUZvcmNlDQogICAgICAg ICAgICAgICAgICAgIFdyaXRlLUpzb25PYmplY3QgJ21pdHRlaWx1bmdlbi5qc29uJyAkbSB8IE91 dC1OdWxsDQogICAgICAgICAgICAgICAgICAgICRzY3JpcHQ6bWl0dGVpbHVuZ0tlbm50bmlzT0sg PSAkdHJ1ZQ0KICAgICAgICAgICAgICAgIH0gfCBPdXQtTnVsbA0KICAgICAgICAgICAgICAgIGlm ICgtbm90ICRzY3JpcHQ6bWl0dGVpbHVuZ0tlbm50bmlzT0spIHsNCiAgICAgICAgICAgICAgICAg ICAgU2VuZC1FcnJvciAkUmVzcG9uc2UgIk1pdHRlaWx1bmcgJG1pZCBuaWNodCBnZWZ1bmRlbiIg NDA0OyBjb250aW51ZQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAkc2NyaXB0 Om1pdHRlaWx1bmdLZW5udG5pc09LID0gJGZhbHNlDQogICAgICAgICAgICAgICAgU2VuZC1Kc29u T2JqZWN0ICRSZXNwb25zZSBAeyBzdGF0dXMgPSAna2VubnRuaXNfZ2VzZXR6dCcgfQ0KICAgICAg ICAgICAgICAgIGNvbnRpbnVlDQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICMgPT09PT0g QkFDS1VQUyA9PT09PQ0KICAgICAgICAgICAgIyBCYWNrdXAtTmFtaW5nIChnZXRhcm50LCBpbiBk YXRhL2NhY2hlLyk6DQogICAgICAgICAgICAjIC0gc25hcF88dHM+LmJhayAgPSBCdW5kbGUgKHBs YW51bmcrYWRtaW4pIC0tIG1hbnVlbGxlIEJhY2t1cHMgKyBTaWNoZXJ1bmdlbg0KICAgICAgICAg ICAgIyAgICAgICAgICAgICAgICAgICAgdm9yIFdpZWRlcmhlcnN0ZWxsdW5nDQogICAgICAgICAg ICAjIC0gbGVnXzx0cz4uYmFrICAgPSBOdXIgUGxhbnVuZyAtLSBMZWdhY3ktQmFja3VwcyArIEF1 dG8tU2ljaGVydW5nZW4NCiAgICAgICAgICAgICMgICAgICAgICAgICAgICAgICAgIHZvciBSZXNl dC9EdW1teWRhdGVuDQogICAgICAgICAgICAjIC0gY2ZnXzx0cz5fPGhpbndlaXM+LmJhayA9IGFk bWluLmpzb24tQXV0by1CYWNrdXBzIChCYWNrdXAtQWRtaW5Kc29uKQ0KICAgICAgICAgICAgaWYg KCRQYXRoIC1lcSAnL2FwaS9wbGFudW5nL2JhY2t1cCcgLWFuZCAkTWV0aG9kIC1lcSAnUE9TVCcp IHsNCiAgICAgICAgICAgICAgICBpZiAoLW5vdCAoVGVzdC1EYXJmQmVyZWljaCAnYmFja3Vwcycp KSB7IFNlbmQtRXJyb3IgJFJlc3BvbnNlICdLZWluZSBCZXJlY2h0aWd1bmcgKEJhY2t1cHMpJyA0 MDM7IGNvbnRpbnVlIH0NCiAgICAgICAgICAgICAgICAkcGxhbnVuZ1BhdGggPSBKb2luLVBhdGgg JERhdGFEaXIgJ3BsYW51bmcuanNvbicNCiAgICAgICAgICAgICAgICBpZiAoLW5vdCAoVGVzdC1Q YXRoIC1MaXRlcmFsUGF0aCAkcGxhbnVuZ1BhdGgpKSB7IFNlbmQtRXJyb3IgJFJlc3BvbnNlICdQ bGFudW5nIG5pY2h0IGdlZnVuZGVuJyA0MDQ7IGNvbnRpbnVlIH0NCiAgICAgICAgICAgICAgICAk cGxhbnVuZ09iaiA9IFJlYWQtSnNvbk9iamVjdCAncGxhbnVuZy5qc29uJw0KICAgICAgICAgICAg ICAgICRhZG1pbk9iaiAgID0gUmVhZC1Kc29uT2JqZWN0ICdhZG1pbi5qc29uJw0KICAgICAgICAg ICAgICAgIGlmICgkbnVsbCAtZXEgJGFkbWluT2JqKSB7ICRhZG1pbk9iaiA9IE5ldy1PYmplY3Qg UFNPYmplY3QgfQ0KICAgICAgICAgICAgICAgICR0cyA9IEdldC1EYXRlIC1Gb3JtYXQgJ3l5eXlN TWRkX0hIbW1zcycNCiAgICAgICAgICAgICAgICAkYm5hbWUgPSAic25hcF8kdHMuYmFrIg0KICAg ICAgICAgICAgICAgICRidW5kbGUgPSBbb3JkZXJlZF1Aew0KICAgICAgICAgICAgICAgICAgICBm b3JtYXQgID0gJ3ZpMy1iYWNrdXAtdjEnDQogICAgICAgICAgICAgICAgICAgIHRzICAgICAgPSAk dHMNCiAgICAgICAgICAgICAgICAgICAgcGxhbnVuZyA9ICRwbGFudW5nT2JqDQogICAgICAgICAg ICAgICAgICAgIGFkbWluICAgPSAkYWRtaW5PYmoNCiAgICAgICAgICAgICAgICB9DQogICAgICAg ICAgICAgICAgJGpzb24gPSAkYnVuZGxlIHwgQ29udmVydFRvLUpzb24gLURlcHRoIDMwDQogICAg ICAgICAgICAgICAgJGNhY2hlRGlyID0gSm9pbi1QYXRoICREYXRhRGlyICdjYWNoZScNCiAgICAg ICAgICAgICAgICBpZiAoLW5vdCAoVGVzdC1QYXRoIC1MaXRlcmFsUGF0aCAkY2FjaGVEaXIpKSB7 IE5ldy1JdGVtIC1JdGVtVHlwZSBEaXJlY3RvcnkgLVBhdGggJGNhY2hlRGlyIC1Gb3JjZSB8IE91 dC1OdWxsIH0NCiAgICAgICAgICAgICAgICBXcml0ZS1CYWNrdXBCeXRlcyAoSm9pbi1QYXRoICRj YWNoZURpciAkYm5hbWUpICRqc29uDQogICAgICAgICAgICAgICAgV3JpdGUtTG9nRWludHJhZyAn YmFja3VwLmVyc3RlbGx0JyBAeyBkYXRlaW5hbWUgPSAkYm5hbWU7IGluaGFsdCA9ICdwbGFudW5n K2FkbWluJyB9DQogICAgICAgICAgICAgICAgU2VuZC1Kc29uT2JqZWN0ICRSZXNwb25zZSBAeyBz dGF0dXMgPSAnZXJzdGVsbHQnOyBkYXRlaW5hbWUgPSAkYm5hbWUgfQ0KICAgICAgICAgICAgICAg IGNvbnRpbnVlDQogICAgICAgICAgICB9DQogICAgICAgICAgICBpZiAoJFBhdGggLWVxICcvYXBp L3BsYW51bmcvYmFja3VwcycgLWFuZCAkTWV0aG9kIC1lcSAnR0VUJykgew0KICAgICAgICAgICAg ICAgIGlmICgtbm90IChUZXN0LURhcmZCZXJlaWNoICdiYWNrdXBzJykpIHsgU2VuZC1FcnJvciAk UmVzcG9uc2UgJ0tlaW5lIEJlcmVjaHRpZ3VuZyAoQmFja3VwcyknIDQwMzsgY29udGludWUgfQ0K ICAgICAgICAgICAgICAgICRlaW50cmFlZ2UgPSBAKCkNCiAgICAgICAgICAgICAgICAkY2FjaGVE aXIgPSBKb2luLVBhdGggJERhdGFEaXIgJ2NhY2hlJw0KICAgICAgICAgICAgICAgIGlmIChUZXN0 LVBhdGggLUxpdGVyYWxQYXRoICRjYWNoZURpcikgew0KICAgICAgICAgICAgICAgICAgICBmb3Jl YWNoICgkbXVzdGVyIGluICdzbmFwXyouYmFrJywnbGVnXyouYmFrJykgew0KICAgICAgICAgICAg ICAgICAgICAgICAgR2V0LUNoaWxkSXRlbSAtTGl0ZXJhbFBhdGggJGNhY2hlRGlyIC1GaWx0ZXIg JG11c3RlciAtRmlsZSAtRXJyb3JBY3Rpb24gU2lsZW50bHlDb250aW51ZSB8IEZvckVhY2gtT2Jq ZWN0IHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbmFtZSA9ICRfLk5hbWUNCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAkdHlwID0gaWYgKCRuYW1lIC1tYXRjaCAnX3Zvcl9kdW1t eV8nKSB7ICd2b3IgRHVtbXlkYXRlbicgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZWxzZWlmICgkbmFtZSAtbWF0Y2ggJ192b3JfcmVzZXRfJykgeyAndm9yIFJlc2V0JyB9DQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlaWYgKCRuYW1lIC1tYXRjaCAnX3Zv cl93aWVkZXJoZXJzdGVsbHVuZ18nKSB7ICd2b3IgV2llZGVyaGVyc3RlbGx1bmcnIH0NCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgeyAnbWFudWVsbCcgfQ0KICAgICAgICAg ICAgICAgICAgICAgICAgICAgICRidW5kbGUgPSAkbmFtZS5TdGFydHNXaXRoKCdzbmFwXycpDQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgJGVpbnRyYWVnZSArPSBbb3JkZXJlZF1Aew0KICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlaW5hbWUgICA9ICRuYW1lDQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGdyb2Vzc2UgICAgID0gJF8uTGVuZ3RoDQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGVyc3RlbGx0QW0gID0gJF8uTGFzdFdyaXRlVGltZS5U b1N0cmluZygncycpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cCAgICAgICAg ID0gJHR5cA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmhhbHQgICAgICA9IGlm ICgkYnVuZGxlKSB7ICdLb21wbGV0dCAoUGxhbnVuZyArIEFkbWluKScgfSBlbHNlIHsgJ051ciBQ bGFudW5nJyB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzdEJ1bmRsZSAgID0g JGJ1bmRsZQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAg ICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAg ICAgICAgICAgICAkZWludHJhZWdlID0gQCgkZWludHJhZWdlIHwgU29ydC1PYmplY3QgLVByb3Bl cnR5IGVyc3RlbGx0QW0gLURlc2NlbmRpbmcpDQogICAgICAgICAgICAgICAgU2VuZC1Kc29uT2Jq ZWN0ICRSZXNwb25zZSAkZWludHJhZWdlDQogICAgICAgICAgICAgICAgY29udGludWUNCiAgICAg ICAgICAgIH0NCiAgICAgICAgICAgIGlmICgkUGF0aCAtbWF0Y2ggJ14vYXBpL3BsYW51bmcvYmFj a3VwL2Rvd25sb2FkLyguKykkJyAtYW5kICRNZXRob2QgLWVxICdHRVQnKSB7DQogICAgICAgICAg ICAgICAgaWYgKC1ub3QgKFRlc3QtRGFyZkJlcmVpY2ggJ2JhY2t1cHMnKSkgeyBTZW5kLUVycm9y ICRSZXNwb25zZSAnS2VpbmUgQmVyZWNodGlndW5nIChCYWNrdXBzKScgNDAzOyBjb250aW51ZSB9 DQogICAgICAgICAgICAgICAgJG5hbWUgPSAkTWF0Y2hlc1sxXQ0KICAgICAgICAgICAgICAgIGlm ICgtbm90ICgkbmFtZSAtbWF0Y2ggJ14oc25hcF98bGVnXylbMC05X2EtekEtWl0rXC5iYWskJykp IHsgU2VuZC1FcnJvciAkUmVzcG9uc2UgJ1VuZ3VlbHRpZ2VyIERhdGVpbmFtZScgNDAwOyBjb250 aW51ZSB9DQogICAgICAgICAgICAgICAgJGZwID0gSm9pbi1QYXRoICREYXRhRGlyICgnY2FjaGUv JyArICRuYW1lKQ0KICAgICAgICAgICAgICAgIGlmICgtbm90IChUZXN0LVBhdGggLUxpdGVyYWxQ YXRoICRmcCkpIHsgU2VuZC1FcnJvciAkUmVzcG9uc2UgJ0JhY2t1cCBuaWNodCBnZWZ1bmRlbicg NDA0OyBjb250aW51ZSB9DQogICAgICAgICAgICAgICAgJGtsYXJ0ZXh0ID0gUmVhZC1CYWNrdXBU ZXh0ICRmcA0KICAgICAgICAgICAgICAgIGlmICgkbnVsbCAtZXEgJGtsYXJ0ZXh0KSB7IFNlbmQt RXJyb3IgJFJlc3BvbnNlICdCYWNrdXAtRGF0ZWkga29ubnRlIG5pY2h0IGdlbGVzZW4gd2VyZGVu JyA1MDA7IGNvbnRpbnVlIH0NCiAgICAgICAgICAgICAgICAkYnl0ZXMgPSBbU3lzdGVtLlRleHQu RW5jb2RpbmddOjpVVEY4LkdldEJ5dGVzKCRrbGFydGV4dCkNCiAgICAgICAgICAgICAgICAkUmVz cG9uc2UuU3RhdHVzQ29kZSA9IDIwMA0KICAgICAgICAgICAgICAgICRSZXNwb25zZS5Db250ZW50 VHlwZSA9ICdhcHBsaWNhdGlvbi9qc29uOyBjaGFyc2V0PXV0Zi04Jw0KICAgICAgICAgICAgICAg IEFkZC1TZWN1cml0eUhlYWRlcnMgJFJlc3BvbnNlDQogICAgICAgICAgICAgICAgJFJlc3BvbnNl LkhlYWRlcnMuQWRkKCdDb250ZW50LURpc3Bvc2l0aW9uJywgImF0dGFjaG1lbnQ7IGZpbGVuYW1l PWAiJG5hbWVgIiIpDQogICAgICAgICAgICAgICAgJFJlc3BvbnNlLkNvbnRlbnRMZW5ndGg2NCA9 ICRieXRlcy5MZW5ndGgNCiAgICAgICAgICAgICAgICAkUmVzcG9uc2UuT3V0cHV0U3RyZWFtLldy aXRlKCRieXRlcywgMCwgJGJ5dGVzLkxlbmd0aCkNCiAgICAgICAgICAgICAgICAkUmVzcG9uc2Uu T3V0cHV0U3RyZWFtLkNsb3NlKCkNCiAgICAgICAgICAgICAgICBjb250aW51ZQ0KICAgICAgICAg ICAgfQ0KICAgICAgICAgICAgaWYgKCRQYXRoIC1lcSAnL2FwaS9wbGFudW5nL2JhY2t1cC93aWVk ZXJoZXJzdGVsbGVuJyAtYW5kICRNZXRob2QgLWVxICdQT1NUJykgew0KICAgICAgICAgICAgICAg IGlmICgtbm90IChUZXN0LURhcmZCZXJlaWNoICdiYWNrdXBzJykpIHsgU2VuZC1FcnJvciAkUmVz cG9uc2UgJ0tlaW5lIEJlcmVjaHRpZ3VuZyAoQmFja3VwcyknIDQwMzsgY29udGludWUgfQ0KICAg ICAgICAgICAgICAgICRib2R5ID0gUmVhZC1Cb2R5ICRSZXF1ZXN0DQogICAgICAgICAgICAgICAg JGRhdGVuID0gJGJvZHkgfCBDb252ZXJ0RnJvbS1Kc29uDQogICAgICAgICAgICAgICAgJG5hbWUg PSAiJCgkZGF0ZW4uZGF0ZWluYW1lKSINCiAgICAgICAgICAgICAgICBpZiAoLW5vdCAoJG5hbWUg LW1hdGNoICdeKHNuYXBffGxlZ18pWzAtOV9hLXpBLVpdK1wuYmFrJCcpKSB7IFNlbmQtRXJyb3Ig JFJlc3BvbnNlICdVbmd1ZWx0aWdlciBEYXRlaW5hbWUnIDQwMDsgY29udGludWUgfQ0KICAgICAg ICAgICAgICAgICRjYWNoZURpciA9IEpvaW4tUGF0aCAkRGF0YURpciAnY2FjaGUnDQogICAgICAg ICAgICAgICAgaWYgKC1ub3QgKFRlc3QtUGF0aCAtTGl0ZXJhbFBhdGggJGNhY2hlRGlyKSkgeyBO ZXctSXRlbSAtSXRlbVR5cGUgRGlyZWN0b3J5IC1QYXRoICRjYWNoZURpciAtRm9yY2UgfCBPdXQt TnVsbCB9DQogICAgICAgICAgICAgICAgJHF1ZWxsID0gSm9pbi1QYXRoICRjYWNoZURpciAkbmFt ZQ0KICAgICAgICAgICAgICAgIGlmICgtbm90IChUZXN0LVBhdGggLUxpdGVyYWxQYXRoICRxdWVs bCkpIHsgU2VuZC1FcnJvciAkUmVzcG9uc2UgJ0JhY2t1cCBuaWNodCBnZWZ1bmRlbicgNDA0OyBj b250aW51ZSB9DQogICAgICAgICAgICAgICAgJHRzID0gR2V0LURhdGUgLUZvcm1hdCAneXl5eU1N ZGRfSEhtbXNzJw0KICAgICAgICAgICAgICAgICRzaWNoZXIgPSAic25hcF92b3Jfd2llZGVyaGVy c3RlbGx1bmdfJHRzLmJhayINCiAgICAgICAgICAgICAgICAjIFNpY2hlcmhlaXRzLUJ1bmRsZSBk ZXIgYWt0dWVsbGVuIERhdGVuIHZvciBVZWJlcnNjaHJlaWJlbi4NCiAgICAgICAgICAgICAgICAk c2ljaGVyQnVuZGxlID0gW29yZGVyZWRdQHsNCiAgICAgICAgICAgICAgICAgICAgZm9ybWF0ICA9 ICd2aTMtYmFja3VwLXYxJw0KICAgICAgICAgICAgICAgICAgICB0cyAgICAgID0gJHRzDQogICAg ICAgICAgICAgICAgICAgIHBsYW51bmcgPSAoUmVhZC1Kc29uT2JqZWN0ICdwbGFudW5nLmpzb24n KQ0KICAgICAgICAgICAgICAgICAgICBhZG1pbiAgID0gKFJlYWQtSnNvbk9iamVjdCAnYWRtaW4u anNvbicpDQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIFdyaXRlLUJhY2t1cEJ5 dGVzIChKb2luLVBhdGggJGNhY2hlRGlyICRzaWNoZXIpICgkc2ljaGVyQnVuZGxlIHwgQ29udmVy dFRvLUpzb24gLURlcHRoIDMwKQ0KDQogICAgICAgICAgICAgICAgJHF1ZWxsSW5oYWx0ID0gUmVh ZC1CYWNrdXBUZXh0ICRxdWVsbA0KICAgICAgICAgICAgICAgIGlmICgkbnVsbCAtZXEgJHF1ZWxs SW5oYWx0KSB7IFNlbmQtRXJyb3IgJFJlc3BvbnNlICdCYWNrdXAtRGF0ZWkga29ubnRlIG5pY2h0 IGdlbGVzZW4gd2VyZGVuJyA1MDA7IGNvbnRpbnVlIH0NCiAgICAgICAgICAgICAgICB0cnkgeyAk cXVlbGxEYXRlbiA9ICRxdWVsbEluaGFsdCB8IENvbnZlcnRGcm9tLUpzb24gfSBjYXRjaCB7IFNl bmQtRXJyb3IgJFJlc3BvbnNlICdCYWNrdXAtRGF0ZWkgbmljaHQgcGFyc2llcmJhcicgNDAwOyBj b250aW51ZSB9DQogICAgICAgICAgICAgICAgJHdpZWRlcmhlcmdlc3RlbGx0ID0gQCgpDQogICAg ICAgICAgICAgICAgaWYgKCRxdWVsbERhdGVuIC1hbmQgJHF1ZWxsRGF0ZW4uUFNPYmplY3QuUHJv cGVydGllc1snZm9ybWF0J10gLWFuZCAiJCgkcXVlbGxEYXRlbi5mb3JtYXQpIi5TdGFydHNXaXRo KCd2aTMtYmFja3VwJykpIHsNCiAgICAgICAgICAgICAgICAgICAgaWYgKCRxdWVsbERhdGVuLlBT T2JqZWN0LlByb3BlcnRpZXNbJ3BsYW51bmcnXSkgew0KICAgICAgICAgICAgICAgICAgICAgICAg V3JpdGUtSnNvbk9iamVjdCAncGxhbnVuZy5qc29uJyAkcXVlbGxEYXRlbi5wbGFudW5nIHwgT3V0 LU51bGwNCiAgICAgICAgICAgICAgICAgICAgICAgICR3aWVkZXJoZXJnZXN0ZWxsdCArPSAncGxh bnVuZycNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICBpZiAoJHF1 ZWxsRGF0ZW4uUFNPYmplY3QuUHJvcGVydGllc1snYWRtaW4nXSkgew0KICAgICAgICAgICAgICAg ICAgICAgICAgV3JpdGUtSnNvbk9iamVjdCAnYWRtaW4uanNvbicgJHF1ZWxsRGF0ZW4uYWRtaW4g fCBPdXQtTnVsbA0KICAgICAgICAgICAgICAgICAgICAgICAgJHdpZWRlcmhlcmdlc3RlbGx0ICs9 ICdhZG1pbicNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0gZWxzZSB7 DQogICAgICAgICAgICAgICAgICAgICMgTGVnYWN5LUZvcm1hdCAobnVyIHBsYW51bmcuanNvbi1J bmhhbHQpLg0KICAgICAgICAgICAgICAgICAgICBXcml0ZS1Kc29uT2JqZWN0ICdwbGFudW5nLmpz b24nICRxdWVsbERhdGVuIHwgT3V0LU51bGwNCiAgICAgICAgICAgICAgICAgICAgJHdpZWRlcmhl cmdlc3RlbGx0ICs9ICdwbGFudW5nJw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAg ICBXcml0ZS1Mb2dFaW50cmFnICdiYWNrdXAud2llZGVyaGVyZ2VzdGVsbHQnIEB7IHF1ZWxsZSA9 ICRuYW1lOyBzaWNoZXJ1bmcgPSAkc2ljaGVyOyBpbmhhbHQgPSAoJHdpZWRlcmhlcmdlc3RlbGx0 IC1qb2luICcrJykgfQ0KICAgICAgICAgICAgICAgIE5ldy1IaW53ZWlzICdiYWNrdXBfd2llZGVy aGVyZ2VzdGVsbHQnIChbb3JkZXJlZF1Aew0KICAgICAgICAgICAgICAgICAgICBiYWNrdXAgICAg PSAkbmFtZQ0KICAgICAgICAgICAgICAgICAgICBzaWNoZXJ1bmcgPSAkc2ljaGVyDQogICAgICAg ICAgICAgICAgICAgIGluaGFsdCAgICA9ICgkd2llZGVyaGVyZ2VzdGVsbHQgLWpvaW4gJysnKQ0K ICAgICAgICAgICAgICAgIH0pIChHZXQtQWt0dWVsbGVyQmVudXR6ZXIpIHwgT3V0LU51bGwNCiAg ICAgICAgICAgICAgICBTZW5kLUpzb25PYmplY3QgJFJlc3BvbnNlIEB7IHN0YXR1cyA9ICd3aWVk ZXJoZXJnZXN0ZWxsdCc7IHNpY2hlcnVuZyA9ICRzaWNoZXI7IGluaGFsdCA9ICR3aWVkZXJoZXJn ZXN0ZWxsdCB9DQogICAgICAgICAgICAgICAgY29udGludWUNCiAgICAgICAgICAgIH0NCiAgICAg ICAgICAgIGlmICgkUGF0aCAtZXEgJy9hcGkvcGxhbnVuZy9iYWNrdXAvbG9lc2NoZW4nIC1hbmQg JE1ldGhvZCAtZXEgJ1BPU1QnKSB7DQogICAgICAgICAgICAgICAgaWYgKC1ub3QgKFRlc3QtRGFy ZkJlcmVpY2ggJ2JhY2t1cHMnKSkgeyBTZW5kLUVycm9yICRSZXNwb25zZSAnS2VpbmUgQmVyZWNo dGlndW5nIChCYWNrdXBzKScgNDAzOyBjb250aW51ZSB9DQogICAgICAgICAgICAgICAgJGJvZHkg PSBSZWFkLUJvZHkgJFJlcXVlc3QNCiAgICAgICAgICAgICAgICAkZGF0ZW4gPSAkYm9keSB8IENv bnZlcnRGcm9tLUpzb24NCiAgICAgICAgICAgICAgICAkbmFtZSA9ICIkKCRkYXRlbi5kYXRlaW5h bWUpIg0KICAgICAgICAgICAgICAgIGlmICgtbm90ICgkbmFtZSAtbWF0Y2ggJ14oc25hcF98bGVn XylbMC05X2EtekEtWl0rXC5iYWskJykpIHsgU2VuZC1FcnJvciAkUmVzcG9uc2UgJ1VuZ3VlbHRp Z2VyIERhdGVpbmFtZScgNDAwOyBjb250aW51ZSB9DQogICAgICAgICAgICAgICAgJGZwID0gSm9p bi1QYXRoICREYXRhRGlyICgnY2FjaGUvJyArICRuYW1lKQ0KICAgICAgICAgICAgICAgIGlmICgt bm90IChUZXN0LVBhdGggLUxpdGVyYWxQYXRoICRmcCkpIHsgU2VuZC1FcnJvciAkUmVzcG9uc2Ug J0JhY2t1cCBuaWNodCBnZWZ1bmRlbicgNDA0OyBjb250aW51ZSB9DQogICAgICAgICAgICAgICAg UmVtb3ZlLUl0ZW0gLUxpdGVyYWxQYXRoICRmcCAtRm9yY2UNCiAgICAgICAgICAgICAgICBXcml0 ZS1Mb2dFaW50cmFnICdiYWNrdXAuZ2Vsb2VzY2h0JyBAeyBkYXRlaW5hbWUgPSAkbmFtZSB9DQog ICAgICAgICAgICAgICAgU2VuZC1Kc29uT2JqZWN0ICRSZXNwb25zZSBAeyBzdGF0dXMgPSAnZ2Vs b2VzY2h0JyB9DQogICAgICAgICAgICAgICAgY29udGludWUNCiAgICAgICAgICAgIH0NCg0KICAg ICAgICAgICAgIyA9PT09PSBSRVNFVCAvIERVTU1ZREFURU4gPT09PT0NCiAgICAgICAgICAgIGlm ICgkUGF0aCAtZXEgJy9hcGkvcGxhbnVuZy9yZXNldCcgLWFuZCAkTWV0aG9kIC1lcSAnUE9TVCcp IHsNCiAgICAgICAgICAgICAgICBpZiAoLW5vdCAoVGVzdC1Jc3RTdXBlclVzZXIpKSB7IFNlbmQt RXJyb3IgJFJlc3BvbnNlICdOdXIgU3VwZXJVc2VyIGR1ZXJmZW4gZGllIFBsYW51bmcgenVydWVj a3NldHplbicgNDAzOyBjb250aW51ZSB9DQogICAgICAgICAgICAgICAgJHBsYW51bmdQYXRoID0g Sm9pbi1QYXRoICREYXRhRGlyICdwbGFudW5nLmpzb24nDQogICAgICAgICAgICAgICAgJGJhY2t1 cE5hbWUgPSAkbnVsbA0KICAgICAgICAgICAgICAgIGlmIChUZXN0LVBhdGggLUxpdGVyYWxQYXRo ICRwbGFudW5nUGF0aCkgew0KICAgICAgICAgICAgICAgICAgICAkdHMgPSBHZXQtRGF0ZSAtRm9y bWF0ICd5eXl5TU1kZF9ISG1tc3MnDQogICAgICAgICAgICAgICAgICAgICRjYWNoZURpciA9IEpv aW4tUGF0aCAkRGF0YURpciAnY2FjaGUnDQogICAgICAgICAgICAgICAgICAgIGlmICgtbm90IChU ZXN0LVBhdGggLUxpdGVyYWxQYXRoICRjYWNoZURpcikpIHsgTmV3LUl0ZW0gLUl0ZW1UeXBlIERp cmVjdG9yeSAtUGF0aCAkY2FjaGVEaXIgLUZvcmNlIHwgT3V0LU51bGwgfQ0KICAgICAgICAgICAg ICAgICAgICAjIFJlc3RhdXJpZXJiYXJlciBOYW1lIChwbGFudW5nX2JhY2t1cF92b3JfcmVzZXRf Ki5qc29uKSBzdGF0dA0KICAgICAgICAgICAgICAgICAgICAjIC5iYWsgLT4gd2lyZCB2b20gQmFj a3Vwcy1UYWIgZ2VsaXN0ZXQgdW5kIGthbm4gd2llZGVyaGVyZ2VzdGVsbHQNCiAgICAgICAgICAg ICAgICAgICAgIyB3ZXJkZW4uIEZydWVoZXIgenVkZW0gbmljaHQgYW4gZGVuIENsaWVudCB6dXJ1 ZWNrZ2VnZWJlbg0KICAgICAgICAgICAgICAgICAgICAjIC0+ICJCYWNrdXA6IHVuZGVmaW5lZCIg aW4gZGVyIFVJLg0KICAgICAgICAgICAgICAgICAgICAkYmFja3VwTmFtZSA9ICJwbGFudW5nX2Jh Y2t1cF92b3JfcmVzZXRfJHRzLmpzb24iDQogICAgICAgICAgICAgICAgICAgIENvcHktSXRlbSAt TGl0ZXJhbFBhdGggJHBsYW51bmdQYXRoIC1EZXN0aW5hdGlvbiAoSm9pbi1QYXRoICRjYWNoZURp ciAkYmFja3VwTmFtZSkNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgJHBsYW51 bmcgPSBSZWFkLUpzb25PYmplY3QgJ3BsYW51bmcuanNvbicNCiAgICAgICAgICAgICAgICBpZiAo JG51bGwgLW5lICRwbGFudW5nKSB7DQogICAgICAgICAgICAgICAgICAgIGlmICgkcGxhbnVuZy5Q U09iamVjdC5Qcm9wZXJ0aWVzWydlaW50cmFlZ2UnXSkgeyAkcGxhbnVuZy5laW50cmFlZ2UgPSBO ZXctT2JqZWN0IFBTT2JqZWN0IH0NCiAgICAgICAgICAgICAgICAgICAgaWYgKCRwbGFudW5nLlBT T2JqZWN0LlByb3BlcnRpZXNbJ2tvbW1lbnRhcmUnXSkgeyAkcGxhbnVuZy5rb21tZW50YXJlID0g TmV3LU9iamVjdCBQU09iamVjdCB9DQogICAgICAgICAgICAgICAgICAgIFdyaXRlLUpzb25PYmpl Y3QgJ3BsYW51bmcuanNvbicgJHBsYW51bmcgfCBPdXQtTnVsbA0KICAgICAgICAgICAgICAgIH0N CiAgICAgICAgICAgICAgICBXcml0ZS1Mb2dFaW50cmFnICdwbGFudW5nLnJlc2V0JyBAe30NCiAg ICAgICAgICAgICAgICBOZXctSGlud2VpcyAncGxhbnVuZ19yZXNldCcgKFtvcmRlcmVkXUB7DQog ICAgICAgICAgICAgICAgICAgIGhpbndlaXMgPSAnRWludHJhZWdlIHVuZCBLb21tZW50YXJlIHd1 cmRlbiBnZWxvZXNjaHQ7IFNpY2hlcnVuZyBsaWVndCBpbiBkYXRhL2NhY2hlLy4nDQogICAgICAg ICAgICAgICAgfSkgKEdldC1Ba3R1ZWxsZXJCZW51dHplcikgfCBPdXQtTnVsbA0KICAgICAgICAg ICAgICAgIFNlbmQtSnNvbk9iamVjdCAkUmVzcG9uc2UgQHsgc3RhdHVzID0gJ3p1cnVlY2tnZXNl dHp0JzsgYmFja3VwID0gJGJhY2t1cE5hbWUgfQ0KICAgICAgICAgICAgICAgIGNvbnRpbnVlDQog ICAgICAgICAgICB9DQogICAgICAgICAgICBpZiAoJFBhdGggLWVxICcvYXBpL3BsYW51bmcvZHVt bXlkYXRlbicgLWFuZCAkTWV0aG9kIC1lcSAnUE9TVCcpIHsNCiAgICAgICAgICAgICAgICBpZiAo LW5vdCAoVGVzdC1Jc3RTdXBlclVzZXIpKSB7IFNlbmQtRXJyb3IgJFJlc3BvbnNlICdOdXIgU3Vw ZXJVc2VyIGR1ZXJmZW4gRHVtbXlkYXRlbiBlaW5zcGllbGVuJyA0MDM7IGNvbnRpbnVlIH0NCiAg ICAgICAgICAgICAgICBTZW5kLUVycm9yICRSZXNwb25zZSAnRHVtbXlkYXRlbiBudXIgaW0gRGVi dWctU2VydmVyIChkZXYvc2VydmVyLnB5KSBpbXBsZW1lbnRpZXJ0LicgNTAxDQogICAgICAgICAg ICAgICAgY29udGludWUNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgIyBQT1NUIC9hcGkv YWRtaW4vcHJvdG9rb2xsLWxvZXNjaGVuDQogICAgICAgICAgICAjIEVpbm1hbC1SZXNldCBmdWVy IExvZ2J1Y2ggKyBBUEktTG9nLiBTZXR6dCBsb2didWNoLmpzb24gYXVmIFtdLA0KICAgICAgICAg ICAgIyBsb2VzY2h0IGRpZSBBUEktTG9nLURhdGVpIGF1cyAlVEVNUCUsIHVuZCBzY2hyZWlidCBl aW5lbiBlaW56aWdlbg0KICAgICAgICAgICAgIyBuZXVlbiBMb2didWNoLUVpbnRyYWcgKHByb3Rv a29sbC5nZWxvZXNjaHQpLCBkYW1pdCBkYXMgRXJlaWduaXMNCiAgICAgICAgICAgICMgc2VsYnN0 IG5hY2h2b2xsemllaGJhciBibGVpYnQuDQogICAgICAgICAgICBpZiAoJFBhdGggLWVxICcvYXBp L2FkbWluL3Byb3Rva29sbC1sb2VzY2hlbicgLWFuZCAkTWV0aG9kIC1lcSAnUE9TVCcpIHsNCiAg ICAgICAgICAgICAgICBpZiAoLW5vdCAoVGVzdC1Jc3RTdXBlclVzZXIpKSB7IFNlbmQtRXJyb3Ig JFJlc3BvbnNlICdOdXIgU3VwZXJVc2VyIGR1ZXJmZW4gZGFzIFByb3Rva29sbCBsb2VzY2hlbicg NDAzOyBjb250aW51ZSB9DQogICAgICAgICAgICAgICAgJHZvcmhlciA9IFJlYWQtSnNvbk9iamVj dCAnbG9nYnVjaC5qc29uJw0KICAgICAgICAgICAgICAgICRhbnphaGxWb3JoZXIgPSAwDQogICAg ICAgICAgICAgICAgaWYgKCRudWxsIC1uZSAkdm9yaGVyKSB7DQogICAgICAgICAgICAgICAgICAg ICRhbnphaGxWb3JoZXIgPSBAKCR2b3JoZXIpLkNvdW50DQogICAgICAgICAgICAgICAgfQ0KICAg ICAgICAgICAgICAgIFdyaXRlLUpzb25PYmplY3QgJ2xvZ2J1Y2guanNvbicgQCgpIHwgT3V0LU51 bGwNCg0KICAgICAgICAgICAgICAgICRhcGlMb2dCeXRlcyA9IDANCiAgICAgICAgICAgICAgICBp ZiAoVGVzdC1QYXRoIC1MaXRlcmFsUGF0aCAkc2NyaXB0OkFwaUxvZykgew0KICAgICAgICAgICAg ICAgICAgICB0cnkgew0KICAgICAgICAgICAgICAgICAgICAgICAgJGFwaUxvZ0J5dGVzID0gKEdl dC1JdGVtIC1MaXRlcmFsUGF0aCAkc2NyaXB0OkFwaUxvZykuTGVuZ3RoDQogICAgICAgICAgICAg ICAgICAgICAgICBSZW1vdmUtSXRlbSAtTGl0ZXJhbFBhdGggJHNjcmlwdDpBcGlMb2cgLUZvcmNl IC1FcnJvckFjdGlvbiBTdG9wDQogICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggew0KICAgICAg ICAgICAgICAgICAgICAgICAgIyBEYXRlaSBldnRsLiBub2NoIG9mZmVuOyBpZ25vcmllcmVuLCBM b2didWNoIGlzdCBkaWUgd2ljaHRpZ2VyZSBTcHVyDQogICAgICAgICAgICAgICAgICAgICAgICAk YXBpTG9nQnl0ZXMgPSAtMQ0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAg fQ0KDQogICAgICAgICAgICAgICAgV3JpdGUtTG9nRWludHJhZyAncHJvdG9rb2xsLmdlbG9lc2No dCcgQHsNCiAgICAgICAgICAgICAgICAgICAgbG9nYnVjaEVpbnRyYWVnZVZvcmhlciA9ICRhbnph aGxWb3JoZXINCiAgICAgICAgICAgICAgICAgICAgYXBpTG9nQnl0ZXMgICAgICAgICAgICA9ICRh cGlMb2dCeXRlcw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBTZW5kLUpzb25P YmplY3QgJFJlc3BvbnNlIEB7DQogICAgICAgICAgICAgICAgICAgIHN0YXR1cyAgICAgICAgICAg ICAgICAgPSAnZ2Vsb2VzY2h0Jw0KICAgICAgICAgICAgICAgICAgICBsb2didWNoRWludHJhZWdl Vm9yaGVyID0gJGFuemFobFZvcmhlcg0KICAgICAgICAgICAgICAgICAgICBhcGlMb2dCeXRlcyAg ICAgICAgICAgID0gJGFwaUxvZ0J5dGVzDQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAg ICAgIGNvbnRpbnVlDQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICMgPT09PT0gU1RBVElT VElLIC8gTE9HQlVDSCA9PT09PQ0KICAgICAgICAgICAgaWYgKCRQYXRoIC1lcSAnL2FwaS9zdGF0 aXN0aWsnIC1hbmQgJE1ldGhvZCAtZXEgJ0dFVCcpIHsNCiAgICAgICAgICAgICAgICBpZiAoLW5v dCAoVGVzdC1EYXJmQmVyZWljaCAnc3RhdGlzdGlrJykpIHsNCiAgICAgICAgICAgICAgICAgICAg U2VuZC1FcnJvciAkUmVzcG9uc2UgJ0tlaW5lIEJlcmVjaHRpZ3VuZyAoU3RhdGlzdGlrKScgNDAz OyBjb250aW51ZQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAkcGxhbnVuZyA9 IFJlYWQtSnNvbk9iamVjdCAncGxhbnVuZy5qc29uJw0KICAgICAgICAgICAgICAgICRhZG1pbiAg ID0gUmVhZC1Kc29uT2JqZWN0ICdhZG1pbi5qc29uJw0KICAgICAgICAgICAgICAgIFNlbmQtSnNv bk9iamVjdCAkUmVzcG9uc2UgKEdldC1TdGF0aXN0aWtEYXRhICRwbGFudW5nICRhZG1pbikNCiAg ICAgICAgICAgICAgICBjb250aW51ZQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgaWYgKCRQ YXRoIC1lcSAnL2FwaS9sb2didWNoJyAtYW5kICRNZXRob2QgLWVxICdHRVQnKSB7DQogICAgICAg ICAgICAgICAgaWYgKC1ub3QgKFRlc3QtRGFyZkJlcmVpY2ggJ2xvZ2J1Y2gnKSkgew0KICAgICAg ICAgICAgICAgICAgICBTZW5kLUVycm9yICRSZXNwb25zZSAnS2VpbmUgQmVyZWNodGlndW5nIChM b2didWNoKScgNDAzOyBjb250aW51ZQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAg ICBTZW5kLUpzb25UZXh0ICRSZXNwb25zZSAoR2V0LUxvZ2J1Y2hUZXh0KQ0KICAgICAgICAgICAg ICAgIGNvbnRpbnVlDQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICMgPT09PT09PT09PT09 PT09PT09PT09IFpFTEwtTE9DSyArIENIQU5HRVMgKExpdmUtU3luYykgPT09PT09PT09PT09PT09 PT09PT09DQogICAgICAgICAgICAjIFBPU1QgL2FwaS9sb2NrL3plbGxlICB7IGRhdHVtLCBwZXJz b25JZCB9IC0+IHsgb2ssIHRva2VuLCAuLi4gfSBvZGVyIDQyMyB7IHNwZXJyZXIsIC4uLiB9DQog ICAgICAgICAgICBpZiAoJFBhdGggLWVxICcvYXBpL2xvY2svemVsbGUnIC1hbmQgJE1ldGhvZCAt ZXEgJ1BPU1QnKSB7DQogICAgICAgICAgICAgICAgJGJvZHkgPSBSZWFkLUJvZHkgJFJlcXVlc3QN CiAgICAgICAgICAgICAgICBpZiAoLW5vdCAkYm9keSkgeyBTZW5kLUVycm9yICRSZXNwb25zZSAn QW5mcmFnZSB6dSBncm9zcycgNDEzOyBjb250aW51ZSB9DQogICAgICAgICAgICAgICAgJGEgPSAk Ym9keSB8IENvbnZlcnRGcm9tLUpzb24NCiAgICAgICAgICAgICAgICAkZGF0dW0gPSBbc3RyaW5n XSRhLmRhdHVtDQogICAgICAgICAgICAgICAgJHBlcnNvbklkID0gW3N0cmluZ10kYS5wZXJzb25J ZA0KICAgICAgICAgICAgICAgIGlmICgtbm90IChUZXN0LUxvY2tTYWZlRGF0dW0gJGRhdHVtKSAt b3IgLW5vdCAoVGVzdC1Mb2NrU2FmZUlkICRwZXJzb25JZCkpIHsNCiAgICAgICAgICAgICAgICAg ICAgU2VuZC1FcnJvciAkUmVzcG9uc2UgJ1VuZ3VlbHRpZ2UgZGF0dW0vcGVyc29uSWQnIDQwMDsg Y29udGludWUNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgJHVzZXIgPSBHZXQt QWt0dWVsbGVyQmVudXR6ZXINCiAgICAgICAgICAgICAgICAkcm9sbGUgPSAoR2V0LVJlY2h0ZSku cm9sbGUNCiAgICAgICAgICAgICAgICAkcmVzID0gQWNxdWlyZS1DZWxsTG9jayAkZGF0dW0gJHBl cnNvbklkICR1c2VyICRyb2xsZSAkZmFsc2UNCiAgICAgICAgICAgICAgICBpZiAoLW5vdCAkcmVz Lm9rKSB7DQogICAgICAgICAgICAgICAgICAgIFNlbmQtSnNvbk9iamVjdCAkUmVzcG9uc2UgQHsN CiAgICAgICAgICAgICAgICAgICAgICAgIGZlaGxlciAgICA9ICdnZXNwZXJydCcNCiAgICAgICAg ICAgICAgICAgICAgICAgIG1lbGR1bmcgICA9ICJXaXJkIGJlYXJiZWl0ZXQgdm9uICQoJHJlcy5l eGlzdGluZy51c2VybmFtZSkiDQogICAgICAgICAgICAgICAgICAgICAgICBzcGVycmVyICAgPSAk cmVzLmV4aXN0aW5nLnVzZXJuYW1lDQogICAgICAgICAgICAgICAgICAgICAgICByb2xsZSAgICAg PSAkcmVzLmV4aXN0aW5nLnJvbGxlDQogICAgICAgICAgICAgICAgICAgICAgICBzZWl0ICAgICAg PSAkcmVzLmV4aXN0aW5nLmxvY2tlZEF0DQogICAgICAgICAgICAgICAgICAgICAgICBrYW5uRm9y Y2UgPSAoVGVzdC1EYXJmTG9ja1VlYmVyc2NocmVpYmVuKQ0KICAgICAgICAgICAgICAgICAgICB9 IDQyMw0KICAgICAgICAgICAgICAgICAgICBjb250aW51ZQ0KICAgICAgICAgICAgICAgIH0NCiAg ICAgICAgICAgICAgICBTZW5kLUpzb25PYmplY3QgJFJlc3BvbnNlIEB7DQogICAgICAgICAgICAg ICAgICAgIG9rICAgICAgID0gJHRydWUNCiAgICAgICAgICAgICAgICAgICAgdG9rZW4gICAgPSAk cmVzLmxvY2sudG9rZW4NCiAgICAgICAgICAgICAgICAgICAgZGF0dW0gICAgPSAkZGF0dW0NCiAg ICAgICAgICAgICAgICAgICAgcGVyc29uSWQgPSAkcGVyc29uSWQNCiAgICAgICAgICAgICAgICAg ICAgcm9sbGUgICAgPSAkcm9sbGUNCiAgICAgICAgICAgICAgICAgICAgbG9ja2VkQXQgPSAkcmVz LmxvY2subG9ja2VkQXQNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgY29udGlu dWUNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgIyBQT1NUIC9hcGkvbG9jay96ZWxsZS9m b3JjZSAgeyBkYXR1bSwgcGVyc29uSWQgfSAtPiB1ZWJlcnNjaHJlaWJ0IGZyZW1kZW4gTG9jaw0K ICAgICAgICAgICAgaWYgKCRQYXRoIC1lcSAnL2FwaS9sb2NrL3plbGxlL2ZvcmNlJyAtYW5kICRN ZXRob2QgLWVxICdQT1NUJykgew0KICAgICAgICAgICAgICAgIGlmICgtbm90IChUZXN0LURhcmZM b2NrVWViZXJzY2hyZWliZW4pKSB7DQogICAgICAgICAgICAgICAgICAgIFNlbmQtRXJyb3IgJFJl c3BvbnNlICdGb3JjZS1Mb2NrIG51ciBmdWVyIEZhY2hhdWZzaWNodC9TdXBlclVzZXInIDQwMzsg Y29udGludWUNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgJGJvZHkgPSBSZWFk LUJvZHkgJFJlcXVlc3QNCiAgICAgICAgICAgICAgICBpZiAoLW5vdCAkYm9keSkgeyBTZW5kLUVy cm9yICRSZXNwb25zZSAnQW5mcmFnZSB6dSBncm9zcycgNDEzOyBjb250aW51ZSB9DQogICAgICAg ICAgICAgICAgJGEgPSAkYm9keSB8IENvbnZlcnRGcm9tLUpzb24NCiAgICAgICAgICAgICAgICAk ZGF0dW0gPSBbc3RyaW5nXSRhLmRhdHVtDQogICAgICAgICAgICAgICAgJHBlcnNvbklkID0gW3N0 cmluZ10kYS5wZXJzb25JZA0KICAgICAgICAgICAgICAgIGlmICgtbm90IChUZXN0LUxvY2tTYWZl RGF0dW0gJGRhdHVtKSAtb3IgLW5vdCAoVGVzdC1Mb2NrU2FmZUlkICRwZXJzb25JZCkpIHsNCiAg ICAgICAgICAgICAgICAgICAgU2VuZC1FcnJvciAkUmVzcG9uc2UgJ1VuZ3VlbHRpZ2UgZGF0dW0v cGVyc29uSWQnIDQwMDsgY29udGludWUNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAg ICAgJHVzZXIgPSBHZXQtQWt0dWVsbGVyQmVudXR6ZXINCiAgICAgICAgICAgICAgICAkcm9sbGUg PSAoR2V0LVJlY2h0ZSkucm9sbGUNCiAgICAgICAgICAgICAgICAkcmVzID0gQWNxdWlyZS1DZWxs TG9jayAkZGF0dW0gJHBlcnNvbklkICR1c2VyICRyb2xsZSAkdHJ1ZQ0KICAgICAgICAgICAgICAg IFdyaXRlLUxvZ0VpbnRyYWcgJ2xvY2suZm9yY2UnIEB7IGRhdHVtID0gJGRhdHVtOyBwZXJzb25J ZCA9ICRwZXJzb25JZDsgcm9sbGUgPSAkcm9sbGUgfQ0KICAgICAgICAgICAgICAgIFNlbmQtSnNv bk9iamVjdCAkUmVzcG9uc2UgQHsNCiAgICAgICAgICAgICAgICAgICAgb2sgICAgICAgPSAkdHJ1 ZQ0KICAgICAgICAgICAgICAgICAgICB0b2tlbiAgICA9ICRyZXMubG9jay50b2tlbg0KICAgICAg ICAgICAgICAgICAgICBkYXR1bSAgICA9ICRkYXR1bQ0KICAgICAgICAgICAgICAgICAgICBwZXJz b25JZCA9ICRwZXJzb25JZA0KICAgICAgICAgICAgICAgICAgICByb2xsZSAgICA9ICRyb2xsZQ0K ICAgICAgICAgICAgICAgICAgICBsb2NrZWRBdCA9ICRyZXMubG9jay5sb2NrZWRBdA0KICAgICAg ICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBjb250aW51ZQ0KICAgICAgICAgICAgfQ0KDQog ICAgICAgICAgICAjIFBPU1QgL2FwaS9sb2NrL3plbGxlL2hlYXJ0YmVhdCAgeyB0b2tlbiB9IC0+ IGFrdHVhbGlzaWVydCBsYXN0QmVhdA0KICAgICAgICAgICAgaWYgKCRQYXRoIC1lcSAnL2FwaS9s b2NrL3plbGxlL2hlYXJ0YmVhdCcgLWFuZCAkTWV0aG9kIC1lcSAnUE9TVCcpIHsNCiAgICAgICAg ICAgICAgICAkYm9keSA9IFJlYWQtQm9keSAkUmVxdWVzdA0KICAgICAgICAgICAgICAgIGlmICgt bm90ICRib2R5KSB7IFNlbmQtRXJyb3IgJFJlc3BvbnNlICdBbmZyYWdlIHp1IGdyb3NzJyA0MTM7 IGNvbnRpbnVlIH0NCiAgICAgICAgICAgICAgICAkYSA9ICRib2R5IHwgQ29udmVydEZyb20tSnNv bg0KICAgICAgICAgICAgICAgICR0b2tlbiA9IGlmICgkYS5QU09iamVjdC5Qcm9wZXJ0aWVzWyd0 b2tlbiddKSB7IFtzdHJpbmddJGEudG9rZW4gfSBlbHNlIHsgJycgfQ0KICAgICAgICAgICAgICAg IGlmIChbc3RyaW5nXTo6SXNOdWxsT3JXaGl0ZVNwYWNlKCR0b2tlbikpIHsgU2VuZC1FcnJvciAk UmVzcG9uc2UgJ1Rva2VuIGZlaGx0JyA0MDA7IGNvbnRpbnVlIH0NCiAgICAgICAgICAgICAgICAk cmVzID0gUmVmcmVzaC1DZWxsTG9jayAkdG9rZW4NCiAgICAgICAgICAgICAgICBpZiAoLW5vdCAk cmVzLm9rKSB7DQogICAgICAgICAgICAgICAgICAgIFNlbmQtSnNvbk9iamVjdCAkUmVzcG9uc2Ug QHsgZmVobGVyID0gJ3VuYmVrYW5udGVyX2xvY2snOyBtZWxkdW5nID0gJ0xvY2sgZXhpc3RpZXJ0 IG5pY2h0IChtZWhyKS4nIH0gNDA0DQogICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlDQogICAg ICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIFNlbmQtSnNvbk9iamVjdCAkUmVzcG9uc2Ug QHsgb2sgPSAkdHJ1ZTsgbGFzdEJlYXQgPSAkcmVzLmxvY2subGFzdEJlYXQgfQ0KICAgICAgICAg ICAgICAgIGNvbnRpbnVlDQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICMgREVMRVRFIC9h cGkvbG9jay96ZWxsZSAgeyB0b2tlbiB9IC0+IExvY2sgZnJlaWdlYmVuIChhdWNoIHZpYSBRdWVy eS1TdHJpbmcgZnVlciBzZW5kQmVhY29uKQ0KICAgICAgICAgICAgaWYgKCRQYXRoIC1lcSAnL2Fw aS9sb2NrL3plbGxlJyAtYW5kICRNZXRob2QgLWVxICdERUxFVEUnKSB7DQogICAgICAgICAgICAg ICAgJGJvZHkgPSBSZWFkLUJvZHkgJFJlcXVlc3QNCiAgICAgICAgICAgICAgICAkdG9rZW4gPSAk bnVsbA0KICAgICAgICAgICAgICAgIGlmICgkYm9keSkgew0KICAgICAgICAgICAgICAgICAgICB0 cnkgeyAkYSA9ICRib2R5IHwgQ29udmVydEZyb20tSnNvbjsgaWYgKCRhLlBTT2JqZWN0LlByb3Bl cnRpZXNbJ3Rva2VuJ10pIHsgJHRva2VuID0gW3N0cmluZ10kYS50b2tlbiB9IH0gY2F0Y2gge30N CiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgaWYgKFtzdHJpbmddOjpJc051bGxP cldoaXRlU3BhY2UoJHRva2VuKSAtYW5kICRSZXF1ZXN0LlVybC5RdWVyeSkgew0KICAgICAgICAg ICAgICAgICAgICAkcSA9IFtTeXN0ZW0uV2ViLkh0dHBVdGlsaXR5XTo6UGFyc2VRdWVyeVN0cmlu ZygkUmVxdWVzdC5VcmwuUXVlcnkpDQogICAgICAgICAgICAgICAgICAgICR0b2tlbiA9IFtzdHJp bmddJHFbJ3Rva2VuJ10NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgaWYgKFtz dHJpbmddOjpJc051bGxPcldoaXRlU3BhY2UoJHRva2VuKSkgeyBTZW5kLUVycm9yICRSZXNwb25z ZSAnVG9rZW4gZmVobHQnIDQwMDsgY29udGludWUgfQ0KICAgICAgICAgICAgICAgICRyZXMgPSBS ZWxlYXNlLUNlbGxMb2NrICR0b2tlbg0KICAgICAgICAgICAgICAgIFNlbmQtSnNvbk9iamVjdCAk UmVzcG9uc2UgQHsgb2sgPSAkcmVzLm9rIH0NCiAgICAgICAgICAgICAgICBjb250aW51ZQ0KICAg ICAgICAgICAgfQ0KDQogICAgICAgICAgICAjIEdFVCAvYXBpL2xvY2svemVsbGVuIC0+IExpc3Rl IGFsbGVyIGFrdGl2ZW4gTG9ja3MgKGZ1ZXIgTGl2ZS1JbmRpY2F0b3IpDQogICAgICAgICAgICBp ZiAoJFBhdGggLWVxICcvYXBpL2xvY2svemVsbGVuJyAtYW5kICRNZXRob2QgLWVxICdHRVQnKSB7 DQogICAgICAgICAgICAgICAgU2VuZC1Kc29uT2JqZWN0ICRSZXNwb25zZSBAeyBsb2NrcyA9IChH ZXQtQWxsQWN0aXZlQ2VsbExvY2tzKSB9DQogICAgICAgICAgICAgICAgY29udGludWUNCiAgICAg ICAgICAgIH0NCg0KICAgICAgICAgICAgIyBQT1NUIC9hcGkvdmVyYW50d29ydHVuZy9hdWZnZXJ1 ZWNrdCDigJQgU3RhdGlzdGlrLUNhcHR1cmUgZnVlciBkZW4NCiAgICAgICAgICAgICMgIkVpbmdl c3BydW5nZW4iLUJhbGtlbiBpbiBkZXIgU2NoaWNodHZlcnRlaWx1bmcuIFdpcmQgdm9tIENsaWVu dA0KICAgICAgICAgICAgIyBnZWZldWVydCwgc29iYWxkIGplbWFuZCBpbm5lcmhhbGIgZGVyIDE0 LVRhZ2UtVmVyYmluZGxpY2hrZWl0IG5ldQ0KICAgICAgICAgICAgIyBpbiBkaWUgVG9wLTIgKDEu LzIuIFZJMy1ER0wpIGVpbmVyIFNjaGljaHQgYXVmcnVlY2t0IOKAlCBhbHNvDQogICAgICAgICAg ICAjIGF1c3NlcnBsYW5tYWVzc2lnIFZlcmFudHdvcnR1bmcgdWViZXJuaW1tdC4NCiAgICAgICAg ICAgICMgQm9keTogeyBwZXJzb25JZCwgZGF0dW0sIHNjaGljaHQsIHN0dWZlLCB2b3JoZXJXZXJ0 LCBhdXNsb2VzZXJQZXJzb25JZCB9DQogICAgICAgICAgICBpZiAoJFBhdGggLWVxICcvYXBpL3Zl cmFudHdvcnR1bmcvYXVmZ2VydWVja3QnIC1hbmQgJE1ldGhvZCAtZXEgJ1BPU1QnKSB7DQogICAg ICAgICAgICAgICAgJGJvZHkgPSBSZWFkLUJvZHkgJFJlcXVlc3QNCiAgICAgICAgICAgICAgICBp ZiAoLW5vdCAkYm9keSkgeyBTZW5kLUVycm9yICRSZXNwb25zZSAnQW5mcmFnZSB6dSBncm9zcycg NDEzOyBjb250aW51ZSB9DQogICAgICAgICAgICAgICAgdHJ5IHsgJGEgPSAkYm9keSB8IENvbnZl cnRGcm9tLUpzb24gfSBjYXRjaCB7IFNlbmQtRXJyb3IgJFJlc3BvbnNlICdVbmd1ZWx0aWdlcyBK U09OJyA0MDA7IGNvbnRpbnVlIH0NCiAgICAgICAgICAgICAgICAkcGlkID0gaWYgKCRhLlBTT2Jq ZWN0LlByb3BlcnRpZXNbJ3BlcnNvbklkJ10pIHsgW3N0cmluZ10kYS5wZXJzb25JZCB9IGVsc2Ug eyAnJyB9DQogICAgICAgICAgICAgICAgJGRhdCA9IGlmICgkYS5QU09iamVjdC5Qcm9wZXJ0aWVz WydkYXR1bSddKSB7IFtzdHJpbmddJGEuZGF0dW0gfSBlbHNlIHsgJycgfQ0KICAgICAgICAgICAg ICAgIGlmICgtbm90ICRwaWQgLW9yIC1ub3QgJGRhdCkgeyBTZW5kLUVycm9yICRSZXNwb25zZSAn cGVyc29uSWQvZGF0dW0gZmVobHQnIDQwMDsgY29udGludWUgfQ0KICAgICAgICAgICAgICAgICRm ZWxkZXIgPSBbb3JkZXJlZF1Aew0KICAgICAgICAgICAgICAgICAgICBwZXJzb25JZCAgID0gJHBp ZA0KICAgICAgICAgICAgICAgICAgICBkYXR1bSAgICAgID0gJGRhdA0KICAgICAgICAgICAgICAg ICAgICBzY2hpY2h0ICAgID0gaWYgKCRhLlBTT2JqZWN0LlByb3BlcnRpZXNbJ3NjaGljaHQnXSkg eyBbc3RyaW5nXSRhLnNjaGljaHQgfSBlbHNlIHsgJycgfQ0KICAgICAgICAgICAgICAgICAgICBz dHVmZSAgICAgID0gaWYgKCRhLlBTT2JqZWN0LlByb3BlcnRpZXNbJ3N0dWZlJ10pIHsgW2ludF0k YS5zdHVmZSB9IGVsc2UgeyAwIH0NCiAgICAgICAgICAgICAgICAgICAgdm9yaGVyV2VydCA9IGlm ICgkYS5QU09iamVjdC5Qcm9wZXJ0aWVzWyd2b3JoZXJXZXJ0J10pIHsgW3N0cmluZ10kYS52b3Jo ZXJXZXJ0IH0gZWxzZSB7ICcnIH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAg aWYgKCRhLlBTT2JqZWN0LlByb3BlcnRpZXNbJ2F1c2xvZXNlclBlcnNvbklkJ10pIHsNCiAgICAg ICAgICAgICAgICAgICAgJGZlbGRlclsnYXVzbG9lc2VyUGVyc29uSWQnXSA9IFtzdHJpbmddJGEu YXVzbG9lc2VyUGVyc29uSWQNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgV3Jp dGUtTG9nRWludHJhZyAndmVyYW50d29ydHVuZy5laW5nZXNwcnVuZ2VuJyAkZmVsZGVyDQogICAg ICAgICAgICAgICAgU2VuZC1Kc29uT2JqZWN0ICRSZXNwb25zZSBAeyBvayA9ICR0cnVlIH0NCiAg ICAgICAgICAgICAgICBjb250aW51ZQ0KICAgICAgICAgICAgfQ0KDQoNCiAgICAgICAgICAgICMg R0VUIC9hcGkvcGxhbnVuZy9jaGFuZ2VzP3NlaXQ9PGlzby10cz4gLT4gRGVsdGEtTGlzdGUgZnVl ciBMaXZlLVN5bmMNCiAgICAgICAgICAgIGlmICgkUGF0aCAtZXEgJy9hcGkvcGxhbnVuZy9jaGFu Z2VzJyAtYW5kICRNZXRob2QgLWVxICdHRVQnKSB7DQogICAgICAgICAgICAgICAgJHEgPSBbU3lz dGVtLldlYi5IdHRwVXRpbGl0eV06OlBhcnNlUXVlcnlTdHJpbmcoJFJlcXVlc3QuVXJsLlF1ZXJ5 KQ0KICAgICAgICAgICAgICAgICRsb2cgPSBSZWFkLUpzb25PYmplY3QgJ2NoYW5nZXMuanNvbicN CiAgICAgICAgICAgICAgICBpZiAoJG51bGwgLWVxICRsb2cgLW9yIC1ub3QgKCRsb2cgLWlzIFth cnJheV0pKSB7ICRsb2cgPSBAKCkgfQ0KICAgICAgICAgICAgICAgICRtYXhTZXEgPSBHZXQtTWF4 Q2hhbmdlU2VxICRsb2cNCiAgICAgICAgICAgICAgICBpZiAoJHEuQWxsS2V5cyAtY29udGFpbnMg J3NlaXRfc2VxJykgew0KICAgICAgICAgICAgICAgICAgICAjIE5ldWVyIHJhY2UtZnJlaWVyIHNl cS1DdXJzb3IgKENoYW5nZXMgKyBzZXJ2ZXJTZXEgYXVzDQogICAgICAgICAgICAgICAgICAgICMg REVNU0VMQkVOIFJlYWQpLiBMZWVyZXIgc2VpdF9zZXEgPSBFcnN0LVN5bmMgLT4gbnVyIEN1cnNv ci4NCiAgICAgICAgICAgICAgICAgICAgJHJhdyA9IFtzdHJpbmddJHFbJ3NlaXRfc2VxJ10NCiAg ICAgICAgICAgICAgICAgICAgaWYgKFtzdHJpbmddOjpJc051bGxPckVtcHR5KCRyYXcpKSB7DQog ICAgICAgICAgICAgICAgICAgICAgICAkY2hhbmdlcyA9IEAoKQ0KICAgICAgICAgICAgICAgICAg ICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICAgICAgJHNxID0gMDsgW3ZvaWRdW2ludF06 OlRyeVBhcnNlKCRyYXcsIFtyZWZdJHNxKQ0KICAgICAgICAgICAgICAgICAgICAgICAgJGNoYW5n ZXMgPSBAKCRsb2cgfCBXaGVyZS1PYmplY3QgeyAkbnVsbCAtbmUgJF8uc2VxIC1hbmQgW2ludF0k Xy5zZXEgLWd0ICRzcSB9KQ0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAg ICAgIFNlbmQtSnNvbk9iamVjdCAkUmVzcG9uc2UgQHsNCiAgICAgICAgICAgICAgICAgICAgICAg IHNlcnZlclRzICA9IChHZXQtRGF0ZSkuVG9Vbml2ZXJzYWxUaW1lKCkuVG9TdHJpbmcoJ28nKQ0K ICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyU2VxID0gJG1heFNlcQ0KICAgICAgICAgICAg ICAgICAgICAgICAgY2hhbmdlcyAgID0gW29iamVjdFtdXSRjaGFuZ2VzDQogICAgICAgICAgICAg ICAgICAgIH0NCiAgICAgICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICAj IEJhY2t3YXJkLWNvbXBhdDogYWx0ZXIgV2FsbC1DbG9jay1DdXJzb3IgKGFsdGUgQ2xpZW50cyku DQogICAgICAgICAgICAgICAgICAgICRzZWl0ID0gW3N0cmluZ10kcVsnc2VpdCddDQogICAgICAg ICAgICAgICAgICAgIFNlbmQtSnNvbk9iamVjdCAkUmVzcG9uc2UgQHsNCiAgICAgICAgICAgICAg ICAgICAgICAgIHNlcnZlclRzICA9IChHZXQtRGF0ZSkuVG9Vbml2ZXJzYWxUaW1lKCkuVG9TdHJp bmcoJ28nKQ0KICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyU2VxID0gJG1heFNlcQ0KICAg ICAgICAgICAgICAgICAgICAgICAgY2hhbmdlcyAgID0gKEdldC1DaGFuZ2VzU2luY2UgJHNlaXQp DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAg ICAgY29udGludWUNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgIyA9PT09PSBQcm9maWxi aWxkZXIgKEF2YXRhcmUpID09PT09DQogICAgICAgICAgICAjIERhdGVpOiAkRGF0YURpci9hdmF0 YXJzLzxpZD4uanBnICAgKEpQRUcsIHZvbSBDbGllbnQgYXVmIDIwMHgyMDANCiAgICAgICAgICAg ICMgaGVydW50ZXJnZXJlY2huZXQsIHVlYmxpY2ggNS0yNSBLQikuDQogICAgICAgICAgICAjDQog ICAgICAgICAgICAjIEJlcmVjaHRpZ3VuZzoNCiAgICAgICAgICAgICMgICBQT1NUL0RFTEVURTog U1UvRkEgT0RFUiBlaWdlbmUgUGVyc29uSWQgKFNlbGYtU2VydmljZSkuDQogICAgICAgICAgICAj ICAgR0VUOiAgICAgICAgIGFsbGUgZWluZ2Vsb2dndGVuIFVzZXIgKGltIEdyaWQgc2ljaHRiYXIp Lg0KICAgICAgICAgICAgIw0KICAgICAgICAgICAgIyBQT1NULUJvZHk6IHsgImRhdGFVcmwiOiAi ZGF0YTppbWFnZS9qcGVnO2Jhc2U2NCw8Li4uPiIgfQ0KICAgICAgICAgICAgIyAyNTAgS0IgaGFy dGVyIENhcCAoZGVmZW5zaXYg4oCUIENsaWVudCBzY2hpY2t0IHR5cGlzY2ggPDMwIEtCKS4NCiAg ICAgICAgICAgIGlmICgkUGF0aCAtbWF0Y2ggJ14vYXBpL3BlcnNvbmVuLyhcZCspL2F2YXRhciQn KSB7DQogICAgICAgICAgICAgICAgJHBlcnNvbklkID0gJG1hdGNoZXNbMV0NCiAgICAgICAgICAg ICAgICAkciA9IEdldC1SZWNodGUNCiAgICAgICAgICAgICAgICAkaXN0RWlnZW4gPSAoJG51bGwg LW5lICRyLm1laW5lUGVyc29uSWQgLWFuZCBbaW50XSRwZXJzb25JZCAtZXEgW2ludF0kci5tZWlu ZVBlcnNvbklkKQ0KICAgICAgICAgICAgICAgICRpc3RCZXJlY2h0aWd0ID0gKFRlc3QtSXN0QWRt aW4pIC1vciAkaXN0RWlnZW4NCiAgICAgICAgICAgICAgICAkYXZhdGFyRGlyID0gSm9pbi1QYXRo ICREYXRhRGlyICdhdmF0YXJzJw0KICAgICAgICAgICAgICAgIGlmICgtbm90IChUZXN0LVBhdGgg LUxpdGVyYWxQYXRoICRhdmF0YXJEaXIpKSB7DQogICAgICAgICAgICAgICAgICAgIHRyeSB7IE5l dy1JdGVtIC1JdGVtVHlwZSBEaXJlY3RvcnkgLVBhdGggJGF2YXRhckRpciAtRm9yY2UgfCBPdXQt TnVsbCB9IGNhdGNoIHt9DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICRhdmF0 YXJGaWxlID0gSm9pbi1QYXRoICRhdmF0YXJEaXIgKCRwZXJzb25JZCArICcuanBnJykNCiAgICAg ICAgICAgICAgICBpZiAoJE1ldGhvZCAtZXEgJ1BPU1QnKSB7DQogICAgICAgICAgICAgICAgICAg IGlmICgtbm90ICRpc3RCZXJlY2h0aWd0KSB7IFNlbmQtRXJyb3IgJFJlc3BvbnNlICdLZWluZSBC ZXJlY2h0aWd1bmcnIDQwMzsgY29udGludWUgfQ0KICAgICAgICAgICAgICAgICAgICAkYm9keSA9 IFJlYWQtQm9keSAkUmVxdWVzdA0KICAgICAgICAgICAgICAgICAgICBpZiAoLW5vdCAkYm9keSkg eyBTZW5kLUVycm9yICRSZXNwb25zZSAnQW5mcmFnZSB6dSBncm9zcycgNDEzOyBjb250aW51ZSB9 DQogICAgICAgICAgICAgICAgICAgIHRyeSB7DQogICAgICAgICAgICAgICAgICAgICAgICAkb2Jq ID0gJGJvZHkgfCBDb252ZXJ0RnJvbS1Kc29uDQogICAgICAgICAgICAgICAgICAgICAgICAkZGF0 YVVybCA9IFtzdHJpbmddJG9iai5kYXRhVXJsDQogICAgICAgICAgICAgICAgICAgICAgICBpZiAo LW5vdCAkZGF0YVVybCAtb3IgLW5vdCAkZGF0YVVybC5TdGFydHNXaXRoKCdkYXRhOmltYWdlLycp KSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VuZC1FcnJvciAkUmVzcG9uc2UgJ1Vu Z3VlbHRpZ2VzIEJpbGRmb3JtYXQgKGVyd2FydGUgZGF0YTppbWFnZS8uLi47YmFzZTY0LC4uLikn IDQwMDsgY29udGludWUNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAg ICAgICAgICAgICRiYXNlNjQgPSAkZGF0YVVybCAtcmVwbGFjZSAnXmRhdGE6aW1hZ2UvW2EtekEt Wl0rO2Jhc2U2NCwnLCAnJw0KICAgICAgICAgICAgICAgICAgICAgICAgJGJ5dGVzID0gW1N5c3Rl bS5Db252ZXJ0XTo6RnJvbUJhc2U2NFN0cmluZygkYmFzZTY0KQ0KICAgICAgICAgICAgICAgICAg ICAgICAgaWYgKCRieXRlcy5MZW5ndGggLWd0IDI2MjE0NCkgeyBTZW5kLUVycm9yICRSZXNwb25z ZSAnQmlsZCB6dSBncm9zcyAobWF4IDI1MCBLQiknIDQxMzsgY29udGludWUgfQ0KICAgICAgICAg ICAgICAgICAgICAgICAgW1N5c3RlbS5JTy5GaWxlXTo6V3JpdGVBbGxCeXRlcygkYXZhdGFyRmls ZSwgJGJ5dGVzKQ0KICAgICAgICAgICAgICAgICAgICAgICAgIyBhdmF0YXJUcyBpbiBwbGFudW5n Lmpzb24gc2V0emVuLCBkYW1pdCBkZXIgQ2FjaGUtQnVzdGVyDQogICAgICAgICAgICAgICAgICAg ICAgICAjIG5hY2ggUmVsb2FkIGJla2FubnQgaXN0IChDbGllbnQgaGFlbmd0ID90cz08YXZhdGFy VHM+DQogICAgICAgICAgICAgICAgICAgICAgICAjIGFuIGRpZSBCaWxkLVVSTCkuDQogICAgICAg ICAgICAgICAgICAgICAgICAkdHMgPSBbbG9uZ10oW0RhdGVUaW1lT2Zmc2V0XTo6VXRjTm93LlRv VW5peFRpbWVNaWxsaXNlY29uZHMoKSkNCiAgICAgICAgICAgICAgICAgICAgICAgIEludm9rZS1X aXRoRmlsZUxvY2sgJ3BsYW51bmcuanNvbicgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAg ICRwbGFudW5nID0gUmVhZC1Kc29uT2JqZWN0ICdwbGFudW5nLmpzb24nDQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgaWYgKCRudWxsIC1uZSAkcGxhbnVuZyAtYW5kICRwbGFudW5nLnBlcnNv bmVuKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRwIGluICRw bGFudW5nLnBlcnNvbmVuKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp ZiAoW3N0cmluZ10kcC5pZCAtZXEgW3N0cmluZ10kcGVyc29uSWQpIHsNCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHAuUFNPYmplY3QuUHJvcGVydGllc1snYXZh dGFyVHMnXSkgeyAkcC5hdmF0YXJUcyA9ICR0cyB9DQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZWxzZSB7ICRwIHwgQWRkLU1lbWJlciAtTm90ZVByb3BlcnR5TmFtZSAn YXZhdGFyVHMnIC1Ob3RlUHJvcGVydHlWYWx1ZSAkdHMgLUZvcmNlIH0NCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaw0KICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFdyaXRlLUpzb25PYmplY3QgJ3BsYW51bmcuanNvbicg JHBsYW51bmcgfCBPdXQtTnVsbA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAg ICAgICAgICAgICAgICAgICAgIH0gfCBPdXQtTnVsbA0KICAgICAgICAgICAgICAgICAgICAgICAg V3JpdGUtTG9nRWludHJhZyAnYXZhdGFyLmdlc2V0enQnIEB7IHBlcnNvbklkID0gJHBlcnNvbklk OyBieXRlcyA9ICRieXRlcy5MZW5ndGggfQ0KICAgICAgICAgICAgICAgICAgICAgICAgU2VuZC1K c29uT2JqZWN0ICRSZXNwb25zZSBAeyBzdGF0dXMgPSAnZ2VzcGVpY2hlcnQnOyBieXRlcyA9ICRi eXRlcy5MZW5ndGg7IGF2YXRhclRzID0gJHRzIH0NCiAgICAgICAgICAgICAgICAgICAgfSBjYXRj aCB7DQogICAgICAgICAgICAgICAgICAgICAgICBTZW5kLUVycm9yICRSZXNwb25zZSAoIkF2YXRh ci1VcGxvYWQgZmVobGdlc2NobGFnZW46ICIgKyAkXy5FeGNlcHRpb24uTWVzc2FnZSkgNTAwDQog ICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgY29udGludWUNCiAgICAg ICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgaWYgKCRNZXRob2QgLWVxICdERUxFVEUnKSB7 DQogICAgICAgICAgICAgICAgICAgIGlmICgtbm90ICRpc3RCZXJlY2h0aWd0KSB7IFNlbmQtRXJy b3IgJFJlc3BvbnNlICdLZWluZSBCZXJlY2h0aWd1bmcnIDQwMzsgY29udGludWUgfQ0KICAgICAg ICAgICAgICAgICAgICB0cnkgew0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFRlc3QtUGF0 aCAtTGl0ZXJhbFBhdGggJGF2YXRhckZpbGUpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICBSZW1vdmUtSXRlbSAtTGl0ZXJhbFBhdGggJGF2YXRhckZpbGUgLUZvcmNlIC1FcnJvckFjdGlv biBTaWxlbnRseUNvbnRpbnVlDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgV3JpdGUtTG9n RWludHJhZyAnYXZhdGFyLmVudGZlcm50JyBAeyBwZXJzb25JZCA9ICRwZXJzb25JZCB9DQogICAg ICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICBJbnZva2UtV2l0 aEZpbGVMb2NrICdwbGFudW5nLmpzb24nIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAk cGxhbnVuZyA9IFJlYWQtSnNvbk9iamVjdCAncGxhbnVuZy5qc29uJw0KICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGlmICgkbnVsbCAtbmUgJHBsYW51bmcgLWFuZCAkcGxhbnVuZy5wZXJzb25l bikgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JlYWNoICgkcCBpbiAkcGxh bnVuZy5wZXJzb25lbikgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYg KFtzdHJpbmddJHAuaWQgLWVxIFtzdHJpbmddJHBlcnNvbklkIC1hbmQgJHAuUFNPYmplY3QuUHJv cGVydGllc1snYXZhdGFyVHMnXSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICRwLlBTT2JqZWN0LlByb3BlcnRpZXMuUmVtb3ZlKCdhdmF0YXJUcycpDQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsNCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0K ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXcml0ZS1Kc29uT2JqZWN0ICdwbGFudW5n Lmpzb24nICRwbGFudW5nIHwgT3V0LU51bGwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9 DQogICAgICAgICAgICAgICAgICAgICAgICB9IHwgT3V0LU51bGwNCiAgICAgICAgICAgICAgICAg ICAgICAgIFNlbmQtSnNvbk9iamVjdCAkUmVzcG9uc2UgQHsgc3RhdHVzID0gJ2dlbG9lc2NodCcg fQ0KICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIHsNCiAgICAgICAgICAgICAgICAgICAgICAg IFNlbmQtRXJyb3IgJFJlc3BvbnNlICgiQXZhdGFyLUxvZXNjaGVuIGZlaGxnZXNjaGxhZ2VuOiAi ICsgJF8uRXhjZXB0aW9uLk1lc3NhZ2UpIDUwMA0KICAgICAgICAgICAgICAgICAgICB9DQogICAg ICAgICAgICAgICAgICAgIGNvbnRpbnVlDQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAg fQ0KICAgICAgICAgICAgIyBBdmF0YXItU3RhdGljLVNlcnZpbmc6IC9kYXRhL2F2YXRhcnMvPGlk Pi5qcGcgbGllc3QgZGlyZWt0IGF1cw0KICAgICAgICAgICAgIyAkRGF0YURpci9hdmF0YXJzLy4g QmV3dXNzdCBlaWdlbmVyIFBmYWQgc3RhdHQgdWViZXIgUmVzb2x2ZS0NCiAgICAgICAgICAgICMg U2FmZVBhdGgsIHdlaWwgZG9ydCBkZXIgQXNzZXQtQ2FjaGUtUm9vdCBnZW51dHp0IHdpcmQgKEF2 YXRhcmUNCiAgICAgICAgICAgICMgbGllZ2VuIGFiZXIgdW50ZXIgRGF0YURpcikuDQogICAgICAg ICAgICBpZiAoJFBhdGggLW1hdGNoICdeL2RhdGEvYXZhdGFycy8oXGQrKVwuanBnJCcgLWFuZCAk TWV0aG9kIC1lcSAnR0VUJykgew0KICAgICAgICAgICAgICAgICRhdmF0YXJGaWxlID0gSm9pbi1Q YXRoIChKb2luLVBhdGggJERhdGFEaXIgJ2F2YXRhcnMnKSAoJG1hdGNoZXNbMV0gKyAnLmpwZycp DQogICAgICAgICAgICAgICAgaWYgKFRlc3QtUGF0aCAtTGl0ZXJhbFBhdGggJGF2YXRhckZpbGUg LVBhdGhUeXBlIExlYWYpIHsNCiAgICAgICAgICAgICAgICAgICAgJGNvbnRlbnQgPSBbU3lzdGVt LklPLkZpbGVdOjpSZWFkQWxsQnl0ZXMoJGF2YXRhckZpbGUpDQogICAgICAgICAgICAgICAgICAg ICRSZXNwb25zZS5TdGF0dXNDb2RlID0gMjAwDQogICAgICAgICAgICAgICAgICAgICRSZXNwb25z ZS5Db250ZW50VHlwZSA9ICdpbWFnZS9qcGVnJw0KICAgICAgICAgICAgICAgICAgICBBZGQtU2Vj dXJpdHlIZWFkZXJzICRSZXNwb25zZQ0KICAgICAgICAgICAgICAgICAgICAkUmVzcG9uc2UuQ29u dGVudExlbmd0aDY0ID0gJGNvbnRlbnQuTGVuZ3RoDQogICAgICAgICAgICAgICAgICAgICRSZXNw b25zZS5PdXRwdXRTdHJlYW0uV3JpdGUoJGNvbnRlbnQsIDAsICRjb250ZW50Lkxlbmd0aCkNCiAg ICAgICAgICAgICAgICAgICAgJFJlc3BvbnNlLk91dHB1dFN0cmVhbS5DbG9zZSgpDQogICAgICAg ICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAgICAgU2VuZC1FcnJvciAkUmVzcG9u c2UgKCJBdmF0YXIgbmljaHQgZ2VmdW5kZW46ICIgKyAkUGF0aCkgNDA0DQogICAgICAgICAgICAg ICAgfQ0KICAgICAgICAgICAgICAgIGNvbnRpbnVlDQogICAgICAgICAgICB9DQoNCiAgICAgICAg ICAgICMgPT09PT0gU3RhdGlzY2hlIERhdGVpZW4gPT09PT0NCiAgICAgICAgICAgIGlmICgkUGF0 aCAtZXEgJy8nIC1vciAkUGF0aCAtZXEgJycpIHsgJFBhdGggPSAnL2luZGV4Lmh0bWwnIH0NCiAg ICAgICAgICAgICRSZWxQYXRoID0gJFBhdGguVHJpbVN0YXJ0KCcvJykNCiAgICAgICAgICAgICMg ZGF0YS8tRGlyZWt0enVncmlmZi1HYXRlIChTcHJpbnQgMSDigJQgU2ljaGVyaGVpdHMtTm90YnJl bXNlIDIwMjYtMDUtMjgpOg0KICAgICAgICAgICAgIyBHRVQgL2RhdGEvYWRtaW4uanNvbiAodW5k IHBsYW51bmcuanNvbiwgbG9nYnVjaC5qc29uLCBoaW53ZWlzZS5qc29uLA0KICAgICAgICAgICAg IyBjaGFuZ2VzLmpzb24sIHNvd2llIGFsbGUgQmFja3VwLURhdGVpZW4pIGxpZWZlcnRlIHZvcmhl ciBSb2gtSlNPTiBPSE5FDQogICAgICAgICAgICAjIEF1dGgtQ2hlY2suIEF2YXRhci1TdWJwZmFk IHdpcmQgb2JlbiBzZXBhcmF0IGdlcm91dGV0LiBBbGxlcyBhbmRlcmUNCiAgICAgICAgICAgICMg dW50ZXIgL2RhdGEvIGRhcmYgTlVSIGR1cmNoIGVpbmUgZXhwbGl6aXRlIFdoaXRlbGlzdCAoU3Rh dGlzdGlrLSB1bmQNCiAgICAgICAgICAgICMgTG9nYnVjaC1UYXJuLU1hcmt1cHMsIHdlaXRlciB1 bnRlbiBnZWdhdGVkKS4gU29uc3QgNDA0Lg0KICAgICAgICAgICAgIyBNaXR0ZWlsdW5ncy1VcGxv YWRzIChTcHJpbnQgRC0zYiwgMjAyNi0wNS0yOSk6IHZvbSBTVSBob2NoZ2VsYWRlbmUNCiAgICAg ICAgICAgICMgQmlsZGVyICsgUERGcyB1bnRlciBkYXRhL3VwbG9hZHMvbWl0dGVpbHVuZ2VuL21f PHRzPl88cmFuZD4uPGV4dD4uDQogICAgICAgICAgICAjIEVuZHVuZ3MtV2hpdGVsaXN0IHZlcmhp bmRlcnQgQ29kZS1TbXVnZ2xpbmcgdWViZXIgZGVuIFBmYWQuDQogICAgICAgICAgICAkaXN0TWl0 dGVpbHVuZ1VwbG9hZCA9ICgkUmVsUGF0aCAtbWF0Y2ggJ15kYXRhL3VwbG9hZHMvbWl0dGVpbHVu Z2VuL21fXGQrX1thLXowLTldK1wuKGpwZ3xwbmd8d2VicHxwZGYpJCcpDQogICAgICAgICAgICBp ZiAoJFJlbFBhdGggLWxpa2UgJ2RhdGEvKicgLWFuZA0KICAgICAgICAgICAgICAgICRSZWxQYXRo IC1uZSAnZGF0YS9tYWluZnJhbWUuaHRtbCcgLWFuZA0KICAgICAgICAgICAgICAgICRSZWxQYXRo IC1uZSAnZGF0YS9zYW5pdGl6ZXIuaHRtbCcgLWFuZA0KICAgICAgICAgICAgICAgIC1ub3QgJGlz dE1pdHRlaWx1bmdVcGxvYWQpIHsNCiAgICAgICAgICAgICAgICBMb2ctQXBpICgnR0FURSA0MDQg ezB9IChkYXRhLy1EaXJla3R6dWdyaWZmIGJsb2NraWVydCknIC1mICRSZWxQYXRoKQ0KICAgICAg ICAgICAgICAgIFNlbmQtRXJyb3IgJFJlc3BvbnNlICgiVW5iZWthbm50ZXIgRW5kcHVua3Q6ICRN ZXRob2QgJFBhdGgiKSA0MDQNCiAgICAgICAgICAgICAgICBjb250aW51ZQ0KICAgICAgICAgICAg fQ0KICAgICAgICAgICAgIyBWZXJzY2hsZWllcnVuZ3MtRmlsdGVyOiBkYXMgU3RhdGlzdGlrLSB1 bmQgTG9nYnVjaC1Nb2R1bCBzYW10DQogICAgICAgICAgICAjIE1hcmt1cC1GcmFnbWVudCB3ZXJk ZW4gbnVyIGFuIEJlcmVjaHRpZ3RlIGF1c2dlbGllZmVydC4NCiAgICAgICAgICAgICMgRGlyZWt0 ZXIgWnVncmlmZiBkdXJjaCBVbmJlcmVjaHRpZ3RlIChCcm93c2VyLVVSTC1FaW5nYWJlLA0KICAg ICAgICAgICAgIyBTb3VyY2UtU3RvZWJlcm4pIGJla29tbXQgNDA0IOKAlCB3aWUgYmVpIGplZGVt IG5pY2h0IGV4aXN0aWVyZW5kZW4NCiAgICAgICAgICAgICMgUGZhZCwga2VpbiBTdGF0dXNjb2Rl LVZlcnJhdC4NCiAgICAgICAgICAgIGlmICgkUmVsUGF0aCAtZXEgJ2pzL3N0YXRpc3Rpay5qcycg LW9yICRSZWxQYXRoIC1lcSAnZGF0YS9tYWluZnJhbWUuaHRtbCcpIHsNCiAgICAgICAgICAgICAg ICBpZiAoLW5vdCAoVGVzdC1EYXJmQmVyZWljaCAnc3RhdGlzdGlrJykpIHsNCiAgICAgICAgICAg ICAgICAgICAgTG9nLUFwaSAoJ0dBVEUgNDA0IHswfSAoa2VpbiBTdGF0aXN0aWstUmVjaHQpJyAt ZiAkUmVsUGF0aCkNCiAgICAgICAgICAgICAgICAgICAgU2VuZC1FcnJvciAkUmVzcG9uc2UgKCJV bmJla2FubnRlciBFbmRwdW5rdDogJE1ldGhvZCAkUGF0aCIpIDQwNA0KICAgICAgICAgICAgICAg ICAgICBjb250aW51ZQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0gZWxzZWlmICgk UmVsUGF0aCAtZXEgJ2pzL2xvZ2J1Y2guanMnIC1vciAkUmVsUGF0aCAtZXEgJ2RhdGEvc2FuaXRp emVyLmh0bWwnKSB7DQogICAgICAgICAgICAgICAgaWYgKC1ub3QgKFRlc3QtRGFyZkJlcmVpY2gg J2xvZ2J1Y2gnKSkgew0KICAgICAgICAgICAgICAgICAgICBMb2ctQXBpICgnR0FURSA0MDQgezB9 IChrZWluIExvZ2J1Y2gtUmVjaHQpJyAtZiAkUmVsUGF0aCkNCiAgICAgICAgICAgICAgICAgICAg U2VuZC1FcnJvciAkUmVzcG9uc2UgKCJVbmJla2FubnRlciBFbmRwdW5rdDogJE1ldGhvZCAkUGF0 aCIpIDQwNA0KICAgICAgICAgICAgICAgICAgICBjb250aW51ZQ0KICAgICAgICAgICAgICAgIH0N CiAgICAgICAgICAgIH0NCiAgICAgICAgICAgICRGaWxlUGF0aCA9IFJlc29sdmUtU2FmZVBhdGgg JFJlbFBhdGgNCiAgICAgICAgICAgICR2b25GYWxsYmFjayA9ICRmYWxzZQ0KICAgICAgICAgICAg IyBTaGFyZS1GYWxsYmFjazogd2VubiBkaWUgRGF0ZWkgbG9rYWwgZmVobHQgKHouQi4geGxzeC5m dWxsLm1pbi5qcw0KICAgICAgICAgICAgIyB3aXJkIGJld3Vzc3QgbmljaHQgaW4gZGVuIENsaWVu dC1DYWNoZSBrb3BpZXJ0KSwgdmVyc3VjaGUgc2llDQogICAgICAgICAgICAjIHZvbSBrb25maWd1 cmllcnRlbiBBc3NldEZhbGxiYWNrLVBmYWQgbmFjaHp1bGFkZW4uDQogICAgICAgICAgICBpZiAo KC1ub3QgJEZpbGVQYXRoIC1vciAtbm90IChUZXN0LVBhdGggLUxpdGVyYWxQYXRoICRGaWxlUGF0 aCAtUGF0aFR5cGUgTGVhZikpIC1hbmQgJHNjcmlwdDpBc3NldEZhbGxiYWNrKSB7DQogICAgICAg ICAgICAgICAgdHJ5IHsNCiAgICAgICAgICAgICAgICAgICAgJGZhbGxiYWNrVHJ5ID0gSm9pbi1Q YXRoICRzY3JpcHQ6QXNzZXRGYWxsYmFjayAkUmVsUGF0aA0KICAgICAgICAgICAgICAgICAgICAk ZmFsbGJhY2tOb3JtID0gW1N5c3RlbS5JTy5QYXRoXTo6R2V0RnVsbFBhdGgoJGZhbGxiYWNrVHJ5 KQ0KICAgICAgICAgICAgICAgICAgICAkZmFsbGJhY2tSb290Tm9ybSA9IFtTeXN0ZW0uSU8uUGF0 aF06OkdldEZ1bGxQYXRoKCRzY3JpcHQ6QXNzZXRGYWxsYmFjaykNCiAgICAgICAgICAgICAgICAg ICAgaWYgKCRmYWxsYmFja05vcm0uU3RhcnRzV2l0aCgkZmFsbGJhY2tSb290Tm9ybSwgW1N5c3Rl bS5TdHJpbmdDb21wYXJpc29uXTo6T3JkaW5hbElnbm9yZUNhc2UpIC1hbmQNCiAgICAgICAgICAg ICAgICAgICAgICAgIChUZXN0LVBhdGggLUxpdGVyYWxQYXRoICRmYWxsYmFja05vcm0gLVBhdGhU eXBlIExlYWYpKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAkRmlsZVBhdGggPSAkZmFsbGJh Y2tOb3JtDQogICAgICAgICAgICAgICAgICAgICAgICAkdm9uRmFsbGJhY2sgPSAkdHJ1ZQ0KICAg ICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfSBjYXRjaCB7DQogICAgICAgICAg ICAgICAgICAgIExvZy1BcGkgKCdGQUxMQkFDSy1GRUhMRVIgezB9OiB7MX0nIC1mICRSZWxQYXRo LCAkXy5FeGNlcHRpb24uTWVzc2FnZSkNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9 DQogICAgICAgICAgICBpZiAoJEZpbGVQYXRoIC1hbmQgKFRlc3QtUGF0aCAtTGl0ZXJhbFBhdGgg JEZpbGVQYXRoIC1QYXRoVHlwZSBMZWFmKSkgew0KICAgICAgICAgICAgICAgICRleHQgPSBbU3lz dGVtLklPLlBhdGhdOjpHZXRFeHRlbnNpb24oJEZpbGVQYXRoKS5Ub0xvd2VyKCkNCiAgICAgICAg ICAgICAgICAkbWltZSA9IGlmICgkTWltZVR5cGVzLkNvbnRhaW5zS2V5KCRleHQpKSB7ICRNaW1l VHlwZXNbJGV4dF0gfSBlbHNlIHsgJ2FwcGxpY2F0aW9uL29jdGV0LXN0cmVhbScgfQ0KICAgICAg ICAgICAgICAgICRjb250ZW50ID0gW1N5c3RlbS5JTy5GaWxlXTo6UmVhZEFsbEJ5dGVzKCRGaWxl UGF0aCkNCiAgICAgICAgICAgICAgICAkUmVzcG9uc2UuU3RhdHVzQ29kZSA9IDIwMA0KICAgICAg ICAgICAgICAgICRSZXNwb25zZS5Db250ZW50VHlwZSA9ICRtaW1lDQogICAgICAgICAgICAgICAg QWRkLVNlY3VyaXR5SGVhZGVycyAkUmVzcG9uc2UNCiAgICAgICAgICAgICAgICAkUmVzcG9uc2Uu Q29udGVudExlbmd0aDY0ID0gJGNvbnRlbnQuTGVuZ3RoDQogICAgICAgICAgICAgICAgJFJlc3Bv bnNlLk91dHB1dFN0cmVhbS5Xcml0ZSgkY29udGVudCwgMCwgJGNvbnRlbnQuTGVuZ3RoKQ0KICAg ICAgICAgICAgICAgICRSZXNwb25zZS5PdXRwdXRTdHJlYW0uQ2xvc2UoKQ0KICAgICAgICAgICAg ICAgIGlmICgkdm9uRmFsbGJhY2spIHsgTG9nLUFwaSAoJ0ZJTEUgMjAwIHswfSAoRmFsbGJhY2ss IHsxfSBCeXRlcyknIC1mICRSZWxQYXRoLCAkY29udGVudC5MZW5ndGgpIH0NCiAgICAgICAgICAg IH0gZWxzZSB7DQogICAgICAgICAgICAgICAgTG9nLUFwaSAoJ0ZJTEUgNDA0IHswfSAod2VkZXIg aW0gUm9vdCBub2NoIHVlYmVyIEFzc2V0RmFsbGJhY2sgZ2VmdW5kZW4pJyAtZiAkUmVsUGF0aCkN CiAgICAgICAgICAgICAgICBTZW5kLUVycm9yICRSZXNwb25zZSAoIlVuYmVrYW5udGVyIEVuZHB1 bmt0OiAkTWV0aG9kICRQYXRoIikgNDA0DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAg ICAgY2F0Y2ggew0KICAgICAgICAgICAgTG9nLUFwaSAoJ0VYQ0VQVElPTiB7MH0gezF9OiB7Mn0n IC1mICRNZXRob2QsICRQYXRoLCAkXy5FeGNlcHRpb24uTWVzc2FnZSkNCiAgICAgICAgICAgIHRy eSB7IFNlbmQtRXJyb3IgJFJlc3BvbnNlICRfLkV4Y2VwdGlvbi5NZXNzYWdlIDUwMCB9IGNhdGNo IHt9DQogICAgICAgIH0NCiAgICB9DQp9DQpjYXRjaCB7DQogICAgV3JpdGUtSG9zdCAoJ1NlcnZl ci1GZWhsZXI6IHswfScgLWYgJF8uRXhjZXB0aW9uLk1lc3NhZ2UpDQogICAgTG9nLUFwaSAoJ01B SU4tTE9PUCBFWENFUFRJT046IHswfScgLWYgJF8uRXhjZXB0aW9uLk1lc3NhZ2UpDQp9DQpmaW5h bGx5IHsNCiAgICAkV2F0Y2hkb2dUaW1lci5TdG9wKCkNCiAgICBpZiAoJExpc3RlbmVyLklzTGlz dGVuaW5nKSB7ICRMaXN0ZW5lci5TdG9wKCkgfQ0KICAgIExvZy1BcGkgJ1NIVVRET1dOJw0KICAg IFdyaXRlLUhvc3QgJ1NlcnZlciBiZWVuZGV0LicNCn0NCg== ### FILE: stop.bat | 1307 QGVjaG8gb2ZmDQpzZXRsb2NhbCBlbmFibGVkZWxheWVkZXhwYW5zaW9uDQpjaGNwIDY1MDAxID5u dWwgMj4mMQ0KdGl0bGUgVkkzIERHTC1QbGFudW5nIC0gU3RvcA0KDQo6OiA9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCjo6ICBWSTMg REdMLVBsYW51bmcg4oCUIFN0b3AtU2tyaXB0DQo6Og0KOjogIEJlZW5kZXQgc2FlbXRsaWNoZSBQ b3dlclNoZWxsLVByb3plc3NlLCBkaWUgc2VydmVyLnBzMQ0KOjogIGF1c2Z1ZWhyZW4uIE5vdHdl bmRpZyB6LkIuIHdlbm4gUTpcX2FwcCB1bWJlbmFubnQvZ2Vsb2VzY2h0DQo6OiAgd2VyZGVuIHNv bGwgdW5kIGVpbiBhbHRlciBTZXJ2ZXIgbm9jaCBEYXRlaS1IYW5kbGVzIGhhZWx0Lg0KOjogPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 DQoNCmVjaG8uDQplY2hvICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQ0KZWNobyAgIFZJMyBER0wtUGxhbnVuZyAtIFN0b3ANCmVjaG8gID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQplY2hvLg0KDQpzZXQgIkJFRU5ERVQ9MCIN CmZvciAvZiAidXNlYmFja3EgdG9rZW5zPSoiICUlUCBpbiAoYHBvd2Vyc2hlbGwgLU5vUHJvZmls ZSAtQ29tbWFuZCAiR2V0LUNpbUluc3RhbmNlIFdpbjMyX1Byb2Nlc3MgLUVycm9yQWN0aW9uIFNp bGVudGx5Q29udGludWUgfCBXaGVyZS1PYmplY3QgeyAoJF8uTmFtZSAtZXEgJ3Bvd2Vyc2hlbGwu ZXhlJyAtb3IgJF8uTmFtZSAtZXEgJ3B3c2guZXhlJykgLWFuZCAkXy5Db21tYW5kTGluZSAtYW5k ICRfLkNvbW1hbmRMaW5lIC1tYXRjaCAnc2VydmVyW1xcdy5dKlwucHMxJyB9IHwgU2VsZWN0LU9i amVjdCAtRXhwYW5kUHJvcGVydHkgUHJvY2Vzc0lkImApIGRvICgNCiAgICBlY2hvICAgQmVlbmRl IFBvd2VyU2hlbGwgUElEICUlUCBeKHNlcnZlci5wczFeKS4uLg0KICAgIHRhc2traWxsIC9QSUQg JSVQIC9GID5udWwgMj4mMQ0KICAgIHNldCAvYSBCRUVOREVUPSFCRUVOREVUISsxDQopDQoNCmlm ICIhQkVFTkRFVCEiPT0iMCIgKA0KICAgIGVjaG8gICBLZWluZSBsYXVmZW5kZW4gc2VydmVyLnBz MS1Qcm96ZXNzZSBnZWZ1bmRlbi4NCikgZWxzZSAoDQogICAgZWNoby4NCiAgICBlY2hvICAgJUJF RU5ERVQlIFByb3plc3NeKGVeKSBiZWVuZGV0LiBEYXRlaS1Mb2NrcyBzaW5kIGpldHp0IGZyZWku DQopDQoNCmVjaG8uDQp0aW1lb3V0IC90IDMgL25vYnJlYWsgPm51bA0KZXhpdCAvYiAwDQo= ### FILE: style.css | 234532 LyogPT09IFZJMyBER0wtUGxhbnVuZyDigJQgU3R5bGVzaGVldCAoRXhjZWwtdHJldWVzIExheW91 dCkgPT09CiAgIFN0YW5kOiAyMDI2LTA1LTE0ICovCgoqLCAqOjpiZWZvcmUsICo6OmFmdGVyIHsg Ym94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwOyBwYWRkaW5nOiAwOyB9CgovKiA9PT09 PSBDU1MtVmFyaWFibGVuID09PT09ICovCjpyb290IHsKICAgIC8qIEdlZGVja3RlcywgcHJvZmVz c2lvbmVsbGVzIEZhcmJzY2hlbWEgKi8KICAgIC0tYmctcHJpbWFyeTogIzJDM0U1MDsKICAgIC0t YmctcHJpbWFyeS1kYXJrOiAjMjQzMzQyOwogICAgLS1iZy1ib2R5OiAjRjBGMUYzOwogICAgLS1i Zy1jYXJkOiAjRkZGRkZGOwogICAgLS1iZy1jYXJkLWFsdDogI0Y1RjZGODsKICAgIC0tYmctdG9v bGJhcjogI0U4RUFFRDsKICAgIC0tYmctaG92ZXI6ICNFOEVERjI7CiAgICAtLWJnLWFjdGl2ZTog I0Q2REVFNjsKICAgIC0tYmctaW5wdXQ6ICNGRkZGRkY7CiAgICAtLWJnLXNpZGViYXI6ICNGMEYx RjM7CiAgICAtLWJnLW5hdi1ob3ZlcjogI0RERTZFRjsgICAvKiBTaWRlYmFyLU5hdjogZXR3YXMg ZGV1dGxpY2hlciBibGF1LWdldG9lbnRlciBIb3ZlciAqLwogICAgLS1iZy1uYXYtYWt0aXY6ICND NkQzRTE7ICAgLyogU2lkZWJhci1OYXY6IGtsYXIgc2ljaHRiYXJlciBBa3Rpdi1adXN0YW5kICov CgogICAgLS10ZXh0LXByaW1hcnk6ICMyQzNFNTA7CiAgICAtLXRleHQtc2Vjb25kYXJ5OiAjNUQ2 RDdFOwogICAgLS10ZXh0LW11dGVkOiAjNjM2RTcyOyAgIC8qIEtvbnRyYXN0IDQuNjc6MSBhdWYg LS1iZy1ib2R5ICh2b3JoZXIgIzk1QTVBNiA9IDIuMjU6MSwgV0NBRy1BQSB2ZXJmZWhsdCkgKi8K ICAgIC0tdGV4dC1oZWFkaW5nOiAjMkMzRTUwOwogICAgLS10ZXh0LW9uLXByaW1hcnk6ICNFQ0Yw RjE7CgogICAgLS1ib3JkZXItY29sb3I6ICNENUQ4REM7CiAgICAtLWJvcmRlci1saWdodDogI0U1 RThFQjsKICAgIC0tYm9yZGVyLXN0cm9uZzogI0FFQjZCRjsKICAgIC8qIEVpZ2VuZSBHcmlkLUxp bmllbmZhcmJlOiAtLWJvcmRlci1saWdodCAoI0U1RThFQikgd2FyIGF1ZiBsZWVyZW4gd2Vpc3Nl bgogICAgICAgWmVsbGVuIHByYWt0aXNjaCB1bnNpY2h0YmFyICgiWmVsbGJlZ3Jlbnp1bmdzbGlu aWVuIHdlaXNzL2R1cmNoc2ljaHRpZyIpLgogICAgICAgRGV1dGxpY2gga3JhZWZ0aWdlciAodGFi ZWxsZW5rYWxrdWxhdGlvbnMtdHlwaXNjaGVzIEdyYXUpLCBkYW1pdCBkYXMKICAgICAgIFJhc3Rl ciBhdWNoIGF1ZiByZWluIHdlaXNzZW4gWmVsbGVuIG9obmUgU3BhbHRlbi1UaW50IGtsYXIgZXJr ZW5uYmFyCiAgICAgICBibGVpYnQg4oCUIGVnYWwgYW4gd2VsY2hlciBTdGVsbGUgZGVyIFRhZmVs LiAqLwogICAgLS1ncmlkLWxpbmllOiAjQkZDOEQ0OwogICAgLS1zaGFkb3ctbGlnaHQ6IHJnYmEo MCwwLDAsMC4wNCk7CiAgICAtLXNoYWRvdy1tZWRpdW06IHJnYmEoMCwwLDAsMC4xMCk7CiAgICAt LXNoYWRvdy1tb2RhbDogMCA4cHggMzJweCByZ2JhKDAsMCwwLDAuMjApOwogICAgLS10cmFuc2l0 aW9uLXN0ZDogYWxsIDAuMTVzIGVhc2U7CgogICAgLyogR3JpZC1EaW1lbnNpb25lbiDigJQga29t cGFrdCB3aWUgRXhjZWwgKi8KICAgIC0temVsbGUtYnJlaXRlOiA2MnB4OwogICAgLS16ZWxsZS1o b2VoZTogMjJweDsKICAgIC0tbmFtZW4tYnJlaXRlOiAyNjBweDsKICAgIC0ta29wZi16ZWlsZW4t aG9laGU6IDIwcHg7CgogICAgLS10YWctbm9ybWFsOiAjRkZGRkZGOwogICAgLS10YWctd29jaGVu ZW5kZTogI0VERjJGODsgICAgIC8qIHNlaHIgaGVsbGVzIEJsYXUsIHJ1aGlnIChNaS1Lby1GZWVk YmFjazoga2VpbiBMaWxhKSAqLwogICAgLS10YWctZmVpZXJ0YWc6ICNEN0U0RjA7ICAgICAgIC8q IGV0d2FzIGtyYWVmdGlnZXJlcyBCbGF1LCBoZWJ0IHNpY2ggdm9tIFdFIGFiICovCiAgICAtLXRh Zy1mZXJpZW46ICNFOEY1RUM7CiAgICAtLXRhZy1oZXV0ZTogIzJDM0U1MDsKICAgIC0tdGFnLXNv bmRlcjogI0ZGRjlFNjsKCiAgICAvKiBHZWRlY2t0ZSBTY2hpY2h0ZmFyYmVuICovCiAgICAtLWZh cmJlLWZydWVoOiAjQjcxQzFDOwogICAgLS1mYXJiZS1zcGFldDogIzFBNTI3NjsKICAgIC0tZmFy YmUtbmFjaHQ6ICMxQjVFMjA7CiAgICAtLWZhcmJlLWVyZm9sZzogIzI3ODk2RDsKICAgIC0tZmFy YmUtZmVobGVyOiAjQjAzQTJFOwogICAgLS1mYXJiZS13YXJudW5nOiAjQ0E2RjFFOwogICAgLS1m YXJiZS1pbmZvOiAjMkMzRTUwOwogICAgLS1mYXJiZS1ha3plbnQ6ICM0YTkwZTI7CgogICAgLyog QnJhbmQtUHJpbWFlciAod2FyIHZvcmhlciBpbXBsaXppdCB1ZWJlciAtLXRleHQtaGVhZGluZzsK ICAgICAgIHdpcmQgYW4gdmllbGVuIFN0ZWxsZW4gZGlyZWt0IHJlZmVyZW56aWVydCwgamV0enQg c2F1YmVyIGRlZmluaWVydCkgKi8KICAgIC0tZmFyYmUtcHJpbWFlcjogdmFyKC0tdGV4dC1oZWFk aW5nKTsKICAgIC0tZmFyYmUtcHJpbWFlci1ob3ZlcjogIzE0MzA0YTsKCiAgICAvKiBWZXJhbnR3 b3J0bGljaC1NYXJrZXIg4oCUIHRoZW1lLWZlc3Qgc3RhdHQgaGFyZGNvZGVkIEdvbGQgKCNGMUM0 MEYpICovCiAgICAtLWZhcmJlLXZlcmFudHdvcnRsaWNoOiB2YXIoLS1mYXJiZS13YXJudW5nKTsK CiAgICAvKiBTcGFjaW5nLVNrYWxhIChzdGF0dCBIYXJkY29kZS1QaXhlbCB1ZWJlcmFsbCkgKi8K ICAgIC0tc3AtMTogNHB4OwogICAgLS1zcC0yOiA4cHg7CiAgICAtLXNwLTM6IDEycHg7CiAgICAt LXNwLTQ6IDE2cHg7CiAgICAtLXNwLTU6IDI0cHg7CiAgICAtLXNwLTY6IDMycHg7CiAgICAtLXNw LTc6IDQ4cHg7CgogICAgLyogQm9yZGVyLVJhZGl1cy1Ta2FsYSAoVVgtQXVkaXQgU3ByaW50IDMu MSwgMjAyNi0wNS0yOSkuCiAgICAgICBWb3JoZXI6IDQ3IHZlcnNjaGllZGVuZSBIZXgtV2VydGUg ZnVlciBib3JkZXItcmFkaXVzIGltIENTUywKICAgICAgIGNoYW90aXNjaGVyIE1peCBhdXMgMy80 LzYvOC8xMC8xMnB4LiBKZXR6dCB2aWVyIHplbnRyYWxlCiAgICAgICBWYXJpYWJsZW4sIGRpZSBl aW4ga29uc2lzdGVudGVyIFJlZmFjdG9yIHVlYmVyIGRpZSBoYWV1Zmlnc3RlbgogICAgICAgU3Rl bGxlbiAoMy80LzYvMTBweCA9IH4xNDMgVHJlZmZlcikgYWJiaWxkZXQuICovCiAgICAtLXJhZGl1 cy14czogM3B4OyAgIC8qIGtsZWluZSBJbnB1dHMsIGtvbXBha3RlIEJhZGdlcyAqLwogICAgLS1y YWRpdXMtc206IDRweDsgICAvKiBTdGFuZGFyZC1CdXR0b25zLCBub3JtYWxlIEthcnRlbiAqLwog ICAgLS1yYWRpdXMtbWQ6IDZweDsgICAvKiBCYW5uZXIsIGdyb2Vzc2VyZSBDYXJkcyAqLwogICAg LS1yYWRpdXMtbGc6IDEwcHg7ICAvKiBNb2RhbCwgVG9wLUxldmVsLUNvbnRhaW5lciAqLwoKICAg IC8qIEZvbnQtU2l6ZS1Ta2FsYSAoVVgtQXVkaXQgU3ByaW50IDMuMykuIEJpc2hlciA4LTIwcHgg dmVyc3RyZXV0LiAqLwogICAgLS1mcy14czogMTBweDsKICAgIC0tZnMtc206IDExcHg7CiAgICAt LWZzLWJhc2U6IDEycHg7CiAgICAtLWZzLW1kOiAxM3B4OwogICAgLS1mcy1sZzogMTRweDsKICAg IC0tZnMteGw6IDE2cHg7CiAgICAtLWZzLTJ4bDogMjBweDsKCiAgICAvKiBaLUluZGV4LUViZW5l biAoc3RhdHQgMTAwIC8gMjAwIC8gMTAwMCAvIDk5OTkgaGFyZGNvZGVkKS4KICAgICAgIFdpY2h0 aWc6IFBhZ2UtUG9wb3ZlciBsaWVndCBVTlRFUiBkZW0gTW9kYWwsIE1vZGFsLVBvcG92ZXIgKHou Qi4KICAgICAgIERyb3Bkb3ducyBpbiBNb2RhbGVuKSBEQVJVRUJFUi4gVG9hc3QgaW1tZXIgb2Jl biBkcmF1Zi4gKi8KICAgIC0tei1iYXNlOiAxOwogICAgLS16LXN0aWNreTogNTsKICAgIC0tei1u YXY6IDEwOwogICAgLS16LW92ZXJsYXk6IDEwMDsKICAgIC0tei1lZGl0b3I6IDIwMDsKICAgIC0t ei1wb3BvdmVyLXBhZ2U6IDk5OTk7CiAgICAtLXotbW9kYWw6IDEwMDAwOwogICAgLS16LXBvcG92 ZXI6IDEwMTAwOwogICAgLS16LXRvYXN0OiAyMDAwMDsKCiAgICAvKiBTdGF0dXMtQmFubmVyIChS ZWFkLW9ubHktSGlud2VpcywgT25ib2FyZGluZy1FbXB0eS1TdGF0ZSwgSW5saW5lLUluZm8pICov CiAgICAtLWJhbm5lci1pbmZvLWJnOiAjRTNFRUY3OwogICAgLS1iYW5uZXItaW5mby1ib3JkZXI6 IHZhcigtLWZhcmJlLWFremVudCk7CiAgICAtLWJhbm5lci1pbmZvLXRleHQ6IHZhcigtLXRleHQt aGVhZGluZyk7CiAgICAtLWJhbm5lci13YXJuLWJnOiAjRkJFRUREOwogICAgLS1iYW5uZXItd2Fy bi1ib3JkZXI6IHZhcigtLWZhcmJlLXdhcm51bmcpOwogICAgLS1iYW5uZXItd2Fybi10ZXh0OiAj OEE0QTEyOwogICAgLS1iYW5uZXItZXJmb2xnLWJnOiAjRENFRkU3OwogICAgLS1iYW5uZXItZXJm b2xnLWJvcmRlcjogdmFyKC0tZmFyYmUtZXJmb2xnKTsKICAgIC0tYmFubmVyLWVyZm9sZy10ZXh0 OiAjMUE2MTQ5OwoKICAgIC8qIFN0YXRpc3Rpay1DaGFydC1QYWxldHRlIChVWC1BdWRpdCBTcHJp bnQgMS4xLCAyMDI2LTA1LTI5KS4KICAgICAgIFRhZy1XZXJ0ZSBzaW5kIGRpZSBoaXN0b3Jpc2No ZW4gSGV4IGF1cyBzdGF0aXN0aWsuanM7IE5pZ2h0LVdlcnRlCiAgICAgICBpbiBbZGF0YS10aGVt ZT0ibmlnaHQiXSBzb3JnZW4gZsO8ciBsZXNiYXJlIEJhbGtlbiBhdWYgZHVua2xlbSBHcnVuZC4g Ki8KICAgIC0tc3RhdC1zZDogI0Q2ODkxMDsKICAgIC0tc3RhdC1zYW1zdGFnOiAjOEU0NEFEOwog ICAgLS1zdGF0LXNvbm50YWc6ICM2QzM0ODM7CiAgICAtLXN0YXQtZmVpZXJ0YWc6ICM5MjJCMjE7 CiAgICAtLXN0YXQta29tcGxldHRlLXdlOiAjNUIyQzZGOwogICAgLS1zdGF0LWZvcnRiaWxkdW5n LTE6ICMxRjYxOEQ7CiAgICAtLXN0YXQtZm9ydGJpbGR1bmctMjogIzI4NzRBNjsKICAgIC0tc3Rh dC1mb3J0YmlsZHVuZy0zOiAjNTQ5OUM3OwogICAgLS1zdGF0LXVybGF1YjogIzVENkQ3RTsKICAg IC0tc3RhdC1rdXI6ICMxMTdBNjU7CiAgICAtLXN0YXQtc29uZGVydXJsYXViOiAjN0I3RDdEOwp9 CgpbZGF0YS10aGVtZT0ibmlnaHQiXSB7CiAgICAtLWJnLXByaW1hcnk6ICMxQTI1MkY7CiAgICAt LWJnLXByaW1hcnktZGFyazogIzE0MUQyNTsKICAgIC0tYmctYm9keTogIzE1MUQyNTsKICAgIC0t YmctY2FyZDogIzFDMjYzMDsKICAgIC0tYmctY2FyZC1hbHQ6ICMyMTMwM0Q7CiAgICAtLWJnLXRv b2xiYXI6ICMyMTMwM0Q7CiAgICAtLWJnLWhvdmVyOiAjMjgzQTRBOwogICAgLS1iZy1hY3RpdmU6 ICMyRjQ0NTg7CiAgICAtLWJnLWlucHV0OiAjMUMyNjMwOwogICAgLS1iZy1zaWRlYmFyOiAjMTgy MjJDOwogICAgLS1iZy1uYXYtaG92ZXI6ICMyNjM4NEE7CiAgICAtLWJnLW5hdi1ha3RpdjogIzM3 NTE3MDsKCiAgICAtLXRleHQtcHJpbWFyeTogI0Q1RERFNTsKICAgIC0tdGV4dC1zZWNvbmRhcnk6 ICM4ODk5QTY7CiAgICAtLXRleHQtbXV0ZWQ6ICM3QzhDOUE7ICAgLyogS29udHJhc3QgfjU6MSBh dWYgRGFyay1Cb2R5ICh2b3JoZXIgIzVBNkE3OCA9IH4zOjEsIEFBLWdyZW56d2VydGlnKSAqLwog ICAgLS10ZXh0LWhlYWRpbmc6ICNBOEM0RDg7CiAgICAtLXRleHQtb24tcHJpbWFyeTogI0Q1RERF NTsKCiAgICAtLWJvcmRlci1jb2xvcjogIzI4M0E0QTsKICAgIC0tYm9yZGVyLWxpZ2h0OiAjMjIz MDQwOwogICAgLS1ib3JkZXItc3Ryb25nOiAjM0E0RTYwOwogICAgLS1ncmlkLWxpbmllOiAjMzg1 MDZBOwogICAgLS1zaGFkb3ctbGlnaHQ6IHJnYmEoMCwwLDAsMC4xNSk7CiAgICAtLXNoYWRvdy1t ZWRpdW06IHJnYmEoMCwwLDAsMC4zMCk7CiAgICAtLXNoYWRvdy1tb2RhbDogMCA4cHggMzJweCBy Z2JhKDAsMCwwLDAuNDUpOwoKICAgIC0tdGFnLW5vcm1hbDogIzFDMjYzMDsKICAgIC0tdGFnLXdv Y2hlbmVuZGU6ICMxRjJBMzg7CiAgICAtLXRhZy1mZWllcnRhZzogIzI1MzU0NzsKICAgIC0tdGFn LWZlcmllbjogIzFDMkUyMjsKICAgIC0tdGFnLXNvbmRlcjogIzJFMkExODsKCiAgICAvKiBCcmFu ZC1QcmltYWVyIChEYXJrKTogaGVsbGVyIGZ1ZXIgSG92ZXItU2ljaHRiYXJrZWl0ICovCiAgICAt LWZhcmJlLXByaW1hZXItaG92ZXI6ICNDNkRCRTk7CgogICAgLyogQmFubmVyIChEYXJrKTogZ2Vk ZWNrdGUgRnVlbGxmYXJiZW4sIGtsYXJlIEFremVudGJvcmTDvHJlICovCiAgICAtLWJhbm5lci1p bmZvLWJnOiAjMUYyRDNEOwogICAgLS1iYW5uZXItaW5mby10ZXh0OiAjQzZEQkU5OwogICAgLS1i YW5uZXItd2Fybi1iZzogIzJFMjQxMjsKICAgIC0tYmFubmVyLXdhcm4tdGV4dDogI0U1Qjg3MjsK ICAgIC0tYmFubmVyLWVyZm9sZy1iZzogIzE2MzAyQTsKICAgIC0tYmFubmVyLWVyZm9sZy10ZXh0 OiAjODhDQ0FFOwoKICAgIC8qIFN0YXRpc3Rpay1DaGFydC1QYWxldHRlIChEYXJrKTogYXVmZ2Vo ZWxsdGUgVMO2bmUgZGFtaXQgQmFsa2VuCiAgICAgICBhdWYgZHVua2xlbSBCb2R5IHNpY2h0YmFy IGJsZWliZW4uIEtvbnRyYXN0IH40LjU6MSB6dW0gYmctY2FyZC4gKi8KICAgIC0tc3RhdC1zZDog I0Y0QTY0MTsKICAgIC0tc3RhdC1zYW1zdGFnOiAjQjQ3Q0QwOwogICAgLS1zdGF0LXNvbm50YWc6 ICM5RTYzQkQ7CiAgICAtLXN0YXQtZmVpZXJ0YWc6ICNEODcwNjc7CiAgICAtLXN0YXQta29tcGxl dHRlLXdlOiAjOUI2NUI1OwogICAgLS1zdGF0LWZvcnRiaWxkdW5nLTE6ICM1QjlCQzk7CiAgICAt LXN0YXQtZm9ydGJpbGR1bmctMjogIzZGQUFEODsKICAgIC0tc3RhdC1mb3J0YmlsZHVuZy0zOiAj ODZCRkUwOwogICAgLS1zdGF0LXVybGF1YjogIzk1QTRCMDsKICAgIC0tc3RhdC1rdXI6ICMzRkJB OUM7CiAgICAtLXN0YXQtc29uZGVydXJsYXViOiAjQThBQUFBOwp9CgpodG1sLCBib2R5IHsKICAg IGhlaWdodDogMTAwJTsKICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICBmb250LWZhbWlseTogIlNl Z29lIFVJIiwgLWFwcGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCBSb2JvdG8sICJIZWx2 ZXRpY2EgTmV1ZSIsIEFyaWFsLCBzYW5zLXNlcmlmOwogICAgZm9udC1zaXplOiB2YXIoLS1mcy1i YXNlKTsKICAgIGxpbmUtaGVpZ2h0OiAxLjM7CiAgICBjb2xvcjogdmFyKC0tdGV4dC1wcmltYXJ5 KTsKICAgIGJhY2tncm91bmQ6IHZhcigtLWJnLWJvZHkpOwp9CgovKiA9PT09PSBIZWFkZXIgPT09 PT0gKi8KI2tvcGZsZWlzdGUgewogICAgZGlzcGxheTogZmxleDsKICAgIGFsaWduLWl0ZW1zOiBj ZW50ZXI7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47CiAgICBiYWNrZ3JvdW5k OiB2YXIoLS1iZy1wcmltYXJ5KTsKICAgIGNvbG9yOiB2YXIoLS10ZXh0LW9uLXByaW1hcnkpOwog ICAgcGFkZGluZzogMCAyMHB4OwogICAgaGVpZ2h0OiA0MHB4OwogICAgYm94LXNoYWRvdzogMCAy cHggOHB4IHJnYmEoMCwwLDAsMC4xNSk7CiAgICBib3JkZXItYm90dG9tOiAzcHggc29saWQgdmFy KC0tYm9yZGVyLWNvbG9yKTsKICAgIHotaW5kZXg6IHZhcigtLXotb3ZlcmxheSk7CiAgICBwb3Np dGlvbjogcmVsYXRpdmU7Cn0KCiNrb3BmbGVpc3RlIGgxIHsgZm9udC1zaXplOiB2YXIoLS1mcy1s Zyk7IGZvbnQtd2VpZ2h0OiA2MDA7IGxldHRlci1zcGFjaW5nOiAtMC4zcHg7IGRpc3BsYXk6IGZs ZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IH0KLmhlYWRlci1sb2dvIHsgaGVpZ2h0OiAzMHB4OyB3 aWR0aDogYXV0bzsgbWFyZ2luLXJpZ2h0OiAxMHB4OyBmbGV4OiBub25lOyB9Ci5oZWFkZXItamFo ciB7IGZvbnQtd2VpZ2h0OiA0MDA7IG9wYWNpdHk6IDAuNzsgbWFyZ2luLWxlZnQ6IDhweDsgfQoK LmhlYWRlci1uYXYgeyBkaXNwbGF5OiBmbGV4OyBnYXA6IDJweDsgfQoubmF2LWJ0biB7CiAgICBi YWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKICAgIGNvbG9yOiByZ2JhKDI1NSwyNTUsMjU1LDAuNik7 CiAgICBib3JkZXI6IG5vbmU7CiAgICBwYWRkaW5nOiA2cHggMTRweDsKICAgIGJvcmRlci1yYWRp dXM6IHZhcigtLXJhZGl1cy1zbSkgNHB4IDAgMDsKICAgIGN1cnNvcjogcG9pbnRlcjsKICAgIGZv bnQtc2l6ZTogdmFyKC0tZnMtYmFzZSk7CiAgICBmb250LWZhbWlseTogaW5oZXJpdDsKICAgIGZv bnQtd2VpZ2h0OiA1MDA7CiAgICB0cmFuc2l0aW9uOiB2YXIoLS10cmFuc2l0aW9uLXN0ZCk7Cn0K Lm5hdi1idG46aG92ZXIgeyBjb2xvcjogI2ZmZjsgYmFja2dyb3VuZDogcmdiYSgyNTUsMjU1LDI1 NSwwLjA4KTsgfQoubmF2LWJ0bi5ha3RpdiB7IGNvbG9yOiAjZmZmOyBiYWNrZ3JvdW5kOiByZ2Jh KDI1NSwyNTUsMjU1LDAuMTUpOyBib3JkZXItYm90dG9tOiAycHggc29saWQgI2ZmZjsgfQovKiBQ cnVlZnVuZ3MtVGFiIFN0YXR1cy1GYWVyYnVuZyDigJQgVW50ZXJiZXNldHp1bmdzLVZvcndhcm51 bmcgKi8KLm5hdi1idG4uYmstdGFiLWRlZml6aXQtMncgewogICAgY29sb3I6ICNmZmY7CiAgICBi YWNrZ3JvdW5kOiByZ2JhKDE3Niw1OCw0NiwwLjU1KTsKICAgIGJveC1zaGFkb3c6IGluc2V0IDAg LTJweCAwICNCMDNBMkU7CiAgICBhbmltYXRpb246IGJrUHVscyAyLjRzIGVhc2UtaW4tb3V0IGlu ZmluaXRlOwp9Ci5uYXYtYnRuLmJrLXRhYi1kZWZpeml0LTJ3OmhvdmVyIHsgYmFja2dyb3VuZDog cmdiYSgxNzYsNTgsNDYsMC43KTsgfQoubmF2LWJ0bi5iay10YWItZGVmaXppdC00dyB7CiAgICBj b2xvcjogI2ZmZjsKICAgIGJhY2tncm91bmQ6IHJnYmEoMjAyLDExMSwzMCwwLjQ1KTsKICAgIGJv eC1zaGFkb3c6IGluc2V0IDAgLTJweCAwICNDQTZGMUU7Cn0KLm5hdi1idG4uYmstdGFiLWRlZml6 aXQtNHc6aG92ZXIgeyBiYWNrZ3JvdW5kOiByZ2JhKDIwMiwxMTEsMzAsMC42KTsgfQpAa2V5ZnJh bWVzIGJrUHVscyB7IDAlLDEwMCUgeyBib3gtc2hhZG93OiBpbnNldCAwIC0ycHggMCAjQjAzQTJF OyB9IDUwJSB7IGJveC1zaGFkb3c6IGluc2V0IDAgLTJweCAwICNmZjZiNWUsIDAgMCA4cHggcmdi YSgxNzYsNTgsNDYsMC42KTsgfSB9CgouaGVhZGVyLXJlY2h0cyB7IGRpc3BsYXk6IGZsZXg7IGFs aWduLWl0ZW1zOiBjZW50ZXI7IGdhcDogMTJweDsgfQouYmVudXR6ZXItYmFkZ2UgeyBmb250LXNp emU6IHZhcigtLWZzLXNtKTsgb3BhY2l0eTogMC43OyB9Ci5pY29uLWJ0biB7CiAgICBiYWNrZ3Jv dW5kOiB0cmFuc3BhcmVudDsgY29sb3I6IHJnYmEoMjU1LDI1NSwyNTUsMC43KTsgYm9yZGVyOiAx cHggc29saWQgcmdiYSgyNTUsMjU1LDI1NSwwLjIpOwogICAgcGFkZGluZzogM3B4IDEwcHg7IGJv cmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1zbSk7IGN1cnNvcjogcG9pbnRlcjsgZm9udC1zaXpl OiB2YXIoLS1mcy1zbSk7IGZvbnQtZmFtaWx5OiBpbmhlcml0OwogICAgdHJhbnNpdGlvbjogdmFy KC0tdHJhbnNpdGlvbi1zdGQpOwp9Ci5pY29uLWJ0bjpob3ZlciB7IGJhY2tncm91bmQ6IHJnYmEo MjU1LDI1NSwyNTUsMC4xKTsgY29sb3I6ICNmZmY7IH0KCi8qIEJ1Z1JlcG9ydC1CdXR0b246IGRl dXRsaWNoZXIgYWxzIEluZm8sIG1pdCByb3RlbSBHbMO8aGVuIGJlaW0gSG92ZXIuICovCi5idWdy ZXBvcnQtYnRuIHsKICAgIGNvbG9yOiAjZmZjNGJjOwogICAgYm9yZGVyLWNvbG9yOiByZ2JhKDE3 Niw1OCw0NiwwLjY1KTsKICAgIGZvbnQtd2VpZ2h0OiA3MDA7CiAgICBsZXR0ZXItc3BhY2luZzog MC4zcHg7Cn0KLmJ1Z3JlcG9ydC1idG46aG92ZXIgewogICAgYmFja2dyb3VuZDogdmFyKC0tZmFy YmUtZmVobGVyLCAjQjAzQTJFKTsKICAgIGJvcmRlci1jb2xvcjogdmFyKC0tZmFyYmUtZmVobGVy LCAjQjAzQTJFKTsKICAgIGNvbG9yOiAjZmZmOwogICAgYm94LXNoYWRvdzogMCAwIDEwcHggMXB4 IHZhcigtLWZhcmJlLWZlaGxlciwgI0IwM0EyRSksIDAgMCAyMHB4IHJnYmEoMTc2LDU4LDQ2LDAu NTUpOwp9CgovKiA9PT09PSBBbnNpY2h0ZW4gPT09PT0gKi8KLmFuc2ljaHQgeyBoZWlnaHQ6IGNh bGMoMTAwdmggLSA0MHB4KTsgb3ZlcmZsb3c6IGhpZGRlbjsgZGlzcGxheTogZmxleDsgZmxleC1k aXJlY3Rpb246IGNvbHVtbjsgfQoudmVyc3RlY2t0IHsgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50 OyB9CgovKiA9PT09PSBUb29sYmFyIChQbGFudW5nKSA9PT09PSAqLwojcGxhbnVuZy10b29sYmFy IHsKICAgIGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGdhcDogNnB4OwogICAg cGFkZGluZzogNHB4IDEycHg7CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1iZy10b29sYmFyKTsKICAg IGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1ib3JkZXItY29sb3IpOwogICAgaGVpZ2h0 OiAzMHB4Owp9Ci50b29sYmFyLWJ0biB7CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1jYXJkKTsg Y29sb3I6IHZhcigtLXRleHQtcHJpbWFyeSk7CiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1i b3JkZXItc3Ryb25nKTsgcGFkZGluZzogMnB4IDEwcHg7IGJvcmRlci1yYWRpdXM6IHZhcigtLXJh ZGl1cy14cyk7CiAgICBjdXJzb3I6IHBvaW50ZXI7IGZvbnQtc2l6ZTogdmFyKC0tZnMtc20pOyBm b250LWZhbWlseTogaW5oZXJpdDsgdHJhbnNpdGlvbjogdmFyKC0tdHJhbnNpdGlvbi1zdGQpOwp9 Ci50b29sYmFyLWJ0bjpob3ZlciB7IGJhY2tncm91bmQ6IHZhcigtLWJnLWhvdmVyKTsgYm9yZGVy LWNvbG9yOiB2YXIoLS10ZXh0LWhlYWRpbmcpOyB9Ci50b29sYmFyLXRyZW5uZXIgeyB3aWR0aDog MXB4OyBoZWlnaHQ6IDE2cHg7IGJhY2tncm91bmQ6IHZhcigtLWJvcmRlci1jb2xvcik7IG1hcmdp bjogMCA0cHg7IH0KLnRvb2xiYXItaW5mbyB7IGZvbnQtc2l6ZTogdmFyKC0tZnMtc20pOyBjb2xv cjogdmFyKC0tdGV4dC1zZWNvbmRhcnkpOyB9Ci50b29sYmFyLWNoZWNrIHsKICAgIGRpc3BsYXk6 IGlubGluZS1mbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBnYXA6IDRweDsKICAgIGZvbnQtc2l6 ZTogdmFyKC0tZnMtc20pOyBjb2xvcjogdmFyKC0tdGV4dC1zZWNvbmRhcnkpOyBjdXJzb3I6IHBv aW50ZXI7CiAgICBwYWRkaW5nOiAycHggNnB4OyBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMt eHMpOwp9Ci50b29sYmFyLWNoZWNrOmhvdmVyIHsgYmFja2dyb3VuZDogdmFyKC0tYmctaG92ZXIp OyB9Ci50b29sYmFyLWNoZWNrIGlucHV0IHsgY3Vyc29yOiBwb2ludGVyOyB9CgovKiBVbWdlc2V0 enRlIFBlcnNvbmVuIChudXIgenVyIFJlY2hlcmNoZSBlaW5nZWJsZW5kZXQpICovCi5uYW1lbi16 ZWlsZS11bWdlc2V0enQgeyBvcGFjaXR5OiAwLjQ1OyBmb250LXN0eWxlOiBpdGFsaWM7IH0KLm5h bWVuLXplaWxlLXVtZ2VzZXR6dCAubnotbmFtZSB7IHRleHQtZGVjb3JhdGlvbjogbGluZS10aHJv dWdoOyB9Ci5ncmlkLXplaWxlLXVtZ2VzZXR6dCB7IG9wYWNpdHk6IDAuNDU7IH0KLmdyaWQtemVp bGUtdW1nZXNldHp0IC5ncmlkLXplbGxlIHsgY3Vyc29yOiBub3QtYWxsb3dlZCAhaW1wb3J0YW50 OyB9Ci56ZWlsZS11bWdlc2V0enQgeyBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1ob3Zlcik7IG9wYWNp dHk6IDAuNzsgfQovKiBDaGVycnktUGljayAzMDA5ZWE4OiBQYXBpZXJrb3JiLVplaWxlbiBrbGFy IGFiZ2VzZXR6dCByb3Qg4oCUIHZpc3VlbGwgdm9tCiAgICJVbWdlc2V0enQiIChTdGF0dXMgbmlj aHQgbWVociBha3RpdikgdW50ZXJzY2hlaWRiYXIsIHdlaWwgaGllciBkaWUgUGVyc29uCiAgIGlu IEF1ZmxvZXN1bmcgaXN0IHVuZCBuYWNoIEF1ZmJld2FocnVuZ3MtRnJpc3QgaGFydCBnZWxvZXNj aHQgd2lyZC4gKi8KLnplaWxlLXBhcGllcmtvcmIgewogICAgYmFja2dyb3VuZDogcmdiYSgxNzYs IDU4LCA0NiwgMC4wOCk7CiAgICBjb2xvcjogdmFyKC0tdGV4dC1zZWNvbmRhcnkpOwp9Ci56ZWls ZS1wYXBpZXJrb3JiOmhvdmVyIHsKICAgIGJhY2tncm91bmQ6IHJnYmEoMTc2LCA1OCwgNDYsIDAu MTQpOwp9Ci56ZWlsZS11bWdlc2V0enQgdGQgeyBmb250LXN0eWxlOiBpdGFsaWM7IH0KCi8qID09 PT09IFBsYW51bmdzLUNvbnRhaW5lciAoRXhjZWwtTGF5b3V0KSA9PT09PSAqLwojcGxhbnVuZy1j b250YWluZXIgewogICAgZGlzcGxheTogZmxleDsKICAgIGZsZXg6IDE7CiAgICBvdmVyZmxvdzog aGlkZGVuOwogICAgYmFja2dyb3VuZDogdmFyKC0tYmctY2FyZCk7Cn0KCi8qID09PT09IEZpeGll cnRlIGxpbmtlIFNwYWx0ZSA9PT09PSAqLwojbmFtZW4tc3BhbHRlIHsKICAgIHdpZHRoOiB2YXIo LS1uYW1lbi1icmVpdGUpOwogICAgbWluLXdpZHRoOiB2YXIoLS1uYW1lbi1icmVpdGUpOwogICAg Ym9yZGVyLXJpZ2h0OiAycHggc29saWQgdmFyKC0tYm9yZGVyLXN0cm9uZyk7CiAgICBkaXNwbGF5 OiBmbGV4OwogICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgIGJhY2tncm91bmQ6IHZhcigt LWJnLWNhcmQpOwogICAgei1pbmRleDogMTA7Cn0KCi8qIEtvcGZiZXJlaWNoIGxpbmtzICovCiNr b3BmLWxpbmtzIHsKICAgIGJvcmRlci1ib3R0b206IDJweCBzb2xpZCB2YXIoLS1ib3JkZXItc3Ry b25nKTsKICAgIGJhY2tncm91bmQ6IHZhcigtLWJnLWNhcmQtYWx0KTsKfQoKLmtvcGYtemVpbGUg ewogICAgZGlzcGxheTogZmxleDsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICBoZWlnaHQ6 IHZhcigtLWtvcGYtemVpbGVuLWhvZWhlKTsKICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2 YXIoLS1ib3JkZXItbGlnaHQpOwogICAgZm9udC1zaXplOiB2YXIoLS1mcy14cyk7CiAgICBwYWRk aW5nOiAwIDZweDsKfQoKLmt6LWRhdHVtLCAua3otd29jaGVudGFnLCAua3otYW5sYXNzIHsKICAg IGJhY2tncm91bmQ6IHZhcigtLWJnLXByaW1hcnkpOwogICAgY29sb3I6IHZhcigtLXRleHQtb24t cHJpbWFyeSk7Cn0KLyogSGVpZ2h0cyBtdWVzc2VuIDE6MSB6dSBkZW4gRGF0ZW4tWmVpbGVuIHJl Y2h0cyBwYXNzZW4gKi8KLmt6LWFubGFzcyAgeyBoZWlnaHQ6IDMycHg7IH0gICAvKiA9ICNkYXR1 bS16ZWlsZS1hbmxhc3MgLmtkLXplbGxlIChNYWkgMjAyNjogRXZlbnRzIG1pdCBkcmluKSAqLwoK LyogSGV1dGUtQmFubmVyIHVlYmVyZGVja3QgZGllIG9iZXJlbiBkcmVpIFBsYXR6aGFsdGVyCiAg IChrei1kYXR1bSArIGt6LXdvY2hlbnRhZyArIGt6LWFubGFzcykgPSAyMCArIDIwICsgMzggPSA3 OHB4LiAqLwoja29wZi1saW5rcyB7IHBvc2l0aW9uOiByZWxhdGl2ZTsgfQoja2wtaGV1dGUtYmFu bmVyIHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHRvcDogMDsKICAgIGxlZnQ6IDA7CiAg ICByaWdodDogMDsKICAgIGhlaWdodDogY2FsYyh2YXIoLS1rb3BmLXplaWxlbi1ob2VoZSkgKiAy ICsgMzJweCk7CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1wcmltYXJ5KTsKICAgIGNvbG9yOiB2 YXIoLS10ZXh0LW9uLXByaW1hcnkpOwogICAgZGlzcGxheTogZmxleDsKICAgIGFsaWduLWl0ZW1z OiBjZW50ZXI7CiAgICBnYXA6IDhweDsKICAgIHBhZGRpbmc6IDAgMTJweDsKICAgIHotaW5kZXg6 IDI7CiAgICBib3gtc2hhZG93OiBpbnNldCAwIC0xcHggMCByZ2JhKDI1NSwyNTUsMjU1LDAuMDYp Owp9Ci5rbC1oZXV0ZS1idXR0b24gewogICAgYmFja2dyb3VuZDogcmdiYSgyNTUsMjU1LDI1NSww LjE0KTsKICAgIGNvbG9yOiB2YXIoLS10ZXh0LW9uLXByaW1hcnkpOwogICAgYm9yZGVyOiAxcHgg c29saWQgcmdiYSgyNTUsMjU1LDI1NSwwLjMyKTsKICAgIHBhZGRpbmc6IDZweCAxNnB4OwogICAg Ym9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLXNtKTsKICAgIGZvbnQtZmFtaWx5OiBpbmhlcml0 OwogICAgZm9udC1zaXplOiB2YXIoLS1mcy1iYXNlKTsKICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAg ICBsZXR0ZXItc3BhY2luZzogMC40cHg7CiAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICB0cmFuc2l0 aW9uOiBiYWNrZ3JvdW5kIDAuMTVzIGVhc2UsIGJvcmRlci1jb2xvciAwLjE1cyBlYXNlLCB0cmFu c2Zvcm0gMC4xcyBlYXNlOwp9Ci5rbC1oZXV0ZS1idXR0b246aG92ZXIgewogICAgYmFja2dyb3Vu ZDogcmdiYSgyNTUsMjU1LDI1NSwwLjI2KTsKICAgIGJvcmRlci1jb2xvcjogcmdiYSgyNTUsMjU1 LDI1NSwwLjU1KTsKfQoua2wtaGV1dGUtYnV0dG9uOmFjdGl2ZSB7CiAgICBiYWNrZ3JvdW5kOiBy Z2JhKDI1NSwyNTUsMjU1LDAuMzQpOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDFweCk7Cn0K LmtsLWhldXRlLWluZm8gewogICAgZGlzcGxheTogZmxleDsKICAgIGZsZXgtZGlyZWN0aW9uOiBj b2x1bW47CiAgICBsaW5lLWhlaWdodDogMS4xNTsKICAgIG1pbi13aWR0aDogMDsKfQoua2wtaGV1 dGUtZGF0dW0tdHh0IHsKICAgIGZvbnQtc2l6ZTogdmFyKC0tZnMtbWQpOwogICAgZm9udC13ZWln aHQ6IDcwMDsKICAgIGxldHRlci1zcGFjaW5nOiAwLjJweDsKfQoua2wtaGV1dGUtd3RhZy10eHQg ewogICAgZm9udC1zaXplOiB2YXIoLS1mcy1zbSk7CiAgICBmb250LXdlaWdodDogNTAwOwogICAg b3BhY2l0eTogMC43ODsKICAgIG1hcmdpbi10b3A6IDFweDsKfQoKLmt6LXN0YWVya2UgewogICAg YmFja2dyb3VuZDogIzM0NDk1RTsKICAgIGNvbG9yOiAjRUNGMEYxOwogICAgZm9udC13ZWlnaHQ6 IDcwMDsKICAgIGZvbnQtc2l6ZTogdmFyKC0tZnMteHMpOwp9Cgoua3otc2NoaWNodGZvbGdlIHsK ICAgIGJhY2tncm91bmQ6IHZhcigtLWJnLWNhcmQtYWx0KTsKICAgIGNvbG9yOiB2YXIoLS10ZXh0 LXNlY29uZGFyeSk7CiAgICBmb250LXNpemU6IHZhcigtLWZzLXhzKTsKfQoKLmt6LXNmLWVyc3Rl IHsKICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS1ib3JkZXItc3Ryb25nKTsKfQoKLmts LWxhYmVsIHsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIHdpZHRoOiA3MHB4OwogICAg bWluLXdpZHRoOiA3MHB4OwogICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgIGNvbG9yOiBpbmhlcml0 OwogICAgb3BhY2l0eTogMC44Owp9Cgoua2wtd2VydCB7CiAgICBmbGV4OiAxOwogICAgb3ZlcmZs b3c6IGhpZGRlbjsKICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwogICAgd2hpdGUtc3BhY2U6 IG5vd3JhcDsKfQoKLyogTmFtZW5saXN0ZSAqLwojbmFtZW4tbGlzdGUgewogICAgZmxleDogMTsK ICAgIG92ZXJmbG93OiBoaWRkZW47Cn0KCi5uYW1lbi16ZWlsZSB7CiAgICBkaXNwbGF5OiBmbGV4 OwogICAgaGVpZ2h0OiB2YXIoLS16ZWxsZS1ob2VoZSk7CiAgICBib3JkZXItYm90dG9tOiAxcHgg c29saWQgdmFyKC0tYm9yZGVyLWxpZ2h0KTsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICBm b250LXNpemU6IHZhcigtLWZzLXNtKTsKICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQgMC4xczsK ICAgIHBhZGRpbmc6IDAgNHB4Owp9Ci5uYW1lbi16ZWlsZTpob3ZlciB7IGJhY2tncm91bmQ6IHZh cigtLWJnLWhvdmVyKTsgfQoKLyogR3J1cHBlbnRyZW5uemVpbGUgKi8KLm5hbWVuLXRyZW5uZXIg ewogICAgZGlzcGxheTogZmxleDsKICAgIGhlaWdodDogMThweDsKICAgIGFsaWduLWl0ZW1zOiBj ZW50ZXI7CiAgICBmb250LXNpemU6IDlweDsKICAgIGZvbnQtd2VpZ2h0OiA3MDA7CiAgICB0ZXh0 LXRyYW5zZm9ybTogdXBwZXJjYXNlOwogICAgbGV0dGVyLXNwYWNpbmc6IDAuNXB4OwogICAgY29s b3I6IHZhcigtLXRleHQtbXV0ZWQpOwogICAgYmFja2dyb3VuZDogdmFyKC0tYmctY2FyZC1hbHQp OwogICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLWJvcmRlci1jb2xvcik7CiAgICBi b3JkZXItdG9wOiAxcHggc29saWQgdmFyKC0tYm9yZGVyLWNvbG9yKTsKICAgIHBhZGRpbmc6IDAg NnB4Owp9CgoubnotbmFtZSB7CiAgICB3aWR0aDogMTEwcHg7CiAgICBtaW4td2lkdGg6IDExMHB4 OwogICAgcGFkZGluZzogMCA0cHg7CiAgICBmb250LXdlaWdodDogNjAwOwogICAgZGlzcGxheTog ZmxleDsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICBnYXA6IDZweDsKfQoubnotbmFtZS10 ZXh0IHsKICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsK ICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgICBtaW4td2lkdGg6IDA7CiAgICBmbGV4OiAxOwp9 Ci5uei1vZSB7CiAgICB3aWR0aDogMjhweDsKICAgIG1pbi13aWR0aDogMjhweDsKICAgIHRleHQt YWxpZ246IGNlbnRlcjsKICAgIGZvbnQtc2l6ZTogOXB4OwogICAgY29sb3I6IHZhcigtLXRleHQt c2Vjb25kYXJ5KTsKfQoubnotZ3J1cHBlIHsKICAgIHdpZHRoOiAxNnB4OwogICAgbWluLXdpZHRo OiAxNnB4OwogICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgZm9udC1zaXplOiA5cHg7CiAgICBm b250LXdlaWdodDogNzAwOwp9Ci5uei1kbnIgewogICAgd2lkdGg6IDM4cHg7CiAgICBtaW4td2lk dGg6IDM4cHg7CiAgICBmb250LXNpemU6IDlweDsKICAgIGNvbG9yOiB2YXIoLS10ZXh0LW11dGVk KTsKICAgIHBhZGRpbmc6IDAgNHB4OwogICAgdGV4dC1hbGlnbjogcmlnaHQ7CiAgICBvdmVyZmxv dzogaGlkZGVuOwogICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7CiAgICB3aGl0ZS1zcGFjZTog bm93cmFwOwp9Ci5uei1yYW5nIHsKICAgIGZsZXg6IDE7CiAgICBmb250LXNpemU6IDlweDsKICAg IGNvbG9yOiB2YXIoLS10ZXh0LW11dGVkKTsKICAgIHBhZGRpbmc6IDAgNHB4OwogICAgdGV4dC1h bGlnbjogcmlnaHQ7CiAgICBmb250LXdlaWdodDogNjAwOwogICAgb3ZlcmZsb3c6IGhpZGRlbjsK ICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwogICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKfQoK LyogR3J1cHBlbi1CYWRnZSAoQWRtaW4tVGFiZWxsZSkgKi8KLmdydXBwZW4tYmFkZ2UgewogICAg ZGlzcGxheTogaW5saW5lLWJsb2NrOyBwYWRkaW5nOiAxcHggOHB4OyBib3JkZXItcmFkaXVzOiB2 YXIoLS1yYWRpdXMteHMpOyBmb250LXNpemU6IHZhcigtLWZzLXhzKTsgZm9udC13ZWlnaHQ6IDYw MDsKICAgIGxldHRlci1zcGFjaW5nOiAwLjNweDsKfQoKLyogRGllbnN0Z3J1cHBlbi1UYWJlbGxl OiBaZWlsZSBlaW5lciBhdXNnZWJsZW5kZXRlbiBHcnVwcGUgKGluUGxhbnVuZz1mYWxzZSkKICAg d2lyZCBsZWljaHQgYXVzZ2VncmF1dCwgZGFtaXQgYXVmIGVpbmVuIEJsaWNrIGtsYXIgaXN0LCBk YXNzIGRpZXNlIEdydXBwZQogICBha3R1ZWxsIG5pY2h0IGluIGRlciBQbGFudGFmZWwvV29jaGVu cGxhbi9QZXJzLlBsYW4gZXJzY2hlaW50LiAqLwouZ3J1cHBlLXplaWxlLXZlcnN0ZWNrdCB7IG9w YWNpdHk6IDAuNjU7IGJhY2tncm91bmQ6IHZhcigtLWJnLWNhcmQtYWx0KTsgfQouZ3J1cHBlLWlu cGxhbnVuZy1sYWJlbCB7IGRpc3BsYXk6IGlubGluZS1mbGV4OyBhbGlnbi1pdGVtczogY2VudGVy OyBjdXJzb3I6IHBvaW50ZXI7IH0KLmdydXBwZS1pbnBsYW51bmctaW5wdXQgeyBjdXJzb3I6IHBv aW50ZXI7IHdpZHRoOiAxNnB4OyBoZWlnaHQ6IDE2cHg7IH0KCi8qIEdydXBwZW4tRmFyYmNvZGVz ICovCi5nci1BIHsgY29sb3I6ICNCNzFDMUM7IH0KLmdyLUIgeyBjb2xvcjogIzFBNTI3NjsgfQou Z3ItQyB7IGNvbG9yOiAjMUI1RTIwOyB9Ci5nci1LIHsgY29sb3I6ICM4RDZFMjg7IH0KLmdyLUwg eyBjb2xvcjogIzU0NkU3QTsgfQoKLyogPT09PT0gU2Nyb2xsYmFyZXIgcmVjaHRlciBCZXJlaWNo ID09PT09ICovCiNncmlkLXNjcm9sbC1jb250YWluZXIgewogICAgZmxleDogMTsKICAgIG92ZXJm bG93OiBhdXRvOwogICAgcG9zaXRpb246IHJlbGF0aXZlOwp9CgovKiBLb3BmYmVyZWljaCByZWNo dHMgKHN0aWNreSkgKi8KI2tvcGYtcmVjaHRzIHsKICAgIHBvc2l0aW9uOiBzdGlja3k7CiAgICB0 b3A6IDA7CiAgICB6LWluZGV4OiA1OwogICAgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkIHZhcigt LWJvcmRlci1zdHJvbmcpOwogICAgYmFja2dyb3VuZDogdmFyKC0tYmctY2FyZCk7Cn0KCi5rb3Bm LWRhdGVuLXplaWxlIHsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBoZWlnaHQ6IHZhcigtLWtvcGYt emVpbGVuLWhvZWhlKTsKfQovKiBFaW56ZWxuZSBaZWlsZW4gYnJhdWNoZW4gZWlnZW5lIEhvZWhl biwgZGFtaXQgZGllIC5rZC16ZWxsZS1LaW5kZXIgbmljaHQKICAgbnVyIHZpc3VlbGwgdWViZXJs YXVmZW4sIHNvbmRlcm4gZGllIFJvdyBhdWNoIGxvZ2lzY2ggZGllIHJpY2h0aWdlIEhvZWhlCiAg IGJlbGVndCAoc29uc3QgdmVyc2NoaWVidCBzaWNoIGRpZSBOYW1lbnNzcGFsdGUgbGlua3MpLgog ICBBbmxhc3MgKyBFdmVudHMgc2luZCBzZWl0IE1haSAyMDI2IGluIGVpbmVyIFplaWxlIHp1c2Ft bWVuZ2VmYXNzdC4gKi8KI2RhdHVtLXplaWxlLWFubGFzcyB7IGhlaWdodDogMzJweDsgfQoKLyog RGF0dW0tWmVsbGVuIGltIEtvcGYgKi8KLmtkLXplbGxlIHsKICAgIHdpZHRoOiB2YXIoLS16ZWxs ZS1icmVpdGUpOwogICAgbWluLXdpZHRoOiB2YXIoLS16ZWxsZS1icmVpdGUpOwogICAgZGlzcGxh eTogZmxleDsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNl bnRlcjsKICAgIGJvcmRlci1yaWdodDogMXB4IHNvbGlkIHZhcigtLWJvcmRlci1saWdodCk7CiAg ICBmb250LXNpemU6IHZhcigtLWZzLXhzKTsKfQoKLyogWmVpbGUgMTogRGF0dW0gKi8KI2RhdHVt LXplaWxlLXRhZyAua2QtemVsbGUgewogICAgYmFja2dyb3VuZDogdmFyKC0tYmctcHJpbWFyeSk7 CiAgICBjb2xvcjogdmFyKC0tdGV4dC1vbi1wcmltYXJ5KTsKICAgIGZvbnQtd2VpZ2h0OiA2MDA7 CiAgICBmb250LXNpemU6IHZhcigtLWZzLXhzKTsKICAgIGJvcmRlci1yaWdodC1jb2xvcjogcmdi YSgyNTUsMjU1LDI1NSwwLjEpOwp9CgovKiBaZWlsZSAyOiBXb2NoZW50YWcgKi8KI2RhdHVtLXpl aWxlLXdvY2hlbnRhZyAua2QtemVsbGUgewogICAgYmFja2dyb3VuZDogdmFyKC0tYmctcHJpbWFy eS1kYXJrKTsKICAgIGNvbG9yOiB2YXIoLS10ZXh0LW9uLXByaW1hcnkpOwogICAgZm9udC1zaXpl OiA5cHg7CiAgICBib3JkZXItcmlnaHQtY29sb3I6IHJnYmEoMjU1LDI1NSwyNTUsMC4xKTsKfQoK LyogWmVpbGUgMzoga29tYmluaWVydGUgSWNvbi1aZWlsZSAoRmVpZXJ0YWcgKyBTb25kZXJ0ZXJt aW4gKyBHZWJ1cnRzdGFnKS4KICAgU2VpdCBNYWkgMjAyNiBpbiBlaW5lciBaZWlsZSBzdGF0dCB2 b3JoZXIgendlaSAoQW5sYXNzICsgRXZlbnRzKS4gKi8KI2RhdHVtLXplaWxlLWFubGFzcyAua2Qt emVsbGUgewogICAgYmFja2dyb3VuZDogdmFyKC0tYmctcHJpbWFyeSk7CiAgICBjb2xvcjogcmdi YSgyNTUsMjU1LDI1NSwwLjcpOwogICAgZm9udC1zaXplOiB2YXIoLS1mcy1zbSk7CiAgICBmb250 LXdlaWdodDogNjAwOwogICAgYm9yZGVyLXJpZ2h0LWNvbG9yOiByZ2JhKDI1NSwyNTUsMjU1LDAu MSk7CiAgICBoZWlnaHQ6IDMycHg7CiAgICBwYWRkaW5nOiAycHggMXB4OwogICAgYWxpZ24taXRl bXM6IGNlbnRlcjsKICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgZ2FwOiAycHg7CiAg ICBvdmVyZmxvdzogaGlkZGVuOwp9Ci8qIEljb24tU3RpbDoga29tcGFrdCwgZGFtaXQgendlaSBv ZGVyIGRyZWkgSWNvbnMgbmViZW5laW5hbmRlciBpbiA2MnB4CiAgIHBhc3NlbiAoRmVpZXJ0YWcg KyBTb25kZXJ0ZXJtaW4gKyBHZWJ1cnRzdGFnIOKAlCBzZWx0ZW4gYWxsZSBkcmVpCiAgIGdsZWlj aHplaXRpZykuIEVtb2ppLUZvbnQgcmVuZGVydCBmYXJiaWcsIG1vbm9jaHJvbWUgR2x5cGhzICji nKEg4piqKQogICBlcmJlbiBjb2xvciB2b24gZGVyIHVtZ2ViZW5kZW4gLmtkLWFubGFzcy1mZWll cnRhZy0qIFJlZ2VsLiAqLwoua2QtYW5sYXNzLWljb24gewogICAgZm9udC1zaXplOiAyMHB4Owog ICAgbGluZS1oZWlnaHQ6IDE7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICB1c2VyLXNl bGVjdDogbm9uZTsKfQojZGF0dW0temVpbGUtYW5sYXNzIHsgcG9zaXRpb246IHJlbGF0aXZlOyB9 Ci8qIFNvbGlkZSBGYXJiZW4gYW5hbG9nIHp1IC5rZC1mZWllcnRhZy1iZyAvIC5rZC13b2NoZW5l bmRlIOKAlCBkaWUgYWx0ZW4KICAgcmdiYSgpLVdlcnRlIHdhcmVuIHNlbWl0cmFuc3BhcmVudCBn ZWdlbiBkZW4gd2Vpc3NlbiAja29wZi1yZWNodHMtYmcKICAgdW5kIGxpZXNzZW4gZGllIFplbGxl IHByYWt0aXNjaCB3ZWlzcyBlcnNjaGVpbmVuLCBkZXIgaGVsbGUgVGV4dCB3YXIKICAgZGFkdXJj aCB1bmxlc2Jhci4gKi8KI2RhdHVtLXplaWxlLWFubGFzcyAua2QtYW5sYXNzLWZlaWVydGFnIHsg YmFja2dyb3VuZDogIzRBNkE4QzsgY29sb3I6ICNGRkZGRkY7IGN1cnNvcjogcG9pbnRlcjsgfQoj ZGF0dW0temVpbGUtYW5sYXNzIC5rZC1hbmxhc3MtZmVpZXJ0YWc6aG92ZXIgeyBmaWx0ZXI6IGJy aWdodG5lc3MoMS4xNSk7IH0KI2RhdHVtLXplaWxlLWFubGFzcyAua2QtYW5sYXNzLWZlaWVydGFn IC5rZC1hbmxhc3MtdGV4dCB7IGNvbG9yOiAjRkZGRkZGOyB9Ci8qIEthdGVnb3JpZS1zcGV6aWZp c2NoZSBGYXJiZ2VidW5nLiAua2QtYW5sYXNzLWZlaWVydGFnLWdlc2V0emxpY2gKICAgYmVudXR6 dCBkZW4gU3RhbmRhcmQgdm9uIG9iZW4gKCM0QTZBOEMpLCBkaWUgYW5kZXJlbiBLYXRlZ29yaWVu CiAgIGJla29tbWVuIGVpbmUgZWlnZW5lIGdlZGVja3RlIEZhcmJlLiAqLwojZGF0dW0temVpbGUt YW5sYXNzIC5rZC1hbmxhc3MtZmVpZXJ0YWctanVlZGlzY2ggICAgeyBiYWNrZ3JvdW5kOiAjNkU0 RkEwOyB9CiNkYXR1bS16ZWlsZS1hbmxhc3MgLmtkLWFubGFzcy1mZWllcnRhZy1tdXNsaW1pc2No ICB7IGJhY2tncm91bmQ6ICMxQjdDNjY7IH0KI2RhdHVtLXplaWxlLWFubGFzcyAua2QtYW5sYXNz LWZlaWVydGFnLXR1ZXJraXNjaCAgIHsgYmFja2dyb3VuZDogI0M3MjEyMDsgfQovKiBXaWNodGln LU1hcmtlcjogYmVoYWVsdCBkaWUgS2F0ZWdvcmllLUZhcmJlIHVuZCBiZWtvbW10IG51ciBlaW5l CiAgIGRlemVudGUgZ29sZGVuZSBCb2RlbmxpbmllIGFscyBBa3plbnQgKHZvcmhlciByb3QrZ29s ZGVuZXIgUmFobWVuICsKICAgd2Vpc3NlciBUZXh0IOKAlCB3aXJrdGUgbWl0IERhdHVtICsgV29j aGVudGFnICsgQW5sYXNzLUljb24ga29tYmluaWVydAogICB6dSB3dWNodGlnLCBVc2VyLUZlZWRi YWNrIDIwMjYtMDUtMjIpLiAqLwojZGF0dW0temVpbGUtYW5sYXNzIC5rZC1hbmxhc3MtZmVpZXJ0 YWcua2QtZmVpZXJ0YWctd2ljaHRpZyB7IGJveC1zaGFkb3c6IGluc2V0IDAgLTNweCAwICNENEEw MTc7IH0KW2RhdGEtdGhlbWU9Im5pZ2h0Il0gI2RhdHVtLXplaWxlLWFubGFzcyAua2QtYW5sYXNz LWZlaWVydGFnLmtkLWZlaWVydGFnLXdpY2h0aWcgeyBib3gtc2hhZG93OiBpbnNldCAwIC0zcHgg MCAjRTVCNTNBOyB9CiNkYXR1bS16ZWlsZS1hbmxhc3MgLmtkLWFubGFzcy1mZXJpZW4geyBiYWNr Z3JvdW5kOiAjMkU3RDMyOyBjb2xvcjogI0ZGRkZGRjsgfQojZGF0dW0temVpbGUtYW5sYXNzIC5r ZC1hbmxhc3MtZmVyaWVuIC5rZC1hbmxhc3MtdGV4dCB7IGNvbG9yOiAjRkZGRkZGOyB9CltkYXRh LXRoZW1lPSJuaWdodCJdICNkYXR1bS16ZWlsZS1hbmxhc3MgLmtkLWFubGFzcy1mZWllcnRhZyB7 IGJhY2tncm91bmQ6ICMzRDU2NzI7IGNvbG9yOiAjRThFRUY1OyB9CltkYXRhLXRoZW1lPSJuaWdo dCJdICNkYXR1bS16ZWlsZS1hbmxhc3MgLmtkLWFubGFzcy1mZWllcnRhZy1qdWVkaXNjaCAgICB7 IGJhY2tncm91bmQ6ICM0QTMwNzA7IH0KW2RhdGEtdGhlbWU9Im5pZ2h0Il0gI2RhdHVtLXplaWxl LWFubGFzcyAua2QtYW5sYXNzLWZlaWVydGFnLW11c2xpbWlzY2ggIHsgYmFja2dyb3VuZDogIzEz NEY0MDsgfQpbZGF0YS10aGVtZT0ibmlnaHQiXSAjZGF0dW0temVpbGUtYW5sYXNzIC5rZC1hbmxh c3MtZmVpZXJ0YWctdHVlcmtpc2NoICAgeyBiYWNrZ3JvdW5kOiAjODIxODE4OyB9Ci8qIE5pZ2h0 LVRoZW1lOiBXaWNodGlnLU1hcmtlciBiZWhhZWx0IGpldHp0IGRpZSBLYXRlZ29yaWUtRmFyYmUs IGRpZQogICBnb2xkZW5lIEJvZGVubGluaWUgd2lyZCBpbiBkZXIgYWxsZ2VtZWluZW4gUmVnZWwg b2JlbiAoWmVpbGUgNTI5KSBnZXNldHp0LiAqLwpbZGF0YS10aGVtZT0ibmlnaHQiXSAjZGF0dW0t emVpbGUtYW5sYXNzIC5rZC1hbmxhc3MtZmVyaWVuIHsgYmFja2dyb3VuZDogIzFFNTAyNDsgY29s b3I6ICNFOEY1RUM7IH0KCi8qIEhvcml6b250YWxlIEZlcmllbi1CYXI6IHVlYmVybGFnZXJ0IGRp ZSBwZXItVGFnLVplbGxlbiBkZXIgQW5sYXNzLVplaWxlIG1pdAogICBlaW5lbSBkdXJjaGdlaGVu ZGVuIExhYmVsIHVlYmVyIGRpZSBnZXNhbXRlIEZlcmllbi1QZXJpb2RlLiAqLwovKiBPcHRpayAo SGludGVyZ3J1bmQvUmFobWVuL0dsb3cpIHVlYmVyIEN1c3RvbS1Qcm9wZXJ0aWVzIGF1cyBkZW0K ICAgRXJzY2hlaW51bmdzYmlsZC1FZGl0b3IgKC0tbWZlci0qKS4gVW5rb25maWd1cmllcnQgPSB0 cmFuc3BhcmVudGVyIEJhbGtlbiwKICAgbnVyIGRhcyBMYWJlbCwgd2llIGJpc2hlci4gKi8KLmtk LWZlcmllbi1iYXIgewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgdG9wOiA1MCU7CiAgICB0 cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7CiAgICBoZWlnaHQ6IDIycHg7CiAgICBkaXNwbGF5 OiBmbGV4OwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIGp1c3RpZnktY29udGVudDogY2Vu dGVyOwogICAgcGFkZGluZzogMCA4cHg7CiAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgIHot aW5kZXg6IDI7CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1tZmVyLWJnLCB0cmFuc3BhcmVudCk7CiAg ICBib3gtc2hhZG93OiB2YXIoLS1tZmVyLXNoYWRvdywgbm9uZSk7CiAgICBhbmltYXRpb246IHZh cigtLW1mZXItYW5pbSwgbm9uZSk7CiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMteHMp Owp9Ci5rZC1mZXJpZW4tYmFyLXRleHQgewogICAgZm9udC1zaXplOiBjYWxjKDExcHggKiB2YXIo LS1tZmVyLWZzLCAxKSk7CiAgICBmb250LXdlaWdodDogdmFyKC0tbWZlci1mdywgNzAwKTsKICAg IGNvbG9yOiB2YXIoLS1tZmVyLXRleHQsICMyNTYwMjkpOwogICAgbGV0dGVyLXNwYWNpbmc6IDAu M3B4OwogICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKICAgIHdoaXRlLXNwYWNlOiBub3dy YXA7CiAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7CiAg ICBtYXgtd2lkdGg6IDEwMCU7CiAgICB0ZXh0LXNoYWRvdzogMCAxcHggMCByZ2JhKDI1NSwyNTUs MjU1LDAuMzUpOwp9CltkYXRhLXRoZW1lPSJuaWdodCJdIC5rZC1mZXJpZW4tYmFyLXRleHQgewog ICAgY29sb3I6IHZhcigtLW1mZXItdGV4dCwgI2E1ZDZhNyk7CiAgICB0ZXh0LXNoYWRvdzogMCAx cHggMCByZ2JhKDAsMCwwLDAuNDUpOwp9Ci8qIFdvY2hlbmVuZC1NYXJrZXIgaW5uZXJoYWxiIGRl ciBGZXJpZW4tQmFyOiBkZXplbnRlLCBsZWljaHQgZHVua2xlcmUKICAgU2NocmFmZnVyIHVlYmVy IFNhL1NvLCBkYW1pdCBzaWUgYXVjaCB3YWVocmVuZCBkZXIgRmVyaWVuIG9wdGlzY2gKICAgc2lj aHRiYXIgYmxlaWJlbi4gUHJvIFdvY2hlbmVuZC1UYWcgZWluIDxzcGFuPiBtaXQgYWJzb2x1dGVy CiAgIFBvc2l0aW9uIChQaXhlbC1PZmZzZXQgd2lyZCB2b20gSlMgZ2VzZXR6dCkuICovCi5rZC1m ZXJpZW4tYmFyLXdlIHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHRvcDogMDsKICAgIGJv dHRvbTogMDsKICAgIGJhY2tncm91bmQ6IHJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQoCiAgICAg ICAgMTM1ZGVnLAogICAgICAgIHJnYmEoMCwwLDAsMC4xMCkgMCwKICAgICAgICByZ2JhKDAsMCww LDAuMTApIDRweCwKICAgICAgICB0cmFuc3BhcmVudCA0cHgsCiAgICAgICAgdHJhbnNwYXJlbnQg OHB4CiAgICApOwogICAgcG9pbnRlci1ldmVudHM6IG5vbmU7Cn0KW2RhdGEtdGhlbWU9Im5pZ2h0 Il0gLmtkLWZlcmllbi1iYXItd2UgewogICAgYmFja2dyb3VuZDogcmVwZWF0aW5nLWxpbmVhci1n cmFkaWVudCgKICAgICAgICAxMzVkZWcsCiAgICAgICAgcmdiYSgwLDAsMCwwLjMwKSAwLAogICAg ICAgIHJnYmEoMCwwLDAsMC4zMCkgNHB4LAogICAgICAgIHRyYW5zcGFyZW50IDRweCwKICAgICAg ICB0cmFuc3BhcmVudCA4cHgKICAgICk7Cn0KCi8qIEV2ZW50LUljb25zIChTb25kZXJ0ZXJtaW4g KyBHZWJ1cnRzdGFnKSDigJQgbGViZW4gamV0enQgaW4gZGVyIGdlbWVpbnNhbWVuCiAgIEFubGFz cy1aZWlsZSBzdGF0dCBlaW5lciBzZXBhcmF0ZW4gRXZlbnRzLVplaWxlIChNYWkgMjAyNikuICov Ci5rZC1ldmVudC1pY29uIHsKICAgIGZvbnQtc2l6ZTogMThweDsKICAgIGxpbmUtaGVpZ2h0OiAx OwogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgdXNlci1zZWxlY3Q6IG5vbmU7Cn0KLmtk LWV2ZW50LXNvbmRlciB7CiAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICB0cmFuc2l0aW9uOiB0cmFu c2Zvcm0gMC4xMnM7CiAgICAvKiBNb25vY2hyb21lIFN5bWJvbC1EYXJzdGVsbHVuZyAoQ2hlcnJ5 LVBpY2sgOGIyZDBmZCk6IGZvbGd0IGRlcgogICAgICAgVGhlbWUtVGV4dGZhcmJlIHN0YXR0IGJ1 bnRlbiBFbW9qaS4gKi8KICAgIGZvbnQtZmFtaWx5OiAiU2Vnb2UgVUkgU3ltYm9sIiwiQ2FtYnJp YSBNYXRoIiwiU1RJWCIsIkRlamFWdSBTYW5zIiwiTHVjaWRhIFNhbnMgVW5pY29kZSIsc2Fucy1z ZXJpZjsKICAgIGZvbnQtdmFyaWFudC1lbW9qaTogdGV4dDsKICAgIGNvbG9yOiB2YXIoLS10ZXh0 LW9uLXByaW1hcnksIGN1cnJlbnRDb2xvcik7CiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDsKICAg IGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgIG1p bi13aWR0aDogMThweDsKICAgIG1pbi1oZWlnaHQ6IDE4cHg7CiAgICBwYWRkaW5nOiAxcHggM3B4 OwogICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLXNtKTsKICAgIGJvcmRlcjogMnB4IHNv bGlkIHRyYW5zcGFyZW50OwogICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKfQovKiBIaW53ZWlz LS9XYXJudW5ncy1Tb25kZXJ0ZXJtaW5lIGFscyBrbGFyIGxlc2JhcmVzIEJhZGdlIHN0YXR0IG51 ciBoZWxsZXIKICAgR2x5cGggYXVmIGR1bmtsZW0gSGVhZGVyICh3YXIgYXVmIG1hbmNoZW4gSGlu dGVyZ3J1ZW5kZW4g4oCUIHouQi4gS2FybmV2YWwKICAgMTYuMDIg4oCUIHNjaHdlciBsZXNiYXIp LiBSdW5kZXIgSW5mby1QdW5rdCBtaXQga3JhZWZ0aWdlciBGdWVsbHVuZy4gKi8KLmtkLWV2ZW50 LXNvbmRlci5rZC1ldmVudC1oaW53ZWlzIHsKICAgIGJhY2tncm91bmQ6ICMyZjdmZDE7IGNvbG9y OiAjZmZmOyBmb250LXdlaWdodDogNzAwOwogICAgYm9yZGVyLXJhZGl1czogNTAlOyB3aWR0aDog MTdweDsgaGVpZ2h0OiAxN3B4OwogICAgbWluLXdpZHRoOiAxN3B4OyBtaW4taGVpZ2h0OiAxN3B4 OyBwYWRkaW5nOiAwOyBmb250LXNpemU6IDEycHg7Cn0KLmtkLWV2ZW50LXNvbmRlci5rZC1ldmVu dC13YXJudW5nIHsKICAgIGJhY2tncm91bmQ6ICNkNjZmMWU7IGNvbG9yOiAjZmZmOyBmb250LXdl aWdodDogNzAwOwogICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLXNtKTsKfQpbZGF0YS10 aGVtZT0ibmlnaHQiXSAua2QtZXZlbnQtc29uZGVyLmtkLWV2ZW50LWhpbndlaXMgeyBiYWNrZ3Jv dW5kOiAjM2E4ZmUwOyB9CltkYXRhLXRoZW1lPSJuaWdodCJdIC5rZC1ldmVudC1zb25kZXIua2Qt ZXZlbnQtd2FybnVuZyB7IGJhY2tncm91bmQ6ICNlMDdmMmU7IH0KLmtkLWV2ZW50LXNvbmRlcjpo b3ZlciB7IHRyYW5zZm9ybTogc2NhbGUoMS4xOCk7IH0KLyogIldpY2h0aWciLU1hcmtpZXJ1bmcg KENoZXJyeS1QaWNrIDg0ZmIwZjcsIGhpbnRlciBUb2dnbGUKICAgYGZlYXR1cmVzLnNvbmRlcnRl cm1pbmVXaWNodGlnYCk6IGJvcmRlYXV4cm90ZXIgU2lnbmFsLVJhaG1lbi4gKi8KLmtkLWV2ZW50 LXNvbmRlci5rZC1ldmVudC13aWNodGlnIHsKICAgIGJvcmRlci1jb2xvcjogIzgwMDAyMDsKICAg IGJhY2tncm91bmQ6IHJnYmEoMTI4LDAsMzIsMC4xMik7CiAgICBib3gtc2hhZG93OiAwIDAgMCAx cHggcmdiYSgxMjgsMCwzMiwwLjM1KTsKfQpbZGF0YS10aGVtZT0ibmlnaHQiXSAua2QtZXZlbnQt c29uZGVyLmtkLWV2ZW50LXdpY2h0aWcgewogICAgYm9yZGVyLWNvbG9yOiAjYzA0NTVhOwogICAg YmFja2dyb3VuZDogcmdiYSgxOTIsNjksOTAsMC4xOCk7Cn0KLmtkLWV2ZW50LWdlYnVydHN0YWcg eyBjdXJzb3I6IGhlbHA7IH0KLmtkLWV2ZW50cy1rbGlja2JhciB7IGN1cnNvcjogcG9pbnRlcjsg fQoKLyogWmVpbGUgNDogU3TDpHJrZSAqLwojc3RhZXJrZS16ZWlsZSAua2QtemVsbGUgewogICAg Zm9udC1zaXplOiB2YXIoLS1mcy14cyk7CiAgICBmb250LXdlaWdodDogNzAwOwogICAgY29sb3I6 ICNmZmY7CiAgICBib3JkZXItcmlnaHQtY29sb3I6IHJnYmEoMjU1LDI1NSwyNTUsMC4xNSk7Cn0K LnN0YWVya2Utb2sgeyBiYWNrZ3JvdW5kOiAjMjc4OTZEOyB9Ci5zdGFlcmtlLXdhcm51bmcgeyBi YWNrZ3JvdW5kOiAjQjAzQTJFOyBhbmltYXRpb246IHB1bHNSb3QgMnMgZWFzZS1pbi1vdXQgaW5m aW5pdGU7IH0KQGtleWZyYW1lcyBwdWxzUm90IHsgMCUsMTAwJSB7IG9wYWNpdHk6MTsgfSA1MCUg eyBvcGFjaXR5OjAuNzsgfSB9CgovKiBTY2hpY2h0Zm9sZ2UtWmVpbGVuICovCiNzY2hpY2h0Zm9s Z2UtcmVjaHRzIC5rb3BmLWRhdGVuLXplaWxlIC5rZC16ZWxsZSB7CiAgICBiYWNrZ3JvdW5kOiB2 YXIoLS1iZy1jYXJkLWFsdCk7CiAgICBjb2xvcjogdmFyKC0tdGV4dC1zZWNvbmRhcnkpOwogICAg Zm9udC1zaXplOiA5cHg7CiAgICBmb250LXdlaWdodDogNTAwOwogICAgYm9yZGVyLXJpZ2h0LWNv bG9yOiB2YXIoLS1ib3JkZXItbGlnaHQpOwp9CiNzY2hpY2h0Zm9sZ2UtcmVjaHRzIC5rb3BmLWRh dGVuLXplaWxlOmZpcnN0LWNoaWxkIC5rZC16ZWxsZSB7CiAgICBib3JkZXItdG9wOiAxcHggc29s aWQgdmFyKC0tYm9yZGVyLXN0cm9uZyk7Cn0KCi8qIFRhZ2VzdHlwZW4gaW0gS29wZiDigJQgc3Rh cmtlciBLb250cmFzdCAqLwoua2Qtd29jaGVuZW5kZSB7IGJhY2tncm91bmQ6ICM3MTkxQjMgIWlt cG9ydGFudDsgY29sb3I6ICNGMkY2RkEgIWltcG9ydGFudDsgfQoua2QtZmVpZXJ0YWctYmcgeyBi YWNrZ3JvdW5kOiAjNEE2QThDICFpbXBvcnRhbnQ7IGNvbG9yOiAjRkZGRkZGICFpbXBvcnRhbnQ7 IH0KLyogV2ljaHRpZ2UgRmVpZXJ0YWdlOiBhbGxlIHZpc3VlbGxlbiBQYXJhbWV0ZXIga29tbWVu IHVlYmVyIEN1c3RvbS0KICAgUHJvcGVydGllcyAoc2llaGUgYWRtaW5fZXJzY2hlaW51bmdzYmls ZC5qcykuIERlZmF1bHRzIHNpbmQgaW0gRWRpdG9yCiAgIHBlciBLbGljayB3aWVkZXJoZXJzdGVs bGJhci4gKi8KLmtkLWZlaWVydGFnLXdpY2h0aWcgewogICAgYmFja2dyb3VuZDogdmFyKC0tbWZ3 aS1iZywgdHJhbnNwYXJlbnQpICFpbXBvcnRhbnQ7CiAgICBjb2xvcjogICAgICB2YXIoLS1tZndp LXRleHQsIGluaGVyaXQpICFpbXBvcnRhbnQ7CiAgICBmb250LXdlaWdodDogdmFyKC0tbWZ3aS1m dywgNDAwKSAhaW1wb3J0YW50OwogICAgYm94LXNoYWRvdzogdmFyKC0tbWZ3aS1zaGFkb3csIG5v bmUpICFpbXBvcnRhbnQ7CiAgICBhbmltYXRpb246ICB2YXIoLS1tZndpLWFuaW0sIG5vbmUpOwp9 Ci5rZC1oZXV0ZSB7IGJhY2tncm91bmQ6IHZhcigtLXRhZy1oZXV0ZSkgIWltcG9ydGFudDsgY29s b3I6ICNmZmYgIWltcG9ydGFudDsgYm94LXNoYWRvdzogaW5zZXQgMnB4IDAgMCAjRDRBMDE3LCBp bnNldCAtMnB4IDAgMCAjRDRBMDE3OyB9CltkYXRhLXRoZW1lPSJuaWdodCJdIC5rZC1oZXV0ZSB7 IGJveC1zaGFkb3c6IGluc2V0IDJweCAwIDAgI0U1QjUzQSwgaW5zZXQgLTJweCAwIDAgI0U1QjUz QTsgfQpbZGF0YS10aGVtZT0ibmlnaHQiXSAua2Qtd29jaGVuZW5kZSB7IGJhY2tncm91bmQ6ICMy RTQwNTggIWltcG9ydGFudDsgY29sb3I6ICNDOUQ2RTQgIWltcG9ydGFudDsgfQpbZGF0YS10aGVt ZT0ibmlnaHQiXSAua2QtZmVpZXJ0YWctYmcgeyBiYWNrZ3JvdW5kOiAjM0Q1NjcyICFpbXBvcnRh bnQ7IGNvbG9yOiAjRThFRUY1ICFpbXBvcnRhbnQ7IH0KLyogTmlnaHQtVGhlbWU6IFRhZy9OYWNo dCB0ZWlsZW4gc2ljaCBha3R1ZWxsIGRpZSBWYXJpYWJsZW4gYXVzIGRlbQogICBFZGl0b3Ig4oCU IGJlaSBCZWRhcmYga2FubiBoaWVyIHNwYWV0ZXIgZWluIFRoZW1lLU92ZXJyaWRlIGdyZWlmZW4u ICovCgovKiBTb25kZXJ0YWdlIOKAlCBhbGxlIHZpc3VlbGxlbiBQYXJhbWV0ZXIga29tbWVuIHVl YmVyIEN1c3RvbS1Qcm9wZXJ0aWVzCiAgIChzaWVoZSBhZG1pbl9lcnNjaGVpbnVuZ3NiaWxkLmpz KS4gUHVsc2UtQW5pbWF0aW9uIHdpcmQgdWViZXIgendlaQogICBCb3gtU2hhZG93LUF1c3ByYWVn dW5nZW4gaW50ZXJwb2xpZXJ0OiAtLW0uLi4tc2hhZG93IChSdWhlLVp1c3RhbmQpCiAgIHVuZCAt LW0uLi4tc2hhZG93LXB1bHMgKFB1bHNlLVNwaXR6ZSwgNTAlLUtleWZyYW1lKS4gKi8KLmtkLXNv bmRlcnRhZy1oaW53ZWlzIHsKICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLW1oaW4tYmcsIHRy YW5zcGFyZW50KTsKICAgIGNvbG9yOiAgICAgICAgICAgIHZhcigtLW1oaW4tdGV4dCwgaW5oZXJp dCk7CiAgICBmb250LXdlaWdodDogICAgICB2YXIoLS1taGluLWZ3LCA0MDApOwogICAgYm94LXNo YWRvdzogICAgICAgdmFyKC0tbWhpbi1zaGFkb3csIG5vbmUpOwogICAgYW5pbWF0aW9uOiAgICAg ICAgdmFyKC0tbWhpbi1hbmltLCBub25lKTsKICAgIC0tbWFya2llcnVuZy1zaGFkb3ctcHVsczog dmFyKC0tbWhpbi1zaGFkb3ctcHVscywgdmFyKC0tbWhpbi1zaGFkb3csIG5vbmUpKTsKfQoua2Qt c29uZGVydGFnLXdhcm51bmcgewogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbXdhci1iZywg dHJhbnNwYXJlbnQpOwogICAgY29sb3I6ICAgICAgICAgICAgdmFyKC0tbXdhci10ZXh0LCBpbmhl cml0KTsKICAgIGZvbnQtd2VpZ2h0OiAgICAgIHZhcigtLW13YXItZncsIDQwMCk7CiAgICBib3gt c2hhZG93OiAgICAgICB2YXIoLS1td2FyLXNoYWRvdywgbm9uZSk7CiAgICBhbmltYXRpb246ICAg ICAgICB2YXIoLS1td2FyLWFuaW0sIG5vbmUpOwogICAgLS1tYXJraWVydW5nLXNoYWRvdy1wdWxz OiB2YXIoLS1td2FyLXNoYWRvdy1wdWxzLCB2YXIoLS1td2FyLXNoYWRvdywgbm9uZSkpOwp9Ci8q IFBybyBNYXJraWVydW5nc3R5cCBlaWdlbmVyIEBrZXlmcmFtZXMtQmxvY2ssIHdlaWwgQ1NTLUFu aW1hdGlvbmVuCiAgIGlocmUgVmFyaWFibGVuLUF1c3dlcnR1bmcgenVyIEFuaW1hdGlvbi1EZWZp bml0aW9ucy1aZWl0IG1hY2hlbiDigJQKICAgZWluIGdlbmVyaXNjaGVyIEJsb2NrIGtvZW5udGUg ZGllIHBlci1FbGVtZW50IGdlc2V0enRlbiBWYXJpYWJsZW4KICAgbmljaHQgdHJlbm5lbi4gKi8K QGtleWZyYW1lcyBwdWxzSGlud2VpcyAgeyAwJSwxMDAlIHsgYm94LXNoYWRvdzogdmFyKC0tbWhp bi1zaGFkb3csIG5vbmUpOyB9IDUwJSB7IGJveC1zaGFkb3c6IHZhcigtLW1oaW4tc2hhZG93LXB1 bHMsIHZhcigtLW1oaW4tc2hhZG93LCBub25lKSk7IH0gfQpAa2V5ZnJhbWVzIHB1bHNXYXJudW5n ICB7IDAlLDEwMCUgeyBib3gtc2hhZG93OiB2YXIoLS1td2FyLXNoYWRvdywgbm9uZSk7IH0gNTAl IHsgYm94LXNoYWRvdzogdmFyKC0tbXdhci1zaGFkb3ctcHVscywgdmFyKC0tbXdhci1zaGFkb3cs IG5vbmUpKTsgfSB9CkBrZXlmcmFtZXMgcHVsc0ZlaWVydGFnIHsgMCUsMTAwJSB7IGJveC1zaGFk b3c6IHZhcigtLW1md2ktc2hhZG93LCBub25lKTsgfSA1MCUgeyBib3gtc2hhZG93OiB2YXIoLS1t ZndpLXNoYWRvdy1wdWxzLCB2YXIoLS1tZndpLXNoYWRvdywgbm9uZSkpOyB9IH0KQGtleWZyYW1l cyBwdWxzSGV1dGUgICAgeyAwJSwxMDAlIHsgYm94LXNoYWRvdzogdmFyKC0tbWhlLXNoYWRvdywg IG5vbmUpOyB9IDUwJSB7IGJveC1zaGFkb3c6IHZhcigtLW1oZS1zaGFkb3ctcHVscywgIHZhcigt LW1oZS1zaGFkb3csICBub25lKSk7IH0gfQpAa2V5ZnJhbWVzIHB1bHNGZXJpZW4gICB7IDAlLDEw MCUgeyBib3gtc2hhZG93OiB2YXIoLS1tZmVyLXNoYWRvdywgbm9uZSk7IH0gNTAlIHsgYm94LXNo YWRvdzogdmFyKC0tbWZlci1zaGFkb3ctcHVscywgdmFyKC0tbWZlci1zaGFkb3csIG5vbmUpKTsg fSB9CgovKiBEaXJ0eS1QdWxzZSBmdWVyIFNwZWljaGVybi1CdXR0b25zIG1pdCB1bmdlc3BlaWNo ZXJ0ZW4gQWVuZGVydW5nZW4uCiAgIFZpc3VlbGxlciBIaW53ZWlzIGJldm9yIGRlciBVc2VyIHZl cnNlaGVudGxpY2ggZGVuIFRhYiB3ZWNoc2VsdCB1bmQgSW5wdXQKICAgdmVybGllcnQgKHNpZWhl IEZhY2hhdWZzaWNodC1UYWJlbGxlKS4gKi8KLmJ0bi5kaXJ0eS1wdWxzZSB7IGFuaW1hdGlvbjog ZGlydHlQdWxzIDEuNnMgZWFzZS1pbi1vdXQgaW5maW5pdGU7IGJveC1zaGFkb3c6IDAgMCAwIDAg cmdiYSgyMDIsMTExLDMwLDAuNik7IH0KQGtleWZyYW1lcyBkaXJ0eVB1bHMgeyAwJSwxMDAlIHsg Ym94LXNoYWRvdzogMCAwIDAgMCByZ2JhKDIwMiwxMTEsMzAsMC42KTsgfSA1MCUgeyBib3gtc2hh ZG93OiAwIDAgMCA2cHggcmdiYSgyMDIsMTExLDMwLDApOyB9IH0KCi8qIEltcGVyc29uYXRpb24t QmFubmVyOiB6ZWlndCwgZGFzcyBkaWUgT2JlcmZsYWVjaGUgYWt0dWVsbCBhbHMgYW5kZXJlCiAg IFJvbGxlIHNpbXVsaWVydCB3aXJkLiBTZXJ2ZXItUmVjaHRlIGJsZWliZW4gU1UsIFVJIGFlbmRl cnQgc2ljaCByZWluCiAgIGNsaWVudHNlaXRpZy4gKi8KLmltcGVyc29uYXRlLWJhbm5lciB7CiAg ICBwb3NpdGlvbjogc3RpY2t5OwogICAgdG9wOiAwOwogICAgei1pbmRleDogdmFyKC0tei1vdmVy bGF5KTsKICAgIGJhY2tncm91bmQ6IHZhcigtLWZhcmJlLXdhcm51bmcpOwogICAgY29sb3I6ICNm ZmY7CiAgICBwYWRkaW5nOiA4cHggMTZweDsKICAgIGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1z OiBjZW50ZXI7IGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgZ2FwOiAxNHB4OwogICAgZm9u dC13ZWlnaHQ6IDYwMDsKICAgIGxldHRlci1zcGFjaW5nOiAwLjJweDsKICAgIGJveC1zaGFkb3c6 IDAgMnB4IDZweCByZ2JhKDAsMCwwLDAuMTUpOwp9Ci5pbXBlcnNvbmF0ZS1iYW5uZXIgLmltcC1p Y29uIHsgZm9udC1zaXplOiAxOHB4OyB9Ci5pbXBlcnNvbmF0ZS1iYW5uZXIgLmJ0biB7IGJhY2tn cm91bmQ6IHJnYmEoMjU1LDI1NSwyNTUsMC4yKTsgY29sb3I6ICNmZmY7IGJvcmRlci1jb2xvcjog cmdiYSgyNTUsMjU1LDI1NSwwLjUpOyB9Ci5pbXBlcnNvbmF0ZS1iYW5uZXIgLmJ0bjpob3ZlciB7 IGJhY2tncm91bmQ6IHJnYmEoMjU1LDI1NSwyNTUsMC4zMik7IH0KCi8qIChBbHRlIFNvbmRlcm1h cmtlci1DU1MgaW4gZGVyIGZydWVoZXJlbiBGZXJpZW4tWmVpbGUgZW50ZmVybnQg4oCUIEZpbmRp bmdzIEMuMTIvQy4xMy4KICAgU29uZGVydGVybWluZSBzaW5kIGpldHp0IGluIGRlciBlaWdlbmVu IEV2ZW50cy1aZWlsZSBtaXQgZ3Jvc3NlbiBJY29ucy4pICovCgovKiBCYWRnZXMgaW4gS29wZnpl aWxlIChEYXR1bSkg4oCUIEdlYnVydHN0YWcsIEhpbndlaXMsIFdhcm51bmcgKi8KLmtkLXplbGxl IHsgcG9zaXRpb246IHJlbGF0aXZlOyB9Ci5rZC1iYWRnZXMgewogICAgcG9zaXRpb246IGFic29s dXRlOwogICAgdG9wOiAxcHg7CiAgICByaWdodDogMXB4OwogICAgZGlzcGxheTogZmxleDsKICAg IGdhcDogMXB4OwogICAgcG9pbnRlci1ldmVudHM6IGF1dG87Cn0KLmtkLWJhZGdlIHsKICAgIGZv bnQtc2l6ZTogOHB4OwogICAgbGluZS1oZWlnaHQ6IDE7CiAgICBjdXJzb3I6IGhlbHA7CiAgICBm aWx0ZXI6IGRyb3Atc2hhZG93KDAgMXB4IDFweCByZ2JhKDAsMCwwLDAuNSkpOwp9Ci5rZC1iYWRn ZS1nYiB7IGZvbnQtc2l6ZTogOXB4OyB9Ci5rZC1iYWRnZS13YXJudW5nIHsgY29sb3I6ICNmZjll NDI7IGZvbnQtd2VpZ2h0OiA3MDA7IH0KLmtkLWJhZGdlLWhpbndlaXMgeyBjb2xvcjogIzdlYjhk YTsgZm9udC13ZWlnaHQ6IDcwMDsgfQoKLyogU2NoaWNodGZvbGdlLUZhcmJlbiAoZGV6ZW50ZSBF aW5mw6RyYnVuZyBqZSBSb3RhdGlvbikgKi8KI3NjaGljaHRmb2xnZS1yZWNodHMgLnNmLWFiYyB7 IGJhY2tncm91bmQ6ICNFOEYxRTggIWltcG9ydGFudDsgY29sb3I6ICMyZDVhM2QgIWltcG9ydGFu dDsgfQojc2NoaWNodGZvbGdlLXJlY2h0cyAuc2YtYmNhIHsgYmFja2dyb3VuZDogI0U4RURGNSAh aW1wb3J0YW50OyBjb2xvcjogIzJkNDM3MCAhaW1wb3J0YW50OyB9CiNzY2hpY2h0Zm9sZ2UtcmVj aHRzIC5zZi1jYWIgeyBiYWNrZ3JvdW5kOiAjRjVFOEU4ICFpbXBvcnRhbnQ7IGNvbG9yOiAjNmIy ZDJkICFpbXBvcnRhbnQ7IH0KI3NjaGljaHRmb2xnZS1yZWNodHMgLnNmLXBvb2wgeyBiYWNrZ3Jv dW5kOiAjRUNFQ0VDICFpbXBvcnRhbnQ7IGNvbG9yOiAjNjY2ICFpbXBvcnRhbnQ7IGZvbnQtc3R5 bGU6IGl0YWxpYzsgfQpbZGF0YS10aGVtZT0ibmlnaHQiXSAjc2NoaWNodGZvbGdlLXJlY2h0cyAu c2YtYWJjIHsgYmFja2dyb3VuZDogIzFjMzAyNCAhaW1wb3J0YW50OyBjb2xvcjogIzhmZDBhMCAh aW1wb3J0YW50OyB9CltkYXRhLXRoZW1lPSJuaWdodCJdICNzY2hpY2h0Zm9sZ2UtcmVjaHRzIC5z Zi1iY2EgeyBiYWNrZ3JvdW5kOiAjMWMyNDM2ICFpbXBvcnRhbnQ7IGNvbG9yOiAjOGZiMGUwICFp bXBvcnRhbnQ7IH0KW2RhdGEtdGhlbWU9Im5pZ2h0Il0gI3NjaGljaHRmb2xnZS1yZWNodHMgLnNm LWNhYiB7IGJhY2tncm91bmQ6ICMzMDFjMWMgIWltcG9ydGFudDsgY29sb3I6ICNlMGEwYTAgIWlt cG9ydGFudDsgfQpbZGF0YS10aGVtZT0ibmlnaHQiXSAjc2NoaWNodGZvbGdlLXJlY2h0cyAuc2Yt cG9vbCB7IGJhY2tncm91bmQ6ICMyYTJhMmEgIWltcG9ydGFudDsgY29sb3I6ICM5OTkgIWltcG9y dGFudDsgfQoKLyogUmh5dGhtdXMtVm9yc2NoYXUgaW0gQWRtaW4tVGFiICovCi5zZi12b3JzY2hh dSB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBwYWRkaW5nOiAycHggNXB4OwogICAg bWFyZ2luOiAxcHg7CiAgICBmb250LXNpemU6IHZhcigtLWZzLXhzKTsKICAgIGZvbnQtd2VpZ2h0 OiA2MDA7CiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMteHMpOwogICAgZm9udC1mYW1p bHk6IG1vbm9zcGFjZTsKfQouc2Ytdm9yc2NoYXUuc2YtYWJjIHsgYmFja2dyb3VuZDogI0Q4RThE ODsgY29sb3I6ICMyZDVhM2Q7IH0KLnNmLXZvcnNjaGF1LnNmLWJjYSB7IGJhY2tncm91bmQ6ICNE OEUwRjA7IGNvbG9yOiAjMmQ0MzcwOyB9Ci5zZi12b3JzY2hhdS5zZi1jYWIgeyBiYWNrZ3JvdW5k OiAjRjBEOEQ4OyBjb2xvcjogIzZiMmQyZDsgfQouc2Ytdm9yc2NoYXUuc2Ytdm9yc2NoYXUtcG9v bCB7IGJhY2tncm91bmQ6ICNFMEUwRTA7IGNvbG9yOiAjNjY2OyBmb250LXN0eWxlOiBpdGFsaWM7 IHBhZGRpbmc6IDNweCAxMHB4OyB9CltkYXRhLXRoZW1lPSJuaWdodCJdIC5zZi12b3JzY2hhdS5z Zi1hYmMgeyBiYWNrZ3JvdW5kOiAjMWMzMDI0OyBjb2xvcjogIzhmZDBhMDsgfQpbZGF0YS10aGVt ZT0ibmlnaHQiXSAuc2Ytdm9yc2NoYXUuc2YtYmNhIHsgYmFja2dyb3VuZDogIzFjMjQzNjsgY29s b3I6ICM4ZmIwZTA7IH0KW2RhdGEtdGhlbWU9Im5pZ2h0Il0gLnNmLXZvcnNjaGF1LnNmLWNhYiB7 IGJhY2tncm91bmQ6ICMzMDFjMWM7IGNvbG9yOiAjZTBhMGEwOyB9CltkYXRhLXRoZW1lPSJuaWdo dCJdIC5zZi12b3JzY2hhdS5zZi12b3JzY2hhdS1wb29sIHsgYmFja2dyb3VuZDogIzJhMmEyYTsg Y29sb3I6ICM5OTk7IH0KCi8qID09PT09IERhdGVuZ3JpZCA9PT09PSAqLwojZ3JpZC1kYXRlbiB7 IGRpc3BsYXk6IGZsZXg7IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47IH0KCi5ncmlkLXplaWxlIHsK ICAgIGRpc3BsYXk6IGZsZXg7CiAgICBoZWlnaHQ6IHZhcigtLXplbGxlLWhvZWhlKTsKICAgIGJv cmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1ncmlkLWxpbmllKTsKfQoKLyogR3J1cHBlbnRy ZW5uemVpbGUgaW0gR3JpZCDigJQgZGllc2VsYmUgSGVhZGVyLUJsYXUtRmxhZWNoZSB3aWUgZGll IEtvcGZsZWlzdGUsCiAgIGRhbWl0IGRlciBsZWVyZSBCZXJlaWNoIG5lYmVuIGRlbSAiLS0tIERJ RU5TVEdSVVBQRSBYIC0tLSItTGFiZWwgbmljaHQgbWVocgogICB3ZWlzcyB3aXJrdC4gIWltcG9y dGFudCwgd2VpbCBsZWVyZSBGbGV4LUtpbmRlciBzb25zdCBnZWxlZ2VudGxpY2ggdm9tCiAgIFBh cmVudC1IaW50ZXJncnVuZCB1ZWJlcmRlY2t0IHdlcmRlbi4gKi8KI2dyaWQtZGF0ZW4gPiAuZ3Jp ZC10cmVubmVyIHsKICAgIGRpc3BsYXk6IGZsZXggIWltcG9ydGFudDsKICAgIGhlaWdodDogMThw eCAhaW1wb3J0YW50OwogICAgYmFja2dyb3VuZDogdmFyKC0tYmctcHJpbWFyeSkgIWltcG9ydGFu dDsKICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1ib3JkZXItY29sb3IpOwogICAg Ym9yZGVyLXRvcDogMXB4IHNvbGlkIHZhcigtLWJvcmRlci1jb2xvcik7CiAgICBtaW4td2lkdGg6 IDEwMCUgIWltcG9ydGFudDsKfQoKLmdyaWQtemVsbGUgewogICAgd2lkdGg6IHZhcigtLXplbGxl LWJyZWl0ZSk7CiAgICBtaW4td2lkdGg6IHZhcigtLXplbGxlLWJyZWl0ZSk7CiAgICBkaXNwbGF5 OiBmbGV4OwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIGp1c3RpZnktY29udGVudDogY2Vu dGVyOwogICAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgdmFyKC0tZ3JpZC1saW5pZSk7CiAgICBm b250LXNpemU6IDlweDsKICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICBjdXJzb3I6IHBvaW50ZXI7 CiAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuMXM7CiAgICBvdmVyZmxvdzogaGlkZGVuOwogICAg d2hpdGUtc3BhY2U6IG5vd3JhcDsKfQouZ3JpZC16ZWxsZTpob3ZlciB7IG9wYWNpdHk6IDAuODsg b3V0bGluZTogMnB4IHNvbGlkIHZhcigtLXRleHQtaGVhZGluZyk7IG91dGxpbmUtb2Zmc2V0OiAt MnB4OyB6LWluZGV4OiAxOyB9Ci8qIExpbmtza2xpY2stTWFya2llcnVuZyAoQXVzd2FobCBvaG5l IExvY2spLiBLbGFyZXIgUmluZyBpbiBBa3plbnRmYXJiZSwKICAgYmxlaWJ0IHNpY2h0YmFyIGJp cyBlaW5lIGFuZGVyZSBaZWxsZSBtYXJraWVydCBvZGVyIG5ldSBnZXJlbmRlcnQgd2lyZC4KICAg UmVjaHRza2xpY2sgYXVmIGRpZSBtYXJraWVydGUgWmVsbGUgb2VmZm5ldCBkZW4gU2NoaWNodC1F ZGl0b3IuICovCi5ncmlkLXplbGxlLW1hcmtpZXJ0IHsgb3V0bGluZTogMnB4IHNvbGlkIHZhcigt LWJnLXByaW1hcnkpOyBvdXRsaW5lLW9mZnNldDogLTJweDsgei1pbmRleDogMjsgYm94LXNoYWRv dzogaW5zZXQgMCAwIDAgMXB4IHZhcigtLWJnLXByaW1hcnkpOyB9CltkYXRhLXRoZW1lPSJuaWdo dCJdIC5ncmlkLXplbGxlLW1hcmtpZXJ0IHsgb3V0bGluZS1jb2xvcjogIzVhOWZkYjsgYm94LXNo YWRvdzogaW5zZXQgMCAwIDAgMXB4ICM1YTlmZGI7IH0KLmdyaWQtemVsbGUuZ2VzcGVycnQgeyBj dXJzb3I6IG5vdC1hbGxvd2VkOyBvcGFjaXR5OiAwLjY7IH0KLyogR2VzcGVycnRlIFplbGxlbiBr bGFyIGFiZ2VzZXR6dDogZ2VkYWVtcGZ0ICsgbGVpY2h0ZSBHcmF1c3R1ZmUsIGRhbWl0IG1hbiBz aWUKICAgYWxzICJuaWNodC1lZGl0aWVyYmFyIiBlcmtlbm50LCBkZXIgSW5oYWx0IGZyZW1kZXIg R3J1cHBlbiBhYmVyIGxlc2JhciBibGVpYnQKICAgKFVzZXItV3Vuc2NoIDIwMjYtMDUtMjcpLiBD aGVycnktUGljayAyYTc3NTJiLiAqLwouZ3JpZC16ZWxsZS1nZXNwZXJydCB7IGN1cnNvcjogbm90 LWFsbG93ZWQ7IG9wYWNpdHk6IDAuNTsgZmlsdGVyOiBncmF5c2NhbGUoMC41KTsgfQouZ3JpZC16 ZWxsZS1nZXNwZXJydDpob3ZlciB7IG9wYWNpdHk6IDAuNzU7IG91dGxpbmU6IDJweCBkYXNoZWQg dmFyKC0tdGV4dC1tdXRlZCk7IG91dGxpbmUtb2Zmc2V0OiAtMnB4OyB9CgovKiBMaXZlLVN5bmM6 IFplbGxlIHdpcmQgZ2VyYWRlIHZvbiBlaW5lbSBhbmRlcmVuIFVzZXIgZWRpdGllcnQuCiAgIFZp c3VlbGxlciBJbmRpa2F0b3IgKyBjdXJzb3Igbm90LWFsbG93ZWQuIFRvb2x0aXAgd2lyZCB2b20g SlMgZ2VzZXR6dC4gKi8KLmdyaWQtemVsbGUtbG9ja2VkIHsKICAgIGN1cnNvcjogbm90LWFsbG93 ZWQgIWltcG9ydGFudDsKICAgIGJveC1zaGFkb3c6IGluc2V0IDAgMCAwIDJweCAjQ0E2RjFFICFp bXBvcnRhbnQ7ICAvKiB3YXJuLW9yYW5nZSBSYWhtZW4gKi8KICAgIHBvc2l0aW9uOiByZWxhdGl2 ZTsKfQouZ3JpZC16ZWxsZS1sb2NrZWQ6OmFmdGVyIHsKICAgIGNvbnRlbnQ6ICcnOwogICAgcG9z aXRpb246IGFic29sdXRlOwogICAgdG9wOiAxcHg7IHJpZ2h0OiAxcHg7CiAgICB3aWR0aDogNnB4 OyBoZWlnaHQ6IDZweDsKICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgIGJhY2tncm91bmQ6ICND QTZGMUU7CiAgICBib3gtc2hhZG93OiAwIDAgNHB4IHJnYmEoMjAyLDExMSwzMCwwLjYpOwogICAg cG9pbnRlci1ldmVudHM6IG5vbmU7Cn0KW2RhdGEtdGhlbWU9Im5pZ2h0Il0gLmdyaWQtemVsbGUt bG9ja2VkIHsgYm94LXNoYWRvdzogaW5zZXQgMCAwIDAgMnB4ICNFNjhBMzUgIWltcG9ydGFudDsg fQpbZGF0YS10aGVtZT0ibmlnaHQiXSAuZ3JpZC16ZWxsZS1sb2NrZWQ6OmFmdGVyIHsgYmFja2dy b3VuZDogI0U2OEEzNTsgfQoKLyogTGl2ZS1TeW5jOiBBdWZsZXVjaHRlbiBiZWkgcmVtb3RlLWdl dHJpZ2dlcnRlbiBBZW5kZXJ1bmdlbi4KICAgRmFyYmUgKyBHbG93ICsgRGF1ZXIgdWViZXIgQ3Vz dG9tLVByb3BlcnRpZXMgYXVzIGRlbSBFcnNjaGVpbnVuZ3MtCiAgIGJpbGQtRWRpdG9yICgtLW1z Zi0qKS4gRGVmYXVsdC1BbmltYXRpb24gbGFldWZ0IGVpbm1hbCwgZGF1ZXIgYXVzCiAgIC0tbXNm LWRhdWVyIChGYWxsYmFjayAxNTAwbXMpLiAqLwpAa2V5ZnJhbWVzIHplbGxlLWZsYXNoIHsKICAg IDAlICAgeyBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1tc2YtYmcsIHJnYmEoMjU1LDIzMCwxMjgs MC44NSkpOyBib3gtc2hhZG93OiB2YXIoLS1tc2Ytc2hhZG93LCAwIDAgMTJweCA0cHggcmdiYSgy NTUsMjE1LDAsMC44NSkpOyB9CiAgICA1MCUgIHsgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbXNm LWJnLCByZ2JhKDI1NSwyMzAsMTI4LDAuNTUpKTsgYm94LXNoYWRvdzogdmFyKC0tbXNmLXNoYWRv dy1wdWxzLCB2YXIoLS1tc2Ytc2hhZG93LCAwIDAgOHB4IDJweCByZ2JhKDI1NSwyMTUsMCwwLjU1 KSkpOyB9CiAgICAxMDAlIHsgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7IGJveC1zaGFk b3c6IG5vbmU7IH0KfQouemVsbGUtZmxhc2ggeyBhbmltYXRpb246IHplbGxlLWZsYXNoIHZhcigt LW1zZi1kYXVlciwgMTUwMG1zKSBlYXNlLW91dDsgfQoKLyogRXhjZWwtYWVobmxpY2hlciBGdWVs bC1HcmlmZjoKICAgLSBzb3VyY2UgPSBRdWVsbC1aZWxsZSAoaGF0dGUgZ2VyYWRlIGVpbmVuIEVk aXQpCiAgIC0gdGFyZ2V0ID0gdm9yZ2VtZXJrdGUgWmVsbGUgd2FlaHJlbmQgZGVzIERyYWdzCiAg IC0gI2ZpbGwtaGFuZGxlID0gZGFzIGtsZWluZSBibGF1ZSBRdWFkcmF0IHVudGVuIHJlY2h0cyBh biBkZXIgUXVlbGxlICovCi5ncmlkLXplbGxlLWZpbGwtc291cmNlIHsKICAgIG91dGxpbmU6IDJw eCBzb2xpZCB2YXIoLS1mYXJiZS1ha3plbnQsICM0YTkwZTIpICFpbXBvcnRhbnQ7CiAgICBvdXRs aW5lLW9mZnNldDogLTJweDsKICAgIHotaW5kZXg6IDI7Cn0KLmdyaWQtemVsbGUtZmlsbC10YXJn ZXQgewogICAgb3V0bGluZTogMXB4IGRhc2hlZCB2YXIoLS1mYXJiZS1ha3plbnQsICM0YTkwZTIp OwogICAgb3V0bGluZS1vZmZzZXQ6IC0xcHg7CiAgICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXIt Z3JhZGllbnQoNDVkZWcsIHRyYW5zcGFyZW50IDAgMzUlLCByZ2JhKDc0LDE0NCwyMjYsMC4xOCkg MzUlIDY1JSwgdHJhbnNwYXJlbnQgNjUlKTsKfQojZmlsbC1oYW5kbGUgewogICAgcG9zaXRpb246 IGZpeGVkOwogICAgd2lkdGg6IDhweDsgaGVpZ2h0OiA4cHg7CiAgICBiYWNrZ3JvdW5kOiAjOGIw MDAwOwogICAgYm9yZGVyOiAxcHggc29saWQgI2ZmZjsKICAgIGN1cnNvcjogY3Jvc3NoYWlyOwog ICAgei1pbmRleDogMTAwMDsKICAgIGJveC1zaGFkb3c6IDAgMXB4IDJweCByZ2JhKDAsMCwwLDAu NDUpOwogICAgYm9yZGVyLXJhZGl1czogMXB4Owp9CiNmaWxsLWhhbmRsZTpob3ZlciB7IHRyYW5z Zm9ybTogc2NhbGUoMS40KTsgYmFja2dyb3VuZDogI2EwMDAwMDsgfQoKLyogU3BhbHRlbnR5cGVu IOKAlCBkZXV0bGljaGUgVW50ZXJzY2hlaWR1bmcgKi8KLnNwYWx0ZS13b2NoZW5lbmRlIHsgYmFj a2dyb3VuZC1jb2xvcjogI0VERjJGODsgYm9yZGVyLXJpZ2h0LWNvbG9yOiAjRDRERUVDOyB9Ci5z cGFsdGUtZmVpZXJ0YWcgICB7IGJhY2tncm91bmQtY29sb3I6ICNEN0U0RjA7IGJvcmRlci1yaWdo dC1jb2xvcjogI0IwQzREODsgfQouc3BhbHRlLWZlcmllbiAgICAgeyBiYWNrZ3JvdW5kLWNvbG9y OiB2YXIoLS1tZmVyLXNwYWx0ZS1iZywgI0UwRjBFNCk7IH0KW2RhdGEtdGhlbWU9Im5pZ2h0Il0g LnNwYWx0ZS13b2NoZW5lbmRlIHsgYmFja2dyb3VuZC1jb2xvcjogIzFGMkEzODsgYm9yZGVyLXJp Z2h0LWNvbG9yOiAjMkQzRTU1OyB9CltkYXRhLXRoZW1lPSJuaWdodCJdIC5zcGFsdGUtZmVpZXJ0 YWcgICB7IGJhY2tncm91bmQtY29sb3I6ICMyNTM1NDc7IGJvcmRlci1yaWdodC1jb2xvcjogIzM4 NTI3MDsgfQpbZGF0YS10aGVtZT0ibmlnaHQiXSAuc3BhbHRlLWZlcmllbiAgICAgeyBiYWNrZ3Jv dW5kLWNvbG9yOiB2YXIoLS1tZmVyLXNwYWx0ZS1iZywgIzFDMkUyMik7IH0KCi8qIEhldXRlLVNw YWx0ZTogYWxsZSB2aXN1ZWxsZW4gUGFyYW1ldGVyIChIaW50ZXJncnVuZCwgUmFobWVuLUFremVu dGUsCiAgIG9wdGlvbmFsZXIgR2xvdykga29tbWVuIHVlYmVyIEN1c3RvbS1Qcm9wZXJ0aWVzIGF1 cyBkZW0gRXJzY2hlaW51bmdzLQogICBiaWxkLUVkaXRvciAoYWRtaW5fZXJzY2hlaW51bmdzYmls ZC5qcyAvIG1hcmtpZXJ1bmdlbkFud2VuZGVuKS4gKi8KLnNwYWx0ZS1oZXV0ZSB7CiAgICBiYWNr Z3JvdW5kLWNvbG9yOiB2YXIoLS1taGUtYmcsIHRyYW5zcGFyZW50KTsKICAgIGNvbG9yOiB2YXIo LS1taGUtdGV4dCwgaW5oZXJpdCk7CiAgICBmb250LXdlaWdodDogdmFyKC0tbWhlLWZ3LCA0MDAp OwogICAgZm9udC1zaXplOiBjYWxjKHZhcigtLW1oZS1mcywgMSkgKiAxZW0pOwogICAgYm94LXNo YWRvdzogdmFyKC0tbWhlLXNoYWRvdywgbm9uZSk7CiAgICBhbmltYXRpb246IHZhcigtLW1oZS1h bmltLCBub25lKTsKfQoKLyogU2NocmFmZnVyZW4g4oCUIGFsbGUgUmljaHR1bmdlbiBlaW5oZWl0 bGljaCA0NWRlZyAodm9uIGxpbmtzIHVudGVuIG5hY2gKICAgcmVjaHRzIG9iZW4pLiBVbnRlcnNj aGVpZHVuZyBGL1MvTiBudXIgdWViZXIgTGluaWVuLURpY2h0ZToKICAgRiA9IG1pdHRsZXJlIFN0 cmljaC1EaWNodGUsIFMgPSBicmVpdGUgU3RyZWlmZW4sIE4gPSBzZWhyIGRpY2h0ZSBTY2hyYWZm dXIuCiAgIC0yIFZhcmlhbnRlIChSYW5nIDIpIGlzdCBoZWxsZXIuIENoZXJyeS1QaWNrIDg0ZmIw ZjcuICovCi5zY2hyYWZmdXItZnJ1ZWggewogICAgYmFja2dyb3VuZC1pbWFnZTogcmVwZWF0aW5n LWxpbmVhci1ncmFkaWVudCg0NWRlZywgdHJhbnNwYXJlbnQgMCAzcHgsIHJnYmEoMjU1LDI1NSwy NTUsMC4yNSkgM3B4IDVweCkgIWltcG9ydGFudDsKICAgIGZvbnQtd2VpZ2h0OiA4MDAgIWltcG9y dGFudDsgdGV4dC1zaGFkb3c6IDAgMXB4IDJweCByZ2JhKDAsMCwwLDAuMyk7Cn0KLnNjaHJhZmZ1 ci1zcGFldCB7CiAgICBiYWNrZ3JvdW5kLWltYWdlOiByZXBlYXRpbmctbGluZWFyLWdyYWRpZW50 KDQ1ZGVnLCB0cmFuc3BhcmVudCAwIDZweCwgcmdiYSgyNTUsMjU1LDI1NSwwLjI1KSA2cHggOXB4 KSAhaW1wb3J0YW50OwogICAgZm9udC13ZWlnaHQ6IDgwMCAhaW1wb3J0YW50OyB0ZXh0LXNoYWRv dzogMCAxcHggMnB4IHJnYmEoMCwwLDAsMC4zKTsKfQouc2NocmFmZnVyLW5hY2h0IHsKICAgIGJh Y2tncm91bmQtaW1hZ2U6IHJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQoNDVkZWcsIHRyYW5zcGFy ZW50IDAgMS41cHgsIHJnYmEoMjU1LDI1NSwyNTUsMC4zMCkgMS41cHggM3B4KSAhaW1wb3J0YW50 OwogICAgZm9udC13ZWlnaHQ6IDgwMCAhaW1wb3J0YW50OyB0ZXh0LXNoYWRvdzogMCAxcHggMnB4 IHJnYmEoMCwwLDAsMC4zKTsKfQouc2NocmFmZnVyLWZydWVoLTIgeyBiYWNrZ3JvdW5kLWltYWdl OiByZXBlYXRpbmctbGluZWFyLWdyYWRpZW50KDQ1ZGVnLCB0cmFuc3BhcmVudCAwIDRweCwgcmdi YSgyNTUsMjU1LDI1NSwwLjE1KSA0cHggNnB4KSAhaW1wb3J0YW50OyB9Ci5zY2hyYWZmdXItc3Bh ZXQtMiB7IGJhY2tncm91bmQtaW1hZ2U6IHJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQoNDVkZWcs IHRyYW5zcGFyZW50IDAgN3B4LCByZ2JhKDI1NSwyNTUsMjU1LDAuMTUpIDdweCAxMHB4KSAhaW1w b3J0YW50OyB9Ci5zY2hyYWZmdXItbmFjaHQtMiB7IGJhY2tncm91bmQtaW1hZ2U6IHJlcGVhdGlu Zy1saW5lYXItZ3JhZGllbnQoNDVkZWcsIHRyYW5zcGFyZW50IDAgMnB4LCByZ2JhKDI1NSwyNTUs MjU1LDAuMTUpIDJweCA0cHgpICFpbXBvcnRhbnQ7IH0KCi8qIFZlcmFudHdvcnRsaWNoa2VpdHMt TWFya2llcnVuZyAoVG9wLTIgcHJvIFNjaGljaHQpLgogICBUb2tlbiAtLWZhcmJlLXZlcmFudHdv cnRsaWNoIGlzdCB0aGVtZS1mZXN0IChQaGFzZSAxIGVpbmdlZnVlaHJ0KSDigJQKICAgTGlnaHQ6 IE9yYW5nZSAoLS1mYXJiZS13YXJudW5nKSwgRGFyazogYmxlaWJ0IG9yYW5nZSAoZ3V0IHNpY2h0 YmFyKS4gKi8KLmdyaWQtemVsbGUudmVyYW50d29ydGxpY2ggewogICAgYm94LXNoYWRvdzogaW5z ZXQgMCAtMnB4IDAgMCB2YXIoLS1mYXJiZS12ZXJhbnR3b3J0bGljaCk7Cn0KLnZlcmFudHdvcnRs aWNoLWJhZGdlIHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHRvcDogMXB4OwogICAgcmln aHQ6IDFweDsKICAgIHdpZHRoOiA2cHg7CiAgICBoZWlnaHQ6IDZweDsKICAgIGJhY2tncm91bmQ6 IHZhcigtLWZhcmJlLXZlcmFudHdvcnRsaWNoKTsKICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKfQoK LyogPT09PT0gWmVsbC1FZGl0b3IgPT09PT0gKi8KI3plbGwtZWRpdG9yIHsKICAgIHBvc2l0aW9u OiBmaXhlZDsgei1pbmRleDogdmFyKC0tei1lZGl0b3IpOwogICAgYmFja2dyb3VuZDogdmFyKC0t YmctY2FyZCk7IGJvcmRlcjogMnB4IHNvbGlkIHZhcigtLXRleHQtaGVhZGluZyk7CiAgICBib3Jk ZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtc20pOyBib3gtc2hhZG93OiAwIDZweCAyMHB4IHZhcigt LXNoYWRvdy1tZWRpdW0pOwp9CiNlZGl0b3ItYXVzd2FobCB7CiAgICBib3JkZXI6IG5vbmU7IG91 dGxpbmU6IG5vbmU7IGZvbnQtZmFtaWx5OiBpbmhlcml0OyBmb250LXNpemU6IHZhcigtLWZzLXNt KTsKICAgIGJhY2tncm91bmQ6IHZhcigtLWJnLWNhcmQpOyBjb2xvcjogdmFyKC0tdGV4dC1wcmlt YXJ5KTsKICAgIG1pbi13aWR0aDogMjAwcHg7IGN1cnNvcjogcG9pbnRlcjsgYm9yZGVyLXJhZGl1 czogdmFyKC0tcmFkaXVzLXhzKTsKfQojZWRpdG9yLWF1c3dhaGwgb3B0aW9uIHsgcGFkZGluZzog NHB4IDhweDsgfQojZWRpdG9yLWF1c3dhaGwgb3B0aW9uOmNoZWNrZWQgeyBiYWNrZ3JvdW5kOiB2 YXIoLS1iZy1hY3RpdmUpOyB9CgovKiA9PT09PSBBZG1pbi1MYXlvdXQgPT09PT0gKi8KLmFkbWlu LWxheW91dCB7CiAgICBkaXNwbGF5OiBmbGV4OyBmbGV4OiAxOyBvdmVyZmxvdzogaGlkZGVuOwp9 Ci5hZG1pbi1zaWRlYmFyIHsKICAgIHdpZHRoOiAyNDBweDsgbWluLXdpZHRoOiAyNDBweDsKICAg IGJhY2tncm91bmQ6IHZhcigtLWJnLXNpZGViYXIpOyBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCB2 YXIoLS1ib3JkZXItY29sb3IpOwogICAgcGFkZGluZzogMCAwIDI0cHggMDsgZGlzcGxheTogZmxl eDsgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgIG92ZXJmbG93LXk6IGF1dG87Cn0KLyogQ2x1 c3Rlci1HcnVwcGU6IFVlYmVyc2NocmlmdCAoYmxhdWVyIEhlYWRlcikgKyBCdXR0b25zICovCi5h ZG1pbi1uYXYtZ3J1cHBlIHsKICAgIGRpc3BsYXk6IGZsZXg7IGZsZXgtZGlyZWN0aW9uOiBjb2x1 bW47CiAgICBwYWRkaW5nOiAwIDAgNnB4IDA7Cn0KLmFkbWluLW5hdi10aXRlbCB7CiAgICBtYXJn aW46IDA7IHBhZGRpbmc6IDhweCAxNnB4OwogICAgYmFja2dyb3VuZDogdmFyKC0tYmctcHJpbWFy eSk7IGNvbG9yOiB2YXIoLS10ZXh0LW9uLXByaW1hcnkpOwogICAgZm9udC1zaXplOiB2YXIoLS1m cy1zbSk7IGZvbnQtd2VpZ2h0OiA3MDA7IGxldHRlci1zcGFjaW5nOiAxcHg7CiAgICB0ZXh0LXRy YW5zZm9ybTogdXBwZXJjYXNlOwogICAgbGluZS1oZWlnaHQ6IDEuMzsKICAgIHVzZXItc2VsZWN0 OiBub25lOwogICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLWJnLXByaW1hcnktZGFy ayk7Cn0KLyogRXR3YXMgTHVmdCB6d2lzY2hlbiBUaXRlbCB1bmQgZXJzdGVtIEJ1dHRvbiAqLwou YWRtaW4tbmF2LWdydXBwZSAuYWRtaW4tbmF2LWJ0bjpmaXJzdC1vZi10eXBlIHsgbWFyZ2luLXRv cDogNnB4OyB9CgouYWRtaW4tbmF2LWJ0biB7CiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsg Ym9yZGVyOiBub25lOyBwYWRkaW5nOiA4cHggMTRweDsKICAgIG1hcmdpbjogMXB4IDhweDsKICAg IHRleHQtYWxpZ246IGxlZnQ7IGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1zbSk7IGN1cnNv cjogcG9pbnRlcjsKICAgIGZvbnQtZmFtaWx5OiBpbmhlcml0OyBmb250LXNpemU6IDEzLjVweDsg Zm9udC13ZWlnaHQ6IDQwMDsgbGluZS1oZWlnaHQ6IDEuNDsKICAgIGNvbG9yOiB2YXIoLS10ZXh0 LXByaW1hcnkpOwogICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAwLjE1cyBlYXNlLCBjb2xvciAw LjE1cyBlYXNlOwogICAgcG9zaXRpb246IHJlbGF0aXZlOwp9Ci5hZG1pbi1uYXYtYnRuOmhvdmVy IHsKICAgIGJhY2tncm91bmQ6IHZhcigtLWJnLW5hdi1ob3Zlcik7IGNvbG9yOiB2YXIoLS10ZXh0 LWhlYWRpbmcpOwp9Ci5hZG1pbi1uYXYtYnRuLmFrdGl2IHsKICAgIGJhY2tncm91bmQ6IHZhcigt LWJnLW5hdi1ha3Rpdik7IGNvbG9yOiB2YXIoLS10ZXh0LWhlYWRpbmcpOyBmb250LXdlaWdodDog NjAwOwogICAgYm94LXNoYWRvdzogaW5zZXQgM3B4IDAgMCAwIHZhcigtLXRleHQtaGVhZGluZyk7 Cn0KLmFkbWluLW5hdi1idG4uYWt0aXY6aG92ZXIgeyBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1uYXYt YWt0aXYpOyB9Ci8qIFNpY2h0YmFyZXIgRm9rdXMgZnVlciBLZXlib2FyZC1OYXZpZ2F0aW9uIChU QUIgZHVyY2ggU2lkZWJhcikuCiAgIDpmb2N1cy12aXNpYmxlIGZldWVydCBuaWNodCBiZWkgTWF1 cy1LbGljaywgbnVyIGJlaSBUYXN0YXR1ci1Gb2t1cyDigJQKICAgc3RvZXJ0IGFsc28gTWF1cy1V c2VyIG5pY2h0LiAqLwouYWRtaW4tbmF2LWJ0bjpmb2N1cy12aXNpYmxlIHsKICAgIG91dGxpbmU6 IDJweCBzb2xpZCB2YXIoLS1mYXJiZS1ha3plbnQpOwogICAgb3V0bGluZS1vZmZzZXQ6IC0ycHg7 Cn0KCi5hZG1pbi1pbmhhbHQgeyBmbGV4OiAxOyBvdmVyZmxvdy15OiBhdXRvOyBwYWRkaW5nOiAy NHB4IDMycHg7IH0KLmFkbWluLWtvcGYgeyBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2Vu dGVyOyBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47IG1hcmdpbi1ib3R0b206IDIwcHg7 IH0KLmFkbWluLWtvcGYgaDIgeyBmb250LXNpemU6IDIwcHg7IGZvbnQtd2VpZ2h0OiA3MDA7IGNv bG9yOiB2YXIoLS10ZXh0LWhlYWRpbmcpOyB9Ci5hZG1pbi1oaW53ZWlzIHsgZm9udC1zaXplOiB2 YXIoLS1mcy1tZCk7IGNvbG9yOiB2YXIoLS10ZXh0LXNlY29uZGFyeSk7IG1hcmdpbi1ib3R0b206 IDE2cHg7IGxpbmUtaGVpZ2h0OiAxLjY7IH0KCi5hZG1pbi10YWIgeyBhbmltYXRpb246IGZhZGVJ biAwLjE1cyBlYXNlOyB9CkBrZXlmcmFtZXMgZmFkZUluIHsgZnJvbSB7IG9wYWNpdHk6IDA7IH0g dG8geyBvcGFjaXR5OiAxOyB9IH0KCi8qIFNla3Rpb25lbiBpbm5lcmhhbGIgZWluZXMgVGFicyAo ZnVlciBnZW1lcmd0ZSBUYWJzIHdpZSAiRmVpZXJ0YWdlICYgRmVyaWVuIikuCiAgIFZvcmhlciA0 cHgg4oCUIFNla3Rpb25lbiBrbGVidGVuIHp1c2FtbWVuLCBrZWluIG9wdGlzY2hlciBBdGVtcmF1 bS4KICAgTWl0IC0tc3AtNSAoMjRweCkgc2l0emVuIHp3ZWkgU2VrdGlvbmVuIGtsYXIgZ2V0cmVu bnQgdm9uZWluYW5kZXIuICovCi5hZG1pbi1zZWt0aW9uIHsgbWFyZ2luLWJvdHRvbTogdmFyKC0t c3AtNSk7IH0KLmFkbWluLXNla3Rpb24ta29wZiB7CiAgICBkaXNwbGF5OiBmbGV4OyBhbGlnbi1p dGVtczogY2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47CiAgICBnYXA6IDEy cHg7IG1hcmdpbi1ib3R0b206IDE0cHg7Cn0KLmFkbWluLXNla3Rpb24ta29wZiBoMyB7CiAgICBm b250LXNpemU6IDE2cHg7IGZvbnQtd2VpZ2h0OiA3MDA7IGNvbG9yOiB2YXIoLS10ZXh0LWhlYWRp bmcpOyBtYXJnaW46IDA7Cn0KLmFkbWluLXNla3Rpb24tdHJlbm5lciB7CiAgICBib3JkZXI6IDA7 IGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS1ib3JkZXItbGlnaHQpOwogICAgbWFyZ2luOiAy OHB4IDAgMjJweCAwOwp9CgovKiA9PT09PSBBZG1pbi1CYW5uZXIgKFJlYWQtb25seS1IaW53ZWlz LCBJbmxpbmUtSW5mbykgPT09PT0KICAgRHJlaSBWYXJpYW50ZW46IC5hZG1pbi1iYW5uZXItaW5m byAvIC5hZG1pbi1iYW5uZXItd2FybiAvIC5hZG1pbi1iYW5uZXItZXJmb2xnLgogICBMaW5rZXIg QWt6ZW50LVN0cmVpZmVuICsgSWNvbi1TbG90ICsgSW5oYWx0cy1TbG90LiBEZWZhdWx0ID0gaW5m by4gKi8KLmFkbWluLWJhbm5lciB7CiAgICBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogZmxl eC1zdGFydDsgZ2FwOiB2YXIoLS1zcC0zKTsKICAgIHBhZGRpbmc6IHZhcigtLXNwLTMpIHZhcigt LXNwLTQpOwogICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3AtNCk7CiAgICBib3JkZXItcmFkaXVz OiB2YXIoLS1yYWRpdXMtc20pOwogICAgYm9yZGVyLWxlZnQ6IDRweCBzb2xpZCB2YXIoLS1iYW5u ZXItaW5mby1ib3JkZXIpOwogICAgYmFja2dyb3VuZDogdmFyKC0tYmFubmVyLWluZm8tYmcpOwog ICAgY29sb3I6IHZhcigtLWJhbm5lci1pbmZvLXRleHQpOwogICAgZm9udC1zaXplOiB2YXIoLS1m cy1tZCk7IGxpbmUtaGVpZ2h0OiAxLjU7Cn0KLmFkbWluLWJhbm5lci13YXJuIHsKICAgIGJvcmRl ci1sZWZ0LWNvbG9yOiB2YXIoLS1iYW5uZXItd2Fybi1ib3JkZXIpOwogICAgYmFja2dyb3VuZDog dmFyKC0tYmFubmVyLXdhcm4tYmcpOwogICAgY29sb3I6IHZhcigtLWJhbm5lci13YXJuLXRleHQp Owp9Ci5hZG1pbi1iYW5uZXItZXJmb2xnIHsKICAgIGJvcmRlci1sZWZ0LWNvbG9yOiB2YXIoLS1i YW5uZXItZXJmb2xnLWJvcmRlcik7CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1iYW5uZXItZXJmb2xn LWJnKTsKICAgIGNvbG9yOiB2YXIoLS1iYW5uZXItZXJmb2xnLXRleHQpOwp9Ci5hZG1pbi1iYW5u ZXItaWNvbiB7CiAgICBmbGV4OiAwIDAgYXV0bzsKICAgIGZvbnQtc2l6ZTogMTZweDsgbGluZS1o ZWlnaHQ6IDEuMjsKICAgIG1hcmdpbi10b3A6IDFweDsKfQouYWRtaW4tYmFubmVyLXRleHQgeyBm bGV4OiAxIDEgYXV0bzsgfQouYWRtaW4tYmFubmVyLXRpdGVsIHsKICAgIGZvbnQtd2VpZ2h0OiA3 MDA7IG1hcmdpbi1ib3R0b206IDJweDsKfQouYWRtaW4tYmFubmVyLWJvZHkgeyBmb250LXNpemU6 IDEyLjVweDsgb3BhY2l0eTogMC45MjsgfQoKLyogPT09PT0gQWRtaW4tU3ViLU5hdmlnYXRpb24g KGlubmVyaGFsYiBlaW5lcyBUb3AtVGFicykgPT09PT0KICAgSG9yaXpvbnRhbGVyIFRhYi1TdHJl aWZlbiBhbSBvYmVyZW4gUmFuZCBkZXMgLmFkbWluLWluaGFsdC1CZXJlaWNocy4KICAgTnVyIHNp Y2h0YmFyLCB3ZW5uIGRlciBUb3AtVGFiID4gMSBTZWt0aW9uIGhhdC4gKi8KLmFkbWluLXN1Ym5h diB7CiAgICBkaXNwbGF5OiBmbGV4OyBmbGV4LXdyYXA6IHdyYXA7IGdhcDogdmFyKC0tc3AtMSk7 CiAgICBtYXJnaW46IDAgMCB2YXIoLS1zcC01KSAwOwogICAgcGFkZGluZzogMCAwIHZhcigtLXNw LTIpIDA7CiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tYm9yZGVyLWxpZ2h0KTsK fQouYWRtaW4tc3VibmF2LWJ0biB7CiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsgYm9yZGVy OiBub25lOyBjdXJzb3I6IHBvaW50ZXI7CiAgICBwYWRkaW5nOiB2YXIoLS1zcC0yKSB2YXIoLS1z cC00KTsKICAgIGZvbnQtZmFtaWx5OiBpbmhlcml0OyBmb250LXNpemU6IHZhcigtLWZzLW1kKTsg Zm9udC13ZWlnaHQ6IDUwMDsKICAgIGNvbG9yOiB2YXIoLS10ZXh0LXNlY29uZGFyeSk7CiAgICBi b3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtc20pIDRweCAwIDA7CiAgICBib3JkZXItYm90dG9t OiAycHggc29saWQgdHJhbnNwYXJlbnQ7CiAgICB0cmFuc2l0aW9uOiB2YXIoLS10cmFuc2l0aW9u LXN0ZCk7CiAgICBtYXJnaW4tYm90dG9tOiAtMXB4OyAgLyogdWViZXJsYXBwdCBkaWUgdW50ZXJl IExpbmllIGRlciBzdWJuYXYgKi8KfQouYWRtaW4tc3VibmF2LWJ0bjpob3ZlciB7CiAgICBiYWNr Z3JvdW5kOiB2YXIoLS1iZy1uYXYtaG92ZXIpOyBjb2xvcjogdmFyKC0tdGV4dC1oZWFkaW5nKTsK fQouYWRtaW4tc3VibmF2LWJ0bi5ha3RpdiB7CiAgICBjb2xvcjogdmFyKC0tdGV4dC1oZWFkaW5n KTsgZm9udC13ZWlnaHQ6IDcwMDsKICAgIGJvcmRlci1ib3R0b20tY29sb3I6IHZhcigtLWZhcmJl LXByaW1hZXIpOwogICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7Cn0KLmFkbWluLXN1Ym5hdi1i dG46Zm9jdXMtdmlzaWJsZSB7CiAgICBvdXRsaW5lOiAycHggc29saWQgdmFyKC0tZmFyYmUtYWt6 ZW50KTsKICAgIG91dGxpbmUtb2Zmc2V0OiAycHg7Cn0KCi8qID09PT09IEFkbWluLUVtcHR5LVN0 YXRlIChPbmJvYXJkaW5nLUthcnRlIGZ1ZXIgbGVlcmUgU2VrdGlvbmVuKSA9PT09PQogICBXaXJk IGdlcmVuZGVydCwgd2VubiBlaW5lIExpc3RlIGtlaW5lIERhdGVuc2FldHplIGhhdC4gKi8KLmFk bWluLWVtcHR5IHsKICAgIGRpc3BsYXk6IGZsZXg7IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47IGFs aWduLWl0ZW1zOiBjZW50ZXI7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICBwYWRkaW5nOiB2 YXIoLS1zcC02KSB2YXIoLS1zcC01KTsKICAgIG1hcmdpbjogdmFyKC0tc3AtNCkgMDsKICAgIGJh Y2tncm91bmQ6IHZhcigtLWJnLWNhcmQtYWx0KTsKICAgIGJvcmRlcjogMXB4IGRhc2hlZCB2YXIo LS1ib3JkZXItc3Ryb25nKTsKICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1tZCk7Cn0K LmFkbWluLWVtcHR5LWljb24gewogICAgZm9udC1zaXplOiAzMnB4OwogICAgbWFyZ2luLWJvdHRv bTogdmFyKC0tc3AtMyk7CiAgICBjb2xvcjogdmFyKC0tdGV4dC1tdXRlZCk7Cn0KLmFkbWluLWVt cHR5LXRpdGVsIHsKICAgIGZvbnQtc2l6ZTogMTVweDsgZm9udC13ZWlnaHQ6IDcwMDsKICAgIGNv bG9yOiB2YXIoLS10ZXh0LWhlYWRpbmcpOwogICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3AtMik7 Cn0KLmFkbWluLWVtcHR5LXRleHQgewogICAgZm9udC1zaXplOiB2YXIoLS1mcy1tZCk7IGNvbG9y OiB2YXIoLS10ZXh0LXNlY29uZGFyeSk7CiAgICBtYXgtd2lkdGg6IDQ2MHB4OyBsaW5lLWhlaWdo dDogMS41OwogICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3AtNCk7Cn0KLmFkbWluLWVtcHR5LWFr dGlvbiB7IG1hcmdpbi10b3A6IHZhcigtLXNwLTEpOyB9CgovKiA9PT09PSBUYXN0YXR1cmt1ZXJ6 ZWwtVGFiZWxsZSBpbSBJbmZvLU1vZGFsIChVWC1BdWRpdCBTcHJpbnQgMy43KSA9PT09PSAqLwou aW5mby1zaG9ydGN1dHMgeyB3aWR0aDogMTAwJTsgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTsg Zm9udC1zaXplOiB2YXIoLS1mcy1tZCk7IG1hcmdpbi10b3A6IHZhcigtLXNwLTIpOyB9Ci5pbmZv LXNob3J0Y3V0cyB0aCwgLmluZm8tc2hvcnRjdXRzIHRkIHsgdGV4dC1hbGlnbjogbGVmdDsgcGFk ZGluZzogdmFyKC0tc3AtMSkgdmFyKC0tc3AtMik7IGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2 YXIoLS1ib3JkZXItbGlnaHQpOyB9Ci5pbmZvLXNob3J0Y3V0cyB0aCB7IGJhY2tncm91bmQ6IHZh cigtLWJnLWNhcmQtYWx0KTsgZm9udC13ZWlnaHQ6IDcwMDsgY29sb3I6IHZhcigtLXRleHQtaGVh ZGluZyk7IH0KLmluZm8tc2hvcnRjdXRzIGtiZCB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7 CiAgICBwYWRkaW5nOiAycHggNnB4OwogICAgYmFja2dyb3VuZDogdmFyKC0tYmctdG9vbGJhcik7 CiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1ib3JkZXItc3Ryb25nKTsKICAgIGJvcmRlci1y YWRpdXM6IHZhcigtLXJhZGl1cy14cyk7CiAgICBmb250LWZhbWlseTogQ29uc29sYXMsICJTRiBN b25vIiwgTWVubG8sIG1vbm9zcGFjZTsKICAgIGZvbnQtc2l6ZTogdmFyKC0tZnMtc20pOwogICAg Y29sb3I6IHZhcigtLXRleHQtaGVhZGluZyk7CiAgICBib3gtc2hhZG93OiAwIDFweCAwIHZhcigt LXNoYWRvdy1tZWRpdW0pOwp9CgovKiA9PT09PSBIaWxmZS1JY29uIChVWC1BdWRpdCBTcHJpbnQg Mi4yLCAyMDI2LTA1LTI5KSA9PT09PQogICBLbGVpbmVyIHJ1bmRlciDik5gtQnV0dG9uIG5lYmVu IExhYmVscyBvZGVyIEJ1dHRvbnMuIENsaWNrIOKGkiBUb2FzdC4gKi8KLmhpbGZlLWljb24gewog ICAgZGlzcGxheTogaW5saW5lLWZsZXg7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOyBqdXN0aWZ5 LWNvbnRlbnQ6IGNlbnRlcjsKICAgIHdpZHRoOiAxOHB4OyBoZWlnaHQ6IDE4cHg7CiAgICBtYXJn aW4tbGVmdDogdmFyKC0tc3AtMSk7CiAgICBwYWRkaW5nOiAwOwogICAgYm9yZGVyOiAxcHggc29s aWQgdmFyKC0tYm9yZGVyLXN0cm9uZyk7CiAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICBiYWNr Z3JvdW5kOiB2YXIoLS1iZy1jYXJkLWFsdCk7CiAgICBjb2xvcjogdmFyKC0tdGV4dC1tdXRlZCk7 CiAgICBmb250LXNpemU6IHZhcigtLWZzLXNtKTsgZm9udC13ZWlnaHQ6IDcwMDsKICAgIGN1cnNv cjogaGVscDsKICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7CiAgICBsaW5lLWhlaWdodDogMTsK ICAgIHRyYW5zaXRpb246IHZhcigtLXRyYW5zaXRpb24tc3RkKTsKfQouaGlsZmUtaWNvbjpob3Zl ciwgLmhpbGZlLWljb246Zm9jdXMtdmlzaWJsZSB7CiAgICBib3JkZXItY29sb3I6IHZhcigtLWZh cmJlLWFremVudCk7CiAgICBjb2xvcjogdmFyKC0tZmFyYmUtYWt6ZW50KTsKICAgIGJhY2tncm91 bmQ6IHZhcigtLWJnLWhvdmVyKTsKICAgIG91dGxpbmU6IG5vbmU7Cn0KCi8qID09PT09IFJlbmRl ci1FcnJvci1Cb3ggKFVYLUF1ZGl0IFNwcmludCAxLjIsIDIwMjYtMDUtMjkpID09PT09CiAgIFdp cmQgdm9uIHJlbmRlckVycm9yQm94KCkgaW4gY29yZV91dGlsLmpzIGJlZnVlbGx0LiBFcnNldHp0 IGJsYW5rZW4KICAgQ29udGFpbmVyLCB3ZW5uIGVpbmUgUmVuZGVyLUZ1bmt0aW9uIG1pdCBFeGNl cHRpb24gYWJicmljaHQuICovCi5yZW5kZXItZmVobGVyLWJveCB7CiAgICBkaXNwbGF5OiBmbGV4 OwogICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7CiAgICBnYXA6IHZhcigtLXNwLTMpOwogICAg cGFkZGluZzogdmFyKC0tc3AtNCk7CiAgICBtYXJnaW46IHZhcigtLXNwLTMpIDA7CiAgICBiYWNr Z3JvdW5kOiB2YXIoLS1iYW5uZXItd2Fybi1iZyk7CiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIo LS1iYW5uZXItd2Fybi1ib3JkZXIpOwogICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLW1k KTsKICAgIGNvbG9yOiB2YXIoLS1iYW5uZXItd2Fybi10ZXh0KTsKICAgIG1heC13aWR0aDogNzYw cHg7Cn0KLnJlbmRlci1mZWhsZXItaWNvbiB7IGZvbnQtc2l6ZTogMjRweDsgbGluZS1oZWlnaHQ6 IDE7IGZsZXgtc2hyaW5rOiAwOyB9Ci5yZW5kZXItZmVobGVyLXRleHQgeyBmbGV4OiAxOyBtaW4t d2lkdGg6IDA7IH0KLnJlbmRlci1mZWhsZXItdGl0ZWwgeyBmb250LXdlaWdodDogNzAwOyBmb250 LXNpemU6IHZhcigtLWZzLWxnKTsgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3AtMik7IH0KLnJlbmRl ci1mZWhsZXItZGV0YWlsIHsKICAgIGZvbnQtZmFtaWx5OiBDb25zb2xhcywgIlNGIE1vbm8iLCBN ZW5sbywgbW9ub3NwYWNlOwogICAgZm9udC1zaXplOiB2YXIoLS1mcy1zbSk7CiAgICBwYWRkaW5n OiB2YXIoLS1zcC0xKSB2YXIoLS1zcC0yKTsKICAgIGJhY2tncm91bmQ6IHJnYmEoMCwwLDAsMC4w Nik7CiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMteHMpOwogICAgbWFyZ2luLWJvdHRv bTogdmFyKC0tc3AtMik7CiAgICB3b3JkLWJyZWFrOiBicmVhay13b3JkOwogICAgbGluZS1oZWln aHQ6IDEuNDsKfQpbZGF0YS10aGVtZT0ibmlnaHQiXSAucmVuZGVyLWZlaGxlci1kZXRhaWwgeyBi YWNrZ3JvdW5kOiByZ2JhKDI1NSwyNTUsMjU1LDAuMDYpOyB9Ci5yZW5kZXItZmVobGVyLWhpbnQg eyBmb250LXNpemU6IHZhcigtLWZzLXNtKTsgb3BhY2l0eTogMC45OyB9CgovKiA9PT09PSBUYWJl bGxlbiA9PT09PSAqLwouYWRtaW4tdGFiZWxsZSB7IHdpZHRoOiAxMDAlOyBib3JkZXItY29sbGFw c2U6IGNvbGxhcHNlOyBmb250LXNpemU6IHZhcigtLWZzLW1kKTsgfQouYWRtaW4tdGFiZWxsZSB0 aCB7CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1wcmltYXJ5KTsgY29sb3I6IHZhcigtLXRleHQt b24tcHJpbWFyeSk7CiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOyBmb250LXNpemU6IHZh cigtLWZzLXhzKTsgZm9udC13ZWlnaHQ6IDYwMDsgbGV0dGVyLXNwYWNpbmc6IDAuNXB4OwogICAg cGFkZGluZzogMTBweCAxMnB4OyB0ZXh0LWFsaWduOiBsZWZ0OyBib3JkZXItYm90dG9tOiAycHgg c29saWQgdmFyKC0tYm9yZGVyLXN0cm9uZyk7CiAgICBwb3NpdGlvbjogc3RpY2t5OyB0b3A6IDA7 IHotaW5kZXg6IDI7Cn0KLmFkbWluLXRhYmVsbGUgdGQgeyBwYWRkaW5nOiA4cHggMTJweDsgYm9y ZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLWJvcmRlci1saWdodCk7IHZlcnRpY2FsLWFsaWdu OiBtaWRkbGU7IH0KLmFkbWluLXRhYmVsbGUgdHI6aG92ZXIgdGQgeyBiYWNrZ3JvdW5kOiB2YXIo LS1iZy1ob3Zlcik7IH0KLmFkbWluLXRhYmVsbGUgaW5wdXRbdHlwZT0idGV4dCJdLAouYWRtaW4t dGFiZWxsZSBpbnB1dFt0eXBlPSJlbWFpbCJdLAouYWRtaW4tdGFiZWxsZSBpbnB1dFt0eXBlPSJk YXRlIl0sCi5hZG1pbi10YWJlbGxlIHNlbGVjdCB7CiAgICB3aWR0aDogMTAwJTsgcGFkZGluZzog NHB4IDhweDsgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tYm9yZGVyLWNvbG9yKTsgYm9yZGVyLXJh ZGl1czogdmFyKC0tcmFkaXVzLXhzKTsKICAgIGZvbnQtZmFtaWx5OiBpbmhlcml0OyBmb250LXNp emU6IHZhcigtLWZzLWJhc2UpOyBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1pbnB1dCk7IGNvbG9yOiB2 YXIoLS10ZXh0LXByaW1hcnkpOwp9Ci5hZG1pbi10YWJlbGxlIGlucHV0OmZvY3VzLCAuYWRtaW4t dGFiZWxsZSBzZWxlY3Q6Zm9jdXMgewogICAgb3V0bGluZTogbm9uZTsgYm9yZGVyLWNvbG9yOiB2 YXIoLS10ZXh0LWhlYWRpbmcpOyBib3gtc2hhZG93OiAwIDAgMCAycHggcmdiYSgyNiw1OCw5Miww LjE1KTsKfQoudGFiZWxsZS1zY3JvbGwgeyBvdmVyZmxvdzogYXV0bzsgbWF4LWhlaWdodDogY2Fs YygxMDB2aCAtIDIwMHB4KTsgfQoKLyogPT09PT0gQnV0dG9ucyA9PT09PSAqLwouYnRuIHsKICAg IHBhZGRpbmc6IDdweCAxOHB4OyBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtc20pOyBib3Jk ZXI6IG5vbmU7IGN1cnNvcjogcG9pbnRlcjsKICAgIGZvbnQtZmFtaWx5OiBpbmhlcml0OyBmb250 LXNpemU6IHZhcigtLWZzLW1kKTsgZm9udC13ZWlnaHQ6IDUwMDsgdHJhbnNpdGlvbjogdmFyKC0t dHJhbnNpdGlvbi1zdGQpOwp9Ci5idG4tcHJpbWFlciB7IGJhY2tncm91bmQ6IHZhcigtLWZhcmJl LXByaW1hZXIpOyBjb2xvcjogI2ZmZjsgfQouYnRuLXByaW1hZXI6aG92ZXIgeyBiYWNrZ3JvdW5k OiB2YXIoLS1mYXJiZS1wcmltYWVyLWhvdmVyKTsgY29sb3I6ICNmZmY7IH0KLmJ0bi1lcmZvbGcg eyBiYWNrZ3JvdW5kOiB2YXIoLS1mYXJiZS1lcmZvbGcpOyBjb2xvcjogI2ZmZjsgfQouYnRuLWVy Zm9sZzpob3ZlciB7IGJhY2tncm91bmQ6ICMxZTdhNWY7IH0KLmJ0bi1nZWZhaHIgeyBiYWNrZ3Jv dW5kOiB2YXIoLS1mYXJiZS1mZWhsZXIpOyBjb2xvcjogI2ZmZjsgfQouYnRuLWdlZmFocjpob3Zl ciB7IGJhY2tncm91bmQ6ICNhNTI4MWI7IH0KLyogRS1NYWlsLUJ1dHRvbiBtaXQgVGVzdC0vRnJl bWQtQWRyZXNzZSAobmljaHQgQHBvbGl6ZWkubnJ3LmRlKToKICAgZ3J1bmVyIFN0YW5kYXJkLUVy Zm9sZy1Mb29rIHBsdXMgYXVmZmFlbGxpZ2VyIHJvdGVyIHJlY2h0ZXIgUmFuZCwKICAgZGFtaXQg bWFuIGF1ZiBlaW5lbiBCbGljayBzaWVodCwgd28gbm9jaCBrZWluZSBvZmZpemllbGxlbiBCZWhv ZXJkZW4tCiAgIEFkcmVzc2VuIGhpbnRlcmxlZ3Qgc2luZC4gKi8KLmJ0bi1lbWFpbC10ZXN0IHsK ICAgIGJveC1zaGFkb3c6IGluc2V0IC00cHggMCAwIHZhcigtLWZhcmJlLWZlaGxlciwgI0IwM0Ey RSk7CiAgICBwYWRkaW5nLXJpZ2h0OiAxNnB4Owp9Ci5idG4tc2VrIHsKICAgIGJhY2tncm91bmQ6 IHZhcigtLWJnLWNhcmQpOyBjb2xvcjogdmFyKC0tdGV4dC1oZWFkaW5nKTsKICAgIGJvcmRlcjog MXB4IHNvbGlkIHZhcigtLWJvcmRlci1zdHJvbmcpOwp9Ci5idG4tc2VrOmhvdmVyIHsgYmFja2dy b3VuZDogdmFyKC0tYmctaG92ZXIpOyBib3JkZXItY29sb3I6IHZhcigtLXRleHQtaGVhZGluZyk7 IH0KLmJ0bi1rbGVpbiB7IHBhZGRpbmc6IDRweCAxMnB4OyBmb250LXNpemU6IHZhcigtLWZzLXNt KTsgZm9udC13ZWlnaHQ6IDYwMDsgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLXNtKTsgfQou YnRuLWljb24geyBkaXNwbGF5OiBpbmxpbmUtZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsgZ2Fw OiA1cHg7IGxpbmUtaGVpZ2h0OiAxOyB9Ci5idG4taWNvbjo6YmVmb3JlIHsgZm9udC1zaXplOiB2 YXIoLS1mcy1tZCk7IGxpbmUtaGVpZ2h0OiAxOyB9Ci5idG4tYmVhcmJlaXRlbjo6YmVmb3JlIHsg Y29udGVudDogJ+Kcjic7IH0KLmJ0bi1yaHl0aG11czo6YmVmb3JlIHsgY29udGVudDogJ+KGuyc7 IH0KLmJ0bi1sb2VzY2hlbiB7IHBhZGRpbmc6IDRweCAxMnB4OyB0ZXh0LWFsaWduOiBjZW50ZXI7 IH0KCi8qIFdpY2h0aWctRmVpZXJ0YWcgQmFkZ2UgKi8KLmZlaWVydGFnLXdpY2h0aWctYmFkZ2Ug ewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOyBwYWRkaW5nOiAycHggOHB4OyBib3JkZXItcmFk aXVzOiB2YXIoLS1yYWRpdXMtbGcpOyBmb250LXNpemU6IHZhcigtLWZzLXhzKTsgZm9udC13ZWln aHQ6IDcwMDsKICAgIGJhY2tncm91bmQ6IHZhcigtLWZhcmJlLWZlaGxlcik7IGNvbG9yOiAjZmZm OyBsZXR0ZXItc3BhY2luZzogMC40cHg7IHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7Cn0KLmJ0 bi1zb3J0aWVydW5nIHsKICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OyBib3JkZXI6IDFweCBz b2xpZCB2YXIoLS1ib3JkZXItY29sb3IpOyBjb2xvcjogdmFyKC0tdGV4dC1zZWNvbmRhcnkpOwog ICAgd2lkdGg6IDI2cHg7IGhlaWdodDogMjZweDsgZGlzcGxheTogaW5saW5lLWZsZXg7IGFsaWdu LWl0ZW1zOiBjZW50ZXI7IGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgYm9yZGVyLXJhZGl1 czogdmFyKC0tcmFkaXVzLXhzKTsgY3Vyc29yOiBwb2ludGVyOyBmb250LXNpemU6IHZhcigtLWZz LWxnKTsgcGFkZGluZzogMDsKICAgIHRyYW5zaXRpb246IHZhcigtLXRyYW5zaXRpb24tc3RkKTsK fQouYnRuLXNvcnRpZXJ1bmc6aG92ZXIgeyBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1ob3Zlcik7IGJv cmRlci1jb2xvcjogdmFyKC0tdGV4dC1oZWFkaW5nKTsgY29sb3I6IHZhcigtLXRleHQtaGVhZGlu Zyk7IH0KCi8qID09PT09IEZvcm11bGFyZSA9PT09PSAqLwouZm9ybS1ncnVwcGUgeyBtYXJnaW4t Ym90dG9tOiAxNHB4OyB9Ci5mb3JtLWdydXBwZSBsYWJlbCB7IGRpc3BsYXk6IGJsb2NrOyBmb250 LXNpemU6IHZhcigtLWZzLWJhc2UpOyBmb250LXdlaWdodDogNjAwOyBjb2xvcjogdmFyKC0tdGV4 dC1zZWNvbmRhcnkpOyBtYXJnaW4tYm90dG9tOiA0cHg7IH0KCi8qIFBmbGljaHRmZWxkLU1hcmtp ZXJ1bmcgKFVYLUF1ZGl0IFNwcmludCAyLjEsIDIwMjYtMDUtMjkpLgogICBWb3JoZXI6IG51ciBU ZXh0LSIqIiBpbSBMYWJlbCwgbGVpY2h0IHp1IHVlYmVyc2VoZW4uIEpldHp0OgogICAtIHJvdGVz IFN0ZXJuY2hlbiBhdXRvbWF0aXNjaCB2aWEgOjphZnRlcgogICAtIGxpbmtlciByb3RlciBCb3Jk ZXIgYW0gRWluZ2FiZWZlbGQKICAgLSAuZmVsZC1mZWhsZXItS2xhc3NlIGZ1ZXIgYWt0aXZlIFZh bGlkaWVydW5ncy1IZXJ2b3JoZWJ1bmcgKi8KLmZvcm0tZ3J1cHBlLmZvcm0tcGZsaWNodCA+IGxh YmVsOjphZnRlciB7CiAgICBjb250ZW50OiAnIConOwogICAgY29sb3I6IHZhcigtLWZhcmJlLWZl aGxlcik7CiAgICBmb250LXdlaWdodDogNzAwOwogICAgbWFyZ2luLWxlZnQ6IDJweDsKfQouZm9y bS1ncnVwcGUuZm9ybS1wZmxpY2h0ID4gLmZvcm0taW5wdXQsCi5mb3JtLWdydXBwZS5mb3JtLXBm bGljaHQgLmZvcm0taW5wdXQgewogICAgYm9yZGVyLWxlZnQ6IDNweCBzb2xpZCB2YXIoLS1mYXJi ZS1mZWhsZXIpOwogICAgcGFkZGluZy1sZWZ0OiA2cHg7Cn0KLmZvcm0taW5wdXQuZmVsZC1mZWhs ZXIgewogICAgYmFja2dyb3VuZDogcmdiYSgxNzYsIDU4LCA0NiwgMC4wOCk7CiAgICBib3JkZXIt Y29sb3I6IHZhcigtLWZhcmJlLWZlaGxlcik7Cn0KCi8qIExhZW5nZW4tQ291bnRlciAoUGFrZXQt QiBRdWljay1XaW4sIDIwMjYtMDUtMjkpLgogICBLbGVpbiwgcmVjaHRzYnVlbmRpZyB1bnRlciBk ZW0gRWluZ2FiZWZlbGQsIGZhZXJidCBzaWNoIGJlaSBBbm5hZWhlcnVuZwogICBhbnMgTGltaXQg Z2VsYiB1bmQgYmVpIHZvbGwgcm90LiAqLwoubGFlbmdlLWNvdW50ZXIgewogICAgZGlzcGxheTog YmxvY2s7CiAgICBmb250LXNpemU6IHZhcigtLWZzLXhzKTsKICAgIGNvbG9yOiB2YXIoLS10ZXh0 LW11dGVkKTsKICAgIHRleHQtYWxpZ246IHJpZ2h0OwogICAgbWFyZ2luLXRvcDogMnB4OwogICAg Zm9udC12YXJpYW50LW51bWVyaWM6IHRhYnVsYXItbnVtczsKfQoubGFlbmdlLWNvdW50ZXIubGFl bmdlLWNvdW50ZXItd2FybiB7IGNvbG9yOiB2YXIoLS1mYXJiZS13YXJudW5nKTsgZm9udC13ZWln aHQ6IDYwMDsgfQoubGFlbmdlLWNvdW50ZXIubGFlbmdlLWNvdW50ZXItdm9sbCB7IGNvbG9yOiB2 YXIoLS1mYXJiZS1mZWhsZXIpOyBmb250LXdlaWdodDogNzAwOyB9CgovKiBMYWRlLU92ZXJsYXkg KFBha2V0LUMsIDIwMjYtMDUtMjkpIOKAlCB1bml2ZXJzZWxsZXIgU3Bpbm5lciBmdWVyIEFzeW5j LQogICBPcGVyYXRpb25lbi4gV2lyZCBwZXIgbGFkZU92ZXJsYXlaZWlnZW4oKSBpbiBkZW4gQ29u dGFpbmVyIGluaml6aWVydC4gKi8KLmxhZGUtb3ZlcmxheSB7CiAgICBwb3NpdGlvbjogYWJzb2x1 dGU7CiAgICB0b3A6IDA7IGxlZnQ6IDA7IHJpZ2h0OiAwOyBib3R0b206IDA7CiAgICBiYWNrZ3Jv dW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuODIpOwogICAgZGlzcGxheTogZmxleDsgZmxleC1k aXJlY3Rpb246IGNvbHVtbjsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7IGp1c3RpZnktY29udGVu dDogY2VudGVyOwogICAgZ2FwOiB2YXIoLS1zcC0zKTsKICAgIHotaW5kZXg6IHZhcigtLXotb3Zl cmxheSk7Cn0KW2RhdGEtdGhlbWU9Im5pZ2h0Il0gLmxhZGUtb3ZlcmxheSB7IGJhY2tncm91bmQ6 IHJnYmEoMjEsIDI5LCAzNywgMC44OCk7IH0KLmxhZGUtb3ZlcmxheS1zcGlubmVyIHsKICAgIHdp ZHRoOiAzOHB4OyBoZWlnaHQ6IDM4cHg7CiAgICBib3JkZXI6IDNweCBzb2xpZCB2YXIoLS1ib3Jk ZXItbGlnaHQpOwogICAgYm9yZGVyLXRvcC1jb2xvcjogdmFyKC0tZmFyYmUtYWt6ZW50KTsKICAg IGJvcmRlci1yYWRpdXM6IDUwJTsKICAgIGFuaW1hdGlvbjogbGFkZS1vdmVybGF5LXNwaW4gMC44 cyBsaW5lYXIgaW5maW5pdGU7Cn0KQGtleWZyYW1lcyBsYWRlLW92ZXJsYXktc3BpbiB7CiAgICB0 byB7IHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7IH0KfQoubGFkZS1vdmVybGF5LXRleHQgewog ICAgZm9udC1zaXplOiB2YXIoLS1mcy1tZCk7CiAgICBjb2xvcjogdmFyKC0tdGV4dC1zZWNvbmRh cnkpOwogICAgZm9udC13ZWlnaHQ6IDYwMDsKfQouZm9ybS1pbnB1dCB7CiAgICBwYWRkaW5nOiA4 cHggMTJweDsgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tYm9yZGVyLXN0cm9uZyk7IGJvcmRlci1y YWRpdXM6IHZhcigtLXJhZGl1cy1zbSk7CiAgICBmb250LWZhbWlseTogaW5oZXJpdDsgZm9udC1z aXplOiB2YXIoLS1mcy1tZCk7IGJhY2tncm91bmQ6IHZhcigtLWJnLWlucHV0KTsgY29sb3I6IHZh cigtLXRleHQtcHJpbWFyeSk7CiAgICB0cmFuc2l0aW9uOiB2YXIoLS10cmFuc2l0aW9uLXN0ZCk7 Cn0KLmZvcm0taW5wdXQ6Zm9jdXMgeyBvdXRsaW5lOiBub25lOyBib3JkZXItY29sb3I6IHZhcigt LXRleHQtaGVhZGluZyk7IGJveC1zaGFkb3c6IDAgMCAwIDNweCByZ2JhKDI2LDU4LDkyLDAuMTIp OyB9CgovKiA9PT09PSBJbmZvLUJveCA9PT09PSAqLwouaW5mby1ib3ggewogICAgYmFja2dyb3Vu ZDogdmFyKC0tYmctY2FyZC1hbHQpOyBib3JkZXItbGVmdDogNHB4IHNvbGlkIHZhcigtLXRleHQt aGVhZGluZyk7CiAgICBwYWRkaW5nOiAxNHB4IDE4cHg7IGJvcmRlci1yYWRpdXM6IDAgNnB4IDZw eCAwOyBmb250LXNpemU6IHZhcigtLWZzLW1kKTsgbGluZS1oZWlnaHQ6IDEuNjsKICAgIGNvbG9y OiB2YXIoLS10ZXh0LXNlY29uZGFyeSk7Cn0KCi8qID09PT09IFNjaGljaHRjb2RlLVZvcnNjaGF1 ID09PT09ICovCi5zY2hpY2h0Y29kZS1rYXJ0ZSB7CiAgICBkaXNwbGF5OiBmbGV4OyBhbGlnbi1p dGVtczogY2VudGVyOyBnYXA6IDEwcHg7CiAgICBwYWRkaW5nOiA2cHggOHB4IDZweCA2cHg7IGJv cmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1tZCk7IGZvbnQtc2l6ZTogdmFyKC0tZnMtbWQpOyBm b250LXdlaWdodDogNjAwOwogICAgbWluLWhlaWdodDogNDJweDsKfQouc2NoaWNodGNvZGUtZmFy YmZlbGQgewogICAgbWluLXdpZHRoOiA0NHB4OyBoZWlnaHQ6IDMwcHg7IGJvcmRlci1yYWRpdXM6 IHZhcigtLXJhZGl1cy1zbSk7IGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMCwwLDAsMC4xKTsKICAg IGRpc3BsYXk6IGlubGluZS1mbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBqdXN0aWZ5LWNvbnRl bnQ6IGNlbnRlcjsKICAgIGZvbnQtc2l6ZTogdmFyKC0tZnMtYmFzZSk7IGZvbnQtd2VpZ2h0OiA3 MDA7IHBhZGRpbmc6IDAgNHB4OwogICAgZmxleC1zaHJpbms6IDA7Cn0KLnNjLWVkaXQtYnRuIHsg cGFkZGluZzogM3B4IDZweDsgZm9udC1zaXplOiB2YXIoLS1mcy1zbSk7IGZsZXgtc2hyaW5rOiAw OyB9Ci5zYy1lZGl0LWJ0bjo6YmVmb3JlIHsgY29udGVudDogJ+Kcjic7IGZvbnQtc2l6ZTogdmFy KC0tZnMtc20pOyB9CgovKiBTY2hpY2h0Y29kZS1LYXJ0ZW46IEVyd2VpdGVydW5nZW4gZnVlciBB a3Rpdi1Ub2dnbGUsIFZlcndlbmR1bmdzLUJhZGdlLCBEcmFnICovCi5zY2hpY2h0Y29kZS1rYXJ0 ZS5zYy1pbmFrdGl2IHsgb3BhY2l0eTogMC40NTsgZmlsdGVyOiBncmF5c2NhbGUoMC40NSk7IH0K LnNjaGljaHRjb2RlLWthcnRlLnNjLWRyYWcgeyBjdXJzb3I6IGRlZmF1bHQ7IH0KLnNjaGljaHRj b2RlLWthcnRlLnNjLWRyYWdnaW5nIHsgb3BhY2l0eTogMC4zNTsgfQouc2NoaWNodGNvZGUta2Fy dGUuc2MtZHJvcC1pbmRpY2F0b3IgeyBvdXRsaW5lOiAycHggZGFzaGVkIHZhcigtLWZhcmJlLXBy aW1hZXIpOyBvdXRsaW5lLW9mZnNldDogLTFweDsgfQouc2MtZHJhZy1oYW5kbGUgewogICAgY3Vy c29yOiBncmFiOyBmb250LXNpemU6IDE2cHg7IGNvbG9yOiB2YXIoLS10ZXh0LW11dGVkKTsgcGFk ZGluZzogMCA0cHg7CiAgICB1c2VyLXNlbGVjdDogbm9uZTsgZmxleC1zaHJpbms6IDA7Cn0KLnNj LWRyYWctaGFuZGxlOmFjdGl2ZSB7IGN1cnNvcjogZ3JhYmJpbmc7IH0KLnNjLWFuemFobC1iYWRn ZSB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IHBhZGRpbmc6IDFweCA2cHg7IGJvcmRlci1y YWRpdXM6IDhweDsKICAgIGZvbnQtc2l6ZTogdmFyKC0tZnMteHMpOyBmb250LXdlaWdodDogNzAw OyBjb2xvcjogdmFyKC0tdGV4dC1tdXRlZCk7CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1wcmlt YXJ5KTsgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tYm9yZGVyLWxpZ2h0KTsKICAgIHZlcnRpY2Fs LWFsaWduOiBtaWRkbGU7IG1hcmdpbi1sZWZ0OiA0cHg7Cn0KLnNjLWFuemFobC1iYWRnZS5zYy1h bnphaGwtbnVsbCB7IG9wYWNpdHk6IDAuNTsgfQouc2MtdG9nZ2xlIHsKICAgIGJhY2tncm91bmQ6 IG5vbmU7IGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWJvcmRlci1saWdodCk7IGJvcmRlci1yYWRp dXM6IDUwJTsKICAgIHdpZHRoOiAyMnB4OyBoZWlnaHQ6IDIycHg7IHBhZGRpbmc6IDA7IGxpbmUt aGVpZ2h0OiAxOyBjdXJzb3I6IHBvaW50ZXI7CiAgICBmb250LXNpemU6IHZhcigtLWZzLW1kKTsg ZmxleC1zaHJpbms6IDA7Cn0KLnNjLXRvZ2dsZS1ha3RpdiB7IGNvbG9yOiB2YXIoLS1mYXJiZS1l cmZvbGcpOyBib3JkZXItY29sb3I6IHJnYmEoMzksMTM3LDEwOSwwLjUpOyB9Ci5zYy10b2dnbGUt YWt0aXY6aG92ZXIgeyBiYWNrZ3JvdW5kOiByZ2JhKDM5LDEzNywxMDksMC4xMik7IH0KLnNjLXRv Z2dsZS1pbmFrdGl2IHsgY29sb3I6IHZhcigtLXRleHQtbXV0ZWQpOyB9Ci5zYy10b2dnbGUtaW5h a3Rpdjpob3ZlciB7IGJhY2tncm91bmQ6IHZhcigtLWJnLXByaW1hcnkpOyBjb2xvcjogdmFyKC0t ZmFyYmUtZXJmb2xnKTsgfQoKLyogPT09PT0gR2VuZXJhdG9yID09PT09ICovCi5nZW5lcmF0b3It Zm9ybSB7IG1heC13aWR0aDogNTAwcHg7IH0KI2dlbmVyYXRvci1lcmdlYm5pcyB7CiAgICBtYXJn aW4tdG9wOiAxNnB4OyBwYWRkaW5nOiAxNHB4IDE4cHg7CiAgICBib3JkZXItcmFkaXVzOiB2YXIo LS1yYWRpdXMtbWQpOyBmb250LXNpemU6IHZhcigtLWZzLWxnKTsgZm9udC13ZWlnaHQ6IDYwMDsK fQouZ2VuLWVyZm9sZyB7IGJhY2tncm91bmQ6ICNlOGY1ZTk7IGNvbG9yOiAjMmU3ZDMyOyBib3Jk ZXI6IDFweCBzb2xpZCAjYTVkNmE3OyB9CltkYXRhLXRoZW1lPSJuaWdodCJdIC5nZW4tZXJmb2xn IHsgYmFja2dyb3VuZDogIzFhMzAyMDsgY29sb3I6ICM2NmJiNmE7IGJvcmRlci1jb2xvcjogIzJl N2QzMjsgfQovKiBTdGF0dXMtQm94IGZ1ZXIgVGVzdGRhdGVuL1Jlc2V0IChtYXJnaW4vcGFkZGlu ZyB3aWUgI2dlbmVyYXRvci1lcmdlYm5pcykuICovCiN0ZXN0ZGF0ZW4tZXJnZWJuaXMgeyBtYXJn aW4tdG9wOiAxNnB4OyBwYWRkaW5nOiAxNHB4IDE4cHg7IGJvcmRlci1yYWRpdXM6IHZhcigtLXJh ZGl1cy1tZCk7IGZvbnQtc2l6ZTogdmFyKC0tZnMtbGcpOyBmb250LXdlaWdodDogNjAwOyB9Ci5n ZW4taW5mbyAgIHsgYmFja2dyb3VuZDogI2UzZjJmZDsgY29sb3I6ICMxNTY1YzA7IGJvcmRlcjog MXB4IHNvbGlkICM5MGNhZjk7IH0KW2RhdGEtdGhlbWU9Im5pZ2h0Il0gLmdlbi1pbmZvICAgeyBi YWNrZ3JvdW5kOiAjMTYyNjNhOyBjb2xvcjogIzVhOWZkYjsgYm9yZGVyLWNvbG9yOiAjMTU2NWMw OyB9Ci5nZW4tZmVobGVyIHsgYmFja2dyb3VuZDogI2ZmZWJlZTsgY29sb3I6ICNjNjI4Mjg7IGJv cmRlcjogMXB4IHNvbGlkICNlZjlhOWE7IH0KW2RhdGEtdGhlbWU9Im5pZ2h0Il0gLmdlbi1mZWhs ZXIgeyBiYWNrZ3JvdW5kOiAjM2ExYTFhOyBjb2xvcjogI2U1NzM3MzsgYm9yZGVyLWNvbG9yOiAj YzYyODI4OyB9CgovKiBGb3J0c2Nocml0dHMtQW5pbWF0aW9uIHdhZWhyZW5kIFJlc2V0L0R1bW15 ZGF0ZW4gKHVuYmVzdGltbXQg4oCUIGRlciBTZXJ2ZXIKICAgbGllZmVydCBrZWluZSBad2lzY2hl bnN0YWVuZGUsIGRhaGVyIFNwaW5uZXIgKyBlbmRsb3MgbGF1ZmVuZGVyIEJhbGtlbikuICovCi5n ZW4tcHJvZ3Jlc3Mtd3JhcCB7CiAgICBtYXJnaW4tdG9wOiAxNnB4OyBwYWRkaW5nOiAxNHB4IDE4 cHg7IGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1tZCk7CiAgICBmb250LXNpemU6IHZhcigt LWZzLWxnKTsgZm9udC13ZWlnaHQ6IDYwMDsKICAgIGJhY2tncm91bmQ6ICNlM2YyZmQ7IGNvbG9y OiAjMTU2NWMwOyBib3JkZXI6IDFweCBzb2xpZCAjOTBjYWY5Owp9CltkYXRhLXRoZW1lPSJuaWdo dCJdIC5nZW4tcHJvZ3Jlc3Mtd3JhcCB7IGJhY2tncm91bmQ6ICMxNjI2M2E7IGNvbG9yOiAjNWE5 ZmRiOyBib3JkZXItY29sb3I6ICMxNTY1YzA7IH0KLmdlbi1wcm9ncmVzcy1sYWJlbCB7IGRpc3Bs YXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGdhcDogMTBweDsgfQouZ2VuLXByb2dyZXNz LWxhYmVsOjpiZWZvcmUgewogICAgY29udGVudDogIiI7IGZsZXg6IG5vbmU7IHdpZHRoOiAxNnB4 OyBoZWlnaHQ6IDE2cHg7IGJvcmRlci1yYWRpdXM6IDUwJTsKICAgIGJvcmRlcjogMnB4IHNvbGlk IGN1cnJlbnRDb2xvcjsgYm9yZGVyLXRvcC1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgICBhbmltYXRp b246IGdlbi1zcGluIDAuN3MgbGluZWFyIGluZmluaXRlOwp9Ci5nZW4tcHJvZ3Jlc3MtYmFyIHsK ICAgIG1hcmdpbi10b3A6IDEwcHg7IGhlaWdodDogNnB4OyBib3JkZXItcmFkaXVzOiAzcHg7CiAg ICBiYWNrZ3JvdW5kOiByZ2JhKDIxLDEwMSwxOTIsMC4xOCk7IG92ZXJmbG93OiBoaWRkZW47IHBv c2l0aW9uOiByZWxhdGl2ZTsKfQouZ2VuLXByb2dyZXNzLWJhciA+IHNwYW4gewogICAgcG9zaXRp b246IGFic29sdXRlOyB0b3A6IDA7IGJvdHRvbTogMDsgd2lkdGg6IDQwJTsgYm9yZGVyLXJhZGl1 czogM3B4OwogICAgYmFja2dyb3VuZDogY3VycmVudENvbG9yOyBhbmltYXRpb246IGdlbi1pbmRl dGVybWluYXRlIDEuMXMgZWFzZS1pbi1vdXQgaW5maW5pdGU7Cn0KQGtleWZyYW1lcyBnZW4tc3Bp biB7IHRvIHsgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTsgfSB9CkBrZXlmcmFtZXMgZ2VuLWlu ZGV0ZXJtaW5hdGUgeyAwJSB7IGxlZnQ6IC00MCU7IH0gMTAwJSB7IGxlZnQ6IDEwMCU7IH0gfQpA bWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkgewogICAgLmdlbi1wcm9ncmVz cy1sYWJlbDo6YmVmb3JlIHsgYW5pbWF0aW9uLWR1cmF0aW9uOiAxLjZzOyB9CiAgICAuZ2VuLXBy b2dyZXNzLWJhciA+IHNwYW4geyBhbmltYXRpb246IG5vbmU7IGxlZnQ6IDA7IHdpZHRoOiAxMDAl OyBvcGFjaXR5OiAwLjY7IH0KfQoKLyogPT09PT0gU3RhdGlzdGlrID09PT09ICovCi5sYXlvdXQt c3RhdGlzdGlreyBvdmVyZmxvdy15OiBhdXRvOyBwYWRkaW5nOiAyMHB4IDI0cHg7IGZsZXg6IDE7 IH0KCi8qIEtQSS1LYWNoZWxuICovCi5zdGF0cy1rcGlzIHsKICAgIGRpc3BsYXk6IGdyaWQ7IGdy aWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KGF1dG8tZml0LCBtaW5tYXgoMTQwcHgsIDFmcikp OwogICAgZ2FwOiAxMnB4OyBtYXJnaW4tYm90dG9tOiAyMHB4Owp9Ci5zdGF0cy1rcGkgewogICAg YmFja2dyb3VuZDogdmFyKC0tYmctY2FyZCk7IGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1s Zyk7IHBhZGRpbmc6IDE2cHg7CiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1ib3JkZXItbGln aHQpOyB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICBib3gtc2hhZG93OiAwIDFweCA0cHggdmFyKC0t c2hhZG93LWxpZ2h0KTsgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuMTVzIGVhc2U7Cn0KLnN0YXRz LWtwaTpob3ZlciB7IHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMnB4KTsgYm94LXNoYWRvdzogMCA0 cHggMTJweCB2YXIoLS1zaGFkb3ctbWVkaXVtKTsgfQouc3RhdHMta3BpLXdlcnQgeyBmb250LXNp emU6IDI4cHg7IGZvbnQtd2VpZ2h0OiA4MDA7IGxpbmUtaGVpZ2h0OiAxLjE7IGZvbnQtdmFyaWFu dC1udW1lcmljOiB0YWJ1bGFyLW51bXM7IH0KLnN0YXRzLWtwaS1sYWJlbCB7IGZvbnQtc2l6ZTog dmFyKC0tZnMtc20pOyBjb2xvcjogdmFyKC0tdGV4dC1tdXRlZCk7IG1hcmdpbi10b3A6IDRweDsg Zm9udC13ZWlnaHQ6IDYwMDsgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsgbGV0dGVyLXNwYWNp bmc6IDAuNXB4OyB9CgovKiBEYXNoYm9hcmQtR3JpZCAoQWx0IOKAlCBibGVpYnQgZnVlciBldnRs LiBSZXN0bnV0enVuZywgU3RhdGlzdGlrLVRhYiBudXR6dCBqZXR6dCAuc3RhdHMtZ3JpZCkgKi8K LnN0YXRzLWRhc2hib2FyZCB7IGRpc3BsYXk6IGdyaWQ7IGdyaWQtdGVtcGxhdGUtY29sdW1uczog MWZyIDFmcjsgZ2FwOiAxNnB4OyBtYXJnaW4tYm90dG9tOiAxNnB4OyB9CkBtZWRpYSAobWF4LXdp ZHRoOiA5MDBweCkgeyAuc3RhdHMtZGFzaGJvYXJkIHsgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAx ZnI7IH0gfQoKLyogPT09PT0gRWluaGVpdGxpY2hlcyA2LVNwYWx0ZW4tUmFzdGVyIChrb25maWd1 cmllcmJhciB2aWEgc3RhdGlzdGlrTGF5b3V0KSA9PT09PQogICBKZWRlIEthY2hlbCBiZWxlZ3Qg c3BhbiA2ICh2b2xsLzE6MSksIDMgKGhhbGIvMToyKSBvZGVyIDIgKGRyaXR0ZWwvMTozKS4gRGll CiAgIGtvbmtyZXRlIEJyZWl0ZSBzZXR6dCBzdGF0aXN0aWsuanMgKGxheW91dEFud2VuZGVuKSBw ZXIgaW5saW5lIGdyaWQtY29sdW1uLiAqLwouc3RhdHMtZ3JpZCB7CiAgICBkaXNwbGF5OiBncmlk OyBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg2LCAxZnIpOwogICAgZ2FwOiAxNnB4OyBt YXJnaW4tYm90dG9tOiAxNnB4OyBhbGlnbi1pdGVtczogc3RhcnQ7Cn0KLyogVm9tIFNVLUxheW91 dCBhdXNnZWJsZW5kZXRlIEthY2hlbCAocmVjaHRlYmFzaWVydGVzIGRpc3BsYXk6bm9uZSBibGVp YnQgZGF2b24KICAgdW5iZXJ1ZWhydCDigJQgYmVpZGVzIHZlcnN0ZWNrdCB1bmFiaGFlbmdpZyB2 b25laW5hbmRlcikuICovCi5zdGF0cy1wYW5lbC50aWxlLXZlcnN0ZWNrdCB7IGRpc3BsYXk6IG5v bmUgIWltcG9ydGFudDsgfQpAbWVkaWEgKG1heC13aWR0aDogOTAwcHgpIHsKICAgIC5zdGF0cy1n cmlkIHsgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7IH0KICAgIC5zdGF0cy1ncmlkID4gLnN0 YXRzLXBhbmVsIHsgZ3JpZC1jb2x1bW46IDEgLyAtMSAhaW1wb3J0YW50OyB9Cn0KCi8qIEJhdWth c3Rlbi1MZWlzdGUgKEJ1aWxkZXItQnV0dG9uIGltIFN0YXRpc3Rpay1Lb3BmKSAqLwouc3RhdHMt YmF1a2FzdGVuLWxlaXN0ZSB7IGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGdh cDogMTJweDsgbWFyZ2luLWJvdHRvbTogMTZweDsgZmxleC13cmFwOiB3cmFwOyB9Ci5zdGF0cy1i YXVrYXN0ZW4taGlud2VpcyB7IGZvbnQtc2l6ZTogdmFyKC0tZnMtc20pOyBjb2xvcjogdmFyKC0t dGV4dC1tdXRlZCk7IH0KCi8qIEJhdWthc3Rlbi1LYWNoZWw6IEJhZGdlICsgV2VyLUxhYmVsIGlt IEtvcGYsIFJhbmctTnVtbWVyIGltIEJhbGtlbiAqLwouc3RhdHMtYmstYmFkZ2UgewogICAgZGlz cGxheTogaW5saW5lLWJsb2NrOyBmb250LXNpemU6IDEwcHg7IGZvbnQtd2VpZ2h0OiA3MDA7IGxl dHRlci1zcGFjaW5nOiAuMDNlbTsKICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7IHBhZGRp bmc6IDFweCA2cHg7IGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1zbSk7CiAgICBiYWNrZ3Jv dW5kOiB2YXIoLS1iZy1wcmltYXJ5KTsgY29sb3I6IHZhcigtLXRleHQtb24tcHJpbWFyeSwgI2Zm Zik7IHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7Cn0KLnN0YXRzLWJrLXdlciB7IGZvbnQtc2l6ZTog dmFyKC0tZnMtc20pOyBjb2xvcjogdmFyKC0tdGV4dC1zZWNvbmRhcnkpOyB3aGl0ZS1zcGFjZTog bm93cmFwOyB9Ci5zdGF0cy1iay1yYW5nIHsgZGlzcGxheTogaW5saW5lLWJsb2NrOyBtaW4td2lk dGg6IDEuNmVtOyBjb2xvcjogdmFyKC0tdGV4dC1tdXRlZCk7IGZvbnQtdmFyaWFudC1udW1lcmlj OiB0YWJ1bGFyLW51bXM7IH0KCi8qID09PT09IEJ1aWxkZXItTW9kYWwgPT09PT0gKi8KLmJrLWJ1 aWxkZXIgeyBkaXNwbGF5OiBncmlkOyBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IG1pbm1heCgyMjBw eCwgMWZyKSBtaW5tYXgoMjYwcHgsIDEuNGZyKTsgZ2FwOiAxOHB4OyB9CkBtZWRpYSAobWF4LXdp ZHRoOiA3MjBweCkgeyAuYmstYnVpbGRlciB7IGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyOyB9 IH0KLmJrLWZvcm0geyBkaXNwbGF5OiBmbGV4OyBmbGV4LWRpcmVjdGlvbjogY29sdW1uOyBnYXA6 IDEwcHg7IH0KLmJrLWZlbGQgeyBkaXNwbGF5OiBmbGV4OyBmbGV4LWRpcmVjdGlvbjogY29sdW1u OyBnYXA6IDRweDsgZm9udC1zaXplOiB2YXIoLS1mcy1zbSk7IGZvbnQtd2VpZ2h0OiA2MDA7IGNv bG9yOiB2YXIoLS10ZXh0LXNlY29uZGFyeSk7IH0KLmJrLWZlbGQgLmZvcm0taW5wdXQgeyBmb250 LXdlaWdodDogNDAwOyB9Ci5iay12b3JzY2hhdSB7CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1j YXJkLWFsdCk7IGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWJvcmRlci1saWdodCk7CiAgICBib3Jk ZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbWQpOyBwYWRkaW5nOiAxMnB4IDE0cHg7IG1pbi13aWR0 aDogMDsKfQouYmstdm9yc2NoYXUtdGl0ZWwgeyBmb250LXNpemU6IHZhcigtLWZzLXNtKTsgZm9u dC13ZWlnaHQ6IDcwMDsgY29sb3I6IHZhcigtLXRleHQtaGVhZGluZyk7IG1hcmdpbi1ib3R0b206 IDhweDsgfQouYmstdm9yc2NoYXUgLnN0YXRzLWNoYXJ0LWFyZWEgeyBtYXgtaGVpZ2h0OiAzMjBw eDsgfQouYmstbGlzdGUgeyBtYXJnaW4tdG9wOiAxOHB4OyBib3JkZXItdG9wOiAxcHggc29saWQg dmFyKC0tYm9yZGVyLWxpZ2h0KTsgcGFkZGluZy10b3A6IDEycHg7IH0KLmJrLWxpc3RlLXRpdGVs IHsgZm9udC1zaXplOiB2YXIoLS1mcy1zbSk7IGZvbnQtd2VpZ2h0OiA3MDA7IGNvbG9yOiB2YXIo LS10ZXh0LWhlYWRpbmcpOyBtYXJnaW4tYm90dG9tOiA4cHg7IH0KLmJrLWxpc3RlLWxlZXIgeyBm b250LXNpemU6IHZhcigtLWZzLXNtKTsgY29sb3I6IHZhcigtLXRleHQtbXV0ZWQpOyB9Ci5iay1s aXN0ZS1pdGVtcyB7IGRpc3BsYXk6IGZsZXg7IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47IGdhcDog NnB4OyB9Ci5iay1saXN0ZS1pdGVtIHsgZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRl cjsgZ2FwOiAxMHB4OyBwYWRkaW5nOiA2cHggOHB4OyBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1i b3JkZXItbGlnaHQpOyBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbWQpOyB9Ci5iay1saXN0 ZS1uYW1lIHsgZm9udC13ZWlnaHQ6IDYwMDsgY29sb3I6IHZhcigtLXRleHQtaGVhZGluZyk7IH0K LmJrLWxpc3RlLW1ldGEgeyBmbGV4OiAxOyBmb250LXNpemU6IHZhcigtLWZzLXNtKTsgY29sb3I6 IHZhcigtLXRleHQtbXV0ZWQpOyB9CgovKiA9PT09PSBBZG1pbjogU3RhdGlzdGlrLUxheW91dC1S YXN0ZXIgKFNVLW9ubHkpID09PT09ICovCi5zbC1sZWdlbmRlIHsgZm9udC1zaXplOiB2YXIoLS1m cy1zbSk7IGNvbG9yOiB2YXIoLS10ZXh0LXNlY29uZGFyeSk7IG1hcmdpbi1ib3R0b206IDE0cHg7 IH0KLnNsLXJhc3RlciB7IG1hcmdpbi1ib3R0b206IDA7IH0KLnNsLXRpbGUgewogICAgZ3JpZC1j b2x1bW46IHNwYW4gNjsgYmFja2dyb3VuZDogdmFyKC0tYmctY2FyZCk7IGJvcmRlcjogMXB4IHNv bGlkIHZhcigtLWJvcmRlci1jb2xvcik7CiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMt bWQpOyBwYWRkaW5nOiAxMHB4IDEycHg7IGN1cnNvcjogcG9pbnRlcjsgdXNlci1zZWxlY3Q6IG5v bmU7CiAgICBib3gtc2hhZG93OiAwIDFweCAzcHggdmFyKC0tc2hhZG93LWxpZ2h0KTsgdHJhbnNp dGlvbjogYm9yZGVyLWNvbG9yIC4xMnMgZWFzZSwgYm94LXNoYWRvdyAuMTJzIGVhc2UsIG9wYWNp dHkgLjEycyBlYXNlOwogICAgbWluLXdpZHRoOiAwOwp9Ci5zbC10aWxlOmhvdmVyIHsgYm9yZGVy LWNvbG9yOiB2YXIoLS1iZy1wcmltYXJ5KTsgYm94LXNoYWRvdzogMCAycHggNnB4IHZhcigtLXNo YWRvdy1tZWRpdW0pOyB9Ci5zbC10aWxlLWtvcGYgeyBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVt czogY2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47IGdhcDogOHB4OyBtYXJn aW4tYm90dG9tOiA2cHg7IH0KLnNsLWJhZGdlIHsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsg Zm9udC1zaXplOiAxMHB4OyBmb250LXdlaWdodDogNzAwOyB0ZXh0LXRyYW5zZm9ybTogdXBwZXJj YXNlOyBsZXR0ZXItc3BhY2luZzogLjAzZW07CiAgICBwYWRkaW5nOiAxcHggNnB4OyBib3JkZXIt cmFkaXVzOiB2YXIoLS1yYWRpdXMtc20pOyBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1wcmltYXJ5KTsg Y29sb3I6IHZhcigtLXRleHQtb24tcHJpbWFyeSwgI2ZmZik7Cn0KLnNsLWJhZGdlLWZlc3QgeyBi YWNrZ3JvdW5kOiB2YXIoLS10ZXh0LXNlY29uZGFyeSk7IH0KLnNsLWF1Z2UgeyBiYWNrZ3JvdW5k OiB2YXIoLS1iZy1jYXJkLWFsdCk7IGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWJvcmRlci1saWdo dCk7IGN1cnNvcjogcG9pbnRlcjsgZm9udC1zaXplOiAxMXB4OyBmb250LXdlaWdodDogNjAwOyBs aW5lLWhlaWdodDogMS4yOyBwYWRkaW5nOiAycHggOHB4OyBib3JkZXItcmFkaXVzOiB2YXIoLS1y YWRpdXMtc20pOyBjb2xvcjogdmFyKC0tdGV4dC1zZWNvbmRhcnkpOyB9Ci5zbC1hdWdlOmhvdmVy IHsgYm9yZGVyLWNvbG9yOiB2YXIoLS1iZy1wcmltYXJ5KTsgY29sb3I6IHZhcigtLXRleHQtaGVh ZGluZyk7IH0KLnNsLXRpbGUtdGl0ZWwgeyBmb250LXdlaWdodDogNzAwOyBjb2xvcjogdmFyKC0t dGV4dC1oZWFkaW5nKTsgZm9udC1zaXplOiB2YXIoLS1mcy1tZCk7IG92ZXJmbG93OiBoaWRkZW47 IHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOyB3aGl0ZS1zcGFjZTogbm93cmFwOyB9Ci5zbC10aWxl LWJyZWl0ZSB7IGZvbnQtc2l6ZTogdmFyKC0tZnMtc20pOyBjb2xvcjogdmFyKC0tdGV4dC1tdXRl ZCk7IG1hcmdpbi10b3A6IDJweDsgfQouc2wtbWluIHsgY29sb3I6IHZhcigtLXRleHQtbXV0ZWQp OyB9Ci5zbC10aWxlLnNsLXVuc2ljaHRiYXIgeyBvcGFjaXR5OiAuNTsgfQouc2wtdGlsZS5zbC1k cmFnZ2luZyB7IG9wYWNpdHk6IC40OyB9Ci5zbC10aWxlLnNsLWRyb3AtemllbCB7IGJvcmRlci1j b2xvcjogdmFyKC0tYmctcHJpbWFyeSk7IGJveC1zaGFkb3c6IDAgMCAwIDJweCB2YXIoLS1iZy1w cmltYXJ5KSBpbnNldDsgfQpAbWVkaWEgKG1heC13aWR0aDogOTAwcHgpIHsgLnNsLXRpbGUgeyBn cmlkLWNvbHVtbjogMSAvIC0xICFpbXBvcnRhbnQ7IH0gfQoKLyogPT09PT0gTmF0aXZlIFNWRy1E aWFncmFtbWUgKHN0YXRpc3Rpa19jaGFydHMuanMpID09PT09ICovCi5zdGF0LXN2ZyB7IGZvbnQt ZmFtaWx5OiBpbmhlcml0OyB9Ci5zdGF0LWF4IHsgZmlsbDogdmFyKC0tdGV4dC1tdXRlZCk7IGZv bnQtc2l6ZTogMTFweDsgfQouc3RhdC1heC1uYW1lIHsgZmlsbDogdmFyKC0tdGV4dC1zZWNvbmRh cnkpOyBmb250LXNpemU6IDExcHg7IH0KLnN0YXQtYXgtbGVnIHsgZmlsbDogdmFyKC0tdGV4dC1z ZWNvbmRhcnkpOyBmb250LXNpemU6IDEycHg7IH0KLnN0YXQtYXgtdGl0ZWwgeyBmaWxsOiB2YXIo LS10ZXh0LXNlY29uZGFyeSk7IGZvbnQtc2l6ZTogMTJweDsgZm9udC13ZWlnaHQ6IDYwMDsgfQou c3RhdC1oZWF0LXdlcnQgeyBmb250LXNpemU6IDExcHg7IGZvbnQtd2VpZ2h0OiA2MDA7IH0KLnN0 YXQtZG9udXQtbWl0dGUgeyBmaWxsOiB2YXIoLS10ZXh0LWhlYWRpbmcpOyBmb250LXNpemU6IDIy cHg7IGZvbnQtd2VpZ2h0OiA4MDA7IH0KLnN0YXQtbGVnZW5kZSB7IGRpc3BsYXk6IGZsZXg7IGZs ZXgtd3JhcDogd3JhcDsgZ2FwOiA2cHggMTRweDsgbWFyZ2luLXRvcDogOHB4OyB9Ci5zdGF0LWxl Zy1pdGVtIHsgZGlzcGxheTogaW5saW5lLWZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGdhcDog NXB4OyBmb250LXNpemU6IHZhcigtLWZzLXNtKTsgY29sb3I6IHZhcigtLXRleHQtc2Vjb25kYXJ5 KTsgfQouc3RhdC1sZWctYm94IHsgd2lkdGg6IDEycHg7IGhlaWdodDogMTJweDsgYm9yZGVyLXJh ZGl1czogM3B4OyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IH0KLnN0YXQtcGl2b3QgdGgsIC5zdGF0 LXBpdm90IHRkIHsgd2hpdGUtc3BhY2U6IG5vd3JhcDsgfQouc3RhdC1rcGktd3JhcCB7IGRpc3Bs YXk6IGZsZXg7IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47IGdhcDogMTRweDsgfQouc3RhdC1rcGkt Z3Jvc3MgeyB0ZXh0LWFsaWduOiBjZW50ZXI7IHBhZGRpbmc6IDhweCAwOyB9Ci5zdGF0LWtwaS1n cm9zcy13ZXJ0IHsgZm9udC1zaXplOiA0MHB4OyBmb250LXdlaWdodDogODAwOyBjb2xvcjogdmFy KC0tdGV4dC1oZWFkaW5nKTsgbGluZS1oZWlnaHQ6IDE7IH0KLnN0YXQta3BpLWdyb3NzLWxhYmVs IHsgZm9udC1zaXplOiB2YXIoLS1mcy1zbSk7IGNvbG9yOiB2YXIoLS10ZXh0LXNlY29uZGFyeSk7 IG1hcmdpbi10b3A6IDRweDsgfQouc3RhdC1rcGktbWluaSB7IG1hcmdpbi1ib3R0b206IDA7IH0K Ci8qID09PT09IFN0YXRpc3Rpay1CdWlsZGVyIChhZG1pbl9zdGF0aXN0aWtfYnVpbGRlci5qcykg PT09PT0gKi8KLmJsZC1ncmlkIHsgZGlzcGxheTogZ3JpZDsgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5z OiBtaW5tYXgoMjgwcHgsIDM2MHB4KSAxZnI7IGdhcDogMjBweDsgYWxpZ24taXRlbXM6IHN0YXJ0 OyB9CkBtZWRpYSAobWF4LXdpZHRoOiA5ODBweCkgeyAuYmxkLWdyaWQgeyBncmlkLXRlbXBsYXRl LWNvbHVtbnM6IDFmcjsgfSB9CgovKiBFeGNlbC1FeHBvcnQtRm9ybXVsYXIgKEFkbWluLVRhYiDi gJ5FeGNlbC1FeHBvcnQiKSDigJQgc2NobWFsZSBTcGFsdGUsIG51dHp0CiAgIGFuc29uc3RlbiBk aWUgLmJsZC0qLUZlbGRzdGlsZSBtaXQuICovCi5leHAtZm9ybSB7IG1heC13aWR0aDogNjgwcHg7 IH0KLmV4cC1mb3JtIC5ibGQtY2hpcHMgeyBtYXgtaGVpZ2h0OiAyMjBweDsgb3ZlcmZsb3cteTog YXV0bzsgfQouYmxkLXNwYWx0ZS1mb3JtIHsgZGlzcGxheTogZmxleDsgZmxleC1kaXJlY3Rpb246 IGNvbHVtbjsgZ2FwOiAxMnB4OyB9Ci5ibGQtZmVsZCB7IGRpc3BsYXk6IGZsZXg7IGZsZXgtZGly ZWN0aW9uOiBjb2x1bW47IGdhcDogNXB4OyB9Ci5ibGQtZmVsZC10aXRlbCB7IGZvbnQtc2l6ZTog dmFyKC0tZnMtc20pOyBmb250LXdlaWdodDogNzAwOyBjb2xvcjogdmFyKC0tdGV4dC1zZWNvbmRh cnkpOyB9Ci5ibGQtZmVsZC0yIHsgZGlzcGxheTogZ3JpZDsgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5z OiAxZnIgMWZyOyBnYXA6IDEwcHg7IH0KLmJsZC1taW5pIHsgZGlzcGxheTogZmxleDsgZmxleC1k aXJlY3Rpb246IGNvbHVtbjsgZ2FwOiA0cHg7IGZvbnQtc2l6ZTogdmFyKC0tZnMtc20pOyBjb2xv cjogdmFyKC0tdGV4dC1zZWNvbmRhcnkpOyB9Ci5ibGQtc2VrdGlvbiB7IGJvcmRlcjogMXB4IHNv bGlkIHZhcigtLWJvcmRlci1saWdodCk7IGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1tZCk7 IHBhZGRpbmc6IDRweCAxMnB4IDEycHg7IH0KLmJsZC1zZWt0aW9uID4gc3VtbWFyeSB7IGN1cnNv cjogcG9pbnRlcjsgZm9udC13ZWlnaHQ6IDcwMDsgY29sb3I6IHZhcigtLXRleHQtaGVhZGluZyk7 IHBhZGRpbmc6IDhweCAwOyB1c2VyLXNlbGVjdDogbm9uZTsgfQouYmxkLXNla3Rpb25bb3Blbl0g PiBzdW1tYXJ5IHsgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLWJvcmRlci1saWdodCk7 IG1hcmdpbi1ib3R0b206IDEwcHg7IH0KLmJsZC1zZWt0aW9uIC5ibGQtZmVsZCB7IG1hcmdpbi10 b3A6IDEwcHg7IH0KLmJsZC1jaGlwcyB7IGRpc3BsYXk6IGZsZXg7IGZsZXgtd3JhcDogd3JhcDsg Z2FwOiA4cHg7IH0KLmJsZC1jaGlwIHsgZGlzcGxheTogaW5saW5lLWZsZXg7IGFsaWduLWl0ZW1z OiBjZW50ZXI7IHBhZGRpbmc6IDVweCAxMnB4OyBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1ib3Jk ZXItY29sb3IpOyBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtc20pOwogICAgZm9udC1zaXpl OiB2YXIoLS1mcy1zbSk7IGNvbG9yOiB2YXIoLS10ZXh0LXNlY29uZGFyeSk7IGN1cnNvcjogcG9p bnRlcjsgdXNlci1zZWxlY3Q6IG5vbmU7IGJhY2tncm91bmQ6IHZhcigtLWJnLWNhcmQpOyBsaW5l LWhlaWdodDogMS4zOyB9Ci5ibGQtY2hpcCBpbnB1dCB7IGRpc3BsYXk6IG5vbmU7IH0KLmJsZC1j aGlwLmFuIHsgYmFja2dyb3VuZDogdmFyKC0tYmctcHJpbWFyeSk7IGNvbG9yOiB2YXIoLS10ZXh0 LW9uLXByaW1hcnksICNmZmYpOyBib3JkZXItY29sb3I6IHZhcigtLWJnLXByaW1hcnkpOyB9Ci5i bGQtdG9nZ2xlcyB7IGRpc3BsYXk6IGZsZXg7IGZsZXgtd3JhcDogd3JhcDsgZ2FwOiAxNHB4OyBt YXJnaW4tdG9wOiAxMHB4OyB9Ci5ibGQtdG9nZ2xlIHsgZm9udC1zaXplOiB2YXIoLS1mcy1zbSk7 IGNvbG9yOiB2YXIoLS10ZXh0LXNlY29uZGFyeSk7IGRpc3BsYXk6IGlubGluZS1mbGV4OyBhbGln bi1pdGVtczogY2VudGVyOyBnYXA6IDZweDsgY3Vyc29yOiBwb2ludGVyOyB9Ci5ibGQtcGVycy1o aW53ZWlzIHsgZm9udC1zaXplOiAxMXB4OyBjb2xvcjogdmFyKC0tdGV4dC1tdXRlZCk7IG1hcmdp bjogMCAwIDEwcHggMDsgfQouYmxkLXBlcnMtZ3JwIHsgbWFyZ2luLWJvdHRvbTogMTJweDsgfQou YmxkLXBlcnMtZ3JwLWtvcGYgeyBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBq dXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47IGdhcDogOHB4OyBtYXJnaW4tYm90dG9tOiA2 cHg7IH0KLmJsZC1wZXJzLWdycC1rb3BmID4gc3BhbiB7IGZvbnQtc2l6ZTogdmFyKC0tZnMtc20p OyBmb250LXdlaWdodDogNzAwOyBjb2xvcjogdmFyKC0tdGV4dC1oZWFkaW5nKTsgfQouYmxkLXBl cnMtemFobCB7IGNvbG9yOiB2YXIoLS10ZXh0LW11dGVkKTsgZm9udC13ZWlnaHQ6IDQwMDsgfQou YmxkLXNwYWx0ZS1hdXMgeyBkaXNwbGF5OiBmbGV4OyBmbGV4LWRpcmVjdGlvbjogY29sdW1uOyBn YXA6IDE0cHg7IG1pbi13aWR0aDogMDsgfQouYmxkLWFrdGlvbmVuIHsgZGlzcGxheTogZmxleDsg Z2FwOiAxMHB4OyBmbGV4LXdyYXA6IHdyYXA7IH0KLmJsZC1lcmdlYm5pcyB7IGJvcmRlcjogMXB4 IHNvbGlkIHZhcigtLWJvcmRlci1saWdodCk7IGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1s Zyk7IGJhY2tncm91bmQ6IHZhcigtLWJnLWNhcmQpOyBwYWRkaW5nOiAxNnB4IDE4cHg7IG1pbi1o ZWlnaHQ6IDIwMHB4OyBtaW4td2lkdGg6IDA7IH0KLmJsZC1lcmdlYm5pcy1oaW50IHsgY29sb3I6 IHZhcigtLXRleHQtbXV0ZWQpOyBmb250LXNpemU6IHZhcigtLWZzLXNtKTsgfQouYmxkLWVyZ2Vi bmlzLXRpdGVsIHsgZm9udC13ZWlnaHQ6IDcwMDsgY29sb3I6IHZhcigtLXRleHQtaGVhZGluZyk7 IG1hcmdpbi1ib3R0b206IDEwcHg7IH0KLmJsZC1lcmdlYm5pcy1jaGFydCB7IG92ZXJmbG93LXg6 IGF1dG87IH0KLmJsZC1saXN0ZSB7IG1hcmdpbi10b3A6IDIycHg7IGJvcmRlci10b3A6IDFweCBz b2xpZCB2YXIoLS1ib3JkZXItbGlnaHQpOyBwYWRkaW5nLXRvcDogMTRweDsgfQouYmxkLWxpc3Rl LXRpdGVsIHsgZm9udC13ZWlnaHQ6IDcwMDsgY29sb3I6IHZhcigtLXRleHQtaGVhZGluZyk7IG1h cmdpbi1ib3R0b206IDEwcHg7IH0KLmJsZC1saXN0ZS1sZWVyIHsgZm9udC1zaXplOiB2YXIoLS1m cy1zbSk7IGNvbG9yOiB2YXIoLS10ZXh0LW11dGVkKTsgfQouYmxkLWxpc3RlLWl0ZW1zIHsgZGlz cGxheTogZmxleDsgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgZ2FwOiA2cHg7IH0KLmJsZC1saXN0 ZS1pdGVtIHsgZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsgZ2FwOiAxMHB4OyBw YWRkaW5nOiA3cHggMTBweDsgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tYm9yZGVyLWxpZ2h0KTsg Ym9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLW1kKTsgfQouYmxkLWxpc3RlLWl0ZW0uYWt0aXYg eyBib3JkZXItY29sb3I6IHZhcigtLWJnLXByaW1hcnkpOyBib3gtc2hhZG93OiAwIDAgMCAxcHgg dmFyKC0tYmctcHJpbWFyeSkgaW5zZXQ7IH0KLmJsZC1saXN0ZS1uYW1lIHsgZm9udC13ZWlnaHQ6 IDYwMDsgY29sb3I6IHZhcigtLXRleHQtaGVhZGluZyk7IH0KLmJsZC1saXN0ZS10eXAgeyBmbGV4 OiAxOyBmb250LXNpemU6IHZhcigtLWZzLXNtKTsgY29sb3I6IHZhcigtLXRleHQtbXV0ZWQpOyB9 CgovKiBMaXZlLUZsdXNzZGlhZ3JhbW0gZGVyIEJ1aWxkZXItTG9naWsgKi8KLmJsZC1mbHVzcyB7 IGJvcmRlcjogMXB4IGRhc2hlZCB2YXIoLS1ib3JkZXItY29sb3IpOyBib3JkZXItcmFkaXVzOiB2 YXIoLS1yYWRpdXMtbWQpOyBwYWRkaW5nOiAxMHB4IDEycHg7IGJhY2tncm91bmQ6IHZhcigtLWJn LWNhcmQtYWx0KTsgfQouZmx1c3MtdGl0ZWwgeyBmb250LXNpemU6IHZhcigtLWZzLXNtKTsgZm9u dC13ZWlnaHQ6IDcwMDsgY29sb3I6IHZhcigtLXRleHQtc2Vjb25kYXJ5KTsgbWFyZ2luLWJvdHRv bTogOHB4OyB9Ci5mbHVzcy1rZXR0ZSB7IGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBzdHJl dGNoOyBnYXA6IDZweDsgZmxleC13cmFwOiB3cmFwOyB9Ci5mbHVzcy1zdGF0aW9uIHsgZmxleDog MSAxIDExMHB4OyBtaW4td2lkdGg6IDEwMHB4OyBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1jYXJkKTsg Ym9yZGVyOiAxcHggc29saWQgdmFyKC0tYm9yZGVyLWxpZ2h0KTsgYm9yZGVyLXJhZGl1czogdmFy KC0tcmFkaXVzLW1kKTsgcGFkZGluZzogOHB4IDEwcHg7IH0KLmZsdXNzLWljIHsgZm9udC1zaXpl OiAxOHB4OyBsaW5lLWhlaWdodDogMTsgfQouZmx1c3MtdCB7IGZvbnQtd2VpZ2h0OiA3MDA7IGNv bG9yOiB2YXIoLS10ZXh0LWhlYWRpbmcpOyBmb250LXNpemU6IHZhcigtLWZzLXNtKTsgbWFyZ2lu LXRvcDogNHB4OyB9Ci5mbHVzcy1zIHsgZm9udC1zaXplOiAxMXB4OyBjb2xvcjogdmFyKC0tdGV4 dC1tdXRlZCk7IG1hcmdpbi10b3A6IDJweDsgd29yZC1icmVhazogYnJlYWstd29yZDsgfQouZmx1 c3MtcGZlaWwgeyBhbGlnbi1zZWxmOiBjZW50ZXI7IGNvbG9yOiB2YXIoLS10ZXh0LW11dGVkKTsg Zm9udC13ZWlnaHQ6IDcwMDsgfQoKLyogPT09PT0gUmVjaHRlICYgU2ljaHRiYXJrZWl0OiBSb2xs ZW4gYWxzIGVpbmdla2xhcHB0ZSBVbnRlcnNlaXRlbiA9PT09PSAqLwoucmVjaHRlLXJvbGxlIHsg Ym9yZGVyOiAxcHggc29saWQgdmFyKC0tYm9yZGVyLWxpZ2h0KTsgYm9yZGVyLXJhZGl1czogdmFy KC0tcmFkaXVzLW1kKTsgbWFyZ2luLWJvdHRvbTogMTJweDsgYmFja2dyb3VuZDogdmFyKC0tYmct Y2FyZCk7IH0KLnJlY2h0ZS1yb2xsZSA+IHN1bW1hcnkgewogICAgbGlzdC1zdHlsZTogbm9uZTsg Y3Vyc29yOiBwb2ludGVyOyB1c2VyLXNlbGVjdDogbm9uZTsKICAgIGRpc3BsYXk6IGZsZXg7IGFs aWduLWl0ZW1zOiBjZW50ZXI7IGdhcDogMTJweDsgcGFkZGluZzogMTRweCAxNnB4Owp9Ci5yZWNo dGUtcm9sbGUgPiBzdW1tYXJ5Ojotd2Via2l0LWRldGFpbHMtbWFya2VyIHsgZGlzcGxheTogbm9u ZTsgfQoucmVjaHRlLXJvbGxlIC5yZWNodGUtY2FyZC1pY29uIHsgZm9udC1zaXplOiAyMHB4OyBm bGV4LXNocmluazogMDsgfQoucmVjaHRlLXJvbGxlLXRpdGVsIHsgZGlzcGxheTogZmxleDsgZmxl eC1kaXJlY3Rpb246IGNvbHVtbjsgZ2FwOiAycHg7IGZsZXg6IDE7IG1pbi13aWR0aDogMDsgfQou cmVjaHRlLXJvbGxlLXRpdGVsID4gc3Ryb25nIHsgZm9udC1zaXplOiB2YXIoLS1mcy1sZyk7IGNv bG9yOiB2YXIoLS10ZXh0LWhlYWRpbmcpOyB9Ci5yZWNodGUtcm9sbGUtdGl0ZWwgLnJlY2h0ZS1j YXJkLXN1YiB7IGZvbnQtc2l6ZTogdmFyKC0tZnMtc20pOyBjb2xvcjogdmFyKC0tdGV4dC1zZWNv bmRhcnkpOyBtYXJnaW46IDA7IH0KLnJlY2h0ZS1yb2xsZS1jaGV2IHsgY29sb3I6IHZhcigtLXRl eHQtbXV0ZWQpOyBmb250LXdlaWdodDogNzAwOyB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gLjE1cyBl YXNlOyBmbGV4LXNocmluazogMDsgfQoucmVjaHRlLXJvbGxlW29wZW5dID4gc3VtbWFyeSAucmVj aHRlLXJvbGxlLWNoZXYgeyB0cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZyk7IH0KLnJlY2h0ZS1yb2xs ZVtvcGVuXSA+IHN1bW1hcnkgeyBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tYm9yZGVy LWxpZ2h0KTsgfQoucmVjaHRlLXJvbGxlLWJvZHkgeyBwYWRkaW5nOiAxNHB4IDE2cHg7IH0KLnJl Y2h0ZS1yb2xsZS1ha3Rpb24geyBkaXNwbGF5OiBmbGV4OyBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgt ZW5kOyBtYXJnaW4tYm90dG9tOiAxMnB4OyB9CgovKiA9PT09PSBTdGFuZGFyZHJlY2h0ZS1UYWIg PT09PT0gKi8KLnNyLWtvbmZpZywgLnNyLXp1c2F0eiB7IG1hcmdpbi1ib3R0b206IDI0cHg7IH0K LnNyLWtvbmZpZyBoMywgLnNyLXp1c2F0eiBoMyB7IGZvbnQtc2l6ZTogdmFyKC0tZnMtbGcpOyBj b2xvcjogdmFyKC0tdGV4dC1oZWFkaW5nKTsgbWFyZ2luOiAwIDAgMTRweCAwOyB9Ci5zci1rb25m aWcgLmJsZC1mZWxkIHsgbWFyZ2luLWJvdHRvbTogMTZweDsgfQouc3Ita29uZmlnIC5ibGQtZmVs ZC10aXRlbCB7IG1hcmdpbi1ib3R0b206IDJweDsgfQouc3Ita29uZmlnIC5yZWNodGUtY2FyZC1m dXNzIHsgbWFyZ2luLXRvcDogMTZweDsgfQouc3ItaGlud2VpcyB7IGZvbnQtc2l6ZTogdmFyKC0t ZnMtc20pOyBjb2xvcjogdmFyKC0tdGV4dC1tdXRlZCk7IG1hcmdpbi1sZWZ0OiAxMnB4OyB9Ci5z ci16dXNhdHotc3ViIHsgZm9udC1zaXplOiB2YXIoLS1mcy1zbSk7IGNvbG9yOiB2YXIoLS10ZXh0 LXNlY29uZGFyeSk7IG1hcmdpbjogMCAwIDEycHggMDsgfQouc3ItenVzYXR6LWl0ZW1zIHsgZGlz cGxheTogZmxleDsgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgZ2FwOiAxMHB4OyB9Ci5zci16dXNh dHotaXRlbSB7IGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWJvcmRlci1saWdodCk7IGJvcmRlci1y YWRpdXM6IHZhcigtLXJhZGl1cy1tZCk7IHBhZGRpbmc6IDEwcHggMTJweDsgYmFja2dyb3VuZDog dmFyKC0tYmctY2FyZCk7IH0KLnNyLXp1c2F0ei1rb3BmIHsgZGlzcGxheTogZmxleDsgYWxpZ24t aXRlbXM6IGNlbnRlcjsgZ2FwOiAxMHB4OyB9Ci5zci16dXNhdHotbmFtZSB7IGZvbnQtd2VpZ2h0 OiA3MDA7IGNvbG9yOiB2YXIoLS10ZXh0LWhlYWRpbmcpOyB9Ci5zci16dXNhdHotbWV0YSB7IGZs ZXg6IDE7IGZvbnQtc2l6ZTogdmFyKC0tZnMtc20pOyBjb2xvcjogdmFyKC0tdGV4dC1tdXRlZCk7 IH0KLnNyLXp1c2F0ei1yZWNodGUgeyBkaXNwbGF5OiBmbGV4OyBmbGV4LXdyYXA6IHdyYXA7IGdh cDogOHB4OyBtYXJnaW4tdG9wOiAxMHB4OyB9Ci5zci10YWcgeyBkaXNwbGF5OiBpbmxpbmUtYmxv Y2s7IGZvbnQtc2l6ZTogMTFweDsgcGFkZGluZzogNHB4IDlweDsgYm9yZGVyLXJhZGl1czogdmFy KC0tcmFkaXVzLXNtKTsgYmFja2dyb3VuZDogdmFyKC0tYmctY2FyZC1hbHQpOyBib3JkZXI6IDFw eCBzb2xpZCB2YXIoLS1ib3JkZXItbGlnaHQpOyBjb2xvcjogdmFyKC0tdGV4dC1zZWNvbmRhcnkp OyBsaW5lLWhlaWdodDogMS4zOyB9Cgouc3RhdHMtcGFuZWwgewogICAgYmFja2dyb3VuZDogdmFy KC0tYmctY2FyZCk7IGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1sZyk7CiAgICBib3JkZXI6 IDFweCBzb2xpZCB2YXIoLS1ib3JkZXItbGlnaHQpOyBib3gtc2hhZG93OiAwIDFweCA0cHggdmFy KC0tc2hhZG93LWxpZ2h0KTsKICAgIHBhZGRpbmc6IDE2cHggMjBweDsgZGlzcGxheTogZmxleDsg ZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgIG1pbi1oZWlnaHQ6IDA7IG1pbi13aWR0aDogMDsg ICAvKiBtaW4td2lkdGg6MCBlc3NlbnppZWxsLCBzb25zdCBzcHJlbmd0CiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWl0ZXIgSW5oYWx0ICh6LkIuIEhlYXRtYXAtVGFi ZWxsZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGllIEdyaWQtU3Bh bHRlbi1CcmVpdGUuICovCiAgICBwb3NpdGlvbjogcmVsYXRpdmU7ICAvKiBBbmtlciBmdWVyIGRl biBHbG93LU92ZXJsYXkgKDo6YWZ0ZXIpICovCn0KLnN0YXRzLXBhbmVsLWtvcGYgewogICAgZGlz cGxheTogZmxleDsganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOyBhbGlnbi1pdGVtczog Y2VudGVyOwogICAgbWFyZ2luLWJvdHRvbTogMTJweDsgZmxleC1zaHJpbms6IDA7Cn0KLnN0YXRz LXBhbmVsLWtvcGYgaDMgeyBmb250LXNpemU6IHZhcigtLWZzLWxnKTsgZm9udC13ZWlnaHQ6IDcw MDsgY29sb3I6IHZhcigtLXRleHQtaGVhZGluZyk7IG1hcmdpbjogMDsgfQouc3RhdHMtY2hhcnQt YXJlYSB7IGZsZXg6IDE7IG1pbi1oZWlnaHQ6IDA7IG92ZXJmbG93LXk6IGF1dG87IG1heC1oZWln aHQ6IDQyMHB4OyB9CgovKiBLbGFwcGJhcmtlaXQgcHJvIFBhbmVsIOKAlCBLbGljayBhdWYgZGVu IEtvcGYgenUvYXVmLCBEZWZhdWx0OiBhdWZnZWtsYXBwdC4KICAgVmVyc3RlY2tlbiBhbGxlcyBp bSBQYW5lbCBhdXNzZXIgZGVtIEtvcGYsIHdlbm4gLnp1Z2VrbGFwcHQgZ2VzZXR6dCBpc3QuICov Ci5zdGF0cy1wYW5lbC1rb3BmIHsgY3Vyc29yOiBwb2ludGVyOyB1c2VyLXNlbGVjdDogbm9uZTsg fQouc3RhdHMtc3Vic2VrdGlvbi1rb3BmIHsgY3Vyc29yOiBwb2ludGVyOyB1c2VyLXNlbGVjdDog bm9uZTsgfQouc3RhdHMtc3Vic2VrdGlvbi10b2dnbGUgeyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7 IHdpZHRoOiAxMnB4OyBjb2xvcjogdmFyKC0tdGV4dC1tdXRlZCk7IGZvbnQtd2VpZ2h0OiA3MDA7 IGZvbnQtc2l6ZTogdmFyKC0tZnMtc20pOyB9Ci5zdGF0cy10ZWFtLWJhbGtlbi56dWdla2xhcHB0 IHsgZGlzcGxheTogbm9uZTsgfQouc3RhdHMtcGFuZWwtdG9nZ2xlIHsKICAgIGRpc3BsYXk6IGlu bGluZS1ibG9jazsgd2lkdGg6IDE0cHg7IG1hcmdpbi1yaWdodDogNnB4OwogICAgY29sb3I6IHZh cigtLXRleHQtbXV0ZWQpOyBmb250LXdlaWdodDogNzAwOyBmb250LXNpemU6IHZhcigtLWZzLXNt KTsKICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjE1cyBlYXNlOwp9Ci5zdGF0cy1wYW5lbC56 dWdla2xhcHB0ID4gKjpub3QoLnN0YXRzLXBhbmVsLWtvcGYpIHsgZGlzcGxheTogbm9uZTsgfQou c3RhdHMtcGFuZWwuenVnZWtsYXBwdCAuc3RhdHMtcGFuZWwta29wZiB7IG1hcmdpbi1ib3R0b206 IDA7IH0KCi8qID09PT09IFJlbmRlci1QaXBlbGluZTogU2tlbGV0b24tSGludCArIEdsb3cgPT09 PT0gKi8KLyogU2tlbGV0b24tSGlud2VpcyBwcm8gUGFuZWwgd2FlaHJlbmQgZGVzIHNlcXVlbnRp ZWxsZW4gTGFkZW5zLiBEZXV0bGljaAogICBzaWNodGJhcmVyIFRleHQgbWl0IHB1bHNpZXJlbmRl ciBBbmltYXRpb24sIGRhbWl0IGRlciBVc2VyIHdhZWhyZW5kCiAgIGRlciBnZXNhbXRlbiBQaXBl bGluZSBrbGFyIGVya2VubnQgImhpZXIgcGFzc2llcnQgd2FzIi4gV2lyZCBkdXJjaCBkYXMKICAg ZWlnZW50bGljaGUgUmVuZGVyLUhUTUwgdWViZXJzY2hyaWViZW4sIHNvYmFsZCBkZXIgU2Nocml0 dCBkcmFuIGlzdC4gKi8KLnN0YXRzLWxvYWRpbmcgewogICAgcGFkZGluZzogNDhweCAyMHB4OyB0 ZXh0LWFsaWduOiBjZW50ZXI7CiAgICBjb2xvcjogdmFyKC0tdGV4dC1oZWFkaW5nKTsgZm9udC1z aXplOiB2YXIoLS1mcy1sZyk7IGZvbnQtd2VpZ2h0OiA2MDA7CiAgICBiYWNrZ3JvdW5kOiB2YXIo LS1iZy1jYXJkLWFsdCk7CiAgICBib3JkZXI6IDFweCBkYXNoZWQgdmFyKC0tYm9yZGVyLWNvbG9y KTsgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLW1kKTsKICAgIGFuaW1hdGlvbjogc3RhdC1w dWxzZSAxLjZzIGVhc2UtaW4tb3V0IGluZmluaXRlOwp9Ci5zdGF0cy1sb2FkaW5nOjpiZWZvcmUg ewogICAgY29udGVudDogJ1wyM0YzJzsgICAvKiDij7MgKi8KICAgIGZvbnQtd2VpZ2h0OiBub3Jt YWw7IG1hcmdpbi1yaWdodDogOHB4OyBmb250LXNpemU6IDE2cHg7CiAgICBkaXNwbGF5OiBpbmxp bmUtYmxvY2s7CiAgICBhbmltYXRpb246IHN0YXQtbG9hZGluZy1zcGluIDEuNnMgbGluZWFyIGlu ZmluaXRlOwp9CkBrZXlmcmFtZXMgc3RhdC1wdWxzZSB7CiAgICAwJSwgMTAwJSB7IG9wYWNpdHk6 IDAuNzU7IH0KICAgIDUwJSAgICAgIHsgb3BhY2l0eTogMS4wMDsgfQp9CkBrZXlmcmFtZXMgc3Rh dC1sb2FkaW5nLXNwaW4gewogICAgMCUgICB7IHRyYW5zZm9ybTogcm90YXRlKDBkZWcpOyB9CiAg ICAxMDAlIHsgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTsgfQp9Ci8qIEdsb3ctRWZmZWt0IGF1 ZiBkZW0gUGFuZWwtUmFobWVuIOKAlCB2aXN1ZWxsZXMgU2lnbmFsICJmcmlzY2ggYmVyZWNobmV0 IgogICAoUmVuZGVyLVBpcGVsaW5lKSBiencuICJpY2ggYmluIGludGVyYWt0aXYiIChIb3Zlci1G ZWVkYmFjaykuCiAgIDIgU2VrdW5kZW4gRGF1ZXIsIGRldXRsaWNoIHNpY2h0YmFyZXIgYm94LXNo YWRvdy1SaW5nLiBJbXBsZW1lbnRpZXJ0CiAgIHVlYmVyIGVpbiBQc2V1ZG8tRWxlbWVudCBtaXQg c3RhdGlzY2hlbSBib3gtc2hhZG93ICsgb3BhY2l0eS1BbmltYXRpb246CiAgIG51ciBDb21wb3Np dGUtUGFzcywga2VpbiB0ZXVyZXMgUmVwYWludCAoaTUtODUwMC1mcmV1bmRsaWNoKS4KCiAgIFBz ZXVkby1FbGVtZW50IGhhZW5ndCBhbSBQYW5lbCBzZWxic3QgKGltbWVyIGRhLCBkZWZhdWx0IG9w YWNpdHk6MCksCiAgIGRhbWl0IGF1Y2ggZGVyIDpob3Zlci1UcmlnZ2VyIGlobiBmaW5kZXQuIEFu aW1hdGlvbiB3aXJkIGR1cmNoIHp3ZWkKICAgU2VsZWt0b3JlbiBhdXNnZWxvZXN0OgogICAgIC5z dGF0cy1nbG93ICAgICAgIOKAlCB2b24gZGVyIEpTLVJlbmRlci1QaXBlbGluZSBwcm8gU2Nocml0 dCBnZXNldHp0CiAgICAgLnN0YXRzLXBhbmVsOmhvdmVyIOKAlCB3ZW5uIGRlciBVc2VyIG1pdCBk ZXIgTWF1cyBkcnVlYmVyIGZhZWhydCAqLwouc3RhdHMtcGFuZWw6OmFmdGVyIHsKICAgIGNvbnRl bnQ6ICcnOyBwb3NpdGlvbjogYWJzb2x1dGU7IGluc2V0OiAtM3B4OyBib3JkZXItcmFkaXVzOiBp bmhlcml0OwogICAgcG9pbnRlci1ldmVudHM6IG5vbmU7IG9wYWNpdHk6IDA7CiAgICBib3gtc2hh ZG93OiAwIDAgMjhweCA2cHggcmdiYSgyNiwgODIsIDExOCwgMC41NSksCiAgICAgICAgICAgICAg ICAwIDAgMCAycHggcmdiYSgyNiwgODIsIDExOCwgMC4zNSk7Cn0KLnN0YXRzLWdsb3c6OmFmdGVy IHsgYW5pbWF0aW9uOiBzdGF0LWdsb3ctYW5pbSAycyBlYXNlLW91dDsgfQovKiBCZXd1c3N0IHp3 ZWl0ZSBBbmltYXRpb24gbWl0IGdsZWljaGVuIEtleWZyYW1lcywgYWJlciBlaWdlbmVtIE5hbWVu CiAgIChzdGF0LWdsb3ctaG92ZXIpLiBXZW5uIGRhcyBQYW5lbCBuYWNoIGRlbSBJbml0aWFsLVJl bmRlciBiZXJlaXRzIGRpZQogICBLbGFzc2UgLnN0YXRzLWdsb3cgdHJhZWd0LCBoYXQgZGVyIDo6 YWZ0ZXItU2VsZWt0b3IgZGllIEFuaW1hdGlvbgogICAnc3RhdC1nbG93LWFuaW0nIGltIGNvbXB1 dGVkLXZhbHVlLVBvb2wuIFNldHp0IDpob3ZlciBkaWUgZ2xlaWNoZQogICBBbmltYXRpb24sIHNp ZWh0IGRlciBCcm93c2VyIGtlaW5lbiBBZW5kZXJ1bmdzdW50ZXJzY2hpZWQgdW5kIGZldWVydAog ICBzaWUgbmljaHQgbmV1LiBFaW4gc2VwYXJhdGVyIE5hbWUgZXJ6d2luZ3QgZGVuIFJlc3RhcnQu ICovCi5zdGF0cy1wYW5lbDpob3Zlcjo6YWZ0ZXIgeyBhbmltYXRpb246IHN0YXQtZ2xvdy1ob3Zl ciAycyBlYXNlLW91dDsgfQpAa2V5ZnJhbWVzIHN0YXQtZ2xvdy1hbmltIHsKICAgIDAlICAgeyBv cGFjaXR5OiAwOyB9CiAgICAxNSUgIHsgb3BhY2l0eTogMTsgfQogICAgNjAlICB7IG9wYWNpdHk6 IDE7IH0KICAgIDEwMCUgeyBvcGFjaXR5OiAwOyB9Cn0KQGtleWZyYW1lcyBzdGF0LWdsb3ctaG92 ZXIgewogICAgMCUgICB7IG9wYWNpdHk6IDA7IH0KICAgIDE1JSAgeyBvcGFjaXR5OiAxOyB9CiAg ICA2MCUgIHsgb3BhY2l0eTogMTsgfQogICAgMTAwJSB7IG9wYWNpdHk6IDA7IH0KfQoKLyogVG9n Z2xlLUJ1dHRvbnMgaW4gUGFuZWxzICovCi8qIEthdGVnb3JpZS1CdXR0b25zIGltIFNjaGljaHR2 ZXJ0ZWlsdW5ncy1QYW5lbCAoU2NoaWNodGVuIC8gV29jaGVuZW5kZSAvCiAgIEZvcnRiaWxkdW5n IC8gQWJ3ZXNlbmhlaXQpLiBMb2VzdCBkZW4gU29ydC1Ecm9wZG93biAyMDI2LTA1IGFiLiAqLwou c3RhdHMta2F0LWdydXBwZSB7IGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGdh cDogNHB4OyBmbGV4LXdyYXA6IHdyYXA7IH0KLnN0YXRzLWthdC1idG4gewogICAgcGFkZGluZzog NHB4IDEwcHg7IGZvbnQtc2l6ZTogdmFyKC0tZnMtc20pOyBmb250LXdlaWdodDogNjAwOyBib3Jk ZXI6IDFweCBzb2xpZCB2YXIoLS1ib3JkZXItY29sb3IpOwogICAgYmFja2dyb3VuZDogdmFyKC0t YmctY2FyZC1hbHQpOyBjb2xvcjogdmFyKC0tdGV4dC1tdXRlZCk7IGN1cnNvcjogcG9pbnRlcjsg Ym9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLXNtKTsKICAgIHRyYW5zaXRpb246IGFsbCAwLjE1 cyBlYXNlOwp9Ci5zdGF0cy1rYXQtYnRuOmhvdmVyOm5vdCguYWt0aXYpIHsgYmFja2dyb3VuZDog dmFyKC0tYmctaG92ZXIpOyBjb2xvcjogdmFyKC0tdGV4dC1oZWFkaW5nKTsgfQouc3RhdHMta2F0 LWJ0bi5ha3RpdiB7IGJhY2tncm91bmQ6IHZhcigtLWJnLXByaW1hcnkpOyBjb2xvcjogdmFyKC0t dGV4dC1vbi1wcmltYXJ5KTsgYm9yZGVyLWNvbG9yOiB2YXIoLS1iZy1wcmltYXJ5KTsgfQouc3Rh dHMtc29ydC1yaWNodHVuZyB7IHdpZHRoOiAyNnB4OyBoZWlnaHQ6IDI2cHg7IHBhZGRpbmc6IDA7 IG1hcmdpbi1sZWZ0OiA0cHg7IGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGp1 c3RpZnktY29udGVudDogY2VudGVyOyBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1ib3JkZXItY29s b3IpOyBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1jYXJkKTsgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFk aXVzLXNtKTsgY3Vyc29yOiBwb2ludGVyOyBmb250LXNpemU6IHZhcigtLWZzLW1kKTsgY29sb3I6 IHZhcigtLXRleHQtc2Vjb25kYXJ5KTsgfQouc3RhdHMtc29ydC1yaWNodHVuZzpob3ZlciB7IGJh Y2tncm91bmQ6IHZhcigtLWJnLWhvdmVyKTsgY29sb3I6IHZhcigtLXRleHQtaGVhZGluZyk7IH0K LnN0YXRzLXNvcnQtcGZlaWwgeyBsaW5lLWhlaWdodDogMTsgZm9udC13ZWlnaHQ6IDcwMDsgfQoK LyogQmFkZ2UgKi8KLnN0YXRzLWJhZGdlIHsKICAgIGZvbnQtc2l6ZTogdmFyKC0tZnMtc20pOyBm b250LXdlaWdodDogNzAwOyBwYWRkaW5nOiAycHggOHB4OyBib3JkZXItcmFkaXVzOiB2YXIoLS1y YWRpdXMtbGcpOwogICAgYmFja2dyb3VuZDogdmFyKC0tZmFyYmUtd2FybnVuZyk7IGNvbG9yOiAj ZmZmOyBtaW4td2lkdGg6IDIwcHg7IHRleHQtYWxpZ246IGNlbnRlcjsKfQouc3RhdHMtYmFkZ2U6 ZW1wdHkgeyBkaXNwbGF5OiBub25lOyB9Ci5zdGF0cy1iYWRnZS1vayB7IGJhY2tncm91bmQ6IHZh cigtLWZhcmJlLWVyZm9sZyk7IH0KCi8qIERldGFpbC1UYWJlbGxlICovCi5zdGF0cy10YWJlbGxl IHRoLnphaGwsIC5zdGF0cy10YWJlbGxlIHRkLnphaGwgeyB0ZXh0LWFsaWduOiByaWdodDsgZm9u dC12YXJpYW50LW51bWVyaWM6IHRhYnVsYXItbnVtczsgfQovKiBTY2hpY2h0LUtvcGYtWmVsbGVu IG1pdCBlaWdlbmVtIGhlbGxlbSBIaW50ZXJncnVuZCDigJQgZGllIEZhcmJ0b2VuZQogICAocm90 L2JsYXUvZ3J1ZW4pIHdhcmVuIGF1ZiBkZW0gZHVua2VsYmxhdWVuIGFkbWluLXRhYmVsbGUtSGVh ZGVyCiAgIGthdW0gbGVzYmFyLiBKZXR6dCBzdGljaHQgamVkZSBTY2hpY2h0IGFscyBrbGFyZXMg RmFyYi1UYWcgaGVyYXVzLiAqLwouc3RhdHMtdGFiZWxsZSAuZnJ1ZWgta29wZiwgLnN0YXRzLXRh YmVsbGUgLnNwYWV0LWtvcGYsIC5zdGF0cy10YWJlbGxlIC5uYWNodC1rb3BmIHsKICAgIGJhY2tn cm91bmQ6ICNmZmY7IGZvbnQtd2VpZ2h0OiA4MDA7IHRleHQtYWxpZ246IGNlbnRlcjsKICAgIGJv cmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy14cyk7IHBhZGRpbmc6IDZweCA4cHg7Cn0KLnN0YXRz LXRhYmVsbGUgLmZydWVoLWtvcGYgeyBjb2xvcjogdmFyKC0tZmFyYmUtZnJ1ZWgpOyB9Ci5zdGF0 cy10YWJlbGxlIC5zcGFldC1rb3BmIHsgY29sb3I6IHZhcigtLWZhcmJlLXNwYWV0KTsgfQouc3Rh dHMtdGFiZWxsZSAubmFjaHQta29wZiB7IGNvbG9yOiB2YXIoLS1mYXJiZS1uYWNodCk7IH0KLnN0 YXRzLXRhYmVsbGUgLndhcm4ta29wZiB7IGNvbG9yOiB2YXIoLS1mYXJiZS1mZWhsZXIpOyB9Ci5z dGF0cy1kZXRhaWxzIHsKICAgIGJhY2tncm91bmQ6IHZhcigtLWJnLWNhcmQpOyBib3JkZXItcmFk aXVzOiB2YXIoLS1yYWRpdXMtbGcpOwogICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tYm9yZGVy LWxpZ2h0KTsgYm94LXNoYWRvdzogMCAxcHggNHB4IHZhcigtLXNoYWRvdy1saWdodCk7CiAgICBt YXJnaW4tYm90dG9tOiAxNnB4Owp9Ci5zdGF0cy1kZXRhaWxzLXN1bW1hcnkgewogICAgcGFkZGlu ZzogMTRweCAyMHB4OyBmb250LXNpemU6IHZhcigtLWZzLW1kKTsgZm9udC13ZWlnaHQ6IDcwMDsg Y3Vyc29yOiBwb2ludGVyOwogICAgY29sb3I6IHZhcigtLXRleHQtc2Vjb25kYXJ5KTsgdXNlci1z ZWxlY3Q6IG5vbmU7IGxpc3Qtc3R5bGU6IG5vbmU7Cn0KLnN0YXRzLWRldGFpbHMtc3VtbWFyeTo6 YmVmb3JlIHsgY29udGVudDogJ1wyNUI2ICAnOyBmb250LXNpemU6IHZhcigtLWZzLXhzKTsgdHJh bnNpdGlvbjogdHJhbnNmb3JtIDAuMnM7IGRpc3BsYXk6IGlubGluZS1ibG9jazsgfQouc3RhdHMt ZGV0YWlsc1tvcGVuXSAuc3RhdHMtZGV0YWlscy1zdW1tYXJ5OjpiZWZvcmUgeyB0cmFuc2Zvcm06 IHJvdGF0ZSg5MGRlZyk7IH0KLnN0YXRzLWRldGFpbHNbb3Blbl0gLnN0YXRzLWRldGFpbHMtc3Vt bWFyeSB7IGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1ib3JkZXItbGlnaHQpOyB9Ci5z dGF0cy1kZXRhaWxzIC50YWJlbGxlLXNjcm9sbCB7IHBhZGRpbmc6IDAgMjBweCAxNnB4OyB9Cgov KiBCYWxrZW5kaWFncmFtbSAoaW0gUGFuZWwpIOKAlCBrZWluIGhvcml6b250YWxlciBTY3JvbGws IGFsbGVzIHBhc3N0IHJlaW4gKi8KLnN0YXRzLWJhbGtlbi1jb250YWluZXIgeyBkaXNwbGF5OiBm bGV4OyBmbGV4LWRpcmVjdGlvbjogY29sdW1uOyBnYXA6IDRweDsgb3ZlcmZsb3cteDogaGlkZGVu OyB9Ci5zdGF0cy1iYWxrZW4temVpbGUgeyBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2Vu dGVyOyBnYXA6IDhweDsgZm9udC1zaXplOiB2YXIoLS1mcy1zbSk7IHBhZGRpbmc6IDJweCAwOyBt aW4td2lkdGg6IDA7IH0KLnN0YXRzLWJhbGtlbi1uYW1lIHsgd2lkdGg6IDEyMHB4OyBtaW4td2lk dGg6IDEyMHB4OyB0ZXh0LWFsaWduOiByaWdodDsgZm9udC13ZWlnaHQ6IDUwMDsgY29sb3I6IHZh cigtLXRleHQtc2Vjb25kYXJ5KTsgb3ZlcmZsb3c6IGhpZGRlbjsgdGV4dC1vdmVyZmxvdzogZWxs aXBzaXM7IHdoaXRlLXNwYWNlOiBub3dyYXA7IH0KLnN0YXRzLWJhbGtlbi1iYXItd3JhcCB7IGZs ZXg6IDE7IG1pbi13aWR0aDogMDsgZGlzcGxheTogZmxleDsgZ2FwOiAxcHg7IGhlaWdodDogMThw eDsgYmFja2dyb3VuZDogdmFyKC0tYmctY2FyZC1hbHQpOyBib3JkZXItcmFkaXVzOiB2YXIoLS1y YWRpdXMteHMpOyBvdmVyZmxvdzogaGlkZGVuOyB9Ci5zdGF0cy1iYWxrZW4tc2VnbWVudCB7IGhl aWdodDogMTAwJTsgdHJhbnNpdGlvbjogd2lkdGggMC40cyBlYXNlOyBkaXNwbGF5OiBmbGV4OyBh bGlnbi1pdGVtczogY2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsgZm9udC1zaXplOiA5 cHg7IGNvbG9yOiAjZmZmOyBmb250LXdlaWdodDogNzAwOyB9Ci8qIFRvdGFsLVNwYWx0ZTogYnJl aXQgZ2VudWcgZnVlciAizqMgRm9ydGJpbGR1bmciLUxhYmVsIGltIEtvcGYsIG5vd3JhcC4gKi8K LnN0YXRzLWJhbGtlbi10b3RhbCB7IHdpZHRoOiA5MHB4OyBtaW4td2lkdGg6IDkwcHg7IHRleHQt YWxpZ246IHJpZ2h0OyBmb250LXdlaWdodDogNjAwOyBjb2xvcjogdmFyKC0tdGV4dC1zZWNvbmRh cnkpOyBmb250LXZhcmlhbnQtbnVtZXJpYzogdGFidWxhci1udW1zOyB3aGl0ZS1zcGFjZTogbm93 cmFwOyB9CgovKiBFeHRyYS1TcGFsdGUgcmVjaHRzOiBNaW5pLUJhciBmdWVyIGVpbmVuIHp1c2Fl dHpsaWNoZW4gSW5kaWthdG9yCiAgIChha3R1ZWxsIGdlbnV0enQgaW4gZGVyIEthdGVnb3JpZSAi V29jaGVuZW5kZSIgZnVlciBrb21wbGV0dGVXRSkuICovCi5zdGF0cy1iYWxrZW4tZXh0cmEgeyB3 aWR0aDogMTAwcHg7IG1pbi13aWR0aDogMTAwcHg7IGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1z OiBjZW50ZXI7IGdhcDogNnB4OyB9Ci5zdGF0cy1iYWxrZW4ta29udGV4dC1iYXIgeyBmbGV4OiAx OyBoZWlnaHQ6IDhweDsgYmFja2dyb3VuZDogdmFyKC0tYmctY2FyZC1hbHQpOyBib3JkZXItcmFk aXVzOiAycHg7IG92ZXJmbG93OiBoaWRkZW47IH0KLnN0YXRzLWJhbGtlbi1rb250ZXh0LWZpbGwg eyBoZWlnaHQ6IDEwMCU7IHRyYW5zaXRpb246IHdpZHRoIDAuNHMgZWFzZTsgYm9yZGVyLXJhZGl1 czogMnB4OyB9Ci5zdGF0cy1iYWxrZW4ta29udGV4dC13ZXJ0IHsgd2lkdGg6IDI4cHg7IHRleHQt YWxpZ246IHJpZ2h0OyBmb250LXdlaWdodDogNzAwOyBmb250LXZhcmlhbnQtbnVtZXJpYzogdGFi dWxhci1udW1zOyBjb2xvcjogdmFyKC0tdGV4dC1oZWFkaW5nKTsgfQoKLyogT3B0aW9uYWxlIEth dGVnb3JpZS1CZXNjaHJlaWJ1bmcgdWViZXIgZGVtIEJhbGtlbi1DaGFydCAoei5CLiBmdWVyCiAg ICJFaW5nZXNwcnVuZ2VuIjogd2FzIHdpcmQgaGllciBlaWdlbnRsaWNoIGdlemFlaGx0PykuIFNj aG1hbGUgSW5mby1Cb3gKICAgbWl0IGxpbmtlbSBBa3plbnQtU3RyZWlmZW4uICovCi5zdGF0cy1r YXQtYmVzY2hyZWlidW5nIHsKICAgIG1hcmdpbjogMCAwIDEwcHg7CiAgICBwYWRkaW5nOiA4cHgg MTJweDsKICAgIGJhY2tncm91bmQ6IHJnYmEoOTEsIDEyNSwgMTc3LCAwLjA4KTsKICAgIGJvcmRl ci1sZWZ0OiAzcHggc29saWQgdmFyKC0tcG9saXplaS1ibGF1LCAjMDA2M2FmKTsKICAgIGJvcmRl ci1yYWRpdXM6IDAgNHB4IDRweCAwOwogICAgZm9udC1zaXplOiB2YXIoLS1mcy1iYXNlKTsKICAg IGxpbmUtaGVpZ2h0OiAxLjU7CiAgICBjb2xvcjogdmFyKC0tdGV4dC1zZWNvbmRhcnkpOwp9Ci5z dGF0cy1rYXQtYmVzY2hyZWlidW5nIGIgeyBjb2xvcjogdmFyKC0tdGV4dC1oZWFkaW5nKTsgfQoK LyogU3BhbHRlbi1Lb3BmemVpbGUgdWViZXIgZGVuIEJhbGtlbiDigJQgbGFiZWx0IFNlZ21lbnRl ICsgS2F0ZWdvcmllLVN1bW1lLiAqLwouc3RhdHMtYmFsa2VuLWtvcGYgeyBkaXNwbGF5OiBmbGV4 OyBhbGlnbi1pdGVtczogY2VudGVyOyBnYXA6IDhweDsgcGFkZGluZzogMCAwIDRweCAwOyBib3Jk ZXItYm90dG9tOiAxcHggZGFzaGVkIHZhcigtLWJvcmRlci1jb2xvcik7IG1hcmdpbi1ib3R0b206 IDRweDsgfQouc3RhdHMtYmFsa2VuLWtvcGYgLnN0YXRzLWJhbGtlbi1iYXItd3JhcCwKLnN0YXRz LWJhbGtlbi1rb3BmIC5zdGF0cy1iYWxrZW4tdG90YWwsCi5zdGF0cy1iYWxrZW4ta29wZiAuc3Rh dHMtYmFsa2VuLWV4dHJhIHsgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7IGhlaWdodDogYXV0bzsg fQouc3RhdHMtYmFsa2VuLWtvcGYtbGFiZWwgeyBmb250LXNpemU6IHZhcigtLWZzLXhzKTsgZm9u dC13ZWlnaHQ6IDcwMDsgY29sb3I6IHZhcigtLXRleHQtbXV0ZWQpOyB0ZXh0LXRyYW5zZm9ybTog dXBwZXJjYXNlOyBsZXR0ZXItc3BhY2luZzogMC40cHg7IHdoaXRlLXNwYWNlOiBub3dyYXA7IH0K LnN0YXRzLXNpZ21hLWhpbGZlIHsgY3Vyc29yOiBoZWxwOyBib3JkZXItYm90dG9tOiAxcHggZG90 dGVkIHZhcigtLXRleHQtbXV0ZWQpOyB9Ci5zdGF0cy1iYWxrZW4tc2VnLWxhYmVsIHsgZm9udC13 ZWlnaHQ6IDcwMDsgfQoKLyogTXVzdGVyICovCi5zdGF0cy1tdXN0ZXItY29udGFpbmVyIHsgZGlz cGxheTogZmxleDsgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgZ2FwOiA2cHg7IG1heC1oZWlnaHQ6 IDQyMHB4OyBvdmVyZmxvdy15OiBhdXRvOyB9Ci5tdXN0ZXIta2FydGUgewogICAgZGlzcGxheTog ZmxleDsgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7IGdhcDogMTBweDsKICAgIHBhZGRpbmc6IDEw cHggMTRweDsgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLW1kKTsKICAgIGJvcmRlcjogMXB4 IHNvbGlkIHZhcigtLWJvcmRlci1saWdodCk7IGZvbnQtc2l6ZTogdmFyKC0tZnMtYmFzZSk7Cn0K Lm11c3Rlci1pY29uIHsgZm9udC1zaXplOiB2YXIoLS1mcy1sZyk7IG1pbi13aWR0aDogMjJweDsg aGVpZ2h0OiAyMnB4OyB0ZXh0LWFsaWduOiBjZW50ZXI7IGxpbmUtaGVpZ2h0OiAyMnB4OyBib3Jk ZXItcmFkaXVzOiA1MCU7IGNvbG9yOiAjZmZmOyBmbGV4LXNocmluazogMDsgfQoubXVzdGVyLXRl eHQgeyBmb250LXNpemU6IHZhcigtLWZzLWJhc2UpOyBsaW5lLWhlaWdodDogMS41OyB9Ci5tdXN0 ZXItdGV4dCBzdHJvbmcgeyBjb2xvcjogdmFyKC0tdGV4dC1oZWFkaW5nKTsgfQoubXVzdGVyLXdh cm51bmcgeyBiYWNrZ3JvdW5kOiByZ2JhKDIwMiwxMTEsMzAsMC4wNik7IH0KLm11c3Rlci13YXJu dW5nIC5tdXN0ZXItaWNvbiB7IGJhY2tncm91bmQ6IHZhcigtLWZhcmJlLXdhcm51bmcpOyB9Ci5t dXN0ZXItaW5mbyB7IGJhY2tncm91bmQ6IHJnYmEoNDQsNjIsODAsMC4wNCk7IH0KLm11c3Rlci1p bmZvIC5tdXN0ZXItaWNvbiB7IGJhY2tncm91bmQ6IHZhcigtLWZhcmJlLWluZm8pOyB9Ci5tdXN0 ZXItZXJmb2xnIHsgYmFja2dyb3VuZDogcmdiYSgzOSwxMzcsMTA5LDAuMDYpOyB9Ci5tdXN0ZXIt ZXJmb2xnIC5tdXN0ZXItaWNvbiB7IGJhY2tncm91bmQ6IHZhcigtLWZhcmJlLWVyZm9sZyk7IH0K Ci8qIEZhaXJuZXNzIGNvbXBhY3QgKi8KLmZhaXJuZXNzLWNvbXBhY3QgeyBkaXNwbGF5OiBmbGV4 OyBmbGV4LWRpcmVjdGlvbjogY29sdW1uOyBnYXA6IDNweDsgfQouZmFpcm5lc3Mtcm93IHsKICAg IGRpc3BsYXk6IGdyaWQ7IGdyaWQtdGVtcGxhdGUtY29sdW1uczogMTEwcHggMWZyIDQwcHg7IGdh cDogNnB4OyBhbGlnbi1pdGVtczogY2VudGVyOwogICAgZm9udC1zaXplOiB2YXIoLS1mcy1zbSk7 IHBhZGRpbmc6IDNweCAwOyBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tYm9yZGVyLWxp Z2h0KTsKfQouZmFpcm5lc3Mtcm93Omxhc3QtY2hpbGQgeyBib3JkZXItYm90dG9tOiBub25lOyB9 Ci5mYWlybmVzcy1yb3ctbmFtZSB7IGZvbnQtd2VpZ2h0OiA2MDA7IGNvbG9yOiB2YXIoLS10ZXh0 LWhlYWRpbmcpOyBvdmVyZmxvdzogaGlkZGVuOyB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsgd2hp dGUtc3BhY2U6IG5vd3JhcDsgfQouZmFpcm5lc3Mtcm93LWJhciB7IGhlaWdodDogMTZweDsgYm9y ZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLXhzKTsgcG9zaXRpb246IHJlbGF0aXZlOyBiYWNrZ3Jv dW5kOiB2YXIoLS1iZy1jYXJkLWFsdCk7IH0KLmZhaXJuZXNzLXJvdy1maWxsIHsgaGVpZ2h0OiAx MDAlOyBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMteHMpOyB0cmFuc2l0aW9uOiB3aWR0aCAw LjRzIGVhc2U7IHBvc2l0aW9uOiByZWxhdGl2ZTsgfQouZmFpcm5lc3Mtcm93LWF2ZyB7IHBvc2l0 aW9uOiBhYnNvbHV0ZTsgdG9wOiAtMnB4OyBib3R0b206IC0ycHg7IHdpZHRoOiAycHg7IGJhY2tn cm91bmQ6IHZhcigtLXRleHQtaGVhZGluZyk7IG9wYWNpdHk6IDAuNTsgei1pbmRleDogMTsgfQou ZmFpcm5lc3Mtcm93LXZhbCB7IHRleHQtYWxpZ246IHJpZ2h0OyBmb250LXdlaWdodDogNzAwOyBm b250LXZhcmlhbnQtbnVtZXJpYzogdGFidWxhci1udW1zOyBjb2xvcjogdmFyKC0tdGV4dC1zZWNv bmRhcnkpOyBsaW5lLWhlaWdodDogMS4xOyB9Ci5mYWlybmVzcy1yb3ctc3ViIHsgZm9udC1zaXpl OiA5cHg7IGZvbnQtd2VpZ2h0OiA0MDA7IGNvbG9yOiB2YXIoLS10ZXh0LW11dGVkKTsgfQovKiBX RS1aZWlsZW4gaGFiZW4gZWluZSA0LiBTcGFsdGUgZnVlciBLb21wbGV0dGUgV0VzIChEaWNodGUt SW5kaWthdG9yKS4KICAgQnJlaXRlciAoOTZweCkgZGFtaXQgZGFzIExhYmVsICJLb21wbGV0dGUg V0VzIiB2b2xsc3RhZW5kaWcgc2ljaHRiYXIgaXN0LiAqLwouZmFpcm5lc3Mtcm93LXdlIHsgZ3Jp ZC10ZW1wbGF0ZS1jb2x1bW5zOiAxMTBweCAxZnIgNDBweCA5NnB4OyB9Ci5mYWlybmVzcy1zdWJ0 aXRsZSB7CiAgICBmb250LXNpemU6IHZhcigtLWZzLXNtKTsgY29sb3I6IHZhcigtLXRleHQtbXV0 ZWQpOyBtYXJnaW46IDAgMCA2cHggMDsKICAgIHBhZGRpbmctYm90dG9tOiA2cHg7IGJvcmRlci1i b3R0b206IDFweCBkYXNoZWQgdmFyKC0tYm9yZGVyLWNvbG9yKTsKICAgIHdoaXRlLXNwYWNlOiBu b3dyYXA7IG92ZXJmbG93OiBoaWRkZW47IHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwp9Ci5mYWly bmVzcy1yb3cta3cgeyBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBnYXA6IDRw eDsgfQouZmFpcm5lc3Mtcm93LWt3LWJhciB7IGZsZXg6IDE7IGhlaWdodDogNnB4OyBiYWNrZ3Jv dW5kOiB2YXIoLS1iZy1jYXJkLWFsdCk7IGJvcmRlci1yYWRpdXM6IDJweDsgb3ZlcmZsb3c6IGhp ZGRlbjsgfQouZmFpcm5lc3Mtcm93LWt3LWZpbGwgeyBoZWlnaHQ6IDEwMCU7IGJhY2tncm91bmQ6 ICM1QjJDNkY7IGJvcmRlci1yYWRpdXM6IDJweDsgdHJhbnNpdGlvbjogd2lkdGggMC40cyBlYXNl OyB9Ci5mYWlybmVzcy1yb3cta3ctdmFsIHsgd2lkdGg6IDE4cHg7IHRleHQtYWxpZ246IHJpZ2h0 OyBmb250LXdlaWdodDogNzAwOyBmb250LXZhcmlhbnQtbnVtZXJpYzogdGFidWxhci1udW1zOyBj b2xvcjogdmFyKC0tdGV4dC1zZWNvbmRhcnkpOyBmb250LXNpemU6IHZhcigtLWZzLXhzKTsgfQou ZmFpcm5lc3Mta3cta29wZiB7IHRleHQtYWxpZ246IHJpZ2h0OyBmb250LXNpemU6IDlweDsgY29s b3I6ICM1QjJDNkY7IGZvbnQtd2VpZ2h0OiA3MDA7IH0KLmZhaXJuZXNzLWZ1c3MgeyBmb250LXNp emU6IHZhcigtLWZzLXhzKTsgY29sb3I6IHZhcigtLXRleHQtbXV0ZWQpOyBtYXJnaW4tdG9wOiA4 cHg7IHBhZGRpbmctdG9wOiA2cHg7IGJvcmRlci10b3A6IDFweCBkYXNoZWQgdmFyKC0tYm9yZGVy LWNvbG9yKTsgdGV4dC1hbGlnbjogY2VudGVyOyB9Ci5mYWlybmVzcy1vayB7IGJhY2tncm91bmQ6 ICMyN0FFNjA7IH0KLmZhaXJuZXNzLXdhcm51bmcgeyBiYWNrZ3JvdW5kOiAjRTY3RTIyOyB9Ci5m YWlybmVzcy1rcml0aXNjaCB7IGJhY2tncm91bmQ6ICNDMDM5MkI7IH0KLmZhaXJuZXNzLW5ldXRy YWwgeyBiYWNrZ3JvdW5kOiAjOTVBNUE2OyB9Ci5mYWlybmVzcy1oZWFkZXIgeyBmb250LXdlaWdo dDogNzAwOyBjb2xvcjogdmFyKC0tdGV4dC1tdXRlZCk7IGZvbnQtc2l6ZTogdmFyKC0tZnMteHMp OyB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOyBsZXR0ZXItc3BhY2luZzogMC41cHg7IHBhZGRp bmc6IDhweCAwIDRweDsgYm9yZGVyLWJvdHRvbTogbm9uZSAhaW1wb3J0YW50OyB9CgovKiBBYndl c2VuaGVpdHMtQ2hhcnQgKi8KLyogPT09PT0gTWlrcm90ZWFtLUhlYXRtYXAgPT09PT0gKi8KLyog RHVyY2hnZWhlbmRlIFRhYmVsbGU6IGFsbGUgVGFnZSB2b20gMS4xLiBiaXMgRW5kZSBWZXJiaW5k bGljaGtlaXQgKi8KLnRlYW0taG0tbGVnZW5kZSB7IGRpc3BsYXk6IGZsZXg7IGdhcDogMTBweDsg Zm9udC1zaXplOiB2YXIoLS1mcy14cyk7IGNvbG9yOiB2YXIoLS10ZXh0LW11dGVkKTsgYWxpZ24t aXRlbXM6IGNlbnRlcjsgZmxleC13cmFwOiB3cmFwOyB9Ci50ZWFtLWhtLWxlZ2VuZGUgc3BhbiB7 IGRpc3BsYXk6IGlubGluZS1mbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyB9Ci50ZWFtLWNlbGwt bWluaSB7IGRpc3BsYXk6IGlubGluZS1ibG9jazsgd2lkdGg6IDExcHg7IGhlaWdodDogMTFweDsg Ym9yZGVyLXJhZGl1czogMnB4OyB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOyBtYXJnaW4tcmlnaHQ6 IDNweDsgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tYm9yZGVyLWNvbG9yKTsgfQoKLnN0YXRzLXRl YW0taGVhdG1hcCB7IG1hcmdpbjogOHB4IDAgMTZweDsgfQovKiBIZWF0bWFwLVNjcm9sbC1Db250 YWluZXI6IHNjcm9sbHQgamV0enQgYXVjaCB2ZXJ0aWthbCwgZGFtaXQgZGVyCiAgIEJvZHktQmVy ZWljaCBiZWkgdmllbGVuIFRlYW1zIHVudGVyIGRlbiBmaXhpZXJ0ZW4gSGVhZGVyLVplaWxlbgog ICAoTW9uYXQgLyBUYWcgLyBXb2NoZW50YWcgLyBGZWllcnRhZ2UgLyBGZXJpZW4gLyBTb25kZXJ0 ZXJtaW5lKQogICBkdXJjaHdhbmRlcnQuIERpZSBrdW11bGF0aXZlbiBzdGlja3ktVG9wLVdlcnRl IHdlcmRlbiBuYWNoIGRlbQogICBSZW5kZXIgaW0gSlMgZ2VzZXR6dCAocm9idXN0IGdlZ2VuIGZl aGxlbmRlIE1hcmtlci1aZWlsZW4pLiAqLwoudGVhbS1obS1zY3JvbGwgeyBvdmVyZmxvdzogYXV0 bzsgbWF4LXdpZHRoOiAxMDAlOyBtYXgtaGVpZ2h0OiBjYWxjKDEwMHZoIC0gMjQwcHgpOyB9Ci50 ZWFtLWhtLXRhYmVsbGUgewogICAgYm9yZGVyLWNvbGxhcHNlOiBzZXBhcmF0ZTsgYm9yZGVyLXNw YWNpbmc6IDA7IGZvbnQtc2l6ZTogdmFyKC0tZnMteHMpOwogICAgZm9udC12YXJpYW50LW51bWVy aWM6IHRhYnVsYXItbnVtczsKfQoudGVhbS1obS10YWJlbGxlIHRoLCAudGVhbS1obS10YWJlbGxl IHRkIHsKICAgIHBhZGRpbmc6IDA7IHRleHQtYWxpZ246IGNlbnRlcjsgYm9yZGVyOiAxcHggc29s aWQgdmFyKC0tYm9yZGVyLWxpZ2h0KTsKICAgIHdpZHRoOiAyMnB4OyBtaW4td2lkdGg6IDIycHg7 IG1heC13aWR0aDogMjJweDsgaGVpZ2h0OiAyMnB4Owp9Ci8qIFN0aWNreSBmdWVyIEFMTEUgdGhl YWQtWmVsbGVuIOKAlCB0aCBVTkQgdGQsIHdlaWwgZGllIE1hcmtlci1aZWlsZW4KICAgKEZlaWVy dGFnZS9GZXJpZW4vU29uZGVydGVybWluZSkgdGQtWmVsbGVuIHZlcndlbmRlbi4gRGVyIGtvbmty ZXRlCiAgIHRvcC1XZXJ0IHdpcmQgcHJvIFplaWxlIHBlciBKUyBnZXNldHp0IChrdW11bGF0aXZl IG9mZnNldEhlaWdodCkuCiAgIHotaW5kZXggdWViZXIgZGVuIEJvZHktWmVsbGVuIChkZWZhdWx0 KSB1bmQgZGVuIHN0aWNreS1OYW1lLVNwYWx0ZW4KICAgKHotaW5kZXggMSk7IGRpZSBFY2tlIG9i ZW4gbGlua3MgKHRoZWFkIC50ZWFtLWhtLW5hbWUpIGJla29tbXQKICAgei1pbmRleCAzLCB3ZWls IHNpZSBzb3dvaGwgaG9yaXpvbnRhbCBhbHMgYXVjaCB2ZXJ0aWthbCBzdGlja3kgaXN0LiAqLwou dGVhbS1obS10YWJlbGxlIHRoZWFkIHRoLAoudGVhbS1obS10YWJlbGxlIHRoZWFkIHRkIHsKICAg IGJhY2tncm91bmQ6IHZhcigtLWJnLWNhcmQtYWx0KTsgZm9udC13ZWlnaHQ6IDcwMDsgY29sb3I6 IHZhcigtLXRleHQtc2Vjb25kYXJ5KTsKICAgIHBvc2l0aW9uOiBzdGlja3k7IHotaW5kZXg6IDI7 IGJhY2tncm91bmQtY2xpcDogcGFkZGluZy1ib3g7Cn0KLnRlYW0taG0tdGFiZWxsZSB0aGVhZCAu dGVhbS1obS1uYW1lIHsgei1pbmRleDogMzsgfQoudGVhbS1obS1tb25hdC1jZWxsIHsgZm9udC1z aXplOiB2YXIoLS1mcy1zbSk7IHBhZGRpbmc6IDJweCAwICFpbXBvcnRhbnQ7IGJvcmRlci1ib3R0 b206IDFweCBzb2xpZCB2YXIoLS1ib3JkZXItY29sb3IpICFpbXBvcnRhbnQ7IH0KLnRlYW0taG0t dGggeyBwb3NpdGlvbjogcmVsYXRpdmU7IH0KLnRlYW0taG0tdGgtbnVtIHsgZm9udC1zaXplOiB2 YXIoLS1mcy14cyk7IGxpbmUtaGVpZ2h0OiAxLjE7IH0KLnRlYW0taG0td3QgeyBmb250LXNpemU6 IDhweDsgZm9udC13ZWlnaHQ6IDUwMCAhaW1wb3J0YW50OyBjb2xvcjogdmFyKC0tdGV4dC1tdXRl ZCkgIWltcG9ydGFudDsgfQoKLyogU3BhbHRlbi1NYXJraWVydW5nZW46IGVpbmhlaXRsaWNoIGR1 cmNoIGRpZSBHQU5aRSBTcGFsdGUgKEhlYWRlciwKICAgV29jaGVudGFnLVplaWxlLCBNYXJrZXIt WmVpbGVuLCBCb2R5LVplbGxlbikuIFdlcnRlIGRvbWluYW50IGdlbnVnLAogICB1bSBBYndlaWNo dW5nZW4gc29mb3J0IHp1IGVyZmFzc2VuLCBhYmVyIEFtcGVsZmFyYmVuIGJsZWliZW4gbGVzYmFy LiAqLwoudGVhbS1obS10YWJlbGxlIC5obS13ZSAgICAgICAgICAgeyBib3gtc2hhZG93OiBpbnNl dCAwIDAgMCA5OTlweCByZ2JhKDAsMCwwLDAuMTQpOyB9Ci50ZWFtLWhtLXRhYmVsbGUgLmhtLWZl aWVyICAgICAgICB7IGJveC1zaGFkb3c6IGluc2V0IDAgMCAwIDk5OXB4IHJnYmEoMTkyLCA1Nywg NDMsIDAuMzApOyB9Ci50ZWFtLWhtLXRhYmVsbGUgLmhtLWZlcmllbiAgICAgICB7IGJveC1zaGFk b3c6IGluc2V0IDAgMCAwIDk5OXB4IHJnYmEoNDEsIDEyOCwgMTg1LCAwLjI2KTsgfQoudGVhbS1o bS10YWJlbGxlIC5obS1zb25kZXJ0ZXJtaW4geyBib3gtc2hhZG93OiBpbnNldCAwIDAgMCA5OTlw eCByZ2JhKDIzMCwgMTI2LCAzNCwgMC4zMCk7IH0KLyogTWVocmZhY2gtTWFya2llcnVuZ2VuIChT YStGZWllcnRhZywgRmVpZXJ0YWcrRmVyaWVuKTogbGV0enRlIGdld2lubnQuCiAgIFJlaWhlbmZv bGdlIGltIEpTOiBXRSAtPiBGZWllciAtPiBGZXJpZW4gLT4gU29uZGVydGVybWluIOKAlCBTcGV6 aWFsaXRhZXRlbgogICB1ZWJlcmxhZ2VybiBXRTsgU29uZGVydGVybWluIGdld2lubnQgaW0gS29u Zmxpa3QgbWl0IEZlcmllbi9GZWllci4KICAgRGllIGZydWVoZXJlbiByb3Rlbi9ibGF1ZW4gU3Ry ZWlmZW4gd3VyZGVuIDIwMjYtMDUgZW50ZmVybnQ6IGRpZSBkaXJla3RlCiAgIFNwYWx0ZW4tVG9l bnVuZyBpc3QgZGV1dGxpY2ggZ2VudWcsIFN0cmVpZmVuIHdhcmVuIHJlZHVuZGFudC4gKi8KLyog TWVocmVyZSBNYXJraWVydW5nZW4gYXVmIGVpbmVyIFplbGxlICh6LkIuIFNhICsgRmVpZXJ0YWcp OiBzdW1taWVydCBzaWNoCiAgIHZpYSBtZWhyZmFjaGVyIGJveC1zaGFkb3cuIENTUy1TcGV6aWZp dGFldHMtVHJpY2s6IHNwYWV0ZXJlIEtsYXNzZQogICBnZXdpbm50IOKAlCB3aXIgYWt6ZXB0aWVy ZW4gZGFzIChGZWllcnRhZy9Tb25kZXJ0ZXJtaW4gPiBGZXJpZW4gPiBXRSBpbiBkZXIKICAgUmVp aGVuZm9sZ2UgZGVyIEtsYXNzZW4pLiBWaXN1ZWxsIHJlaWNodCBkYXMgYXVzLiAqLwoKLyogUm90 YXRpb25zLVBpbGxlIGluIGRlciBQZXJzb25hbHZlcndhbHR1bmcg4oCUIGtvbXBha3RlIEYvUy9O LUFuemVpZ2UKICAgZGVyIGhldXRpZ2VuIFNjaGljaHQgZGVyIFBlcnNvbiwgYXVzIFN0YW5kb3J0 LVNjaGljaHRmb2xnZSArCiAgIERpZW5zdGdydXBwZW4tUG9zaXRpb24gYWJnZWxlaXRldC4gSG92 ZXItVG9vbHRpcCB6ZWlndCBkZW4KICAgbmFlY2hzdGVuIFdlY2hzZWx0YWcuICovCi5yb3RhLXBp bGxlIHsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsgd2lkdGg6IDIycHg7IGhlaWdodDogMjBw eDsgbGluZS1oZWlnaHQ6IDIwcHg7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7IGJvcmRlci1yYWRp dXM6IHZhcigtLXJhZGl1cy1zbSk7CiAgICBmb250LXdlaWdodDogNzAwOyBmb250LXNpemU6IHZh cigtLWZzLXNtKTsgY29sb3I6ICNmZmY7CiAgICBmb250LXZhcmlhbnQtbnVtZXJpYzogdGFidWxh ci1udW1zOwp9Ci5yb3RhLXBpbGxlLnJvdGEtZiB7IGJhY2tncm91bmQ6IHZhcigtLWZhcmJlLWZy dWVoLCAjQjcxQzFDKTsgfQoucm90YS1waWxsZS5yb3RhLXMgeyBiYWNrZ3JvdW5kOiB2YXIoLS1m YXJiZS1zcGFldCwgIzFiNWUyMCk7IH0KLnJvdGEtcGlsbGUucm90YS1uIHsgYmFja2dyb3VuZDog dmFyKC0tZmFyYmUtbmFjaHQsICMxYTUyNzYpOyB9Ci5yb3RhLXBpbGxlLnJvdGEtbGVlciB7IGJh Y2tncm91bmQ6IHZhcigtLWJnLWNhcmQtYWx0KTsgY29sb3I6IHZhcigtLXRleHQtbXV0ZWQpOyBm b250LXdlaWdodDogNDAwOyB9CgovKiBIb3Zlci1LcmV1ejogd2VubiBkaWUgTWF1cyB1ZWJlciBl aW5lciBIZWF0bWFwLVplbGxlIHN0ZWh0LCB3ZXJkZW4KICAgZGllIGdlc2FtdGUgWmVpbGUgdW5k IGRpZSBnZXNhbXRlIFNwYWx0ZSBoZXJ2b3JnZWhvYmVuIChFeGNlbC1TdGlsKS4KICAgRGllIEpT LUxvZ2lrIGluIF9yZW5kZXJUZWFtSGVhdG1hcCBzZXR6dCAuaG0tY3Jvc3MgYXVmIGRpZSBiZXRy b2ZmZW5lbgogICBaZWxsZW4uIEJveC1zaGFkb3cgaW5zZXQgd2llIGRpZSBobS13ZS9obS1mZWll ci1NYXJraWVydW5nZW4sIGRhbWl0CiAgIGRlciBHbG93IG1pdCBkZW4gU3BhbHRlbi1Ub2VudW5n ZW4gdmlzdWVsbCBzdGFwZWx0IHN0YXR0IHNpZSB6dQogICB2ZXJkcmFlbmdlbiDigJQgZGVyIFBv bGl6ZWktTlJXLUJsYXUtVG9uIHVlYmVybGFnZXJ0IHN1YnRpbC4gKi8KLnRlYW0taG0tdGFiZWxs ZSB0ZC5obS1jcm9zcywKLnRlYW0taG0tdGFiZWxsZSB0aC5obS1jcm9zcyB7CiAgICBib3gtc2hh ZG93OiBpbnNldCAwIDAgMCA5OTlweCByZ2JhKDI2LCA4MiwgMTE4LCAwLjE4KSwKICAgICAgICAg ICAgICAgIGluc2V0IDAgMCAwIDJweCByZ2JhKDI2LCA4MiwgMTE4LCAwLjU1KTsKfQoKLyogRnJ1 ZWhlciBoYXR0ZW4gRmVpZXJ0YWcvRmVyaWVuLVplbGxlbiB6dXNhZXR6bGljaCByb3RlL2JsYXVl IDMtcHgtU3RyZWlmZW4KICAgb2Jlbi91bnRlbi4gMjAyNi0wNSBlbnRmZXJudDogZGllIFNwYWx0 ZW4tVG9lbnVuZyBpc3QgZWluZGV1dGlnIGdlbnVnLAogICBkaWUgU3RyZWlmZW4gd2FyZW4gcmVk dW5kYW50IHVuZCB2aXN1ZWxsIHVucnVoaWcuICovCgovKiBTdGFuZG9ydC1UcmVubmVyOiBlY2h0 ZSB3ZWlzc2UgRGlzdGFuenplaWxlbiBzdGF0dCBncmF1ZXIgQm9yZGVyLVRyZW5ubGluaWVuLgog ICBIYWxiZSBaZWxsZW5ob2VoZSBwcm8gU3BhY2VyLiBCZWltIEhhdXB0d2FjaGVuLVRyZW5uZXIg endlaSBTcGFjZXIgbWl0CiAgIGVpbmVyIGRpY2tlbiBncmF1ZW4gTGluaWUgZGF6d2lzY2hlbiAo Ym9yZGVyLWJvdHRvbSBhdWYgZGVtIG9iZXJlbiBTcGFjZXIpLiAqLwoudGVhbS1obS1zcGFjZXIt cm93IHRkIHsKICAgIHBhZGRpbmc6IDAgIWltcG9ydGFudDsgYm9yZGVyOiBub25lICFpbXBvcnRh bnQ7CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1jYXJkKSAhaW1wb3J0YW50OyBib3gtc2hhZG93 OiBub25lICFpbXBvcnRhbnQ7Cn0KLnRlYW0taG0tc3BhY2VyLXJvdyAudGVhbS1obS1zcGFjZXIt c3RhbmRvcnQgICAgIHsgaGVpZ2h0OiAxMXB4OyB9Ci50ZWFtLWhtLXNwYWNlci1yb3cgLnRlYW0t aG0tc3BhY2VyLWhhdXB0LW9iZW4gICB7IGhlaWdodDogMTFweDsgYm9yZGVyLWJvdHRvbTogM3B4 IHNvbGlkIHZhcigtLXRleHQtbXV0ZWQpICFpbXBvcnRhbnQ7IH0KLnRlYW0taG0tc3BhY2VyLXJv dyAudGVhbS1obS1zcGFjZXItaGF1cHQtdW50ZW4gIHsgaGVpZ2h0OiAxMXB4OyB9Ci8qIExpbmtl IFNwYWNlci1TcGFsdGUgbXVzcyBiZWkgaG9yaXpvbnRhbGVtIFNjcm9sbCBtaXRrb21tZW4sIGRh bWl0IGRlcgogICBEaXN0YW56YmxvY2sga29uc2lzdGVudCB1ZWJlciBkaWUgZ2FuemUgVGFiZWxs ZSB3aXJrdC4gKi8KLnRlYW0taG0tc3BhY2VyLXJvdyAudGVhbS1obS1zcGFjZXItbmFtZSB7IHBv c2l0aW9uOiBzdGlja3k7IGxlZnQ6IDA7IHotaW5kZXg6IDE7IH0KCi50ZWFtLWJhbGtlbi10cmVu bmVyLXN0YW5kb3J0IHsgbWFyZ2luLXRvcDogNnB4OyBwYWRkaW5nLXRvcDogNnB4OyBib3JkZXIt dG9wOiAxcHggc29saWQgdmFyKC0tdGV4dC1tdXRlZCk7IH0KLnRlYW0tYmFsa2VuLXRyZW5uZXIt aGF1cHQgICAgeyBtYXJnaW4tdG9wOiAxMHB4OyBwYWRkaW5nLXRvcDogMTBweDsgYm9yZGVyLXRv cDogM3B4IHNvbGlkIHZhcigtLXRleHQtaGVhZGluZyk7IH0KCi8qIE1hcmtlci1aZWlsZW4gKEZl aWVydGFnZSAvIEZlcmllbiAvIFNvbmRlcnRlcm1pbmUpICovCi50ZWFtLWhtLW1hcmtlci1yb3cg dGgsIC50ZWFtLWhtLW1hcmtlci1yb3cgdGQgewogICAgaGVpZ2h0OiAxOHB4OyBmb250LXNpemU6 IDlweDsgbGluZS1oZWlnaHQ6IDE7Cn0KLnRlYW0taG0tbWFya2VyLW5hbWUgewogICAgZm9udC1z dHlsZTogaXRhbGljOyBjb2xvcjogdmFyKC0tdGV4dC1tdXRlZCkgIWltcG9ydGFudDsKICAgIGZv bnQtc2l6ZTogdmFyKC0tZnMteHMpICFpbXBvcnRhbnQ7IGZvbnQtd2VpZ2h0OiA1MDAgIWltcG9y dGFudDsKfQoudGVhbS1obS1tYXJrZXItY2VsbCB7IGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OyBj b2xvcjogdmFyKC0tdGV4dC1zZWNvbmRhcnkpOyBmb250LXdlaWdodDogNjAwOyBwYWRkaW5nOiAw ICFpbXBvcnRhbnQ7IH0KLyogY29sc3Bhbi1aZWxsZW4gKHp1c2FtbWVuaGFlbmdlbmRlIEZlcmll biwgbWVocnRhZWdpZ2UgU29uZGVydGVybWluZSk6CiAgIGV0d2FzIG1laHIgUGFkZGluZywga2Vp biBtYXgtd2lkdGgtTGltaXQsIFRleHQgYmxlaWJ0IHplbnRyaWVydCBpbgogICBkZXIgZ2VzYW10 ZW4gU3Bhbm5lLiAqLwoudGVhbS1obS1tYXJrZXItY2VsbFtjb2xzcGFuXSB7IHBhZGRpbmc6IDAg NHB4ICFpbXBvcnRhbnQ7IGZvbnQtc2l6ZTogdmFyKC0tZnMteHMpOyB3aGl0ZS1zcGFjZTogbm93 cmFwOyBvdmVyZmxvdzogaGlkZGVuOyB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsgbWF4LXdpZHRo OiBub25lOyB9Ci50ZWFtLWhtLW1hcmtlci1jZWxsLm1hcmtlci1mZWllciAgICAgICAgeyBiYWNr Z3JvdW5kOiAjQzAzOTJCOyBjb2xvcjogI2ZmZjsgfQoudGVhbS1obS1tYXJrZXItY2VsbC5tYXJr ZXItZmVyaWVuICAgICAgIHsgYmFja2dyb3VuZDogIzI5ODBCOTsgY29sb3I6ICNmZmY7IH0KLnRl YW0taG0tbWFya2VyLWNlbGwubWFya2VyLXNvbmRlcnRlcm1pbiB7IGJhY2tncm91bmQ6ICNFNjdF MjI7IGNvbG9yOiAjZmZmOyBjdXJzb3I6IHBvaW50ZXI7IH0KLnRlYW0taG0tbWFya2VyLWNlbGwu bWFya2VyLXNvbmRlcnRlcm1pbjpob3ZlciB7IGJhY2tncm91bmQ6ICNEMzU0MDA7IH0KCi8qIE5h bWUtU3BhbHRlICovCi50ZWFtLWhtLXRhYmVsbGUgLnRlYW0taG0tbmFtZSB7CiAgICB3aWR0aDog MTMwcHg7IG1pbi13aWR0aDogMTMwcHg7IG1heC13aWR0aDogMTMwcHg7IHRleHQtYWxpZ246IGxl ZnQ7IHBhZGRpbmc6IDJweCA2cHg7CiAgICBmb250LXdlaWdodDogNjAwOyBjb2xvcjogdmFyKC0t dGV4dC1oZWFkaW5nKTsgYmFja2dyb3VuZDogdmFyKC0tYmctY2FyZC1hbHQpOyB3aGl0ZS1zcGFj ZTogbm93cmFwOwogICAgb3ZlcmZsb3c6IGhpZGRlbjsgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7 CiAgICBwb3NpdGlvbjogc3RpY2t5OyBsZWZ0OiAwOyB6LWluZGV4OiAxOwp9Ci50ZWFtLWhtLWNs aWNrYWJsZSB7IGN1cnNvcjogcG9pbnRlcjsgdXNlci1zZWxlY3Q6IG5vbmU7IH0KLnRlYW0taG0t Y2xpY2thYmxlOmhvdmVyIHsgYmFja2dyb3VuZDogdmFyKC0tYmctaG92ZXIpOyB9Ci50ZWFtLWht LXRvZ2dsZSB7IGRpc3BsYXk6IGlubGluZS1ibG9jazsgd2lkdGg6IDEwcHg7IGNvbG9yOiB2YXIo LS10ZXh0LW11dGVkKTsgZm9udC1zaXplOiA5cHg7IH0KCi8qIERldGFpbC1aZWlsZW4gKi8KLnRl YW0taG0tcm93LWRldGFpbCB7IGJhY2tncm91bmQ6IHZhcigtLWJnLWNhcmQtYWx0KTsgfQoudGVh bS1obS1uYW1lLWRldGFpbCB7IGZvbnQtd2VpZ2h0OiA0MDAgIWltcG9ydGFudDsgcGFkZGluZy1s ZWZ0OiAxNnB4ICFpbXBvcnRhbnQ7IGZvbnQtc2l6ZTogdmFyKC0tZnMteHMpOyBjb2xvcjogdmFy KC0tdGV4dC1zZWNvbmRhcnkpICFpbXBvcnRhbnQ7IH0KLnRlYW0taG0tY2VsbC1kZXRhaWwgeyBm b250LXNpemU6IDhweDsgY29sb3I6IHZhcigtLXRleHQtbXV0ZWQpOyBiYWNrZ3JvdW5kOiB2YXIo LS1iZy1jYXJkKTsgfQoudGVhbS1obS1jZWxsLWRldGFpbC1kaWVuc3QgeyBiYWNrZ3JvdW5kOiBy Z2JhKDM5LCAxNzQsIDk2LCAwLjE1KTsgY29sb3I6IHZhcigtLXRleHQtaGVhZGluZyk7IGZvbnQt d2VpZ2h0OiA2MDA7IH0KCi8qIEFtcGVsLUZhcmJlbiBmdWVyIGFsbGUgSGVhdG1hcC1aZWxsZW4g Ki8KLnRlYW0taG0tY2VsbC50ZWFtLXIgICAgeyBiYWNrZ3JvdW5kOiAjQzAzOTJCOyBjb2xvcjog I2ZmZjsgZm9udC13ZWlnaHQ6IDcwMDsgfQovKiAxIGRhID0gbmV1dHJhbCBzdGF0dCBnZWxiIChV c2VyLUFlbmRlcnVuZyAyMDI2LTA1KSDigJQgYmV3dXNzdCBrZWluIEtvbnRyYXN0LAogICB1bSBH b2xkIHVuZCAiMSBkYSIgdW50ZXJzY2hlaWRiYXIgenUgaGFsdGVuLiAqLwoudGVhbS1obS1jZWxs LnRlYW0tbiAgICB7IGJhY2tncm91bmQ6IHZhcigtLWJnLWNhcmQpOyBjb2xvcjogdmFyKC0tdGV4 dC1oZWFkaW5nKTsgZm9udC13ZWlnaHQ6IDYwMDsgfQovKiBHcmF1ID0gbmllbWFuZCBpbSBEaWVu c3QsIGFiZXIgbWluZC4gMSBQZXJzb24gbGVnaXRpbSBhYndlc2VuZAogICAoVXJsL2tyL0t1ci9M ZWhyZ2FuZ+KApikuIEtlaW4gcm90ZXIgU3RhdHVzLCB3ZWlsIGRhcyBUZWFtIG5pY2h0IGhhZXR0 ZQogICBrb21wbGV0dCBiZXNldHp0IHNlaW4gbXVlc3Nlbi4gKi8KLnRlYW0taG0tY2VsbC50ZWFt LWdyYXUgeyBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1jYXJkLWFsdCk7IGNvbG9yOiB2YXIoLS10ZXh0 LW11dGVkKTsgfQoudGVhbS1obS1jZWxsLnRlYW0tZyAgICB7IGJhY2tncm91bmQ6ICMyN0FFNjA7 IGNvbG9yOiAjZmZmOyBmb250LXdlaWdodDogNzAwOyB9Ci50ZWFtLWhtLWNlbGwudGVhbS1nb2xk IHsgYmFja2dyb3VuZDogI0Q0QUMwRDsgY29sb3I6ICNmZmY7IGZvbnQtd2VpZ2h0OiA3MDA7IH0K Ci8qIEJhbGtlbi1TZWdtZW50IGZ1ZXIgZGVuIGdyYXVlbiBBbnRlaWwgKi8KLnRlYW0tYmFsa2Vu LXNlZy50ZWFtLWdyYXUgeyBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1jYXJkLWFsdCk7IGNvbG9yOiB2 YXIoLS10ZXh0LXNlY29uZGFyeSk7IH0KCi8qIFN1Yi1TZWt0aW9uIGluIGRlciBIZWF0bWFwOiBW STMtREdMLVZlcmFudHdvcnR1bmcgTmViZW53YWNoZW4uICovCi50ZWFtLWhtLXN1Yi1oZWFkZXIg dGggewogICAgdGV4dC1hbGlnbjogbGVmdCAhaW1wb3J0YW50OyBwYWRkaW5nOiA2cHggMTBweCAh aW1wb3J0YW50OwogICAgZm9udC1zaXplOiB2YXIoLS1mcy1zbSk7IGZvbnQtd2VpZ2h0OiA3MDA7 IGNvbG9yOiB2YXIoLS10ZXh0LWhlYWRpbmcpOwogICAgYmFja2dyb3VuZDogdmFyKC0tYmctY2Fy ZC1hbHQpOyBib3JkZXItdG9wOiAycHggc29saWQgdmFyKC0tdGV4dC1tdXRlZCkgIWltcG9ydGFu dDsKICAgIHBvc2l0aW9uOiBzdGlja3k7IGxlZnQ6IDA7Cn0KLyogTmViZW53YWNoZW4tREdMLVpl bGxlbjogb2huZSBBbXBlbCA9IGdyYXUgKGtlaW4gREdMLUVpbnNhdHopLCBtaXQgLnRlYW0tZwog ICA9IGdydWVuICgxLi8yLiBWSTMtREdMIGRlcyBUYWdlcyBhdXMgZGllc2VtIFRlYW0gYmVzZXR6 dCkuICovCi50ZWFtLWhtLW53LWNlbGwgeyBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1jYXJkLWFsdCk7 IH0KCi8qIEJhbGtlbmRpYWdyYW1tIFRhZ2VzLUFudGVpbGUgKi8KLnN0YXRzLXRlYW0tYmFsa2Vu LWtvcGYgeyBkaXNwbGF5OiBmbGV4OyBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47IGFs aWduLWl0ZW1zOiBjZW50ZXI7IG1hcmdpbjogMTJweCAwIDZweDsgcGFkZGluZy10b3A6IDEycHg7 IGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS1ib3JkZXItbGlnaHQpOyB9Ci5zdGF0cy10ZWFt LWJhbGtlbi1rb3BmIGg0IHsgZm9udC1zaXplOiB2YXIoLS1mcy1iYXNlKTsgZm9udC13ZWlnaHQ6 IDcwMDsgY29sb3I6IHZhcigtLXRleHQtaGVhZGluZyk7IG1hcmdpbjogMDsgfQouc3RhdHMtdGVh bS1zb3J0LWdydXBwZSB7IGZsZXgtd3JhcDogd3JhcDsgfQouc3RhdHMtdGVhbS1iYWxrZW4geyBk aXNwbGF5OiBmbGV4OyBmbGV4LWRpcmVjdGlvbjogY29sdW1uOyBnYXA6IDNweDsgfQoudGVhbS1i YWxrZW4td3JhcCB7IGRpc3BsYXk6IGZsZXg7IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47IGdhcDog M3B4OyB9Ci50ZWFtLWJhbGtlbi16ZWlsZSB7IGRpc3BsYXk6IGdyaWQ7IGdyaWQtdGVtcGxhdGUt Y29sdW1uczogMTMwcHggMWZyIDUwcHg7IGdhcDogOHB4OyBhbGlnbi1pdGVtczogY2VudGVyOyBm b250LXNpemU6IHZhcigtLWZzLXNtKTsgfQoudGVhbS1iYWxrZW4tbmFtZSB7IGZvbnQtd2VpZ2h0 OiA2MDA7IGNvbG9yOiB2YXIoLS10ZXh0LWhlYWRpbmcpOyB3aGl0ZS1zcGFjZTogbm93cmFwOyBv dmVyZmxvdzogaGlkZGVuOyB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsgfQoudGVhbS1iYWxrZW4t YmFyLXdyYXAgeyBkaXNwbGF5OiBmbGV4OyBoZWlnaHQ6IDE4cHg7IGJhY2tncm91bmQ6IHZhcigt LWJnLWNhcmQtYWx0KTsgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLXhzKTsgb3ZlcmZsb3c6 IGhpZGRlbjsgfQoudGVhbS1iYWxrZW4tc2VnIHsKICAgIGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0 ZW1zOiBjZW50ZXI7IGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgZm9udC1zaXplOiA5cHg7 IGNvbG9yOiAjZmZmOyBmb250LXdlaWdodDogNzAwOwogICAgdHJhbnNpdGlvbjogd2lkdGggMC40 cyBlYXNlOwogICAgLyogTWluZGVzdGJyZWl0ZSBOVVIgZnVlciBzaWNodGJhcmVuIEZhcmJiYWxr ZW4g4oCUIGtlaW4gZmxleC1zaHJpbms6MAogICAgICAgKGRhcyBoYXR0ZSBkaWUgUHJvcG9ydGlv bmVuIGFuZGVyZXIgU2VnbWVudGUgdmVyemVycnQsIHdlaWwgZ3Jvc3NlCiAgICAgICBTZWdtZW50 ZSBuaWNodCBtZWhyIHNjaHJ1bXBmZW4gZHVyZnRlbiwgdW0gZGVtIG1pbi13aWR0aCBQbGF0eiB6 dQogICAgICAgbWFjaGVuKS4gNHB4IHJlaWNodCBmdWVyIGVpbmVuIGVya2VubmJhcmVuIFN0cmlj aCBhdWNoIGJlaSAwLjctMSAlLgogICAgICAgRGllIFphaGwgd2lyZCBpbiBzb2xjaCBzY2htYWxl biBTZWdtZW50ZW4gTklDSFQgbWVociBlaW5nZXJlbmRlcnQKICAgICAgIChzaWVoZSBtaW5QY3Qt TG9naWsgaW4gaGVscGRlc2suanMpLCBkZXIgVG9vbHRpcCBsaWVmZXJ0IGRlbiBXZXJ0CiAgICAg ICBiZWltIEhvdmVyLiAqLwogICAgbWluLXdpZHRoOiA0cHg7Cn0KLnRlYW0tYmFsa2VuLXRvdGFs IHsgdGV4dC1hbGlnbjogcmlnaHQ7IGZvbnQtd2VpZ2h0OiA3MDA7IGZvbnQtdmFyaWFudC1udW1l cmljOiB0YWJ1bGFyLW51bXM7IGNvbG9yOiB2YXIoLS10ZXh0LXNlY29uZGFyeSk7IH0KCi8qIEFt cGVsLUZhcmJlbiBhdWNoIGltIEJhbGtlbiAqLwoudGVhbS1iYWxrZW4tc2VnLnRlYW0tciAgICB7 IGJhY2tncm91bmQ6ICNDMDM5MkI7IH0KLyogdGVhbS1uICgxIFBlcnNvbiBpbSBEaWVuc3QpIGhh dHRlIGRlbnNlbGJlbiBHcmF1LUJhY2tncm91bmQgd2llCiAgIHRlYW0tZ3JhdSAobGVnaXRpbSBh Yndlc2VuZCkg4oCUIGJlaW0gU3RhcGVsbiBuaWNodCB1bnRlcnNjaGVpZGJhci4KICAgSmV0enQg c2FuZnRlciBLaGFraS1Ub246IHZpc3VlbGwgZGV1dGxpY2ggIm5vY2ggaW4gZGVyIE5hZWhlIHZv bgogICBncmF1IiwgYWJlciBhYmdyZW56YmFyLiAqLwoudGVhbS1iYWxrZW4tc2VnLnRlYW0tbiAg ICB7IGJhY2tncm91bmQ6ICNENURCREI7IGNvbG9yOiAjMzQ0OTVFOyB9Ci50ZWFtLWJhbGtlbi1z ZWcudGVhbS1nICAgIHsgYmFja2dyb3VuZDogIzI3QUU2MDsgfQoudGVhbS1iYWxrZW4tc2VnLnRl YW0tZ29sZCB7IGJhY2tncm91bmQ6ICNENEFDMEQ7IH0KLyogRHVlbm5lIFRyZW5ubGluaWUgendp c2NoZW4gYXVmZWluYW5kZXJmb2xnZW5kZW4gU2VnbWVudGVuIOKAlCBoaWxmdCwKICAgZGllIEdy ZW56ZW4gYXVjaCB6d2lzY2hlbiBhZWhubGljaCBnZWZhZXJidGVuIEJsb2Vja2VuIChncmF1IC8K ICAgbmV1dHJhbCwgZ3J1ZW4gLyBnb2xkKSBhdWYgZWluZW4gQmxpY2sgenUgc2VoZW4uIDEgcHgg aW4gZGVyCiAgIEJvcmRlci1MaWdodC1GYXJiZSwgZmFlbGx0IGJlaSBrb250cmFzdHJlaWNoZW4g V2VjaHNlbG4gKHJvdC9ncmF1LAogICBncnVlbi9nb2xkKSBvcHRpc2NoIGthdW0gYXVmLiAqLwou dGVhbS1iYWxrZW4tc2VnICsgLnRlYW0tYmFsa2VuLXNlZyB7IGJvcmRlci1sZWZ0OiAxcHggc29s aWQgdmFyKC0tYm9yZGVyLWNvbG9yKTsgfQoKLyogU29uZGVydGVybWluLURldGFpbC1Nb2RhbCAq Lwouc29uZGVydGVybWluLWRldGFpbCB7IGRpc3BsYXk6IGZsZXg7IGZsZXgtZGlyZWN0aW9uOiBj b2x1bW47IGdhcDogMTBweDsgfQouc29uZGVydGVybWluLWVpbnRyYWcgeyBwYWRkaW5nOiAxMHB4 IDEycHg7IGJvcmRlci1sZWZ0OiA0cHggc29saWQgdmFyKC0tYm9yZGVyLWNvbG9yKTsgYmFja2dy b3VuZDogdmFyKC0tYmctY2FyZC1hbHQpOyBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtc20p OyB9Ci5zb25kZXJ0ZXJtaW4td2FybnVuZyB7IGJvcmRlci1sZWZ0LWNvbG9yOiAjQzAzOTJCOyB9 Ci5zb25kZXJ0ZXJtaW4taGlud2VpcyB7IGJvcmRlci1sZWZ0LWNvbG9yOiAjMjk4MEI5OyB9Ci5z b25kZXJ0ZXJtaW4ta29wZiB7IGZvbnQtc2l6ZTogdmFyKC0tZnMtYmFzZSk7IGNvbG9yOiB2YXIo LS10ZXh0LWhlYWRpbmcpOyBtYXJnaW4tYm90dG9tOiA0cHg7IH0KLnNvbmRlcnRlcm1pbi10ZXh0 IHsgZm9udC1zaXplOiB2YXIoLS1mcy1iYXNlKTsgY29sb3I6IHZhcigtLXRleHQtc2Vjb25kYXJ5 KTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyB9CgouYWJ3LWdyaWQgeyBkaXNwbGF5OiBncmlkOyBn cmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdChhdXRvLWZpbGwsIG1pbm1heCgxMzBweCwgMWZy KSk7IGdhcDogOHB4OyB9Ci5hYncta2FydGUgewogICAgYmFja2dyb3VuZDogdmFyKC0tYmctY2Fy ZC1hbHQpOyBib3JkZXItcmFkaXVzOiA4cHg7IHBhZGRpbmc6IDEycHg7CiAgICB0ZXh0LWFsaWdu OiBjZW50ZXI7IGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWJvcmRlci1saWdodCk7CiAgICB0cmFu c2l0aW9uOiB0cmFuc2Zvcm0gMC4xNXMgZWFzZTsgY3Vyc29yOiBkZWZhdWx0Owp9Ci5hYncta2Fy dGU6aG92ZXIgeyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTFweCk7IH0KLmFidy1rYXJ0ZS1pY29u IHsgZm9udC1zaXplOiAyMHB4OyBtYXJnaW4tYm90dG9tOiA0cHg7IH0KLmFidy1rYXJ0ZS13ZXJ0 IHsgZm9udC1zaXplOiAyNHB4OyBmb250LXdlaWdodDogODAwOyBmb250LXZhcmlhbnQtbnVtZXJp YzogdGFidWxhci1udW1zOyB9Ci5hYncta2FydGUtbGFiZWwgeyBmb250LXNpemU6IHZhcigtLWZz LXhzKTsgY29sb3I6IHZhcigtLXRleHQtbXV0ZWQpOyBmb250LXdlaWdodDogNjAwOyB0ZXh0LXRy YW5zZm9ybTogdXBwZXJjYXNlOyBtYXJnaW4tdG9wOiAycHg7IH0KLmFidy1rYXJ0ZS1kZXRhaWwg eyBmb250LXNpemU6IHZhcigtLWZzLXhzKTsgY29sb3I6IHZhcigtLXRleHQtc2Vjb25kYXJ5KTsg bWFyZ2luLXRvcDogNnB4OyBsaW5lLWhlaWdodDogMS40OyB9Ci5hYnctcGVyc29uZW4geyBmb250 LXNpemU6IHZhcigtLWZzLXNtKTsgY29sb3I6IHZhcigtLXRleHQtc2Vjb25kYXJ5KTsgbWFyZ2lu LXRvcDogOHB4OyB0ZXh0LWFsaWduOiBsZWZ0OyBtYXgtaGVpZ2h0OiAwOyBvdmVyZmxvdzogaGlk ZGVuOyB0cmFuc2l0aW9uOiBtYXgtaGVpZ2h0IDAuM3MgZWFzZTsgfQouYWJ3LWthcnRlLm9mZmVu IC5hYnctcGVyc29uZW4geyBtYXgtaGVpZ2h0OiAzMDBweDsgfQoKLyogPT09PT0gV29jaGVucGxh biA9PT09PSAqLwoud3AtbGF5b3V0IHsKICAgIGRpc3BsYXk6IGZsZXg7IGZsZXgtZGlyZWN0aW9u OiBjb2x1bW47IGZsZXg6IDE7IG92ZXJmbG93OiBoaWRkZW47Cn0KLndwLXRvb2xiYXIgewogICAg ZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsgZ2FwOiA2cHg7CiAgICBwYWRkaW5n OiA4cHggMTZweDsKICAgIGJhY2tncm91bmQ6IHZhcigtLWJnLXRvb2xiYXIpOwogICAgYm9yZGVy LWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLWJvcmRlci1jb2xvcik7Cn0KLndwLXplaXRyYXVtLWFu emVpZ2UgewogICAgZm9udC1zaXplOiB2YXIoLS1mcy1sZyk7IGZvbnQtd2VpZ2h0OiA3MDA7IGNv bG9yOiB2YXIoLS10ZXh0LWhlYWRpbmcpOwogICAgbWFyZ2luLWxlZnQ6IDhweDsKfQoud3Atc2Ny b2xsIHsKICAgIGZsZXg6IDE7IG92ZXJmbG93OiBhdXRvOyBwYWRkaW5nOiAxNnB4Owp9Ci8qIERp ZSBhbHRlIHN0YXRpc2NoZSBXb2NoZW5wbGFuLTx0YWJsZT4gKC53cC10YWJlbGxlLy53cC10aC0q Ly53cC10ZC10cmVubmVyKQogICB3dXJkZSBtaXQgZGVtIEF1ZGl0IDIwMjYtMDYtMTUgZW50ZmVy bnQg4oCUIGRlciBSZW5kZXIgbGFldWZ0IHVlYmVyIGRhcwogICBUYWdibG9jay1MYXlvdXQgKC53 cC10YWdibG9jayovLndwLXRsLSopLiBEaWUgenVnZWhvZXJpZ2VuIFRhYmVsbGVuLVN0aWxlCiAg IHNpbmQgaGllciBlcnNhdHpsb3MgZ2VzdHJpY2hlbi4gKC53cC1zY2hpY2h0LSogYmxlaWJ0IOKA lCB3aXJkIHZvbSBUYWdibG9jawogICB3ZWl0ZXJ2ZXJ3ZW5kZXQuKSAqLwoKLndwLXNjaGljaHQt ZnJ1ZWggeyBib3JkZXItbGVmdDogM3B4IHNvbGlkIHZhcigtLWZhcmJlLWZydWVoKTsgfQoud3At c2NoaWNodC1zcGFldCB7IGJvcmRlci1sZWZ0OiAzcHggc29saWQgdmFyKC0tZmFyYmUtc3BhZXQp OyB9Ci53cC1zY2hpY2h0LW5hY2h0IHsgYm9yZGVyLWxlZnQ6IDNweCBzb2xpZCB2YXIoLS1mYXJi ZS1uYWNodCk7IH0KCi8qIFRhZ2VzLVNwYWx0ZTogV29jaGVudGFnICsgRGF0dW0gKyBNZXRhIChG ZWllcnRhZywgU29uZGVydGFnLCBHZWJ1cnRzdGFnLCBTdMOkcmtlKSAqLwoud3AtdGQtdGFnIHsK ICAgIGJhY2tncm91bmQ6IHZhcigtLWJnLWNhcmQtYWx0KTsKICAgIHZlcnRpY2FsLWFsaWduOiB0 b3AgIWltcG9ydGFudDsKICAgIHBhZGRpbmc6IDZweCAxMHB4ICFpbXBvcnRhbnQ7CiAgICBib3Jk ZXItcmlnaHQ6IDJweCBzb2xpZCB2YXIoLS1ib3JkZXItc3Ryb25nKTsKfQoud3AtdGFnLWtvcGYg eyBkaXNwbGF5OiBmbGV4OyBmbGV4LWRpcmVjdGlvbjogY29sdW1uOyBnYXA6IDNweDsgZm9udC1z aXplOiB2YXIoLS1mcy1zbSk7IH0KLndwLXRhZy13dCB7IGZvbnQtd2VpZ2h0OiA3MDA7IGZvbnQt c2l6ZTogdmFyKC0tZnMtbWQpOyBjb2xvcjogdmFyKC0tdGV4dC1oZWFkaW5nKTsgfQoud3AtdGFn LWRhdHVtIHsgZm9udC13ZWlnaHQ6IDYwMDsgfQoud3AtdGFnLWZ0LW5hbWUgeyBjb2xvcjogdmFy KC0tZmFyYmUtZmVobGVyKTsgZm9udC13ZWlnaHQ6IDYwMDsgZm9udC1zaXplOiB2YXIoLS1mcy14 cyk7IH0KLndwLXRhZy1mZXJpZW4tbmFtZSB7IGNvbG9yOiAjZTY3ZTIyOyBmb250LXdlaWdodDog NjAwOyBmb250LXNpemU6IHZhcigtLWZzLXhzKTsgfQoud3AtdGFnLXNvbmRlci1oaW53ZWlzIHsg Y29sb3I6ICM0YTkwZTI7IGZvbnQtc2l6ZTogdmFyKC0tZnMteHMpOyB9Ci53cC10YWctc29uZGVy LXdhcm51bmcgeyBjb2xvcjogI2U2N2UyMjsgZm9udC1zaXplOiB2YXIoLS1mcy14cyk7IGZvbnQt d2VpZ2h0OiA2MDA7IH0KLndwLXRhZy1nYiB7IGNvbG9yOiAjZDRhMDE3OyBmb250LXNpemU6IHZh cigtLWZzLXhzKTsgfQoud3AtdGFnLW1ldGEgeyBkaXNwbGF5OiBmbGV4OyBnYXA6IDZweDsgYWxp Z24taXRlbXM6IGNlbnRlcjsgbWFyZ2luLXRvcDogMnB4OyB9Ci53cC10YWctc3RhZXJrZSB7CiAg ICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IHBhZGRpbmc6IDFweCA1cHg7IGJvcmRlci1yYWRpdXM6 IHZhcigtLXJhZGl1cy14cyk7CiAgICBmb250LWZhbWlseTogbW9ub3NwYWNlOyBmb250LXNpemU6 IHZhcigtLWZzLXhzKTsgZm9udC13ZWlnaHQ6IDcwMDsKICAgIGNvbG9yOiAjZmZmOwp9Ci53cC10 YWctc3RhZXJrZS1vayB7IGJhY2tncm91bmQ6IHZhcigtLWZhcmJlLWVyZm9sZyk7IH0KLndwLXRh Zy1zdGFlcmtlLXdhcm4geyBiYWNrZ3JvdW5kOiB2YXIoLS1mYXJiZS1mZWhsZXIpOyBhbmltYXRp b246IHB1bHNSb3QgMnMgZWFzZS1pbi1vdXQgaW5maW5pdGU7IH0KLndwLXRhZy1hYncgeyBmb250 LXNpemU6IHZhcigtLWZzLXhzKTsgY29sb3I6IHZhcigtLXRleHQtbXV0ZWQpOyBjdXJzb3I6IGhl bHA7IH0KCi8qIFRhZ2VzLUJsb2NrIEhpbnRlcmdydW5kLVZhcmlhbnRlbiAqLwoud3AtdGFnLWhl dXRlIC53cC10ZC10YWcgeyBiYWNrZ3JvdW5kOiB2YXIoLS10YWctaGV1dGUpOyBjb2xvcjogI2Zm ZjsgfQoud3AtdGFnLWhldXRlIC53cC10ZC10YWcgLndwLXRhZy13dCwgLndwLXRhZy1oZXV0ZSAu d3AtdGQtdGFnIC53cC10YWctZGF0dW0geyBjb2xvcjogI2ZmZjsgfQoud3AtdGFnLWZ0IC53cC10 ZC10YWcgeyBiYWNrZ3JvdW5kOiB2YXIoLS10YWctZmVpZXJ0YWcpOyBjb2xvcjogIzJDM0U1MDsg fQoud3AtdGFnLXdlIC53cC10ZC10YWcgeyBiYWNrZ3JvdW5kOiB2YXIoLS10YWctd29jaGVuZW5k ZSk7IGNvbG9yOiAjMkMzRTUwOyB9Ci53cC10YWctd2UgLndwLXRkLXRhZyAud3AtdGFnLXd0LCAu d3AtdGFnLXdlIC53cC10ZC10YWcgLndwLXRhZy1kYXR1bSB7IGNvbG9yOiAjNEE2QThDOyB9Cltk YXRhLXRoZW1lPSJuaWdodCJdIC53cC10YWctZnQgLndwLXRkLXRhZyB7IGNvbG9yOiAjRThFRUY1 OyB9CltkYXRhLXRoZW1lPSJuaWdodCJdIC53cC10YWctd2UgLndwLXRkLXRhZywKW2RhdGEtdGhl bWU9Im5pZ2h0Il0gLndwLXRhZy13ZSAud3AtdGQtdGFnIC53cC10YWctd3QsCltkYXRhLXRoZW1l PSJuaWdodCJdIC53cC10YWctd2UgLndwLXRkLXRhZyAud3AtdGFnLWRhdHVtIHsgY29sb3I6ICND OUQ2RTQ7IH0KCi8qIExlaWNodGUgSGludGVyZ3J1bmQtRWluZsOkcmJ1bmcgaW4gTmFtZW5zemVs bGVuIGFtIEZUL1dFICovCi53cC10YWctZnQgLndwLXRkLW5hbWUsIC53cC10YWctZnQgLndwLXRk LWRuciB7IGJhY2tncm91bmQ6IHJnYmEoNjAsOTAsMTMwLDAuMDkpOyB9Ci53cC10YWctd2UgLndw LXRkLW5hbWUsIC53cC10YWctd2UgLndwLXRkLWRuciB7IGJhY2tncm91bmQ6IHJnYmEoNjAsOTAs MTMwLDAuMDUpOyB9Ci53cC10YWctaGV1dGUgLndwLXRkLW5hbWUsIC53cC10YWctaGV1dGUgLndw LXRkLWRuciB7IGJhY2tncm91bmQ6IHJnYmEoMjEyLDE2MCwyMywwLjEwKTsgfQoKLyogVGFnZXNi bG9jay1UcmVubmthbnRlICovCi53cC16ZWlsZS10YWctZW5kZSB0ZCB7IGJvcmRlci1ib3R0b206 IDJweCBzb2xpZCB2YXIoLS1ib3JkZXItc3Ryb25nKTsgfQoKLyogTmFtZW4tWmVsbGVuICovCi53 cC10ZC1uYW1lIHsgcGFkZGluZzogMnB4IDZweCAhaW1wb3J0YW50OyB0ZXh0LWFsaWduOiBjZW50 ZXI7IH0KLndwLW5hbWUgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgcGFkZGluZzog MCA0cHg7CiAgICBmb250LXNpemU6IHZhcigtLWZzLXNtKTsKICAgIGZvbnQtd2VpZ2h0OiA1MDA7 CiAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwp9Ci53cC1uYW1lLXZlcmFudHcgewogICAgZm9udC13 ZWlnaHQ6IDcwMDsKICAgIGNvbG9yOiB2YXIoLS10ZXh0LWhlYWRpbmcpOwogICAgYm9yZGVyLWxl ZnQ6IDJweCBzb2xpZCAjRDRBMDE3OwogICAgcGFkZGluZy1sZWZ0OiA1cHg7Cn0KLndwLW5hbWUt ZmJwIHsgZm9udC1zdHlsZTogaXRhbGljOyB9Ci53cC1uYW1lLWZicCBzdXAgeyBjb2xvcjogI2Q0 YTAxNzsgZm9udC13ZWlnaHQ6IDcwMDsgbWFyZ2luLWxlZnQ6IDFweDsgfQovKiA9PT09PSBXb2No ZW5wbGFuOiBUYWdlc2Jsw7Zja2UgKEJpbGRzY2hpcm0gKyBCYXNpcyBmw7xycyBEcnVja2VuKSA9 PT09PSAqLwoud3Atc2VpdGUgewogICAgYmFja2dyb3VuZDogdmFyKC0tYmctY2FyZCk7IHBhZGRp bmc6IDE2cHggMThweDsKICAgIG1hcmdpbjogMTJweDsKICAgIGJveC1zaGFkb3c6IDAgMnB4IDEw cHggcmdiYSgwLDAsMCwwLjA2KTsKICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1zbSk7 Cn0KLndwLXNlaXRlLWtvcGYgeyBtYXJnaW4tYm90dG9tOiAxMHB4OyBwYWRkaW5nLWJvdHRvbTog OHB4OyBib3JkZXItYm90dG9tOiAycHggc29saWQgdmFyKC0tYmctcHJpbWFyeSk7IH0KLndwLXNl aXRlLWtvcGYgaDEgewogICAgZm9udC1zaXplOiAxNXB4OyBmb250LXdlaWdodDogNzAwOyBjb2xv cjogdmFyKC0tdGV4dC1oZWFkaW5nKTsKICAgIGxldHRlci1zcGFjaW5nOiAwLjNweDsgbWFyZ2lu OiAwOwp9Ci53cC1zZWl0ZS1rb3BmIGgxIHN0cm9uZyB7IGNvbG9yOiB2YXIoLS1iZy1wcmltYXJ5 KTsgfQoKLndwLXRhZ2Jsb2NrIHsKICAgIGRpc3BsYXk6IGdyaWQ7CiAgICBncmlkLXRlbXBsYXRl LWNvbHVtbnM6IDE0MHB4IDFmcjsKICAgIG1hcmdpbi1ib3R0b206IDRweDsKICAgIGJvcmRlcjog MXB4IHNvbGlkIHZhcigtLWJnLXByaW1hcnkpOwogICAgYmFja2dyb3VuZDogI2ZmZjsKfQpbZGF0 YS10aGVtZT0ibmlnaHQiXSAud3AtdGFnYmxvY2sgeyBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1jYXJk KTsgYm9yZGVyLWNvbG9yOiAjM2E0ZDYwOyB9Cgoud3AtdGFnYmxvY2stbGFiZWwgewogICAgYmFj a2dyb3VuZDogdmFyKC0tYmctcHJpbWFyeSk7IGNvbG9yOiAjZmZmOwogICAgZGlzcGxheTogZmxl eDsgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgYWxpZ24taXRlbXM6IHN0cmV0Y2g7IGp1c3RpZnkt Y29udGVudDogZmxleC1zdGFydDsKICAgIHBhZGRpbmc6IDZweCA4cHg7IHRleHQtYWxpZ246IGxl ZnQ7IGdhcDogMDsKfQoud3AtdGwta29wZiB7CiAgICBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVt czogYmFzZWxpbmU7IGdhcDogNnB4OwogICAgcGFkZGluZy1ib3R0b206IDRweDsKICAgIGJvcmRl ci1ib3R0b206IDFweCBzb2xpZCByZ2JhKDI1NSwyNTUsMjU1LDAuMik7Cn0KLndwLXRsLXd0IHsg Zm9udC1zaXplOiB2YXIoLS1mcy1tZCk7IGZvbnQtd2VpZ2h0OiA3MDA7IGxldHRlci1zcGFjaW5n OiAwLjVweDsgfQoud3AtdGwtZGF0dW0geyBmb250LXNpemU6IHZhcigtLWZzLXNtKTsgZm9udC1m YW1pbHk6IG1vbm9zcGFjZTsgb3BhY2l0eTogMC45OyB9Ci53cC10bC16dXNhdHotYm94IHsKICAg IGRpc3BsYXk6IGZsZXg7IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47IGdhcDogM3B4OyBtYXJnaW4t dG9wOiAxNHB4OyB3aWR0aDogMTAwJTsKfQoud3AtdGwtenVzYXR6IHsKICAgIGZvbnQtc2l6ZTog dmFyKC0tZnMteHMpOyBwYWRkaW5nOiAycHggNXB4OyBib3JkZXItcmFkaXVzOiAycHg7CiAgICBi YWNrZ3JvdW5kOiByZ2JhKDI1NSwyNTUsMjU1LDAuMTUpOyBsaW5lLWhlaWdodDogMS4zOwogICAg d2hpdGUtc3BhY2U6IG5vd3JhcDsgb3ZlcmZsb3c6IGhpZGRlbjsgdGV4dC1vdmVyZmxvdzogZWxs aXBzaXM7CiAgICB0ZXh0LWFsaWduOiBsZWZ0Owp9Ci53cC10bC16LWZ0IHsgYmFja2dyb3VuZDog cmdiYSgyNTUsMjAwLDIwMCwwLjI1KTsgZm9udC13ZWlnaHQ6IDcwMDsgfQoud3AtdGwtei13YXJu dW5nIHsgYmFja2dyb3VuZDogcmdiYSgyNTUsMTgwLDEwMCwwLjMpOyB9Ci53cC10bC16LWZlcmll biB7IGJhY2tncm91bmQ6IHJnYmEoMjMwLDEyNiwzNCwwLjIwKTsgfQoud3AtdGwtei1oaW53ZWlz IHsgYmFja2dyb3VuZDogcmdiYSg3NCwxNDQsMjI2LDAuMjApOyB9Ci53cC10bC16LWdiIHsgYmFj a2dyb3VuZDogcmdiYSgyMTIsMTYwLDIzLDAuMjIpOyB9Cgoud3AtdGFnYmxvY2staW5oYWx0IHsg cGFkZGluZzogMDsgfQoKLndwLXRhZ2Jsb2NrLXRhYmVsbGUgewogICAgd2lkdGg6IDEwMCU7IGJv cmRlci1jb2xsYXBzZTogY29sbGFwc2U7IHRhYmxlLWxheW91dDogZml4ZWQ7CiAgICBmb250LXNp emU6IHZhcigtLWZzLWJhc2UpOwp9Ci53cC10YWdibG9jay10YWJlbGxlIHRoLAoud3AtdGFnYmxv Y2stdGFiZWxsZSB0ZCB7CiAgICBib3JkZXI6IDFweCBzb2xpZCAjYzhjZWQ0OwogICAgcGFkZGlu ZzogM3B4IDZweDsKICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7CiAgICB0ZXh0LWFsaWduOiBs ZWZ0Owp9CltkYXRhLXRoZW1lPSJuaWdodCJdIC53cC10YWdibG9jay10YWJlbGxlIHRoLApbZGF0 YS10aGVtZT0ibmlnaHQiXSAud3AtdGFnYmxvY2stdGFiZWxsZSB0ZCB7IGJvcmRlci1jb2xvcjog IzNhNGQ2MDsgfQoKLndwLXRhZy1oMSB0aCB7CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1wcmlt YXJ5KTsgY29sb3I6ICNmZmY7CiAgICBmb250LXdlaWdodDogNzAwOyBmb250LXNpemU6IHZhcigt LWZzLWJhc2UpOyB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICBwYWRkaW5nOiA0cHggNnB4OwogICAg Ym9yZGVyOiAxcHggc29saWQgdmFyKC0tYmctcHJpbWFyeSk7Cn0KLndwLXRhZy1oMSB0aC53cC1o MS1kZ2wgeyBib3JkZXItcmlnaHQ6IDJweCBzb2xpZCAjZmZmOyB9Cgoud3AtdGFnLWgyIHRoIHsK ICAgIGJhY2tncm91bmQ6IHZhcigtLWJnLXByaW1hcnktZGFyayk7IGNvbG9yOiAjZmZmOwogICAg Zm9udC13ZWlnaHQ6IDYwMDsgZm9udC1zaXplOiB2YXIoLS1mcy1zbSk7IHRleHQtYWxpZ246IGNl bnRlcjsKICAgIHBhZGRpbmc6IDJweCA2cHg7CiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1i Zy1wcmltYXJ5KTsKICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7IGxldHRlci1zcGFjaW5n OiAwLjNweDsKfQoKLndwLXRhZ2Jsb2NrLXRhYmVsbGUgdGQgewogICAgaGVpZ2h0OiAyMnB4OyBt aW4taGVpZ2h0OiAyMnB4OwogICAgZm9udC1zaXplOiB2YXIoLS1mcy1zbSk7Cn0KLndwLXRhZ2Js b2NrLXRhYmVsbGUgdGQud3Atc2NoaWNodC1mcnVlaCB7IGJhY2tncm91bmQ6IHJnYmEoMTgzLDI4 LDI4LDAuMDUpOyB9Ci53cC10YWdibG9jay10YWJlbGxlIHRkLndwLXNjaGljaHQtc3BhZXQgeyBi YWNrZ3JvdW5kOiByZ2JhKDI2LDgyLDExOCwwLjA1KTsgfQoud3AtdGFnYmxvY2stdGFiZWxsZSB0 ZC53cC1zY2hpY2h0LW5hY2h0IHsgYmFja2dyb3VuZDogcmdiYSgyNyw5NCwzMiwwLjA1KTsgfQpb ZGF0YS10aGVtZT0ibmlnaHQiXSAud3AtdGFnYmxvY2stdGFiZWxsZSB0ZC53cC1zY2hpY2h0LWZy dWVoIHsgYmFja2dyb3VuZDogcmdiYSgxODMsMjgsMjgsMC4xMik7IH0KW2RhdGEtdGhlbWU9Im5p Z2h0Il0gLndwLXRhZ2Jsb2NrLXRhYmVsbGUgdGQud3Atc2NoaWNodC1zcGFldCB7IGJhY2tncm91 bmQ6IHJnYmEoMjYsODIsMTE4LDAuMTUpOyB9CltkYXRhLXRoZW1lPSJuaWdodCJdIC53cC10YWdi bG9jay10YWJlbGxlIHRkLndwLXNjaGljaHQtbmFjaHQgeyBiYWNrZ3JvdW5kOiByZ2JhKDI3LDk0 LDMyLDAuMTIpOyB9CgovKiBWZXJ0aWthbGUgVHJlbm51bmcgREdMIHwgV0RGL0ZCUCAqLwoud3At dGFnYmxvY2stdGFiZWxsZSB0ZDpudGgtY2hpbGQoMyksCi53cC10YWdibG9jay10YWJlbGxlIC53 cC10YWctaDIgdGg6bnRoLWNoaWxkKDMpIHsgYm9yZGVyLXJpZ2h0OiAycHggc29saWQgdmFyKC0t YmctcHJpbWFyeSk7IH0KCi53cC1uYW1lIHsgZm9udC1zaXplOiB2YXIoLS1mcy1zbSk7IHdoaXRl LXNwYWNlOiBub3dyYXA7IG92ZXJmbG93OiBoaWRkZW47IHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lz OyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IG1heC13aWR0aDogMTAwJTsgfQoud3AtbmFtZS1mYnAg eyBmb250LXN0eWxlOiBpdGFsaWM7IH0KLndwLW5hbWUtZmJwIHN1cCB7IGNvbG9yOiAjRDRBMDE3 OyBmb250LXdlaWdodDogNzAwOyBtYXJnaW4tbGVmdDogMXB4OyB9CgovKiBUYWctU3RhdHVzLUFr emVudGUgKGRlemVudCkgKi8KLndwLXRhZ2Jsb2NrLWhldXRlIHsgb3V0bGluZTogMnB4IHNvbGlk ICNENEEwMTc7IG91dGxpbmUtb2Zmc2V0OiAtMXB4OyB9Ci53cC10YWdibG9jay1mdCAud3AtdGFn YmxvY2stbGFiZWwgeyBiYWNrZ3JvdW5kOiAjNEE2QThDOyB9Ci53cC10YWdibG9jay1mdC13aWNo dGlnIC53cC10YWdibG9jay1sYWJlbCB7IGJhY2tncm91bmQ6ICMyQzNFNTA7IH0KLndwLXRhZ2Js b2NrLXdlIC53cC10YWdibG9jay1sYWJlbCB7IGJhY2tncm91bmQ6ICM1MjgyQTY7IH0KLndwLXRh Z2Jsb2NrLW5zIC53cC10YWdibG9jay1sYWJlbCB7IGJhY2tncm91bmQ6ICMxQTUyNzY7IH0KCi53 cC1zZWl0ZS1mdXNzIHsKICAgIG1hcmdpbi10b3A6IDEycHg7IHBhZGRpbmctdG9wOiAxMHB4Owog ICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHZhcigtLWJvcmRlci1saWdodCk7CiAgICBkaXNwbGF5 OiBmbGV4OyBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47CiAgICBmb250LXNpemU6IHZh cigtLWZzLXhzKTsgY29sb3I6IHZhcigtLXRleHQtbXV0ZWQpOwp9Ci53cC1mdXNzLW5vdGUgc3Vw IHsgZm9udC13ZWlnaHQ6IDcwMDsgfQoKLyogPT09PT0gRHJ1Y2stTGF5b3V0IFdvY2hlbnBsYW4g 4oCUIDcgVGFnZSArIGplIGJpcyB6dSA4IFplaWxlbiBhdWYgRUlORVIgQTQtU2VpdGUgPT09PT0g Ki8KQG1lZGlhIHByaW50IHsKICAgIEBwYWdlIHsgc2l6ZTogQTQgcG9ydHJhaXQ7IG1hcmdpbjog N21tIDltbTsgfQoKICAgIC8qIEFsbGVzIGF1w59lciBkZW0gV29jaGVucGxhbiBrb21wbGV0dCBh dXMgZGVtIExheW91dCBuZWhtZW4gKGRpc3BsYXk6bm9uZSwKICAgICAgIGRhbWl0IGRlciBCcm93 c2VyIGRlbiBJbmhhbHQga29ycmVrdCBwYWdpbmllcmVuIGthbm4g4oCUIHBvc2l0aW9uOmFic29s dXRlCiAgICAgICBmw7xocnQgc29uc3QgenVtIEFic2NobmVpZGVuIG5hY2ggZGVyIGVyc3RlbiBT ZWl0ZSkuICovCiAgICBib2R5LmRydWNrZW4td29jaGVucGxhbiAuYW5zaWNodDpub3QoI2Fuc2lj aHQtd29jaGVucGxhbiksCiAgICBib2R5LmRydWNrZW4td29jaGVucGxhbiBoZWFkZXIsCiAgICBi b2R5LmRydWNrZW4td29jaGVucGxhbiBuYXYsCiAgICBib2R5LmRydWNrZW4td29jaGVucGxhbiAu dG9vbGJhciwKICAgIGJvZHkuZHJ1Y2tlbi13b2NoZW5wbGFuIC53cC10b29sYmFyLAogICAgYm9k eS5kcnVja2VuLXdvY2hlbnBsYW4gLndwLWxlZ2VuZGUsCiAgICBib2R5LmRydWNrZW4td29jaGVu cGxhbiAjd3AtZHJ1Y2tlbiwKICAgIGJvZHkuZHJ1Y2tlbi13b2NoZW5wbGFuICNtb2RhbC1vdmVy bGF5LAogICAgYm9keS5kcnVja2VuLXdvY2hlbnBsYW4gI3RvYXN0LWNvbnRhaW5lciwKICAgIGJv ZHkuZHJ1Y2tlbi13b2NoZW5wbGFuIC5oZWFkZXIsCiAgICBib2R5LmRydWNrZW4td29jaGVucGxh biAuaGF1cHRuYXYsCiAgICBib2R5LmRydWNrZW4td29jaGVucGxhbiAuc2VpdGVubGVpc3RlIHsg ZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyB9CgogICAgYm9keS5kcnVja2VuLXdvY2hlbnBsYW4g eyBiYWNrZ3JvdW5kOiAjZmZmICFpbXBvcnRhbnQ7IH0KICAgIGJvZHkuZHJ1Y2tlbi13b2NoZW5w bGFuICNhbnNpY2h0LXdvY2hlbnBsYW4gewogICAgICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRh bnQ7CiAgICAgICAgcGFkZGluZzogMCAhaW1wb3J0YW50OyBtYXJnaW46IDAgIWltcG9ydGFudDsg YmFja2dyb3VuZDogI2ZmZiAhaW1wb3J0YW50OwogICAgfQogICAgYm9keS5kcnVja2VuLXdvY2hl bnBsYW4gLndwLXNjcm9sbCwKICAgIGJvZHkuZHJ1Y2tlbi13b2NoZW5wbGFuIC53cC1sYXlvdXQg ewogICAgICAgIG92ZXJmbG93OiB2aXNpYmxlICFpbXBvcnRhbnQ7IG1heC1oZWlnaHQ6IG5vbmUg IWltcG9ydGFudDsgaGVpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7CiAgICAgICAgcGFkZGluZzogMCAh aW1wb3J0YW50OyBtYXJnaW46IDAgIWltcG9ydGFudDsgYmFja2dyb3VuZDogI2ZmZiAhaW1wb3J0 YW50OwogICAgICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7CiAgICB9CgogICAgLyogU2Vp dGVuLUdydW5kbGF5b3V0ICovCiAgICBib2R5LmRydWNrZW4td29jaGVucGxhbiAud3Atc2VpdGUg ewogICAgICAgIGJhY2tncm91bmQ6ICNmZmYgIWltcG9ydGFudDsgYm94LXNoYWRvdzogbm9uZSAh aW1wb3J0YW50OwogICAgICAgIG1hcmdpbjogMCAhaW1wb3J0YW50OyBwYWRkaW5nOiAwICFpbXBv cnRhbnQ7CiAgICAgICAgbWF4LXdpZHRoOiBub25lICFpbXBvcnRhbnQ7IGJvcmRlci1yYWRpdXM6 IDAgIWltcG9ydGFudDsKICAgIH0KICAgIGJvZHkuZHJ1Y2tlbi13b2NoZW5wbGFuIC53cC1zZWl0 ZS1rb3BmIHsKICAgICAgICBtYXJnaW4tYm90dG9tOiAzcHg7IHBhZGRpbmctYm90dG9tOiAzcHg7 CiAgICAgICAgYm9yZGVyLWJvdHRvbTogMS41cHggc29saWQgdmFyKC0tYmctcHJpbWFyeSk7CiAg ICB9CiAgICBib2R5LmRydWNrZW4td29jaGVucGxhbiAud3Atc2VpdGUta29wZiBoMSB7IGZvbnQt c2l6ZTogMTFwdDsgbGluZS1oZWlnaHQ6IDEuMTsgfQoKICAgIC8qIEtlaW4gYmlsZHNjaGlybS1i ZXpvZ2VuZXIgT3V0bGluZSBpbSBEcnVjayAqLwogICAgYm9keS5kcnVja2VuLXdvY2hlbnBsYW4g LndwLXRhZ2Jsb2NrLWhldXRlIHsgb3V0bGluZTogbm9uZSAhaW1wb3J0YW50OyB9CgogICAgLyog SmVkZXIgVGFnZXNibG9jazoga29tcGFrdCwgYmlzIHp1IDggWmVpbGVuIHBhc3NlbiAqLwogICAg Ym9keS5kcnVja2VuLXdvY2hlbnBsYW4gLndwLXRhZ2Jsb2NrIHsKICAgICAgICBwYWdlLWJyZWFr LWluc2lkZTogYXZvaWQgIWltcG9ydGFudDsgYnJlYWstaW5zaWRlOiBhdm9pZCAhaW1wb3J0YW50 OwogICAgICAgIG1hcmdpbi1ib3R0b206IDFweDsKICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVt bnM6IDkwcHggMWZyICFpbXBvcnRhbnQ7CiAgICAgICAgYm9yZGVyLXdpZHRoOiAwLjVweDsKICAg IH0KICAgIGJvZHkuZHJ1Y2tlbi13b2NoZW5wbGFuIC53cC10YWdibG9jay1sYWJlbCB7CiAgICAg ICAgcGFkZGluZzogMnB4IDRweDsKICAgIH0KICAgIGJvZHkuZHJ1Y2tlbi13b2NoZW5wbGFuIC53 cC10bC1rb3BmIHsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93OyBhbGlnbi1pdGVtczogYmFz ZWxpbmU7CiAgICAgICAgZ2FwOiA0cHg7IHBhZGRpbmctYm90dG9tOiAycHg7CiAgICAgICAgYm9y ZGVyLWJvdHRvbTogMC41cHggc29saWQgcmdiYSgyNTUsMjU1LDI1NSwwLjMpOwogICAgfQogICAg Ym9keS5kcnVja2VuLXdvY2hlbnBsYW4gLndwLXRsLXd0IHsgZm9udC1zaXplOiA5cHQ7IGZvbnQt d2VpZ2h0OiA3MDA7IH0KICAgIGJvZHkuZHJ1Y2tlbi13b2NoZW5wbGFuIC53cC10bC1kYXR1bSB7 IGZvbnQtc2l6ZTogN3B0OyB9CiAgICBib2R5LmRydWNrZW4td29jaGVucGxhbiAud3AtdGwtenVz YXR6LWJveCB7IG1hcmdpbi10b3A6IDZweDsgZ2FwOiAxLjVweDsgfQogICAgYm9keS5kcnVja2Vu LXdvY2hlbnBsYW4gLndwLXRsLXp1c2F0eiB7IGZvbnQtc2l6ZTogNnB0OyBwYWRkaW5nOiAwIDJw eDsgbGluZS1oZWlnaHQ6IDEuMjsgdGV4dC1hbGlnbjogbGVmdDsgfQoKICAgIC8qIFRhYmVsbGUg 4oCUIGtvbXBha3QgYWJlciBsZXNiYXIgKi8KICAgIGJvZHkuZHJ1Y2tlbi13b2NoZW5wbGFuIC53 cC10YWdibG9jay10YWJlbGxlIHsKICAgICAgICBmb250LXNpemU6IDdwdDsKICAgIH0KICAgIGJv ZHkuZHJ1Y2tlbi13b2NoZW5wbGFuIC53cC10YWdibG9jay10YWJlbGxlIHRoLAogICAgYm9keS5k cnVja2VuLXdvY2hlbnBsYW4gLndwLXRhZ2Jsb2NrLXRhYmVsbGUgdGQgewogICAgICAgIHBhZGRp bmc6IDAgMS41bW0gIWltcG9ydGFudDsKICAgICAgICBib3JkZXItd2lkdGg6IDAuNXB4OwogICAg ICAgIGxpbmUtaGVpZ2h0OiAxLjA1ICFpbXBvcnRhbnQ7CiAgICAgICAgYm94LXNpemluZzogYm9y ZGVyLWJveDsKICAgIH0KICAgIGJvZHkuZHJ1Y2tlbi13b2NoZW5wbGFuIC53cC10YWctaDEgdGgg eyBmb250LXNpemU6IDhwdDsgaGVpZ2h0OiAzLjVtbSAhaW1wb3J0YW50OyBwYWRkaW5nOiAwIDEu NW1tICFpbXBvcnRhbnQ7IH0KICAgIGJvZHkuZHJ1Y2tlbi13b2NoZW5wbGFuIC53cC10YWctaDIg dGggeyBmb250LXNpemU6IDYuOHB0OyBoZWlnaHQ6IDIuOW1tICFpbXBvcnRhbnQ7IHBhZGRpbmc6 IDAgMS41bW0gIWltcG9ydGFudDsgfQogICAgYm9keS5kcnVja2VuLXdvY2hlbnBsYW4gLndwLXRh Z2Jsb2NrLXRhYmVsbGUgdGQgewogICAgICAgIGZvbnQtc2l6ZTogN3B0OyBoZWlnaHQ6IDMuM21t ICFpbXBvcnRhbnQ7IG1pbi1oZWlnaHQ6IDMuM21tICFpbXBvcnRhbnQ7CiAgICAgICAgb3ZlcmZs b3c6IGhpZGRlbjsKICAgIH0KICAgIGJvZHkuZHJ1Y2tlbi13b2NoZW5wbGFuIC53cC1uYW1lIHsg Zm9udC1zaXplOiA3cHQ7IGxpbmUtaGVpZ2h0OiAxLjA1OyB9CgogICAgYm9keS5kcnVja2VuLXdv Y2hlbnBsYW4gLndwLXNlaXRlLWZ1c3MgewogICAgICAgIG1hcmdpbi10b3A6IDRweDsgcGFkZGlu Zy10b3A6IDNweDsKICAgICAgICBmb250LXNpemU6IDYuNXB0OwogICAgfQoKICAgIC8qIFF1ZXJm b3JtYXQ6IG1laHIgUGxhdHosIGdyw7bDn2VyZSBTY2hyaWZ0ICovCiAgICBAbWVkaWEgKG9yaWVu dGF0aW9uOiBsYW5kc2NhcGUpIHsKICAgICAgICBib2R5LmRydWNrZW4td29jaGVucGxhbiAud3At dGFnYmxvY2sgewogICAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDEzMHB4IDFmciAh aW1wb3J0YW50OwogICAgICAgIH0KICAgICAgICBib2R5LmRydWNrZW4td29jaGVucGxhbiAud3At dGFnYmxvY2stdGFiZWxsZSB7IGZvbnQtc2l6ZTogOXB0OyB9CiAgICAgICAgYm9keS5kcnVja2Vu LXdvY2hlbnBsYW4gLndwLXRhZ2Jsb2NrLXRhYmVsbGUgdGQgeyBmb250LXNpemU6IDlwdDsgfQog ICAgICAgIGJvZHkuZHJ1Y2tlbi13b2NoZW5wbGFuIC53cC1uYW1lIHsgZm9udC1zaXplOiA5cHQ7 IH0KICAgICAgICBib2R5LmRydWNrZW4td29jaGVucGxhbiAud3AtdGwtd3QgeyBmb250LXNpemU6 IDExcHQ7IH0KICAgICAgICBib2R5LmRydWNrZW4td29jaGVucGxhbiAud3AtdGwtZGF0dW0geyBm b250LXNpemU6IDlwdDsgfQogICAgICAgIGJvZHkuZHJ1Y2tlbi13b2NoZW5wbGFuIC53cC10bC16 dXNhdHogeyBmb250LXNpemU6IDdwdDsgcGFkZGluZzogMXB4IDNweDsgfQogICAgICAgIGJvZHku ZHJ1Y2tlbi13b2NoZW5wbGFuIC53cC10bC16dXNhdHotYm94IHsgbWFyZ2luLXRvcDogOHB4OyBn YXA6IDJweDsgfQogICAgICAgIGJvZHkuZHJ1Y2tlbi13b2NoZW5wbGFuIC53cC10YWctaDEgdGgg eyBmb250LXNpemU6IDEwcHQ7IH0KICAgICAgICBib2R5LmRydWNrZW4td29jaGVucGxhbiAud3At dGFnLWgyIHRoIHsgZm9udC1zaXplOiA4cHQ7IH0KICAgIH0KCiAgICAvKiBIaW50ZXJncnVuZC1G YXJiZW4gaW0gRHJ1Y2sgZXJ6d2luZ2VuICovCiAgICBib2R5LmRydWNrZW4td29jaGVucGxhbiwK ICAgIGJvZHkuZHJ1Y2tlbi13b2NoZW5wbGFuICogewogICAgICAgIC13ZWJraXQtcHJpbnQtY29s b3ItYWRqdXN0OiBleGFjdCAhaW1wb3J0YW50OwogICAgICAgIHByaW50LWNvbG9yLWFkanVzdDog ZXhhY3QgIWltcG9ydGFudDsKICAgICAgICBjb2xvci1hZGp1c3Q6IGV4YWN0ICFpbXBvcnRhbnQ7 CiAgICB9Cn0KCi8qID09PT09IERydWNrLUxheW91dCBQZXJzb2VubGljaGVyIFBsYW4g4oCUIGFs bGUgMTIgTW9uYXRlIGF1ZiBlaW5lciBTZWl0ZSA9PT09PQogICBXaXIgYmVuYW5udGUgQHBhZ2Ut UmVnZWwgKCdwcC1kcnVjaycpIHN0YXR0IG9yaWVudGF0aW9uLXNwZXppZmlzY2hlciBAcGFnZS0K ICAgUmVnZWwgaW0gQG1lZGlhIHByaW50LUJsb2NrIOKAlCBzb25zdCBrb2xsaWRpZXJ0IHNpZSBt aXQgZGVyIHBvcnRyYWl0LUBwYWdlCiAgIGRlcyBXb2NoZW5wbGFucyAoQnJvd3NlciBuaW1tdCBz b25zdCBudXIgZWluZSkuIFBlciBgcGFnZTogcHAtZHJ1Y2s7YCBhbiBkZXIKICAgUGVyc3BsYW4t V3VyemVsIHdpcmQgc2llIG51ciBmdWVyIGRpZXNlbiBEcnVjayBha3Rpdi4gKi8KQHBhZ2UgcHAt ZHJ1Y2sgeyBzaXplOiBBNCBsYW5kc2NhcGU7IG1hcmdpbjogNm1tIDhtbTsgfQoKQG1lZGlhIHBy aW50IHsKICAgIGJvZHkuZHJ1Y2tlbi1wZXJzcGxhbiB7IGJhY2tncm91bmQ6ICNmZmYgIWltcG9y dGFudDsgfQoKICAgIC8qIEhlYWRlciwgVG9vbGJhciwgVGFicyB1bmQgYWxsZSBhbmRlcmVuIEFu c2ljaHRlbiBhdXNibGVuZGVuICovCiAgICBib2R5LmRydWNrZW4tcGVyc3BsYW4gI2tvcGZsZWlz dGUsCiAgICBib2R5LmRydWNrZW4tcGVyc3BsYW4gLmFuc2ljaHQ6bm90KCNhbnNpY2h0LXBlcnNw bGFuKSwKICAgIGJvZHkuZHJ1Y2tlbi1wZXJzcGxhbiAucHAtdG9vbGJhciwKICAgIGJvZHkuZHJ1 Y2tlbi1wZXJzcGxhbiAjcHAtZHJ1Y2tlbiwKICAgIGJvZHkuZHJ1Y2tlbi1wZXJzcGxhbiAjbW9k YWwtb3ZlcmxheSwKICAgIGJvZHkuZHJ1Y2tlbi1wZXJzcGxhbiAjdG9hc3QtY29udGFpbmVyIHsg ZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyB9CgogICAgYm9keS5kcnVja2VuLXBlcnNwbGFuICNh bnNpY2h0LXBlcnNwbGFuIHsKICAgICAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50OwogICAg ICAgIGhlaWdodDogYXV0byAhaW1wb3J0YW50OwogICAgICAgIG92ZXJmbG93OiB2aXNpYmxlICFp bXBvcnRhbnQ7CiAgICAgICAgYmFja2dyb3VuZDogI2ZmZiAhaW1wb3J0YW50OwogICAgICAgIHBh ZGRpbmc6IDAgIWltcG9ydGFudDsgbWFyZ2luOiAwICFpbXBvcnRhbnQ7CiAgICAgICAgcGFnZTog cHAtZHJ1Y2s7CiAgICB9CiAgICBib2R5LmRydWNrZW4tcGVyc3BsYW4gLnBwLXNjcm9sbCB7CiAg ICAgICAgb3ZlcmZsb3c6IHZpc2libGUgIWltcG9ydGFudDsKICAgICAgICBwYWRkaW5nOiAwICFp bXBvcnRhbnQ7IG1hcmdpbjogMCAhaW1wb3J0YW50OwogICAgICAgIGhlaWdodDogYXV0byAhaW1w b3J0YW50OwogICAgICAgIGJhY2tncm91bmQ6ICNmZmYgIWltcG9ydGFudDsKICAgIH0KICAgIGJv ZHkuZHJ1Y2tlbi1wZXJzcGxhbiAucHAtdGl0ZWwgewogICAgICAgIGZvbnQtc2l6ZTogMTJwdDsK ICAgICAgICBtYXJnaW46IDAgMCAzbW0gMDsKICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAg ICAgICAgcGFnZS1icmVhay1hZnRlcjogYXZvaWQ7CiAgICB9CgogICAgLyogMTIgTW9uYXRlIGFs cyA0LVNwYWx0ZW4tR3JpZCAoNCB4IDMgPSAxMikgKi8KICAgIGJvZHkuZHJ1Y2tlbi1wZXJzcGxh biAucHAtbW9uYXRlIHsKICAgICAgICBkaXNwbGF5OiBncmlkICFpbXBvcnRhbnQ7CiAgICAgICAg Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoNCwgMWZyKSAhaW1wb3J0YW50OwogICAgICAg IGdhcDogM21tICFpbXBvcnRhbnQ7CiAgICB9CiAgICAvKiBCdWZmZXItTW9uYXQgKG09MTIgLT4g SmFudWFyIEZvbGdlamFocikgYXVzYmxlbmRlbiwgc29kYXNzIG51ciAxMiBNb25hdGUgZ2VkcnVj a3Qgd2VyZGVuICovCiAgICBib2R5LmRydWNrZW4tcGVyc3BsYW4gLnBwLW1vbmF0Om50aC1jaGls ZCgxMykgeyBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7IH0KCiAgICBib2R5LmRydWNrZW4tcGVy c3BsYW4gLnBwLW1vbmF0IHsKICAgICAgICB3aWR0aDogYXV0byAhaW1wb3J0YW50OwogICAgICAg IGJveC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudDsKICAgICAgICBib3JkZXItd2lkdGg6IDFweCAh aW1wb3J0YW50OwogICAgICAgIHBhZ2UtYnJlYWstaW5zaWRlOiBhdm9pZCAhaW1wb3J0YW50Owog ICAgICAgIGJyZWFrLWluc2lkZTogYXZvaWQgIWltcG9ydGFudDsKICAgIH0KICAgIGJvZHkuZHJ1 Y2tlbi1wZXJzcGxhbiAucHAtbW9uYXQta29wZiB7CiAgICAgICAgZm9udC1zaXplOiA5cHQ7CiAg ICAgICAgcGFkZGluZzogMnB4IDRweDsKICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4ycHg7CiAg ICB9CiAgICBib2R5LmRydWNrZW4tcGVyc3BsYW4gLnBwLW1vbmF0LWdyaWQgeyBmb250LXNpemU6 IDcuNXB0OyB9CiAgICBib2R5LmRydWNrZW4tcGVyc3BsYW4gLnBwLXd0LWtvcGYgewogICAgICAg IGZvbnQtc2l6ZTogNi41cHQ7CiAgICAgICAgcGFkZGluZzogMXB4IDA7CiAgICAgICAgYm9yZGVy LWJvdHRvbS13aWR0aDogMXB4ICFpbXBvcnRhbnQ7CiAgICB9CiAgICBib2R5LmRydWNrZW4tcGVy c3BsYW4gLnBwLXRhZyB7CiAgICAgICAgZm9udC1zaXplOiA3cHQ7CiAgICAgICAgcGFkZGluZzog MDsKICAgICAgICBtaW4taGVpZ2h0OiAxNHB4OwogICAgfQogICAgYm9keS5kcnVja2VuLXBlcnNw bGFuIC5wcC10YWctbnIgeyBmb250LXNpemU6IDYuNXB0OyB9CiAgICBib2R5LmRydWNrZW4tcGVy c3BsYW4gLnBwLXRhZy13ZXJ0IHsgZm9udC1zaXplOiA2LjVwdDsgcGFkZGluZzogMCAxcHg7IH0K CiAgICAvKiBadXNhbW1lbmZhc3N1bmcga29tcGFrdCB1bnRlciBkZW4gTW9uYXRlbiAqLwogICAg Ym9keS5kcnVja2VuLXBlcnNwbGFuIC5wcC1zdW1tYXJ5IHsKICAgICAgICBtYXJnaW4tdG9wOiAz bW0gIWltcG9ydGFudDsKICAgICAgICBwYWRkaW5nOiA0cHggOHB4ICFpbXBvcnRhbnQ7CiAgICAg ICAgcGFnZS1icmVhay1pbnNpZGU6IGF2b2lkICFpbXBvcnRhbnQ7CiAgICB9CiAgICBib2R5LmRy dWNrZW4tcGVyc3BsYW4gLnBwLXN1bW1hcnkgaDMgeyBmb250LXNpemU6IDEwcHQ7IG1hcmdpbjog MCAwIDJtbSAwOyB9CiAgICBib2R5LmRydWNrZW4tcGVyc3BsYW4gLnBwLXN1bW1hcnktZ3JpZCB7 CiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoNywgMWZyKSAhaW1wb3J0YW50 OwogICAgICAgIGdhcDogNHB4ICFpbXBvcnRhbnQ7CiAgICB9CiAgICBib2R5LmRydWNrZW4tcGVy c3BsYW4gLnBwLXN0YXQtaXRlbSB7IHBhZGRpbmc6IDJweCA0cHggIWltcG9ydGFudDsgfQogICAg Ym9keS5kcnVja2VuLXBlcnNwbGFuIC5wcC1zdGF0LXphaGwgeyBmb250LXNpemU6IDExcHQgIWlt cG9ydGFudDsgfQogICAgYm9keS5kcnVja2VuLXBlcnNwbGFuIC5wcC1zdGF0LWxhYmVsIHsgZm9u dC1zaXplOiA3cHQgIWltcG9ydGFudDsgfQoKICAgIC8qIEhpbnRlcmdydW5kLUZhcmJlbiAoV29j aGVuZW5kZSwgRmVpZXJ0YWcsIFNjaGljaHRjb2RlcykgZXJ6d2luZ2VuICovCiAgICBib2R5LmRy dWNrZW4tcGVyc3BsYW4sCiAgICBib2R5LmRydWNrZW4tcGVyc3BsYW4gKiB7CiAgICAgICAgLXdl YmtpdC1wcmludC1jb2xvci1hZGp1c3Q6IGV4YWN0ICFpbXBvcnRhbnQ7CiAgICAgICAgcHJpbnQt Y29sb3ItYWRqdXN0OiBleGFjdCAhaW1wb3J0YW50OwogICAgICAgIGNvbG9yLWFkanVzdDogZXhh Y3QgIWltcG9ydGFudDsKICAgIH0KfQoKLyogRGllbnN0bnVtbWVyLVplbGxlbiAoZ2VsYiBoaW50 ZXJsZWd0KSAqLwoud3AtdGQtZG5yIHsKICAgIGJhY2tncm91bmQ6IHJnYmEoMjQwLDIxOCw4MCww LjEyKTsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgIGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7 CiAgICBmb250LXNpemU6IHZhcigtLWZzLXhzKTsKICAgIGNvbG9yOiB2YXIoLS10ZXh0LXNlY29u ZGFyeSk7Cn0KW2RhdGEtdGhlbWU9Im5pZ2h0Il0gLndwLXRkLWRuciB7IGJhY2tncm91bmQ6IHJn YmEoMTg0LDE2MCwzMiwwLjEwKTsgfQoKLyogRnXDn3plaWxlICovCi53cC1mdXNzemVpbGUgdGQg ewogICAgYmFja2dyb3VuZDogdmFyKC0tYmctY2FyZC1hbHQpOwogICAgYm9yZGVyLXRvcDogMnB4 IHNvbGlkIHZhcigtLWJvcmRlci1zdHJvbmcpOwogICAgcGFkZGluZzogNnB4IDEwcHggIWltcG9y dGFudDsKICAgIGZvbnQtc2l6ZTogdmFyKC0tZnMteHMpOwogICAgY29sb3I6IHZhcigtLXRleHQt bXV0ZWQpOwp9Ci53cC1mdXNzemVpbGUgdGQgPiBzcGFuIHsgZGlzcGxheTogaW5saW5lLWJsb2Nr OyB9Ci53cC1mdXNzLWRydWNrIHsgZmxvYXQ6IHJpZ2h0OyBjb2xvcjogdmFyKC0tdGV4dC1zZWNv bmRhcnkpOyBmb250LXdlaWdodDogNjAwOyB9Ci53cC1mdXNzLW5vdGUgc3VwIHsgY29sb3I6ICNk NGEwMTc7IGZvbnQtd2VpZ2h0OiA3MDA7IH0KCi8qIEZlaWVydGFnIOKAnndpY2h0aWciIGltIEFk bWluLVRhYiAqLwp0ci5mZWllcnRhZy13aWNodGlnIHRkIHsgYmFja2dyb3VuZDogcmdiYSgxOTIs MCwwLDAuMDYpOyB9CgovKiBGaWx0ZXItTGVpc3RlIG9iZXJoYWxiIGRlciBGZWllcnRhZy1UYWJl bGxlICovCi5mZWllcnRhZ2UtZmlsdGVyIHsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBnYXA6IDE2 cHg7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgZmxleC13cmFwOiB3cmFwOwogICAgcGFk ZGluZzogOHB4IDEycHg7CiAgICBtYXJnaW46IDhweCAwOwogICAgYmFja2dyb3VuZDogdmFyKC0t YmctY2FyZC1hbHQpOwogICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tYm9yZGVyLWxpZ2h0KTsK ICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1tZCk7CiAgICBmb250LXNpemU6IHZhcigt LWZzLWJhc2UpOwp9Ci5mZWllcnRhZ2UtZmlsdGVyIGxhYmVsIHsgZGlzcGxheTogaW5saW5lLWZs ZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGdhcDogNnB4OyBjb2xvcjogdmFyKC0tdGV4dC1zZWNv bmRhcnkpOyB9Ci5mZWllcnRhZ2UtZmlsdGVyIHNlbGVjdCB7IHBhZGRpbmc6IDNweCA2cHg7IGZv bnQtc2l6ZTogdmFyKC0tZnMtYmFzZSk7IGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWJvcmRlci1j b2xvcik7IGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1zbSk7IGJhY2tncm91bmQ6IHZhcigt LWJnLWlucHV0KTsgY29sb3I6IHZhcigtLXRleHQtcHJpbWFyeSk7IH0KCi8qIEZpbHRlci1Bbndl bmR1bmc6IGJlaSBha3RpdmVtIEZpbHRlciBhbGxlIG5pY2h0IHBhc3NlbmRlbiBaZWlsZW4gYXVz YmxlbmRlbi4KICAgRmlsdGVyLUtsYXNzZW4gd2VyZGVuIHZvbSBKUyBhbSB0Ym9keSBnZXNldHp0 LiAqLwojZmVpZXJ0YWdlLXRib2R5LmZpbHRlci1rYXQtZ2VzZXR6bGljaCAgdHI6bm90KC5mZWll cnRhZy1yb3cta2F0LWdlc2V0emxpY2gpICB7IGRpc3BsYXk6IG5vbmU7IH0KI2ZlaWVydGFnZS10 Ym9keS5maWx0ZXIta2F0LWp1ZWRpc2NoICAgIHRyOm5vdCguZmVpZXJ0YWctcm93LWthdC1qdWVk aXNjaCkgICAgeyBkaXNwbGF5OiBub25lOyB9CiNmZWllcnRhZ2UtdGJvZHkuZmlsdGVyLWthdC1t dXNsaW1pc2NoICB0cjpub3QoLmZlaWVydGFnLXJvdy1rYXQtbXVzbGltaXNjaCkgIHsgZGlzcGxh eTogbm9uZTsgfQojZmVpZXJ0YWdlLXRib2R5LmZpbHRlci1rYXQtdHVlcmtpc2NoICAgdHI6bm90 KC5mZWllcnRhZy1yb3cta2F0LXR1ZXJraXNjaCkgICB7IGRpc3BsYXk6IG5vbmU7IH0KI2ZlaWVy dGFnZS10Ym9keS5maWx0ZXItamFoci0yMDI2ICB0cjpub3QoLmZlaWVydGFnLXJvdy1qYWhyLTIw MjYpICB7IGRpc3BsYXk6IG5vbmU7IH0KI2ZlaWVydGFnZS10Ym9keS5maWx0ZXItamFoci0yMDI3 ICB0cjpub3QoLmZlaWVydGFnLXJvdy1qYWhyLTIwMjcpICB7IGRpc3BsYXk6IG5vbmU7IH0KI2Zl aWVydGFnZS10Ym9keS5maWx0ZXItamFoci0yMDI4ICB0cjpub3QoLmZlaWVydGFnLXJvdy1qYWhy LTIwMjgpICB7IGRpc3BsYXk6IG5vbmU7IH0KI2ZlaWVydGFnZS10Ym9keS5maWx0ZXItamFoci0y MDI5ICB0cjpub3QoLmZlaWVydGFnLXJvdy1qYWhyLTIwMjkpICB7IGRpc3BsYXk6IG5vbmU7IH0K I2ZlaWVydGFnZS10Ym9keS5maWx0ZXItamFoci0yMDMwICB0cjpub3QoLmZlaWVydGFnLXJvdy1q YWhyLTIwMzApICB7IGRpc3BsYXk6IG5vbmU7IH0KI2ZlaWVydGFnZS10Ym9keS5maWx0ZXItamFo ci0yMDMxICB0cjpub3QoLmZlaWVydGFnLXJvdy1qYWhyLTIwMzEpICB7IGRpc3BsYXk6IG5vbmU7 IH0KI2ZlaWVydGFnZS10Ym9keS5maWx0ZXItamFoci0yMDMyICB0cjpub3QoLmZlaWVydGFnLXJv dy1qYWhyLTIwMzIpICB7IGRpc3BsYXk6IG5vbmU7IH0KI2ZlaWVydGFnZS10Ym9keS5maWx0ZXIt amFoci0yMDMzICB0cjpub3QoLmZlaWVydGFnLXJvdy1qYWhyLTIwMzMpICB7IGRpc3BsYXk6IG5v bmU7IH0KI2ZlaWVydGFnZS10Ym9keS5maWx0ZXItamFoci0yMDM0ICB0cjpub3QoLmZlaWVydGFn LXJvdy1qYWhyLTIwMzQpICB7IGRpc3BsYXk6IG5vbmU7IH0KI2ZlaWVydGFnZS10Ym9keS5maWx0 ZXItamFoci0yMDM1ICB0cjpub3QoLmZlaWVydGFnLXJvdy1qYWhyLTIwMzUpICB7IGRpc3BsYXk6 IG5vbmU7IH0KI2ZlaWVydGFnZS10Ym9keS5maWx0ZXItbnVyLWFrdGl2ICB0ci5mZWllcnRhZy1y b3ctaW5ha3RpdiAgICAgICAgICB7IGRpc3BsYXk6IG5vbmU7IH0KCi8qIERlemVudGUgVMO2bnVu ZyBwcm8gS2F0ZWdvcmllIGluIGRlciBUYWJlbGxlLCBkYW1pdCBtYW4gdmlzdWVsbCB6dW9yZG5l biBrYW5uICovCnRyLmZlaWVydGFnLXJvdy1rYXQtanVlZGlzY2ggICAgdGQgeyBib3gtc2hhZG93 OiBpbnNldCAzcHggMCAwICM2RTRGQTA7IH0KdHIuZmVpZXJ0YWctcm93LWthdC1tdXNsaW1pc2No ICB0ZCB7IGJveC1zaGFkb3c6IGluc2V0IDNweCAwIDAgIzFCN0M2NjsgfQp0ci5mZWllcnRhZy1y b3cta2F0LXR1ZXJraXNjaCAgIHRkIHsgYm94LXNoYWRvdzogaW5zZXQgM3B4IDAgMCAjQzcyMTIw OyB9CnRyLmZlaWVydGFnLXJvdy1rYXQtZ2VzZXR6bGljaCAgdGQgeyBib3gtc2hhZG93OiBpbnNl dCAzcHggMCAwICM0QTZBOEM7IH0KdHIuZmVpZXJ0YWctcm93LWluYWt0aXYgdGQgeyBvcGFjaXR5 OiAwLjU1OyB9CgovKiBJbmZvLUthcnRlbiBpbSBJbmZvcm1hdGlvbnNmZW5zdGVyICovCi5pbmZv LWthcnRlIHsKICAgIHBhZGRpbmc6IDEycHggMTZweDsKICAgIGJvcmRlci1yYWRpdXM6IHZhcigt LXJhZGl1cy1tZCk7CiAgICBtYXJnaW4tYm90dG9tOiAxMHB4OwogICAgYmFja2dyb3VuZDogdmFy KC0tYmctY2FyZC1hbHQpOwogICAgYm9yZGVyLWxlZnQ6IDRweCBzb2xpZCB2YXIoLS10ZXh0LWhl YWRpbmcpOwogICAgZm9udC1zaXplOiB2YXIoLS1mcy1tZCk7CiAgICBsaW5lLWhlaWdodDogMS41 Owp9Ci5pbmZvLWthcnRlLXN1cHBvcnQgeyBib3JkZXItbGVmdC1jb2xvcjogIzJkOWQ3ODsgfQou aW5mby1rYXJ0ZS13YXJuIHsgYm9yZGVyLWxlZnQtY29sb3I6ICNlNjdlMjI7IGJhY2tncm91bmQ6 IHJnYmEoMjMwLDEyNiwzNCwwLjA4KTsgfQouaW5mby1rYXJ0ZS1pbmZvIHsgYm9yZGVyLWxlZnQt Y29sb3I6ICM0YTkwZTI7IH0KCi8qIE1haWwtQnV0dG9uIGhpbnRlciBlaW5lbSBBbnNwcmVjaHBh cnRuZXIgaW0gSW5mby1GZW5zdGVyLgogICBEZXplbnRlIFBpbGxlIG1pdCBBa3plbnQtQm9yZGVy OyBvZWZmbmV0IE91dGxvb2sgKG1haWx0bzopLiAqLwouaW5mby1hcC1tYWlsYnRuIHsKICAgIGRp c3BsYXk6IGlubGluZS1ibG9jazsKICAgIG1hcmdpbi1sZWZ0OiA2cHg7CiAgICBwYWRkaW5nOiAx cHggOHB4OwogICAgZm9udC1zaXplOiB2YXIoLS1mcy1zbSk7CiAgICBmb250LXdlaWdodDogNjAw OwogICAgY29sb3I6IHZhcigtLWZhcmJlLWFremVudCk7CiAgICBiYWNrZ3JvdW5kOiByZ2JhKDc0 LDE0NCwyMjYsMC4xMCk7CiAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDc0LDE0NCwyMjYsMC4z NSk7CiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbGcpOwogICAgdGV4dC1kZWNvcmF0 aW9uOiBub25lOwogICAgbGluZS1oZWlnaHQ6IDEuNTsKICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7 CiAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIDAuMTJzLCBib3JkZXItY29sb3IgMC4xMnMsIGNv bG9yIDAuMTJzOwp9Ci5pbmZvLWFwLW1haWxidG46aG92ZXIgewogICAgYmFja2dyb3VuZDogdmFy KC0tZmFyYmUtYWt6ZW50KTsKICAgIGNvbG9yOiAjZmZmOwogICAgYm9yZGVyLWNvbG9yOiB2YXIo LS1mYXJiZS1ha3plbnQpOwp9Ci5pbmZvLWFwLWtlaW5tYWlsIHsKICAgIGRpc3BsYXk6IGlubGlu ZS1ibG9jazsKICAgIG1hcmdpbi1sZWZ0OiA2cHg7CiAgICBmb250LXNpemU6IHZhcigtLWZzLXNt KTsKICAgIGNvbG9yOiB2YXIoLS10ZXh0LW11dGVkKTsKICAgIGZvbnQtc3R5bGU6IGl0YWxpYzsK fQoKLyogRWluc3RlbGx1bmdlbi1UYWIgKi8KLmVpbnN0ZWxsdW5nZW4tZm9ybSB7IG1heC13aWR0 aDogNzIwcHg7IH0KLmVpbnN0ZWxsdW5nZW4tZm9ybSAuZm9ybS1ncnVwcGUgeyBtYXJnaW4tYm90 dG9tOiAxNnB4OyB9Ci5laW5zdGVsbHVuZ2VuLWZvcm0gbGFiZWwgeyBkaXNwbGF5OiBibG9jazsg Zm9udC13ZWlnaHQ6IDYwMDsgbWFyZ2luLWJvdHRvbTogNHB4OyBjb2xvcjogdmFyKC0tdGV4dC1o ZWFkaW5nKTsgZm9udC1zaXplOiB2YXIoLS1mcy1tZCk7IH0KLmVpbnN0ZWxsdW5nZW4tZm9ybSB0 ZXh0YXJlYSB7IGZvbnQtZmFtaWx5OiBpbmhlcml0OyByZXNpemU6IHZlcnRpY2FsOyB9CgovKiBM ZWdlbmRlICovCi53cC1sZWdlbmRlIHsKICAgIGRpc3BsYXk6IGZsZXg7IGdhcDogMjBweDsgcGFk ZGluZzogOHB4IDE2cHg7CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1iZy10b29sYmFyKTsgYm9yZGVy LXRvcDogMXB4IHNvbGlkIHZhcigtLWJvcmRlci1jb2xvcik7CiAgICBmb250LXNpemU6IHZhcigt LWZzLXNtKTsgY29sb3I6IHZhcigtLXRleHQtc2Vjb25kYXJ5KTsKfQoud3AtbGVnLWl0ZW0geyBk aXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBnYXA6IDVweDsgfQoud3AtbGVnLWRv dCB7CiAgICB3aWR0aDogMTBweDsgaGVpZ2h0OiAxMHB4OyBib3JkZXItcmFkaXVzOiAycHg7IGRp c3BsYXk6IGlubGluZS1ibG9jazsKfQoKLyogPT09PT0gUGVyc8O2bmxpY2hlciBQbGFuID09PT09 ICovCi5wcC1sYXlvdXQgewogICAgZGlzcGxheTogZmxleDsgZmxleC1kaXJlY3Rpb246IGNvbHVt bjsgZmxleDogMTsgb3ZlcmZsb3c6IGhpZGRlbjsKfQoucHAtdG9vbGJhciB7CiAgICBkaXNwbGF5 OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBnYXA6IDhweDsKICAgIHBhZGRpbmc6IDhweCAx NnB4OwogICAgYmFja2dyb3VuZDogdmFyKC0tYmctdG9vbGJhcik7CiAgICBib3JkZXItYm90dG9t OiAxcHggc29saWQgdmFyKC0tYm9yZGVyLWNvbG9yKTsKfQoucHAtc2Nyb2xsIHsKICAgIGZsZXg6 IDE7IG92ZXJmbG93OiBhdXRvOyBwYWRkaW5nOiAyMHB4IDI0cHg7Cn0KLnBwLXRpdGVsIHsKICAg IGZvbnQtc2l6ZTogMThweDsgZm9udC13ZWlnaHQ6IDcwMDsgY29sb3I6IHZhcigtLXRleHQtaGVh ZGluZyk7CiAgICBtYXJnaW4tYm90dG9tOiAxNnB4Owp9Ci5wcC1tb25hdGUgewogICAgZGlzcGxh eTogZmxleDsgZmxleC13cmFwOiB3cmFwOyBnYXA6IDIwcHg7Cn0KCi8qIE1vbmF0c2Jsb2NrICov Ci5wcC1tb25hdCB7CiAgICBib3JkZXI6IDJweCBzb2xpZCB2YXIoLS1ib3JkZXItc3Ryb25nKTsK ICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1tZCk7CiAgICBvdmVyZmxvdzogaGlkZGVu OwogICAgd2lkdGg6IDMyMHB4OwogICAgYm94LXNoYWRvdzogMCAxcHggNHB4IHZhcigtLXNoYWRv dy1saWdodCk7Cn0KLnBwLW1vbmF0LWtvcGYgewogICAgYmFja2dyb3VuZDogdmFyKC0tYmctcHJp bWFyeSk7CiAgICBjb2xvcjogdmFyKC0tdGV4dC1vbi1wcmltYXJ5KTsKICAgIHBhZGRpbmc6IDhw eCAxMnB4OwogICAgZm9udC13ZWlnaHQ6IDcwMDsKICAgIGZvbnQtc2l6ZTogdmFyKC0tZnMtbWQp OwogICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgbGV0dGVyLXNwYWNpbmc6IDAuNXB4Owp9Ci5w cC1tb25hdC1ncmlkIHsKICAgIGRpc3BsYXk6IGdyaWQ7CiAgICBncmlkLXRlbXBsYXRlLWNvbHVt bnM6IHJlcGVhdCg3LCAxZnIpOwogICAgZm9udC1zaXplOiB2YXIoLS1mcy1zbSk7CiAgICBiYWNr Z3JvdW5kOiB2YXIoLS1iZy1jYXJkKTsKfQoucHAtd3Qta29wZiB7CiAgICBiYWNrZ3JvdW5kOiB2 YXIoLS1iZy1jYXJkLWFsdCk7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICBwYWRkaW5nOiA1 cHggMDsKICAgIGZvbnQtd2VpZ2h0OiA3MDA7CiAgICBmb250LXNpemU6IHZhcigtLWZzLXhzKTsK ICAgIGNvbG9yOiB2YXIoLS10ZXh0LXNlY29uZGFyeSk7CiAgICBib3JkZXItYm90dG9tOiAycHgg c29saWQgdmFyKC0tYm9yZGVyLXN0cm9uZyk7Cn0KLyogU2EvU28tS8O2cGZlIGR1bmtsZXIgKi8K LnBwLXd0LWtvcGY6bnRoLWNoaWxkKDYpLAoucHAtd3Qta29wZjpudGgtY2hpbGQoNykgewogICAg YmFja2dyb3VuZDogI0RDRTRGMDsKICAgIGNvbG9yOiAjMkMzRTUwOwp9CltkYXRhLXRoZW1lPSJu aWdodCJdIC5wcC13dC1rb3BmOm50aC1jaGlsZCg2KSwKW2RhdGEtdGhlbWU9Im5pZ2h0Il0gLnBw LXd0LWtvcGY6bnRoLWNoaWxkKDcpIHsKICAgIGJhY2tncm91bmQ6ICMyNTM1NDc7CiAgICBjb2xv cjogI0EwQjhEMDsKfQoKLnBwLXRhZyB7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICBwYWRk aW5nOiAzcHggMnB4OwogICAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgdmFyKC0tYm9yZGVyLWxp Z2h0KTsKICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1ib3JkZXItbGlnaHQpOwog ICAgbWluLWhlaWdodDogNDJweDsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBmbGV4LWRpcmVjdGlv bjogY29sdW1uOwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIGp1c3RpZnktY29udGVudDog Y2VudGVyOwogICAgZ2FwOiAycHg7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7Cn0KLyogSmVkZSBX b2NoZSB0cmVubmVuIOKAlCBhbGxlIDcgWmVsbGVuIGVpbmUgc3TDpHJrZXJlIHVudGVyZSBMaW5p ZSAqLwoucHAtdGFnOm50aC1jaGlsZCg3bisxNCkgeyBib3JkZXItcmlnaHQ6IG5vbmU7IH0KCi5w cC10YWctbnIgewogICAgZm9udC1zaXplOiB2YXIoLS1mcy14cyk7CiAgICBmb250LXdlaWdodDog NjAwOwogICAgY29sb3I6IHZhcigtLXRleHQtc2Vjb25kYXJ5KTsKICAgIGxpbmUtaGVpZ2h0OiAx Owp9Ci5wcC10YWctd2VydCB7CiAgICBmb250LXNpemU6IHZhcigtLWZzLXhzKTsKICAgIGZvbnQt d2VpZ2h0OiA3MDA7CiAgICBwYWRkaW5nOiAycHggNHB4OwogICAgYm9yZGVyLXJhZGl1czogdmFy KC0tcmFkaXVzLXhzKTsKICAgIGxpbmUtaGVpZ2h0OiAxLjI7Cn0KLnBwLXRhZy1sZWVyIHsKICAg IGJhY2tncm91bmQ6IHZhcigtLWJnLWNhcmQtYWx0KTsKICAgIGJvcmRlci1jb2xvcjogdmFyKC0t YmctY2FyZC1hbHQpOwp9Ci5wcC10YWctd2UgewogICAgYmFja2dyb3VuZDogI0VERjJGODsKICAg IGJvcmRlci1ib3R0b20tY29sb3I6ICNENERFRUM7Cn0KLnBwLXRhZy13ZSAucHAtdGFnLW5yIHsg Y29sb3I6ICM0QTZBOEM7IGZvbnQtd2VpZ2h0OiA3MDA7IH0KW2RhdGEtdGhlbWU9Im5pZ2h0Il0g LnBwLXRhZy13ZSB7CiAgICBiYWNrZ3JvdW5kOiAjMUYyQTM4OwogICAgYm9yZGVyLWJvdHRvbS1j b2xvcjogIzJEM0U1NTsKfQpbZGF0YS10aGVtZT0ibmlnaHQiXSAucHAtdGFnLXdlIC5wcC10YWct bnIgeyBjb2xvcjogI0EwQjhEMDsgfQoKLnBwLXRhZy1mdCB7CiAgICBiYWNrZ3JvdW5kOiAjRDdF NEYwOwogICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogI0IwQzREODsKfQoucHAtdGFnLWZ0IC5wcC10 YWctbnIgeyBjb2xvcjogIzJDM0U1MDsgZm9udC13ZWlnaHQ6IDcwMDsgfQpbZGF0YS10aGVtZT0i bmlnaHQiXSAucHAtdGFnLWZ0IHsKICAgIGJhY2tncm91bmQ6ICMyNTM1NDc7CiAgICBib3JkZXIt Ym90dG9tLWNvbG9yOiAjMzg1MjcwOwp9CltkYXRhLXRoZW1lPSJuaWdodCJdIC5wcC10YWctZnQg LnBwLXRhZy1uciB7IGNvbG9yOiAjQzlENkU0OyB9CgoucHAtdGFnLWhldXRlIHsKICAgIG91dGxp bmU6IDNweCBzb2xpZCB2YXIoLS10YWctaGV1dGUpOwogICAgb3V0bGluZS1vZmZzZXQ6IC0zcHg7 CiAgICB6LWluZGV4OiAxOwp9Ci5wcC10YWcta29tbWVudGFyOjphZnRlciB7CiAgICBjb250ZW50 OiAnJzsgcG9zaXRpb246IGFic29sdXRlOyB0b3A6IDFweDsgcmlnaHQ6IDFweDsKICAgIHdpZHRo OiAwOyBoZWlnaHQ6IDA7CiAgICBib3JkZXItbGVmdDogNnB4IHNvbGlkIHRyYW5zcGFyZW50Owog ICAgYm9yZGVyLXRvcDogNnB4IHNvbGlkICNENEEwMTc7Cn0KCi8qIFN1bW1hcnkgKi8KLnBwLXN1 bW1hcnkgewogICAgbWFyZ2luLXRvcDogMjBweDsKICAgIHBhZGRpbmc6IDE2cHg7CiAgICBiYWNr Z3JvdW5kOiB2YXIoLS1iZy1jYXJkLWFsdCk7CiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRp dXMtbWQpOwogICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tYm9yZGVyLWNvbG9yKTsKfQoucHAt c3VtbWFyeSBoMyB7CiAgICBmb250LXNpemU6IHZhcigtLWZzLWxnKTsgY29sb3I6IHZhcigtLXRl eHQtaGVhZGluZyk7IG1hcmdpbi1ib3R0b206IDEwcHg7Cn0KLnBwLXN1bW1hcnktZ3JpZCB7CiAg ICBkaXNwbGF5OiBncmlkOyBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdChhdXRvLWZpbGws IG1pbm1heCgxMjBweCwgMWZyKSk7IGdhcDogOHB4Owp9Ci5wcC1zdGF0LWl0ZW0gewogICAgZGlz cGxheTogZmxleDsgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgYWxpZ24taXRlbXM6IGNlbnRlcjsK ICAgIHBhZGRpbmc6IDhweDsgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLXNtKTsgYmFja2dy b3VuZDogdmFyKC0tYmctY2FyZCk7CiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1ib3JkZXIt bGlnaHQpOwp9Ci5wcC1zdGF0LXphaGwgeyBmb250LXNpemU6IDIwcHg7IGZvbnQtd2VpZ2h0OiA3 MDA7IH0KLnBwLXN0YXQtbGFiZWwgeyBmb250LXNpemU6IHZhcigtLWZzLXhzKTsgY29sb3I6IHZh cigtLXRleHQtbXV0ZWQpOyB0ZXh0LWFsaWduOiBjZW50ZXI7IH0KCi8qIFplbGwtS29tbWVudGFy LUluZGlrYXRvciBpbSBHcmlkLiBTY2hsaWNodGVzIERyZWllY2sgZnVlciBlaW5lbgogICBLb21t ZW50YXI7IGFiIHp3ZWkgS29tbWVudGFyZW4genVzYWV0emxpY2ggZWluIGtsZWluZXIgQ291bnRl ci1CYWRnZQogICB1bnRlbiByZWNodHMgbWl0IGRlciBBbnphaGwuICovCi5ncmlkLXplbGxlLmhh dC1rb21tZW50YXIgeyBwb3NpdGlvbjogcmVsYXRpdmU7IH0KLmdyaWQtemVsbGUuaGF0LWtvbW1l bnRhcjo6YWZ0ZXIgewogICAgY29udGVudDogJyc7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAw OyByaWdodDogMDsKICAgIHdpZHRoOiAwOyBoZWlnaHQ6IDA7CiAgICBib3JkZXItbGVmdDogNnB4 IHNvbGlkIHRyYW5zcGFyZW50OwogICAgYm9yZGVyLXRvcDogNnB4IHNvbGlkICNENEEwMTc7Cn0K LmdyaWQtemVsbGUuaGF0LWtvbW1lbnRhcltkYXRhLWtvbW1lbnRhci1hbnphaGxdOjpiZWZvcmUg ewogICAgY29udGVudDogYXR0cihkYXRhLWtvbW1lbnRhci1hbnphaGwpOwogICAgcG9zaXRpb246 IGFic29sdXRlOyBib3R0b206IDFweDsgcmlnaHQ6IDFweDsKICAgIGJhY2tncm91bmQ6ICNENEEw MTc7CiAgICBjb2xvcjogd2hpdGU7CiAgICBmb250LXNpemU6IDhweDsgZm9udC13ZWlnaHQ6IDcw MDsKICAgIGxpbmUtaGVpZ2h0OiAxOwogICAgcGFkZGluZzogMXB4IDNweDsKICAgIGJvcmRlci1y YWRpdXM6IHZhcigtLXJhZGl1cy1tZCk7CiAgICBtaW4td2lkdGg6IDlweDsKICAgIHRleHQtYWxp Z246IGNlbnRlcjsKICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwp9CgovKiA9PT09PSBLb21tZW50 YXItUG9wb3ZlciA9PT09PQogICBIVE1MLVBvcG92ZXIgc3RhdHQgZWluemVpbGlnZXIgbmF0aXZl IHRpdGxlLVRvb2x0aXAuIFN0cnVrdHVyaWVydCBpbgogICBLb3BmIChJY29uICsgRGF0dW0pLCBC b2R5IChNZWhyemVpbGVyLUtvbW1lbnRhcikgdW5kIEZ1c3MgKFZlcmZhc3NlciArCiAgIFplaXRz dGVtcGVsKS4gVGFnL05hY2h0IHVlYmVyIENTUy1WYXJpYWJsZW4gKC0tYmctY2FyZCwgLS1ib3Jk ZXItKikuCiAgIFNjaG1hbGVyIGFscyBkYXMgUGVyc29uLVBvcG92ZXIsIHdlaWwgaGllciBudXIg VGV4dCBzdGVodC4gKi8KLnZpMy1rb21tZW50YXItcG9wb3ZlciB7CiAgICBwb3NpdGlvbjogZml4 ZWQ7CiAgICB6LWluZGV4OiB2YXIoLS16LXBvcG92ZXItcGFnZSk7CiAgICB3aWR0aDogMzIwcHg7 CiAgICBtYXgtd2lkdGg6IGNhbGMoMTAwdncgLSAxMnB4KTsKICAgIGJhY2tncm91bmQ6IHZhcigt LWJnLWNhcmQpOwogICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tYm9yZGVyLXN0cm9uZyk7CiAg ICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbGcpOwogICAgYm94LXNoYWRvdzogMCA4cHgg MjRweCByZ2JhKDAsMCwwLDAuMjgpOwogICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgIHBvaW50ZXIt ZXZlbnRzOiBhdXRvOwogICAgZm9udC1zaXplOiB2YXIoLS1mcy1tZCk7CiAgICBsaW5lLWhlaWdo dDogMS41OwogICAgY29sb3I6IHZhcigtLXRleHQtcHJpbWFyeSk7Cn0KLnZpMy1rb21tZW50YXIt cG9wb3Zlci52ZXJzdGVja3QgeyBkaXNwbGF5OiBub25lOyB9Cgoua3Ata29wZiB7CiAgICBkaXNw bGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBnYXA6IDhweDsKICAgIHBhZGRpbmc6IDhw eCAxMnB4OwogICAgYmFja2dyb3VuZDogdmFyKC0tYmctY2FyZC1hbHQpOwogICAgYm9yZGVyLWJv dHRvbTogMXB4IHNvbGlkIHZhcigtLWJvcmRlci1saWdodCk7Cn0KLmtwLWtvcGYtaWNvbiB7IGZv bnQtc2l6ZTogdmFyKC0tZnMtbGcpOyB9Ci5rcC1rb3BmLXRpdGVsIHsKICAgIGZvbnQtd2VpZ2h0 OiA3MDA7CiAgICBjb2xvcjogdmFyKC0tdGV4dC1oZWFkaW5nKTsKICAgIGZvbnQtc2l6ZTogMTIu NXB4OwogICAgbGV0dGVyLXNwYWNpbmc6IDAuMnB4Owp9Ci5rcC1rb3BmLWRhdHVtIHsKICAgIG1h cmdpbi1sZWZ0OiBhdXRvOwogICAgZm9udC1zaXplOiAxMS41cHg7CiAgICBjb2xvcjogdmFyKC0t dGV4dC1tdXRlZCk7CiAgICBmb250LXZhcmlhbnQtbnVtZXJpYzogdGFidWxhci1udW1zOwp9Cgou a3AtYm9keSB7CiAgICBwYWRkaW5nOiAxMHB4IDEycHg7CiAgICB3aGl0ZS1zcGFjZTogbm9ybWFs OwogICAgd29yZC13cmFwOiBicmVhay13b3JkOwogICAgY29sb3I6IHZhcigtLXRleHQtcHJpbWFy eSk7CiAgICAvKiBNZWhyemVpbGVyIG5pY2h0IHp1IGhvY2ggd2VyZGVuIGxhc3NlbjsgYmVpIHNl aHIgbGFuZ2VtIFRleHQgc2Nyb2xsZW4uICovCiAgICBtYXgtaGVpZ2h0OiAyODBweDsKICAgIG92 ZXJmbG93LXk6IGF1dG87Cn0KLyogU3RhY2stVmFyaWFudGUgKFN0dWZlIDIpOiBtZWhyZXJlIEtv bW1lbnRhci1FaW50cmFlZ2UgdWViZXJlaW5hbmRlci4KICAgSmVkZXIgRWludHJhZyBpc3QgZWlu ZSBlaWdlbmUgS2FydGUgbWl0IFRleHQgKyBNZXRhLVplaWxlLiBUcmVubmxpbmllbgogICBzdGF0 dCB2b2xsc3RhZW5kaWdlciBCb3hlbiDigJQga29tcGFrdGVyIGFscyBuZXN0ZWQgQ2FyZHMgaW0g UG9wb3Zlci4gKi8KLmtwLWJvZHktc3RhY2sgewogICAgcGFkZGluZzogMDsKICAgIGRpc3BsYXk6 IGZsZXg7IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47Cn0KLmtwLWVpbnRyYWcgewogICAgcGFkZGlu ZzogOHB4IDEycHg7CiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tYm9yZGVyLWxp Z2h0KTsKfQoua3AtZWludHJhZzpsYXN0LWNoaWxkIHsgYm9yZGVyLWJvdHRvbTogbm9uZTsgfQou a3AtZWludHJhZy10ZXh0IHsKICAgIGNvbG9yOiB2YXIoLS10ZXh0LXByaW1hcnkpOwogICAgbGlu ZS1oZWlnaHQ6IDEuNTsKICAgIHdvcmQtd3JhcDogYnJlYWstd29yZDsKfQoua3AtZWludHJhZy1t ZXRhIHsKICAgIGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGdhcDogNnB4Owog ICAgbWFyZ2luLXRvcDogNHB4OwogICAgZm9udC1zaXplOiB2YXIoLS1mcy1zbSk7CiAgICBjb2xv cjogdmFyKC0tdGV4dC1tdXRlZCk7Cn0KLmtwLWVpbnRyYWctYXV0b3IgeyBjb2xvcjogdmFyKC0t dGV4dC1zZWNvbmRhcnkpOyBmb250LXdlaWdodDogNjAwOyB9Ci5rcC1laW50cmFnLXRyZW5uZXIg eyBvcGFjaXR5OiAwLjY7IH0KLmtwLWVpbnRyYWctemVpdCB7IGZvbnQtdmFyaWFudC1udW1lcmlj OiB0YWJ1bGFyLW51bXM7IH0KCi8qIEVkaXRvci1Lb21tZW50YXItQmVyZWljaCAqLwouZWRpdG9y LWtvbW1lbnRhciB7CiAgICBwYWRkaW5nOiA2cHggOHB4OwogICAgYm9yZGVyLXRvcDogMXB4IHNv bGlkIHZhcigtLWJvcmRlci1saWdodCk7CiAgICBkaXNwbGF5OiBmbGV4OyBmbGV4LWRpcmVjdGlv bjogY29sdW1uOyBnYXA6IDRweDsKfQouZWRpdG9yLWtvbW1lbnRhci1idG5zIHsKICAgIGRpc3Bs YXk6IGZsZXg7IGdhcDogNHB4Owp9CgovKiBLb21tZW50YXItVmVybGF1ZiBpbSBFZGl0b3IgKFN0 dWZlIDIpIOKAlCBTdGFjayBhbHRlciBFaW50cmFlZ2UgdWViZXIgZGVtCiAgIGxlZXJlbiBFaW5n YWJlZmVsZC4gTmV1ZXN0ZSBvYmVuLiBMb2VzY2gtSWNvbiBudXIgZnVlciBCZXJlY2h0aWd0ZS4g Ki8KLmVkaXRvci1rb21tZW50YXItdmVybGF1ZiB7CiAgICBkaXNwbGF5OiBmbGV4OyBmbGV4LWRp cmVjdGlvbjogY29sdW1uOyBnYXA6IDRweDsKICAgIG1heC1oZWlnaHQ6IDE4MHB4OwogICAgb3Zl cmZsb3cteTogYXV0bzsKICAgIG1hcmdpbi1ib3R0b206IDRweDsKfQouZWRpdG9yLWtvbW1lbnRh ci12ZXJsYXVmOmVtcHR5IHsgZGlzcGxheTogbm9uZTsgfQouZWt2LWxlZXIgewogICAgZm9udC1z aXplOiAxMC41cHg7CiAgICBjb2xvcjogdmFyKC0tdGV4dC1tdXRlZCk7CiAgICBmb250LXN0eWxl OiBpdGFsaWM7CiAgICBwYWRkaW5nOiAycHggNHB4Owp9Ci5la3YtZWludHJhZyB7CiAgICBiYWNr Z3JvdW5kOiB2YXIoLS1iZy1jYXJkLWFsdCk7CiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1i b3JkZXItbGlnaHQpOwogICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLXNtKTsKICAgIHBh ZGRpbmc6IDRweCA2cHg7CiAgICBmb250LXNpemU6IHZhcigtLWZzLXNtKTsKfQouZWt2LXRleHQg ewogICAgY29sb3I6IHZhcigtLXRleHQtcHJpbWFyeSk7CiAgICBsaW5lLWhlaWdodDogMS40Owog ICAgd29yZC13cmFwOiBicmVhay13b3JkOwp9Ci5la3YtbWV0YSB7CiAgICBkaXNwbGF5OiBmbGV4 OyBhbGlnbi1pdGVtczogY2VudGVyOyBnYXA6IDJweDsKICAgIGZvbnQtc2l6ZTogdmFyKC0tZnMt eHMpOwogICAgY29sb3I6IHZhcigtLXRleHQtbXV0ZWQpOwogICAgbWFyZ2luLXRvcDogMnB4Owp9 Ci5la3YtbWV0YS1hdXRvciB7IGNvbG9yOiB2YXIoLS10ZXh0LXNlY29uZGFyeSk7IGZvbnQtd2Vp Z2h0OiA2MDA7IH0KLmVrdi1tZXRhLXplaXQgeyBmb250LXZhcmlhbnQtbnVtZXJpYzogdGFidWxh ci1udW1zOyB9Ci5la3YtbG9lc2NoZW4gewogICAgbWFyZ2luLWxlZnQ6IGF1dG87CiAgICBib3Jk ZXI6IG5vbmU7IGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwogICAgY29sb3I6IHZhcigtLXRleHQt bXV0ZWQpOwogICAgY3Vyc29yOiBwb2ludGVyOwogICAgZm9udC1zaXplOiB2YXIoLS1mcy1iYXNl KTsKICAgIGxpbmUtaGVpZ2h0OiAxOwogICAgcGFkZGluZzogMnB4IDRweDsKICAgIGJvcmRlci1y YWRpdXM6IHZhcigtLXJhZGl1cy14cyk7CiAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIDAuMTJz LCBjb2xvciAwLjEyczsKfQouZWt2LWxvZXNjaGVuOmhvdmVyIHsKICAgIGJhY2tncm91bmQ6IHZh cigtLWZhcmJlLWdlZmFociwgI2MwMzkyYik7CiAgICBjb2xvcjogd2hpdGU7Cn0KCi8qID09PT09 IExvZ2J1Y2ggPT09PT0gKi8KLmxheW91dC1sb2didWNoeyBvdmVyZmxvdy15OiBhdXRvOyBwYWRk aW5nOiAyNHB4IDMycHg7IGZsZXg6IDE7IH0KCi8qIFRhYmVsbGVuLUdydW5kbGF5b3V0IGV0d2Fz IGdyb3NzenVlZ2lnZXIgYWxzIGRpZSBnZW5lcmlzY2hlIC5hZG1pbi10YWJlbGxlOgogICBtZWhy IFZlcnRpa2FscmF1bSBwcm8gWmVpbGUsIGRlemVudGVyZSBaZWJyYS1TdHJlaWZlbiwga2xhcmVz IEhvdmVyLiAqLwojbG9nLXRhYmVsbGUgeyBib3JkZXItY29sbGFwc2U6IHNlcGFyYXRlOyBib3Jk ZXItc3BhY2luZzogMDsgfQojbG9nLXRhYmVsbGUgdGhlYWQgdGggewogICAgcG9zaXRpb246IHN0 aWNreTsgdG9wOiAwOyB6LWluZGV4OiAyOwogICAgYmFja2dyb3VuZDogdmFyKC0tYmctY2FyZC1h bHQpOwogICAgY29sb3I6IHZhcigtLXRleHQtc2Vjb25kYXJ5KTsKICAgIGZvbnQtd2VpZ2h0OiA2 MDA7IGZvbnQtc2l6ZTogdmFyKC0tZnMtc20pOyBsZXR0ZXItc3BhY2luZzogMC4wNGVtOyB0ZXh0 LXRyYW5zZm9ybTogdXBwZXJjYXNlOwogICAgcGFkZGluZzogMTBweCAxMnB4OwogICAgYm9yZGVy LWJvdHRvbTogMnB4IHNvbGlkIHZhcigtLWJvcmRlci1saWdodCk7Cn0KI2xvZy10YWJlbGxlIHRi b2R5IHRkIHsKICAgIHBhZGRpbmc6IDEwcHggMTJweDsKICAgIGJvcmRlci1ib3R0b206IDFweCBz b2xpZCB2YXIoLS1ib3JkZXItbGlnaHQpOwogICAgdmVydGljYWwtYWxpZ246IHRvcDsKICAgIGZv bnQtc2l6ZTogdmFyKC0tZnMtbWQpOyBsaW5lLWhlaWdodDogMS40NTsKfQojbG9nLXRhYmVsbGUg dGJvZHkgdHI6bnRoLWNoaWxkKGV2ZW4pIHRkIHsgYmFja2dyb3VuZDogcmdiYSgwLDAsMCwwLjAx OCk7IH0KI2xvZy10YWJlbGxlIHRib2R5IHRyLmxvZy16ZWlsZTpob3ZlciB0ZCB7IGJhY2tncm91 bmQ6IHZhcigtLWJnLWhvdmVyKTsgfQoKLyogU3BhbHRlIDE6IFplaXQgLSB6d2VpemVpbGlnIChE YXR1bSBncm9zcyArIGhhbGJmZXR0LCBVaHJ6ZWl0IGtsZWluIG11dGVkKSAqLwoubG9nLXplaXQt emVsbGUgeyB3aGl0ZS1zcGFjZTogbm93cmFwOyB3aWR0aDogMTEwcHg7IH0KLmxvZy16ZWl0LWRh dHVtIHsgZm9udC13ZWlnaHQ6IDYwMDsgY29sb3I6IHZhcigtLXRleHQtaGVhZGluZyk7IGZvbnQt c2l6ZTogdmFyKC0tZnMtYmFzZSk7IH0KLmxvZy16ZWl0LXVocnplaXQgeyBjb2xvcjogdmFyKC0t dGV4dC1tdXRlZCk7IGZvbnQtc2l6ZTogdmFyKC0tZnMtc20pOyBtYXJnaW4tdG9wOiAxcHg7IGZv bnQtdmFyaWFudC1udW1lcmljOiB0YWJ1bGFyLW51bXM7IH0KCi8qIFNwYWx0ZSAyOiBBa3Rpb24g LSBmYXJiaWdlciBQaWxsIHBybyBLYXRlZ29yaWUuIFBhZGRpbmcgKyBCb3JkZXItUmFkaXVzCiAg IGdsZWljaGdyb3NzZSBPcHRpayB3aWUgZGllIHJlY2h0ZS1jYXJkLUFremVudGUsIGRhbWl0IGRh cyBMb2didWNoIHNpY2gKICAgZmFyYmxpY2ggaW4gZGVuIFJlc3QgZGVyIEFwcCBlaW5mdWVndC4g Ki8KLmxvZy1ha3Rpb24temVsbGUgeyB3aWR0aDogMjIwcHg7IH0KLmxvZy1waWxsIHsKICAgIGRp c3BsYXk6IGlubGluZS1ibG9jazsKICAgIHBhZGRpbmc6IDNweCA5cHg7CiAgICBib3JkZXItcmFk aXVzOiB2YXIoLS1yYWRpdXMtc20pOwogICAgZm9udC1zaXplOiB2YXIoLS1mcy1zbSk7IGZvbnQt d2VpZ2h0OiA2MDA7CiAgICBsaW5lLWhlaWdodDogMS40OwogICAgd2hpdGUtc3BhY2U6IG5vd3Jh cDsKICAgIGJhY2tncm91bmQ6IHJnYmEoMCwwLDAsMC4wNik7CiAgICBjb2xvcjogdmFyKC0tdGV4 dC1oZWFkaW5nKTsKICAgIGJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50Owp9Ci5sb2ctcGls bC1wbGFudW5nIHsgYmFja2dyb3VuZDogcmdiYSgzOSwxMzcsMTA5LDAuMTQpOyAgY29sb3I6ICMx RjZENUE7IGJvcmRlci1jb2xvcjogcmdiYSgzOSwxMzcsMTA5LDAuMjgpOyB9Ci5sb2ctcGlsbC1w ZXJzb24gIHsgYmFja2dyb3VuZDogcmdiYSgzMCw5NSwxNDAsMC4xNCk7ICAgY29sb3I6ICMxMzQy NjA7IGJvcmRlci1jb2xvcjogcmdiYSgzMCw5NSwxNDAsMC4yOCk7IH0KLmxvZy1waWxsLWFkbWlu ICAgeyBiYWNrZ3JvdW5kOiByZ2JhKDIwMiwxMTEsMzAsMC4xNik7ICBjb2xvcjogIzhBNEIxNDsg Ym9yZGVyLWNvbG9yOiByZ2JhKDIwMiwxMTEsMzAsMC4zMCk7IH0KLmxvZy1waWxsLXJvbGxlICAg eyBiYWNrZ3JvdW5kOiByZ2JhKDEwNiw3NiwxNDcsMC4xNik7ICBjb2xvcjogIzRCMzU2QjsgYm9y ZGVyLWNvbG9yOiByZ2JhKDEwNiw3NiwxNDcsMC4zMCk7IH0KLmxvZy1waWxsLWhpbndlaXMgeyBi YWNrZ3JvdW5kOiByZ2JhKDE0Miw2OCwxNzMsMC4xNik7ICBjb2xvcjogIzVFMkE3NzsgYm9yZGVy LWNvbG9yOiByZ2JhKDE0Miw2OCwxNzMsMC4zMCk7IH0KLmxvZy1waWxsLWJhY2t1cCAgeyBiYWNr Z3JvdW5kOiByZ2JhKDkxLDEyNSwxNzcsMC4xNik7ICBjb2xvcjogIzNBNTY4MDsgYm9yZGVyLWNv bG9yOiByZ2JhKDkxLDEyNSwxNzcsMC4zMCk7IH0KLmxvZy1waWxsLXN5c3RlbSAgeyBiYWNrZ3Jv dW5kOiByZ2JhKDE3Niw1OCw0NiwwLjE0KTsgICBjb2xvcjogIzdFMjkyMDsgYm9yZGVyLWNvbG9y OiByZ2JhKDE3Niw1OCw0NiwwLjMwKTsgfQoKLyogS2F0ZWdvcmllLUZpbHRlci1DaGlwcyB1ZWJl ciBkZXIgTG9nYnVjaC1UYWJlbGxlIChmdW5rdGlvbmFsLCBrb21iaW5pZXJ0CiAgIG1pdCBkZXIg VGV4dHN1Y2hlKS4gVm9uIGpzL2xvZ2J1Y2guanMgZHluYW1pc2NoIGluIGRlbiBLb3BmIGluaml6 aWVydC4gKi8KLmxvZy1rYXQtY2hpcHMgeyBkaXNwbGF5OiBmbGV4OyBmbGV4LXdyYXA6IHdyYXA7 IGdhcDogNnB4OyBtYXJnaW4tdG9wOiAxMHB4OyB9Ci5sb2cta2F0LWNoaXAgewogICAgY3Vyc29y OiBwb2ludGVyOwogICAgcGFkZGluZzogNHB4IDEycHg7CiAgICBib3JkZXItcmFkaXVzOiB2YXIo LS1yYWRpdXMtc20pOwogICAgZm9udC1zaXplOiB2YXIoLS1mcy1zbSk7IGZvbnQtd2VpZ2h0OiA2 MDA7CiAgICBsaW5lLWhlaWdodDogMS40OwogICAgYmFja2dyb3VuZDogdmFyKC0tYmctY2FyZC1h bHQpOwogICAgY29sb3I6IHZhcigtLXRleHQtc2Vjb25kYXJ5KTsKICAgIGJvcmRlcjogMXB4IHNv bGlkIHZhcigtLWJvcmRlci1jb2xvcik7CiAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIDAuMTJz LCBjb2xvciAwLjEycywgYm9yZGVyLWNvbG9yIDAuMTJzOwp9Ci5sb2cta2F0LWNoaXA6aG92ZXIg eyBib3JkZXItY29sb3I6IHZhcigtLWJnLXByaW1hcnkpOyBjb2xvcjogdmFyKC0tdGV4dC1oZWFk aW5nKTsgfQoubG9nLWthdC1jaGlwLmFrdGl2IHsKICAgIGJhY2tncm91bmQ6IHZhcigtLWJnLXBy aW1hcnkpOwogICAgY29sb3I6IHZhcigtLXRleHQtb24tcHJpbWFyeSk7CiAgICBib3JkZXItY29s b3I6IHZhcigtLWJnLXByaW1hcnkpOwp9CgovKiBTcGFsdGUgMzogQmVudXR6ZXIgLSBrbGVpbmVy IEluaXRpYWxlbi1BdmF0YXIgKEFudGhyYXppdCwgZ2xlaWNoZXIgTG9vawogICB3aWUgZGllIEFw cC13ZWl0ZW4gdmkzLWF2YXRhci1pbml0aWFsZW4pICsgTmFtZS4gKi8KLmxvZy1iZW51dHplci16 ZWxsZSB7IHdpZHRoOiAxODBweDsgd2hpdGUtc3BhY2U6IG5vd3JhcDsgfQoubG9nLWJlbnV0emVy LWF2YXRhciB7CiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsg anVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICB3aWR0aDogMjRweDsgaGVpZ2h0OiAyNHB4OyBi b3JkZXItcmFkaXVzOiA1cHg7CiAgICBiYWNrZ3JvdW5kOiAjM0EzRjQ3OyBjb2xvcjogI2ZmZjsK ICAgIGZvbnQtc2l6ZTogdmFyKC0tZnMteHMpOyBmb250LXdlaWdodDogNzAwOyBsZXR0ZXItc3Bh Y2luZzogMC4wMmVtOwogICAgbWFyZ2luLXJpZ2h0OiA4cHg7IHZlcnRpY2FsLWFsaWduOiBtaWRk bGU7CiAgICBmbGV4LXNocmluazogMDsKfQoubG9nLWJlbnV0emVyLW5hbWUgeyBjb2xvcjogdmFy KC0tdGV4dC1wcmltYXJ5KTsgZm9udC1zaXplOiAxMi41cHg7IHZlcnRpY2FsLWFsaWduOiBtaWRk bGU7IH0KCi8qIFNwYWx0ZSA0OiBEZXRhaWxzIC0gQ29kZS1UYWdzIHN1YnRpbGVyLCBQZmVpbGUg Z2VmYWVyYnQsIEJvbGQtU3ViamVrdGUKICAgdW5kIFNvZnQtTGVlci1QbGF0emhhbHRlci4gKi8K LmxvZy1kZXRhaWxzLXplbGxlIHsgY29sb3I6IHZhcigtLXRleHQtcHJpbWFyeSk7IH0KLmxvZy1k ZXRhaWxzLXplbGxlIGNvZGUgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgcGFkZGlu ZzogMXB4IDZweDsKICAgIGJhY2tncm91bmQ6IHJnYmEoMCwwLDAsMC4wNSk7CiAgICBib3JkZXI6 IDFweCBzb2xpZCB2YXIoLS1ib3JkZXItbGlnaHQpOwogICAgYm9yZGVyLXJhZGl1czogdmFyKC0t cmFkaXVzLXNtKTsKICAgIGZvbnQtZmFtaWx5OiB1aS1tb25vc3BhY2UsICJTRiBNb25vIiwgTWVu bG8sIENvbnNvbGFzLCBtb25vc3BhY2U7CiAgICBmb250LXNpemU6IDExLjVweDsKICAgIGNvbG9y OiB2YXIoLS10ZXh0LWhlYWRpbmcpOwogICAgbGluZS1oZWlnaHQ6IDEuNDsKICAgIG1heC13aWR0 aDogMzQwcHg7CiAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgdGV4dC1vdmVyZmxvdzogZWxsaXBz aXM7CiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwp9Ci5sb2ctZGV0YWlscy16ZWxsZSBiIHsg Y29sb3I6IHZhcigtLXRleHQtaGVhZGluZyk7IH0KLmxvZy1kZXRhaWxzLXplbGxlIC5sb2ctZGV0 YWlscy1sZWVyIHsgY29sb3I6IHZhcigtLXRleHQtbXV0ZWQpOyBmb250LXN0eWxlOiBpdGFsaWM7 IH0KCi8qIFNwYWx0ZSA1OiBXaWVkZXJoZXJzdGVsbGVuIC0ga29tcGFrdGUgUGlsbC1PcHRpay4g QXVmIHNjaG1hbGVuIENvbnRhaW5lcm4KICAgdmVyc2Nod2luZGV0IGRlciBUZXh0LCBudXIgZGFz IOKGui1JY29uIGJsZWlidCBzaWNodGJhci4gKi8KLmxvZy1yZXN0b3JlLXplbGxlIHsgd2lkdGg6 IDE1MHB4OyB0ZXh0LWFsaWduOiByaWdodDsgd2hpdGUtc3BhY2U6IG5vd3JhcDsgfQoubG9nLXJl c3RvcmUtYnRuIHsKICAgIGRpc3BsYXk6IGlubGluZS1mbGV4OyBhbGlnbi1pdGVtczogY2VudGVy OyBnYXA6IDVweDsKICAgIHBhZGRpbmc6IDRweCAxMHB4OwogICAgYmFja2dyb3VuZDogdmFyKC0t YmctY2FyZCk7CiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1ib3JkZXItbGlnaHQpOwogICAg Ym9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLXNtKTsKICAgIGNvbG9yOiB2YXIoLS10ZXh0LXNl Y29uZGFyeSk7CiAgICBmb250LXNpemU6IHZhcigtLWZzLXNtKTsgZm9udC13ZWlnaHQ6IDYwMDsK ICAgIGN1cnNvcjogcG9pbnRlcjsKICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQgMC4xMnMsIGJv cmRlci1jb2xvciAwLjEycywgY29sb3IgMC4xMnM7Cn0KLmxvZy1yZXN0b3JlLWJ0bjpob3ZlciB7 CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1ob3Zlcik7CiAgICBib3JkZXItY29sb3I6IHZhcigt LXBvbGl6ZWktYmxhdSwgIzAwNjNhZik7CiAgICBjb2xvcjogdmFyKC0tcG9saXplaS1ibGF1LCAj MDA2M2FmKTsKfQoubG9nLXJlc3RvcmUtaWNvbiB7IGZvbnQtc2l6ZTogdmFyKC0tZnMtbWQpOyBs aW5lLWhlaWdodDogMTsgfQoKLyogU3VjaC1JbnB1dCBvYmVuIHJlY2h0czogZ2xlaWNoZXIgTG9v ayB3aWUgZGVyIEdydXBwZW4tRmlsdGVyIGluIGRlciBTdGF0aXN0aWsuICovCiNsb2ctc3VjaGUg eyBmb250LXNpemU6IHZhcigtLWZzLWJhc2UpOyB9CgovKiBEYXJrLU1vZGUtQW5wYXNzdW5nIGRl ciBQaWxsczogSGludGVyZ3J1bmQtQWxwaGFzIGxlaWNodCBob2NoemllaGVuLAogICBkYW1pdCBk aWUgRmFyYmVuIGF1ZiBkdW5rbGVtIFVudGVyZ3J1bmQgc2ljaHRiYXIgYmxlaWJlbi4gKi8KW2Rh dGEtdGhlbWU9Im5pZ2h0Il0gLmxvZy1waWxsLXBsYW51bmcgeyBiYWNrZ3JvdW5kOiByZ2JhKDM5 LDEzNywxMDksMC4yOCk7ICBjb2xvcjogIzZBRDBBQzsgYm9yZGVyLWNvbG9yOiByZ2JhKDM5LDEz NywxMDksMC40NSk7IH0KW2RhdGEtdGhlbWU9Im5pZ2h0Il0gLmxvZy1waWxsLXBlcnNvbiAgeyBi YWNrZ3JvdW5kOiByZ2JhKDMwLDk1LDE0MCwwLjMwKTsgICBjb2xvcjogIzZGQjNERTsgYm9yZGVy LWNvbG9yOiByZ2JhKDMwLDk1LDE0MCwwLjUwKTsgfQpbZGF0YS10aGVtZT0ibmlnaHQiXSAubG9n LXBpbGwtYWRtaW4gICB7IGJhY2tncm91bmQ6IHJnYmEoMjAyLDExMSwzMCwwLjMwKTsgIGNvbG9y OiAjRjJCMjc0OyBib3JkZXItY29sb3I6IHJnYmEoMjAyLDExMSwzMCwwLjUwKTsgfQpbZGF0YS10 aGVtZT0ibmlnaHQiXSAubG9nLXBpbGwtcm9sbGUgICB7IGJhY2tncm91bmQ6IHJnYmEoMTA2LDc2 LDE0NywwLjMyKTsgIGNvbG9yOiAjQjg5QUUwOyBib3JkZXItY29sb3I6IHJnYmEoMTA2LDc2LDE0 NywwLjUwKTsgfQpbZGF0YS10aGVtZT0ibmlnaHQiXSAubG9nLXBpbGwtaGlud2VpcyB7IGJhY2tn cm91bmQ6IHJnYmEoMTQyLDY4LDE3MywwLjMyKTsgIGNvbG9yOiAjQzg5M0UwOyBib3JkZXItY29s b3I6IHJnYmEoMTQyLDY4LDE3MywwLjUwKTsgfQpbZGF0YS10aGVtZT0ibmlnaHQiXSAubG9nLXBp bGwtYmFja3VwICB7IGJhY2tncm91bmQ6IHJnYmEoOTEsMTI1LDE3NywwLjMwKTsgIGNvbG9yOiAj OThCNURDOyBib3JkZXItY29sb3I6IHJnYmEoOTEsMTI1LDE3NywwLjUwKTsgfQpbZGF0YS10aGVt ZT0ibmlnaHQiXSAubG9nLXBpbGwtc3lzdGVtICB7IGJhY2tncm91bmQ6IHJnYmEoMTc2LDU4LDQ2 LDAuMjgpOyAgIGNvbG9yOiAjRTU4NTc1OyBib3JkZXItY29sb3I6IHJnYmEoMTc2LDU4LDQ2LDAu NDUpOyB9CltkYXRhLXRoZW1lPSJuaWdodCJdICNsb2ctdGFiZWxsZSB0Ym9keSB0cjpudGgtY2hp bGQoZXZlbikgdGQgeyBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwyNTUsMjU1LDAuMDI1KTsgfQoKLyog PT09PT0gTW9kYWxlIERpYWxvZ2UgPT09PT0gKi8KLm1vZGFsIHsKICAgIHBvc2l0aW9uOiBmaXhl ZDsgaW5zZXQ6IDA7IHotaW5kZXg6IHZhcigtLXotbW9kYWwpOwogICAgYmFja2dyb3VuZDogcmdi YSgwLDAsMCwwLjQpOyBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBqdXN0aWZ5 LWNvbnRlbnQ6IGNlbnRlcjsKICAgIGFuaW1hdGlvbjogZmFkZUluIDAuMTVzIGVhc2U7Cn0KLm1v ZGFsLWluaGFsdCB7CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1jYXJkKTsgYm9yZGVyLXJhZGl1 czogdmFyKC0tcmFkaXVzLWxnKTsKICAgIGJveC1zaGFkb3c6IHZhcigtLXNoYWRvdy1tb2RhbCk7 CiAgICB3aWR0aDogOTAlOyBtYXgtd2lkdGg6IDYyMHB4OyBtYXgtaGVpZ2h0OiA4MHZoOyBkaXNw bGF5OiBmbGV4OyBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwp9Ci8qIFNwZXppYWwtS2xhc3NlIGZ1 ZXIgTW9kYWxzIG1pdCB2aWVsIEluaGFsdCAoRS1NYWlsLVZvcmxhZ2VuLUVkaXRvciBldGMuKSAq LwoubW9kYWwtaW5oYWx0Lm1vZGFsLWluaGFsdC1ncm9zcyB7IG1heC13aWR0aDogMTE4MHB4OyBt YXgtaGVpZ2h0OiA5MnZoOyB9Ci5tb2RhbC1rb3BmIHsKICAgIGRpc3BsYXk6IGZsZXg7IGFsaWdu LWl0ZW1zOiBjZW50ZXI7IGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsKICAgIGJhY2tn cm91bmQ6IHZhcigtLWJnLXByaW1hcnkpOyBjb2xvcjogdmFyKC0tdGV4dC1vbi1wcmltYXJ5KTsK ICAgIHBhZGRpbmc6IDE0cHggMjBweDsgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLWxnKSAx MHB4IDAgMDsKfQoubW9kYWwta29wZiBoMiB7IGZvbnQtc2l6ZTogMTVweDsgZm9udC13ZWlnaHQ6 IDYwMDsgfQoubW9kYWwtc2NobGllc3NlbiB7CiAgICBiYWNrZ3JvdW5kOiBub25lOyBib3JkZXI6 IG5vbmU7IGNvbG9yOiB2YXIoLS10ZXh0LW9uLXByaW1hcnkpOwogICAgZm9udC1zaXplOiAyMnB4 OyBjdXJzb3I6IHBvaW50ZXI7IGxpbmUtaGVpZ2h0OiAxOyBwYWRkaW5nOiAwIDRweDsgb3BhY2l0 eTogMC43Owp9Ci5tb2RhbC1zY2hsaWVzc2VuOmhvdmVyIHsgb3BhY2l0eTogMTsgfQoubW9kYWwt a29lcnBlciB7IHBhZGRpbmc6IDIwcHg7IG92ZXJmbG93LXk6IGF1dG87IGZsZXg6IDE7IH0KLm1v ZGFsLWZ1c3MgewogICAgcGFkZGluZzogMTJweCAyMHB4OyBib3JkZXItdG9wOiAxcHggc29saWQg dmFyKC0tYm9yZGVyLWNvbG9yKTsKICAgIGRpc3BsYXk6IGZsZXg7IGp1c3RpZnktY29udGVudDog ZmxleC1lbmQ7IGdhcDogOHB4OwogICAgYmFja2dyb3VuZDogdmFyKC0tYmctY2FyZC1hbHQpOyBi b3JkZXItcmFkaXVzOiAwIDAgMTBweCAxMHB4Owp9CgovKiA9PT09PSBUb2FzdCA9PT09PSAqLwoj dG9hc3QtY29udGFpbmVyIHsKICAgIHBvc2l0aW9uOiBmaXhlZDsgYm90dG9tOiAyNHB4OyByaWdo dDogMjRweDsgei1pbmRleDogdmFyKC0tei10b2FzdCk7CiAgICBkaXNwbGF5OiBmbGV4OyBmbGV4 LWRpcmVjdGlvbjogY29sdW1uOyBnYXA6IDZweDsKfQoudG9hc3QgewogICAgcGFkZGluZzogMTBw eCAxOHB4OyBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbWQpOyBjb2xvcjogI2ZmZjsgZm9u dC1zaXplOiB2YXIoLS1mcy1tZCk7IGZvbnQtd2VpZ2h0OiA1MDA7CiAgICBib3gtc2hhZG93OiAw IDRweCAxNnB4IHJnYmEoMCwwLDAsMC4yNSk7IGFuaW1hdGlvbjogdG9hc3RFaW4gMC4yNXMgZWFz ZTsgbWF4LXdpZHRoOiA0MDBweDsKfQoudG9hc3QtZXJmb2xnIHsgYmFja2dyb3VuZDogdmFyKC0t ZmFyYmUtZXJmb2xnKTsgfQoudG9hc3QtZmVobGVyIHsgYmFja2dyb3VuZDogdmFyKC0tZmFyYmUt ZmVobGVyKTsgfQoudG9hc3QtaW5mbyB7IGJhY2tncm91bmQ6IHZhcigtLWZhcmJlLWluZm8pOyB9 Ci50b2FzdC13YXJudW5nIHsgYmFja2dyb3VuZDogdmFyKC0tZmFyYmUtd2FybnVuZyk7IH0KQGtl eWZyYW1lcyB0b2FzdEVpbiB7IGZyb20geyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTZweCk7IG9w YWNpdHk6IDA7IH0gdG8geyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7IG9wYWNpdHk6IDE7IH0g fQoKLyogPT09PT0gQWxsZ2VtZWluID09PT09ICovCi50ZXh0LW11dGVkIHsgY29sb3I6IHZhcigt LXRleHQtbXV0ZWQpOyB9Ci50ZXh0LWVyZm9sZyB7IGNvbG9yOiB2YXIoLS1mYXJiZS1lcmZvbGcp OyB9Ci50ZXh0LWZlaGxlciB7IGNvbG9yOiB2YXIoLS1mYXJiZS1mZWhsZXIpOyB9Cgpjb2RlIHsK ICAgIGJhY2tncm91bmQ6IHZhcigtLWJnLWNhcmQtYWx0KTsgcGFkZGluZzogMXB4IDZweDsgYm9y ZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLXhzKTsKICAgIGZvbnQtZmFtaWx5OiAiQ29uc29sYXMi LCAiQ291cmllciBOZXciLCBtb25vc3BhY2U7IGZvbnQtc2l6ZTogdmFyKC0tZnMtYmFzZSk7CiAg ICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1ib3JkZXItbGlnaHQpOwp9CgovKiBTY3JvbGxiYXJz OiBkZXV0bGljaCBzaWNodGJhciwgdm9yIGFsbGVtIGRpZSBob3Jpem9udGFsZSBMZWlzdGUgdW50 ZXIgZGVtCiAgIEhhdXB0cGxhbiBtaXQgMTMgTW9uYXRlbiBCcmVpdGUuICovCjo6LXdlYmtpdC1z Y3JvbGxiYXIgeyB3aWR0aDogMTRweDsgaGVpZ2h0OiAxNHB4OyB9Cjo6LXdlYmtpdC1zY3JvbGxi YXItdHJhY2sgewogICAgYmFja2dyb3VuZDogdmFyKC0tYmctY2FyZC1hbHQpOwp9Cjo6LXdlYmtp dC1zY3JvbGxiYXItdGh1bWIgewogICAgYmFja2dyb3VuZDogdmFyKC0tdGV4dC1tdXRlZCk7CiAg ICBib3JkZXItcmFkaXVzOiA3cHg7CiAgICBib3JkZXI6IDJweCBzb2xpZCB2YXIoLS1iZy1jYXJk LWFsdCk7CiAgICBtaW4td2lkdGg6IDQwcHg7IG1pbi1oZWlnaHQ6IDQwcHg7Cn0KOjotd2Via2l0 LXNjcm9sbGJhci10aHVtYjpob3ZlciB7IGJhY2tncm91bmQ6IHZhcigtLXRleHQtc2Vjb25kYXJ5 KTsgfQo6Oi13ZWJraXQtc2Nyb2xsYmFyLWNvcm5lciB7IGJhY2tncm91bmQ6IHZhcigtLWJnLWNh cmQtYWx0KTsgfQoKLyogRmlyZWZveCAqLwoqIHsKICAgIHNjcm9sbGJhci13aWR0aDogYXV0bzsK ICAgIHNjcm9sbGJhci1jb2xvcjogdmFyKC0tdGV4dC1tdXRlZCkgdmFyKC0tYmctY2FyZC1hbHQp Owp9CgovKiA9PT09PSBFbW9qaS1QaWNrZXIgKHNjaGxpY2h0LCBTeXN0ZW0tRm9udCBsaWVmZXJ0 IEFwcGxlLUVtb2ppcyBhdWYgbWFjT1MvaU9TKSA9PT09PSAqLwouZW1vamktcGlja2VyIHsKICAg IC8qIE11c3MgdWViZXIgZGVtIE1vZGFsLU92ZXJsYXkgbGllZ2VuICgubW9kYWwgaGF0IHZhcigt LXotbW9kYWwpKSwKICAgICAgIHNvbnN0IGxhbmRldCBqZWRlciBLbGljayBhdWYgZGVuIHZlcm1l aW50bGljaGVuIFBpY2tlciBhdWYgZGVtCiAgICAgICBkYXJ1ZWJlciBsaWVnZW5kZW4gT3Zlcmxh eSB1bmQgc2NobGllc3N0IGRhcyBNb2RhbC4gKi8KICAgIHBvc2l0aW9uOiBmaXhlZDsgei1pbmRl eDogdmFyKC0tei1wb3BvdmVyKTsKICAgIGJhY2tncm91bmQ6IHZhcigtLWJnLWNhcmQpOyBib3Jk ZXI6IDFweCBzb2xpZCB2YXIoLS1ib3JkZXItc3Ryb25nKTsKICAgIGJvcmRlci1yYWRpdXM6IHZh cigtLXJhZGl1cy1sZyk7IGJveC1zaGFkb3c6IDAgOHB4IDMycHggcmdiYSgwLDAsMCwwLjE4KTsK ICAgIHBhZGRpbmc6IDhweDsgd2lkdGg6IDI3MnB4OyB1c2VyLXNlbGVjdDogbm9uZTsKfQouZW1v amktcGlja2VyLWthdCB7IGZvbnQtc2l6ZTogdmFyKC0tZnMteHMpOyBmb250LXdlaWdodDogNjAw OyBjb2xvcjogdmFyKC0tdGV4dC1tdXRlZCk7CiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNl OyBsZXR0ZXItc3BhY2luZzogMC40cHg7IHBhZGRpbmc6IDZweCA0cHggMnB4OyB9Ci5lbW9qaS1w aWNrZXIta2F0OmZpcnN0LWNoaWxkIHsgcGFkZGluZy10b3A6IDJweDsgfQouZW1vamktcGlja2Vy LWdyaWQgeyBkaXNwbGF5OiBncmlkOyBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg4LCAx ZnIpOyBnYXA6IDJweDsgfQouZW1vamktcGlja2VyLW9wdCB7CiAgICBmb250LXNpemU6IDIwcHg7 IGxpbmUtaGVpZ2h0OiAxOyBwYWRkaW5nOiA0cHg7IGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1 cy1tZCk7CiAgICBjdXJzb3I6IHBvaW50ZXI7IHRleHQtYWxpZ246IGNlbnRlcjsgYmFja2dyb3Vu ZDogdHJhbnNwYXJlbnQ7IGJvcmRlcjogbm9uZTsKICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQg MC4wOHM7CiAgICAvKiBNb25vY2hyb21lIFN5bWJvbC1EYXJzdGVsbHVuZyAoQ2hlcnJ5LVBpY2sg OGIyZDBmZCkgKi8KICAgIGZvbnQtZmFtaWx5OiAiU2Vnb2UgVUkgU3ltYm9sIiwiQ2FtYnJpYSBN YXRoIiwiU1RJWCIsIkRlamFWdSBTYW5zIiwiTHVjaWRhIFNhbnMgVW5pY29kZSIsc2Fucy1zZXJp ZjsKICAgIGZvbnQtdmFyaWFudC1lbW9qaTogdGV4dDsKfQouZW1vamktcGlja2VyLW9wdDpob3Zl ciB7IGJhY2tncm91bmQ6IHZhcigtLWJnLWhvdmVyKTsgfQouZW1vamktcGlja2VyLW9wdC5rZWlu ZXIgeyBmb250LXNpemU6IHZhcigtLWZzLWJhc2UpOyBjb2xvcjogdmFyKC0tdGV4dC1tdXRlZCk7 IGZvbnQtZmFtaWx5OiBpbmhlcml0OyB9CgovKiBFbW9qaS1BdXN3YWhsLUJ1dHRvbiBpbiBBZG1p bi1UYWJlbGxlICovCi5lbW9qaS1idG4gewogICAgd2lkdGg6IDM4cHg7IGhlaWdodDogMzJweDsg Zm9udC1zaXplOiAxOHB4OyBsaW5lLWhlaWdodDogMTsKICAgIGJhY2tncm91bmQ6IHZhcigtLWJn LWlucHV0KTsgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tYm9yZGVyLWNvbG9yKTsgYm9yZGVyLXJh ZGl1czogNXB4OwogICAgY3Vyc29yOiBwb2ludGVyOyBwYWRkaW5nOiAwOwogICAgZm9udC1mYW1p bHk6ICJBcHBsZSBDb2xvciBFbW9qaSIsIlNlZ29lIFVJIEVtb2ppIiwiTm90byBDb2xvciBFbW9q aSIsc2Fucy1zZXJpZjsKfQouZW1vamktYnRuOmhvdmVyIHsgYm9yZGVyLWNvbG9yOiB2YXIoLS1m YXJiZS1ha3plbnQpOyB9Ci5lbW9qaS1idG4ubGVlciB7IGNvbG9yOiB2YXIoLS10ZXh0LW11dGVk KTsgZm9udC1zaXplOiB2YXIoLS1mcy1sZyk7IGZvbnQtZmFtaWx5OiBpbmhlcml0OyB9CgovKiBL bGlja2JhcmUgU29uZGVyLVplbGxlIGltIEhlYWRlciAqLwoua2Qtc29uZGVyLWtsaWNrYmFyIHsg Y3Vyc29yOiBwb2ludGVyOyB9Ci5rZC1zb25kZXIta2xpY2tiYXI6aG92ZXIgeyBmaWx0ZXI6IGJy aWdodG5lc3MoMS4wOCk7IH0KCi8qIFNvbmRlci1XYXJuLU1vZGFsICovCi5zb25kZXItd2Fybi1t b2RhbCAubW9kYWwta29wZiB7IGJhY2tncm91bmQ6IHZhcigtLWZhcmJlLXdhcm51bmcpOyB9Ci5z b25kZXItd2Fybi1tb2RhbC50eXAtaGlud2VpcyAubW9kYWwta29wZiB7IGJhY2tncm91bmQ6IHZh cigtLWZhcmJlLWFremVudCk7IH0KLnNvbmRlci13YXJuLWljb24geyBmb250LXNpemU6IDQ4cHg7 IGxpbmUtaGVpZ2h0OiAxOyB0ZXh0LWFsaWduOiBjZW50ZXI7IG1hcmdpbjogOHB4IDAgMTJweDsK ICAgIGZvbnQtZmFtaWx5OiAiQXBwbGUgQ29sb3IgRW1vamkiLCJTZWdvZSBVSSBFbW9qaSIsIk5v dG8gQ29sb3IgRW1vamkiLHNhbnMtc2VyaWY7IH0KLnNvbmRlci13YXJuLXRpdGVsIHsgZm9udC1z aXplOiAxOHB4OyBmb250LXdlaWdodDogNjAwOyB0ZXh0LWFsaWduOiBjZW50ZXI7IGNvbG9yOiB2 YXIoLS10ZXh0LWhlYWRpbmcpOyBtYXJnaW4tYm90dG9tOiAxMHB4OyBwYWRkaW5nOiAwIDhweDsg d29yZC13cmFwOiBicmVhay13b3JkOyBvdmVyZmxvdy13cmFwOiBicmVhay13b3JkOyB9Ci5zb25k ZXItd2Fybi10ZXh0IHsKICAgIGZvbnQtc2l6ZTogdmFyKC0tZnMtbGcpOyBsaW5lLWhlaWdodDog MS41NTsgY29sb3I6IHZhcigtLXRleHQtcHJpbWFyeSk7IHBhZGRpbmc6IDEycHggMTRweDsKICAg IGJhY2tncm91bmQ6IHZhcigtLWJnLWNhcmQtYWx0KTsgYm9yZGVyLXJhZGl1czogOHB4OyBib3Jk ZXI6IDFweCBzb2xpZCB2YXIoLS1ib3JkZXItbGlnaHQpOwogICAgbWF4LXdpZHRoOiAxMDAlOyBt YXgtaGVpZ2h0OiA1MHZoOyBvdmVyZmxvdy15OiBhdXRvOwogICAgd29yZC13cmFwOiBicmVhay13 b3JkOyBvdmVyZmxvdy13cmFwOiBicmVhay13b3JkOyB3b3JkLWJyZWFrOiBicmVhay13b3JkOwp9 Ci5zb25kZXItd2Fybi10ZXh0IHAgeyBtYXJnaW46IDAgMCAwLjZlbSAwOyB9Ci5zb25kZXItd2Fy bi10ZXh0IHA6bGFzdC1jaGlsZCB7IG1hcmdpbi1ib3R0b206IDA7IH0KLnNvbmRlci13YXJuLXRl eHQgdWwsIC5zb25kZXItd2Fybi10ZXh0IG9sIHsgbWFyZ2luOiAwLjRlbSAwIDAuNGVtIDEuNGVt OyBwYWRkaW5nOiAwOyB9Ci5zb25kZXItd2Fybi10ZXh0IGxpIHsgbWFyZ2luLWJvdHRvbTogMC4y ZW07IH0KLnNvbmRlci13YXJuLXRleHQgYSB7IGNvbG9yOiB2YXIoLS1mYXJiZS1ha3plbnQpOyB0 ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsgd29yZC1icmVhazogYnJlYWstYWxsOyB9Ci5zb25k ZXItd2Fybi1kYXR1bSB7IGZvbnQtc2l6ZTogdmFyKC0tZnMtYmFzZSk7IGNvbG9yOiB2YXIoLS10 ZXh0LW11dGVkKTsgdGV4dC1hbGlnbjogY2VudGVyOyBtYXJnaW4tdG9wOiAxMnB4OyB9CgovKiBS aWNoLVRleHQtRWRpdG9yICovCi5ydGUtdG9vbGJhciB7CiAgICBkaXNwbGF5OiBmbGV4OyBnYXA6 IDJweDsgcGFkZGluZzogNHB4OyBtYXJnaW4tYm90dG9tOiA0cHg7CiAgICBiYWNrZ3JvdW5kOiB2 YXIoLS1iZy1jYXJkLWFsdCk7IGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWJvcmRlci1jb2xvcik7 CiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbWQpIDZweCAwIDA7IGJvcmRlci1ib3R0 b206IG5vbmU7IGZsZXgtd3JhcDogd3JhcDsKfQoucnRlLWJ0biB7CiAgICBtaW4td2lkdGg6IDMw cHg7IGhlaWdodDogMjhweDsgcGFkZGluZzogMCA4cHg7IGZvbnQtc2l6ZTogdmFyKC0tZnMtbWQp OwogICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7IGJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFy ZW50OyBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtc20pOwogICAgY3Vyc29yOiBwb2ludGVy OyBjb2xvcjogdmFyKC0tdGV4dC1wcmltYXJ5KTsKfQoucnRlLWJ0bjpob3ZlciB7IGJhY2tncm91 bmQ6IHZhcigtLWJnLWhvdmVyKTsgfQoucnRlLWJ0bi5ha3RpdiB7IGJhY2tncm91bmQ6IHZhcigt LWJnLWFjdGl2ZSk7IGJvcmRlci1jb2xvcjogdmFyKC0tYm9yZGVyLWNvbG9yKTsgfQoucnRlLXNl cCB7IHdpZHRoOiAxcHg7IGJhY2tncm91bmQ6IHZhcigtLWJvcmRlci1jb2xvcik7IG1hcmdpbjog NHB4IDRweDsgfQoucnRlLWVkaXRvciB7CiAgICBtaW4taGVpZ2h0OiAxMTBweDsgbWF4LWhlaWdo dDogMzAwcHg7IG92ZXJmbG93LXk6IGF1dG87CiAgICBwYWRkaW5nOiAxMHB4IDEycHg7IGZvbnQt c2l6ZTogdmFyKC0tZnMtbWQpOyBsaW5lLWhlaWdodDogMS41OwogICAgYmFja2dyb3VuZDogdmFy KC0tYmctaW5wdXQpOyBjb2xvcjogdmFyKC0tdGV4dC1wcmltYXJ5KTsKICAgIGJvcmRlcjogMXB4 IHNvbGlkIHZhcigtLWJvcmRlci1jb2xvcik7IGJvcmRlci1yYWRpdXM6IDAgMCA2cHggNnB4Owog ICAgd29yZC13cmFwOiBicmVhay13b3JkOyBvdmVyZmxvdy13cmFwOiBicmVhay13b3JkOyB3b3Jk LWJyZWFrOiBicmVhay13b3JkOwogICAgbWF4LXdpZHRoOiAxMDAlOwp9Ci5ydGUtZWRpdG9yOmZv Y3VzIHsgb3V0bGluZTogbm9uZTsgYm9yZGVyLWNvbG9yOiB2YXIoLS1mYXJiZS1ha3plbnQpOyB9 Ci5ydGUtZWRpdG9yIHAgeyBtYXJnaW46IDAgMCAwLjZlbSAwOyB9Ci5ydGUtZWRpdG9yIHA6bGFz dC1jaGlsZCB7IG1hcmdpbi1ib3R0b206IDA7IH0KLnJ0ZS1lZGl0b3IgdWwsIC5ydGUtZWRpdG9y IG9sIHsgbWFyZ2luOiAwLjRlbSAwIDAuNGVtIDEuNGVtOyBwYWRkaW5nOiAwOyB9Ci5ydGUtZWRp dG9yIGEgeyBjb2xvcjogdmFyKC0tZmFyYmUtYWt6ZW50KTsgd29yZC1icmVhazogYnJlYWstYWxs OyB9Ci8qIGJsb2NrcXVvdGUgPSBJbmRlbnQtTGV2ZWwuIHN0eWxlV2l0aENTUyhmYWxzZSkgc29y Z3QgZGFmdWVyIGRhc3MgZXhlY0NvbW1hbmQKICAgJ2luZGVudCcgbmVzdGVkIGJsb2NrcXVvdGVz IGVyemV1Z3Qg4oCUIHBybyBMZXZlbCBtZWhyIG1hcmdpbi1sZWZ0LiBGbGFjaAogICBnZXN0eWx0 IChrZWluIFppdGF0LUxvb2spLCBibGVpYnQgemVpbGVudWViZXJncmVpZmVuZC4gKi8KLnJ0ZS1l ZGl0b3IgYmxvY2txdW90ZSB7CiAgICBtYXJnaW46IDAgMCAwIDI0cHg7CiAgICBwYWRkaW5nOiAw OwogICAgYm9yZGVyOiBub25lOwogICAgcXVvdGVzOiBub25lOwp9Ci5ydGUtZWRpdG9yIGJsb2Nr cXVvdGU6OmJlZm9yZSwgLnJ0ZS1lZGl0b3IgYmxvY2txdW90ZTo6YWZ0ZXIgeyBjb250ZW50OiBu b25lOyB9CgovKiA9PT09PSBBZG1pbjogQXVza2xhcHBiYXJlIEhpbndlaXNib3hlbiA9PT09PSAq LwouYWRtaW4taW5mbyB7CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1jYXJkKTsgYm9yZGVyOiAx cHggc29saWQgdmFyKC0tYm9yZGVyLWxpZ2h0KTsKICAgIGJvcmRlci1yYWRpdXM6IDhweDsgbWFy Z2luLWJvdHRvbTogMjBweDsgb3ZlcmZsb3c6IGhpZGRlbjsKfQouYWRtaW4td2FybmJveCB7CiAg ICBiYWNrZ3JvdW5kOiB2YXIoLS1mYXJiZS13YXJudW5nLWJnLCAjZmZmN2VkKTsKICAgIGJvcmRl ci1sZWZ0OiA0cHggc29saWQgdmFyKC0tZmFyYmUtd2FybnVuZywgI2Y1OWUwYik7CiAgICBjb2xv cjogdmFyKC0tdGV4dC1wcmltYXJ5KTsKICAgIHBhZGRpbmc6IDEwcHggMTRweDsKICAgIGJvcmRl ci1yYWRpdXM6IHZhcigtLXJhZGl1cy1zbSk7CiAgICBmb250LXNpemU6IHZhcigtLWZzLW1kKTsK ICAgIGxpbmUtaGVpZ2h0OiAxLjU1OwogICAgbWFyZ2luLWJvdHRvbTogMTZweDsKfQpbZGF0YS10 aGVtZT0ibmlnaHQiXSAuYWRtaW4td2FybmJveCB7CiAgICBiYWNrZ3JvdW5kOiByZ2JhKDI0NSwg MTU4LCAxMSwgMC4xMik7CiAgICBjb2xvcjogdmFyKC0tdGV4dC1wcmltYXJ5KTsKfQouYWRtaW4t aW5mbyA+IHN1bW1hcnkgewogICAgbGlzdC1zdHlsZTogbm9uZTsgcGFkZGluZzogMTBweCAxNHB4 OyBjdXJzb3I6IHBvaW50ZXI7IHVzZXItc2VsZWN0OiBub25lOwogICAgZm9udC13ZWlnaHQ6IDYw MDsgZm9udC1zaXplOiB2YXIoLS1mcy1tZCk7IGNvbG9yOiB2YXIoLS10ZXh0LWhlYWRpbmcpOwog ICAgYmFja2dyb3VuZDogdmFyKC0tYmctY2FyZC1hbHQpOwogICAgZGlzcGxheTogZmxleDsgYWxp Z24taXRlbXM6IGNlbnRlcjsgZ2FwOiAxMHB4OwogICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAw LjE1czsKfQouYWRtaW4taW5mbyA+IHN1bW1hcnk6aG92ZXIgeyBiYWNrZ3JvdW5kOiB2YXIoLS1i Zy1ob3Zlcik7IH0KLmFkbWluLWluZm8gPiBzdW1tYXJ5Ojotd2Via2l0LWRldGFpbHMtbWFya2Vy IHsgZGlzcGxheTogbm9uZTsgfQouYWRtaW4taW5mbyA+IHN1bW1hcnk6Om1hcmtlciB7IGNvbnRl bnQ6ICcnOyB9Ci5hZG1pbi1pbmZvLWNoZXYgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOyBm b250LXNpemU6IHZhcigtLWZzLXhzKTsgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuMnM7IGNvbG9y OiB2YXIoLS10ZXh0LW11dGVkKTsKICAgIHdpZHRoOiAxMHB4Owp9Ci5hZG1pbi1pbmZvW29wZW5d ID4gc3VtbWFyeSB7IGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1ib3JkZXItbGlnaHQp OyB9Ci5hZG1pbi1pbmZvW29wZW5dIC5hZG1pbi1pbmZvLWNoZXYgeyB0cmFuc2Zvcm06IHJvdGF0 ZSg5MGRlZyk7IH0KLmFkbWluLWluZm8tYmFkZ2UgewogICAgbWFyZ2luLWxlZnQ6IGF1dG87IGZv bnQtc2l6ZTogdmFyKC0tZnMteHMpOyBmb250LXdlaWdodDogNTAwOyBjb2xvcjogdmFyKC0tdGV4 dC1tdXRlZCk7CiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKfQouYWRtaW4taW5mby1ib2R5 IHsKICAgIHBhZGRpbmc6IDE0cHggMTZweDsgZm9udC1zaXplOiAxMi41cHg7IGxpbmUtaGVpZ2h0 OiAxLjY7IGNvbG9yOiB2YXIoLS10ZXh0LXByaW1hcnkpOwp9Ci5hZG1pbi1pbmZvLWJvZHkgcCB7 IG1hcmdpbi1ib3R0b206IDEwcHg7IH0KLmFkbWluLWluZm8tYm9keSBwOmxhc3QtY2hpbGQgeyBt YXJnaW4tYm90dG9tOiAwOyB9Ci5hZG1pbi1pbmZvLWJvZHkgdWwgeyBtYXJnaW46IDZweCAwIDEy cHggMjJweDsgfQouYWRtaW4taW5mby1ib2R5IHVsIHVsIHsgbWFyZ2luOiA0cHggMCA2cHggMThw eDsgfQouYWRtaW4taW5mby1ib2R5IGxpIHsgbWFyZ2luLWJvdHRvbTogM3B4OyB9Ci5hZG1pbi1p bmZvLWJvZHkgY29kZSB7CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1jYXJkLWFsdCk7IHBhZGRp bmc6IDFweCA1cHg7IGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy14cyk7CiAgICBmb250LXNp emU6IDExLjVweDsgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tYm9yZGVyLWxpZ2h0KTsKfQouYWRt aW4taW5mby1ib2R5IHN0cm9uZyB7IGNvbG9yOiB2YXIoLS10ZXh0LWhlYWRpbmcpOyB9CgovKiA9 PT09PSBTY2hpY2h0Y29kZS1Wb3JzY2hhdTogR3J1cHBpZXJ1bmcgPT09PT0gKi8KLnNjLXZvcnNj aGF1LXRvb2xiYXIgewogICAgZGlzcGxheTogZmxleDsgZ2FwOiAxMnB4OyBhbGlnbi1pdGVtczog Y2VudGVyOyBtYXJnaW4tYm90dG9tOiAxMnB4OyBmbGV4LXdyYXA6IHdyYXA7CiAgICBwYWRkaW5n OiA4cHggMTJweDsgYmFja2dyb3VuZDogdmFyKC0tYmctY2FyZC1hbHQpOyBib3JkZXItcmFkaXVz OiB2YXIoLS1yYWRpdXMtbWQpOwp9Ci5zYy12b3JzY2hhdS10b29sYmFyIGxhYmVsIHsgZm9udC1z aXplOiB2YXIoLS1mcy1iYXNlKTsgZm9udC13ZWlnaHQ6IDYwMDsgY29sb3I6IHZhcigtLXRleHQt c2Vjb25kYXJ5KTsgfQouc2Mtdm9yc2NoYXUtdG9vbGJhciBzZWxlY3QgewogICAgcGFkZGluZzog NHB4IDhweDsgZm9udC1zaXplOiB2YXIoLS1mcy1iYXNlKTsgYmFja2dyb3VuZDogdmFyKC0tYmct aW5wdXQpOwogICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tYm9yZGVyLWNvbG9yKTsgYm9yZGVy LXJhZGl1czogdmFyKC0tcmFkaXVzLXNtKTsKfQouc2MtZ3J1cHBlIHsKICAgIG1hcmdpbi1ib3R0 b206IDE2cHg7IGJvcmRlci1sZWZ0OiAzcHggc29saWQgdmFyKC0tYm9yZGVyLXN0cm9uZyk7IHBh ZGRpbmctbGVmdDogMTBweDsKfQouc2MtZ3J1cHBlLXRpdGVsIHsKICAgIGZvbnQtc2l6ZTogdmFy KC0tZnMtc20pOyBmb250LXdlaWdodDogNzAwOyBjb2xvcjogdmFyKC0tdGV4dC1tdXRlZCk7IHRl eHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7CiAgICBsZXR0ZXItc3BhY2luZzogMC41cHg7IG1hcmdp bi1ib3R0b206IDZweDsKfQouc2MtZ3J1cHBlLWxpc3RlIHsKICAgIGRpc3BsYXk6IGdyaWQ7IGdy aWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KGF1dG8tZmlsbCwgbWlubWF4KDIyMHB4LCAxZnIp KTsKICAgIGdhcDogNnB4Owp9Ci8qIFBlcnNvbmFsLVRhYmVsbGU6IE5hY2huYW1lIGFscyBrbGlj a2JhcmVyIExpbmsgenVtIEVkaXQtTW9kYWwgKi8KLnBlcnNvbi1uYW1lLWxpbmsgewogICAgY3Vy c29yOiBwb2ludGVyOwogICAgYm9yZGVyLWJvdHRvbTogMXB4IGRvdHRlZCB0cmFuc3BhcmVudDsK ICAgIHRyYW5zaXRpb246IGJvcmRlci1jb2xvciAwLjE1cywgY29sb3IgMC4xNXM7Cn0KLnBlcnNv bi1uYW1lLWxpbms6aG92ZXIgewogICAgY29sb3I6IHZhcigtLWZhcmJlLXByaW1hZXIpOwogICAg Ym9yZGVyLWJvdHRvbS1jb2xvcjogdmFyKC0tZmFyYmUtcHJpbWFlcik7Cn0KCi8qICJOZXVlciBG YWNoYXVmc2ljaHQtRWludHJhZyItTW9kYWwgKEJ1Zy1GaXggKyBGZWF0dXJlOiBEcm9wZG93biBk ZXIgV2FjaGxlaXR1bmdlbikgKi8KLmZhLW5ldS1tb2R1cy16ZWlsZSB7CiAgICBkaXNwbGF5OiBm bGV4OyBnYXA6IDE4cHg7IGZsZXgtd3JhcDogd3JhcDsKICAgIHBhZGRpbmc6IDEwcHggMTRweDsK ICAgIGJhY2tncm91bmQ6IHZhcigtLWJnLWNhcmQtYWx0KTsKICAgIGJvcmRlci1yYWRpdXM6IHZh cigtLXJhZGl1cy1tZCk7CiAgICBtYXJnaW4tYm90dG9tOiAxNHB4Owp9Ci5mYS1uZXUtbW9kdXMt b3B0IHsKICAgIGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGdhcDogNnB4Owog ICAgY3Vyc29yOiBwb2ludGVyOwogICAgZm9udC1zaXplOiB2YXIoLS1mcy1tZCk7CiAgICBmb250 LXdlaWdodDogNTAwOwp9Ci5mYS1uZXUtbW9kdXMtb3B0IGlucHV0W3R5cGU9InJhZGlvIl0geyB3 aWR0aDogMTZweDsgaGVpZ2h0OiAxNnB4OyBjdXJzb3I6IHBvaW50ZXI7IH0KLmZhLW5ldS1iZXJl aWNoIHsKICAgIHBhZGRpbmctdG9wOiA0cHg7Cn0KLmZhLW5ldS1ncmlkIHsKICAgIGRpc3BsYXk6 IGdyaWQ7CiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmciAxZnI7CiAgICBnYXA6IDEycHgg MTRweDsKICAgIG1hcmdpbi1ib3R0b206IDEwcHg7Cn0KLmRsZy1sYWJlbCB7IGRpc3BsYXk6IGJs b2NrOyBmb250LXdlaWdodDogNjAwOyBmb250LXNpemU6IHZhcigtLWZzLW1kKTsgbWFyZ2luLWJv dHRvbTogNHB4OyBjb2xvcjogdmFyKC0tdGV4dC1oZWFkaW5nKTsgfQoKLyogTW9kYWwtRW50d3Vy Zi1SZXN0b3JlLUJhbm5lciAoU3BlYyBGLjQpICovCi5tb2RhbC1lbnR3dXJmLWJhbm5lciB7CiAg ICBkaXNwbGF5OiBmbGV4OwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIGdhcDogMTBweDsK ICAgIHBhZGRpbmc6IDEwcHggMTRweDsKICAgIG1hcmdpbi1ib3R0b206IDE2cHg7CiAgICBiYWNr Z3JvdW5kOiByZ2JhKDc0LDE0NCwyMjYsMC4xMCk7CiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIo LS1mYXJiZS1ha3plbnQpOwogICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLW1kKTsKICAg IGZvbnQtc2l6ZTogdmFyKC0tZnMtbWQpOwogICAgY29sb3I6IHZhcigtLXRleHQtcHJpbWFyeSk7 CiAgICBmbGV4LXdyYXA6IHdyYXA7Cn0KLm1lYi1pY29uIHsgZm9udC1zaXplOiAxOHB4OyBsaW5l LWhlaWdodDogMTsgfQoubWViLXRleHQgeyBmbGV4OiAxOyBtaW4td2lkdGg6IDIwMHB4OyB9Cltk YXRhLXRoZW1lPSJuaWdodCJdIC5tb2RhbC1lbnR3dXJmLWJhbm5lciB7IGJhY2tncm91bmQ6IHJn YmEoNzQsMTQ0LDIyNiwwLjE4KTsgfQoKLyogRmFjaGF1ZnNpY2h0IEdyYW51bGFyLVN1Yi1TaWNo dGJhcmtlaXRzLU1vZGFsIChTcGVjIEYuMikgKi8KLmZhLXN1YnNpY2h0LWFrdGlvbmVuIHsKICAg IGRpc3BsYXk6IGZsZXg7IGdhcDogOHB4OyBmbGV4LXdyYXA6IHdyYXA7CiAgICBtYXJnaW4tYm90 dG9tOiAxNHB4Owp9Ci5mYS1zdWJzaWNodC1saXN0ZSB7CiAgICBkaXNwbGF5OiBmbGV4OyBmbGV4 LWRpcmVjdGlvbjogY29sdW1uOyBnYXA6IDRweDsKICAgIG1heC1oZWlnaHQ6IDUwdmg7IG92ZXJm bG93LXk6IGF1dG87CiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1ib3JkZXItbGlnaHQpOwog ICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLW1kKTsKICAgIHBhZGRpbmc6IDEwcHggMTRw eDsKICAgIGJhY2tncm91bmQ6IHZhcigtLWJnLWNhcmQpOwp9Ci5mYS1zdWJzaWNodC16ZWlsZSB7 CiAgICBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBnYXA6IDhweDsKICAgIHBh ZGRpbmc6IDRweCA2cHg7IGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy14cyk7CiAgICBjdXJz b3I6IHBvaW50ZXI7CiAgICBmb250LXNpemU6IHZhcigtLWZzLW1kKTsKfQouZmEtc3Vic2ljaHQt emVpbGU6aG92ZXIgeyBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1ob3Zlcik7IH0KLmZhLXN1YnNpY2h0 LXplaWxlIGlucHV0W3R5cGU9ImNoZWNrYm94Il0geyB3aWR0aDogMTZweDsgaGVpZ2h0OiAxNnB4 OyBjdXJzb3I6IHBvaW50ZXI7IH0KCi8qIG1haWx0bzotQXV0by1UcmlnZ2VyLUtvbmZpZyBpbSBW b3JsYWdlbi1FZGl0b3IgKGF1dG9UcmlnZ2VyLVZvcmxhZ2VuKSAqLwouZXZtLXRyaWdnZXItYmxv Y2sgewogICAgbWFyZ2luLXRvcDogMTZweDsKICAgIHBhZGRpbmc6IDEycHggMTRweDsKICAgIGJh Y2tncm91bmQ6IHZhcigtLWJnLWNhcmQtYWx0KTsKICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigt LWJvcmRlci1saWdodCk7CiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbWQpOwp9Ci5l dm0tdHJpZ2dlci10aXRlbCB7IGZvbnQtd2VpZ2h0OiA3MDA7IGZvbnQtc2l6ZTogdmFyKC0tZnMt bWQpOyBjb2xvcjogdmFyKC0tdGV4dC1oZWFkaW5nKTsgbWFyZ2luLWJvdHRvbTogMTBweDsgfQou ZXZtLXRyaWdnZXItYWt0aXYgeyBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBn YXA6IDhweDsgY3Vyc29yOiBwb2ludGVyOyBmb250LXdlaWdodDogNTAwOyBmb250LXNpemU6IHZh cigtLWZzLW1kKTsgfQouZXZtLXRyaWdnZXItYWt0aXYgaW5wdXRbdHlwZT0iY2hlY2tib3giXSB7 IHdpZHRoOiAxNnB4OyBoZWlnaHQ6IDE2cHg7IGN1cnNvcjogcG9pbnRlcjsgfQouZXZtLWVtcGYt bGlzdGUgewogICAgZGlzcGxheTogZmxleDsgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgZ2FwOiA0 cHg7CiAgICBtYXJnaW4tdG9wOiA0cHg7CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1jYXJkKTsK ICAgIHBhZGRpbmc6IDhweCAxMHB4OwogICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLXNt KTsKICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWJvcmRlci1saWdodCk7Cn0KLmV2bS1lbXBm LXplaWxlIHsgZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsgZ2FwOiA4cHg7IGN1 cnNvcjogcG9pbnRlcjsgZm9udC1zaXplOiAxMi41cHg7IGxpbmUtaGVpZ2h0OiAxLjQ7IHBhZGRp bmc6IDJweCAwOyB9Ci5ldm0tZW1wZi16ZWlsZSBpbnB1dFt0eXBlPSJjaGVja2JveCJdIHsgd2lk dGg6IDE1cHg7IGhlaWdodDogMTVweDsgY3Vyc29yOiBwb2ludGVyOyB9CgovKiBFLU1haWwtVm9y bGFnZW4gS2FydGVuLUxheW91dCAoRmluZGluZyBDLjcgLyBTcGVjIEYuMSkgKi8KLmVtYWlsdm9y bGFnZW4ta2FydGVuIHsKICAgIGRpc3BsYXk6IGdyaWQ7CiAgICBncmlkLXRlbXBsYXRlLWNvbHVt bnM6IHJlcGVhdChhdXRvLWZpdCwgbWlubWF4KDQyMHB4LCAxZnIpKTsKICAgIGdhcDogMTZweDsK ICAgIG1hcmdpbi10b3A6IDE2cHg7Cn0KLmVtYWlsdm9ybGFnZS1rYXJ0ZSB7CiAgICBkaXNwbGF5 OiBncmlkOwogICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiA2NHB4IDFmciBhdXRvOwogICAgZ2Fw OiAxNHB4OwogICAgYWxpZ24taXRlbXM6IHN0cmV0Y2g7CiAgICBwYWRkaW5nOiAxNnB4IDE4cHg7 CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1jYXJkKTsKICAgIGJvcmRlcjogMXB4IHNvbGlkIHZh cigtLWJvcmRlci1saWdodCk7CiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbGcpOwog ICAgY3Vyc29yOiBwb2ludGVyOwogICAgdGV4dC1hbGlnbjogbGVmdDsKICAgIGZvbnQ6IGluaGVy aXQ7CiAgICBjb2xvcjogaW5oZXJpdDsKICAgIHRyYW5zaXRpb246IGJvcmRlci1jb2xvciAwLjE1 cywgYm94LXNoYWRvdyAwLjE1cywgdHJhbnNmb3JtIDAuMDZzOwp9Ci5lbWFpbHZvcmxhZ2Uta2Fy dGU6aG92ZXIgeyBib3JkZXItY29sb3I6IHZhcigtLWZhcmJlLWFremVudCk7IGJveC1zaGFkb3c6 IDAgNHB4IDE0cHggcmdiYSgwLDAsMCwwLjA4KTsgfQouZW1haWx2b3JsYWdlLWthcnRlOmFjdGl2 ZSB7IHRyYW5zZm9ybTogc2NhbGUoMC45OTgpOyB9Ci5ldmstaWNvbiB7CiAgICBkaXNwbGF5OiBm bGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgIHdp ZHRoOiA2NHB4OyBoZWlnaHQ6IDY0cHg7CiAgICBib3JkZXItcmFkaXVzOiAxMnB4OwogICAgZm9u dC1zaXplOiAxMXB4OyBmb250LXdlaWdodDogNzAwOyB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNl OyBsZXR0ZXItc3BhY2luZzogLjAzZW07CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7IGxpbmUtaGVp Z2h0OiAxLjI7IHBhZGRpbmc6IDRweDsKICAgIGJhY2tncm91bmQ6IHZhcigtLWJnLWNhcmQtYWx0 KTsKICAgIGNvbG9yOiB2YXIoLS10ZXh0LXNlY29uZGFyeSk7Cn0KLmV2ay1pY29uLXdhcm51bmcg eyBiYWNrZ3JvdW5kOiByZ2JhKDIwMiwxMTEsMzAsMC4xOCk7IGNvbG9yOiB2YXIoLS1mYXJiZS13 YXJudW5nKTsgfQouZXZrLWljb24tYWt6ZW50IHsgYmFja2dyb3VuZDogcmdiYSg3NCwxNDQsMjI2 LDAuMTUpOyBjb2xvcjogdmFyKC0tZmFyYmUtYWt6ZW50KTsgfQouZXZrLWluaGFsdCB7IG1pbi13 aWR0aDogMDsgZGlzcGxheTogZmxleDsgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgZ2FwOiA0cHg7 IH0KLmV2ay10aXRlbCB7IGZvbnQtd2VpZ2h0OiA3MDA7IGZvbnQtc2l6ZTogMTVweDsgY29sb3I6 IHZhcigtLXRleHQtaGVhZGluZyk7IH0KLmV2ay1iZXNjaHJlaWJ1bmcgeyBmb250LXNpemU6IHZh cigtLWZzLWJhc2UpOyBjb2xvcjogdmFyKC0tdGV4dC1tdXRlZCk7IGxpbmUtaGVpZ2h0OiAxLjQ7 IG1hcmdpbi1ib3R0b206IDRweDsgfQouZXZrLWJldHJlZmYsIC5ldmstcHJldmlldyB7CiAgICBm b250LXNpemU6IHZhcigtLWZzLWJhc2UpOwogICAgY29sb3I6IHZhcigtLXRleHQtc2Vjb25kYXJ5 KTsKICAgIG92ZXJmbG93OiBoaWRkZW47IHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOyB3aGl0ZS1z cGFjZTogbm93cmFwOwp9Ci5ldmstYmV0cmVmZiB7IGZvbnQtd2VpZ2h0OiA1MDA7IH0KLmV2ay1s YWJlbCB7IGNvbG9yOiB2YXIoLS10ZXh0LW11dGVkKTsgZm9udC13ZWlnaHQ6IDYwMDsgbWFyZ2lu LXJpZ2h0OiA0cHg7IH0KLmV2ay1wcmV2aWV3IHsgZm9udC1zdHlsZTogaXRhbGljOyBvcGFjaXR5 OiAwLjg7IH0KLmV2ay1ha3Rpb24gewogICAgYWxpZ24tc2VsZjogY2VudGVyOwogICAgZm9udC1z aXplOiB2YXIoLS1mcy1iYXNlKTsgZm9udC13ZWlnaHQ6IDYwMDsKICAgIGNvbG9yOiB2YXIoLS1m YXJiZS1ha3plbnQpOwogICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKfQovKiBIaWRlLUJ1dHRvbiBv YmVuIHJlY2h0cyBhdWYgamVkZXIgVm9ybGFnZS1LYXJ0ZS4gRXJzY2hlaW50IG51ciBiZWltCiAg IEhvdmVyLCBkYW1pdCBkaWUgS2FydGVuLU9wdGlrIGltIFJ1aGV6dXN0YW5kIHNhdWJlciBibGVp YnQuICovCi5lbWFpbHZvcmxhZ2Uta2FydGUgeyBwb3NpdGlvbjogcmVsYXRpdmU7IH0KLmV2ay1o aWRlLWJ0biB7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogOHB4OyByaWdodDogOHB4Owog ICAgd2lkdGg6IDIycHg7IGhlaWdodDogMjJweDsKICAgIGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0 ZW1zOiBjZW50ZXI7IGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgYmFja2dyb3VuZDogdHJh bnNwYXJlbnQ7IGJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50OwogICAgYm9yZGVyLXJhZGl1 czogdmFyKC0tcmFkaXVzLXNtKTsgZm9udC1zaXplOiB2YXIoLS1mcy1sZyk7IGxpbmUtaGVpZ2h0 OiAxOwogICAgY29sb3I6IHZhcigtLXRleHQtbXV0ZWQpOyBjdXJzb3I6IHBvaW50ZXI7CiAgICBv cGFjaXR5OiAwOyB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuMTVzLCBiYWNrZ3JvdW5kIDAuMTVzLCBi b3JkZXItY29sb3IgMC4xNXM7Cn0KLmVtYWlsdm9ybGFnZS1rYXJ0ZTpob3ZlciAuZXZrLWhpZGUt YnRuIHsgb3BhY2l0eTogMTsgfQouZXZrLWhpZGUtYnRuOmhvdmVyIHsgYmFja2dyb3VuZDogdmFy KC0tYmctY2FyZC1hbHQpOyBib3JkZXItY29sb3I6IHZhcigtLWJvcmRlci1jb2xvcik7IGNvbG9y OiB2YXIoLS1mYXJiZS1mZWhsZXIpOyB9Ci8qIEZvb3Rlci1CZXJlaWNoIGZ1ZXIgdmVyc3RlY2t0 ZSBWb3JsYWdlbiAqLwouZW1haWx2b3JsYWdlbi12ZXJzdGVja3QgewogICAgbWFyZ2luLXRvcDog MjRweDsgcGFkZGluZy10b3A6IDE2cHg7CiAgICBib3JkZXItdG9wOiAxcHggZGFzaGVkIHZhcigt LWJvcmRlci1jb2xvcik7Cn0KLmVtYWlsdm9ybGFnZW4tdmVyc3RlY2t0LWtvcGYgewogICAgZGlz cGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsgZ2FwOiA4cHg7CiAgICBmb250LXNpemU6 IHZhcigtLWZzLWJhc2UpOyBjb2xvcjogdmFyKC0tdGV4dC1tdXRlZCk7IGZvbnQtd2VpZ2h0OiA2 MDA7CiAgICBtYXJnaW4tYm90dG9tOiAxMHB4OyBjdXJzb3I6IHBvaW50ZXI7IHVzZXItc2VsZWN0 OiBub25lOwp9Ci5lbWFpbHZvcmxhZ2VuLXZlcnN0ZWNrdC1saXN0ZSB7CiAgICBkaXNwbGF5OiBm bGV4OyBmbGV4LXdyYXA6IHdyYXA7IGdhcDogOHB4Owp9Ci5ldmstdmVyc3RlY2t0LXBpbGxlIHsK ICAgIGRpc3BsYXk6IGlubGluZS1mbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBnYXA6IDhweDsK ICAgIHBhZGRpbmc6IDZweCAxMHB4OyBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1jYXJkLWFsdCk7CiAg ICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1ib3JkZXItbGlnaHQpOyBib3JkZXItcmFkaXVzOiB2 YXIoLS1yYWRpdXMtc20pOwogICAgZm9udC1zaXplOiB2YXIoLS1mcy1iYXNlKTsgY29sb3I6IHZh cigtLXRleHQtc2Vjb25kYXJ5KTsKfQouZXZrLXZlcnN0ZWNrdC1waWxsZSAuZXZrLXZlcnN0ZWNr dC10aXRlbCB7IGZvbnQtd2VpZ2h0OiA2MDA7IH0KLmV2ay1zaG93LWJ0biB7CiAgICBiYWNrZ3Jv dW5kOiB0cmFuc3BhcmVudDsgYm9yZGVyOiBub25lOyBwYWRkaW5nOiAwIDJweDsKICAgIGNvbG9y OiB2YXIoLS1mYXJiZS1ha3plbnQpOyBjdXJzb3I6IHBvaW50ZXI7IGZvbnQtc2l6ZTogdmFyKC0t ZnMtYmFzZSk7CiAgICBmb250LXdlaWdodDogNjAwOwp9Ci5ldmstc2hvdy1idG46aG92ZXIgeyB0 ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsgfQoKLyogRWRpdG9yLU1vZGFsIHBybyBFLU1haWwt Vm9ybGFnZSAqLwouZXZtLWJlc2NocmVpYnVuZyB7IGNvbG9yOiB2YXIoLS10ZXh0LW11dGVkKTsg Zm9udC1zaXplOiB2YXIoLS1mcy1tZCk7IG1hcmdpbjogMCAwIDE0cHg7IH0KLmV2bS1ncmlkIHsg ZGlzcGxheTogZ3JpZDsgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgMjgwcHg7IGdhcDogMThw eDsgfQpAbWVkaWEgKG1heC13aWR0aDogOTgwcHgpIHsgLmV2bS1ncmlkIHsgZ3JpZC10ZW1wbGF0 ZS1jb2x1bW5zOiAxZnI7IH0gfQouZXZtLWZvcm0geyBkaXNwbGF5OiBmbGV4OyBmbGV4LWRpcmVj dGlvbjogY29sdW1uOyBtaW4td2lkdGg6IDA7IH0KLmV2bS1sYWJlbCB7IGZvbnQtd2VpZ2h0OiA2 MDA7IGZvbnQtc2l6ZTogdmFyKC0tZnMtbWQpOyBtYXJnaW4tYm90dG9tOiA2cHg7IGNvbG9yOiB2 YXIoLS10ZXh0LWhlYWRpbmcpOyB9Ci5ldm0tYmV0cmVmZi1pbnB1dCB7IHdpZHRoOiAxMDAlOyBm b250LWZhbWlseTogaW5oZXJpdDsgfQouZXZtLXRleHQtaW5wdXQgeyB3aWR0aDogMTAwJTsgZm9u dC1mYW1pbHk6IGluaGVyaXQ7IGxpbmUtaGVpZ2h0OiAxLjU7IHJlc2l6ZTogdmVydGljYWw7IG1p bi1oZWlnaHQ6IDIyMHB4OyB9Ci5ldm0tdGV4dC1ydGUgeyBtaW4taGVpZ2h0OiAzODBweDsgbWF4 LWhlaWdodDogNjB2aDsgb3ZlcmZsb3cteTogYXV0bzsgcGFkZGluZzogMTJweCAxNHB4OyBsaW5l LWhlaWdodDogMS41NTsgZm9udC1mYW1pbHk6IGluaGVyaXQ7IH0KLmV2bS10ZXh0LXJ0ZTplbXB0 eTo6YmVmb3JlIHsKICAgIGNvbnRlbnQ6IGF0dHIoZGF0YS1wbGFjZWhvbGRlcik7CiAgICBjb2xv cjogdmFyKC0tdGV4dC1tdXRlZCk7CiAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKfQouZXZtLWhp bndlaXMgeyBkaXNwbGF5OiBibG9jazsgY29sb3I6IHZhcigtLXRleHQtbXV0ZWQpOyBmb250LXNp emU6IHZhcigtLWZzLXNtKTsgbWFyZ2luLXRvcDogNnB4OyBsaW5lLWhlaWdodDogMS40NTsgfQou ZXZtLXRvZ2dsZXMgeyBkaXNwbGF5OiBmbGV4OyBmbGV4LWRpcmVjdGlvbjogY29sdW1uOyBnYXA6 IDZweDsgbWFyZ2luLXRvcDogMTRweDsgcGFkZGluZy10b3A6IDEycHg7IGJvcmRlci10b3A6IDFw eCBzb2xpZCB2YXIoLS1ib3JkZXItbGlnaHQpOyB9Ci5ldm0tdG9nZ2xlIHsgZGlzcGxheTogZmxl eDsgYWxpZ24taXRlbXM6IGNlbnRlcjsgZ2FwOiA4cHg7IGN1cnNvcjogcG9pbnRlcjsgZm9udC1z aXplOiB2YXIoLS1mcy1tZCk7IGxpbmUtaGVpZ2h0OiAxLjQ7IH0KLmV2bS12YXJzIHsKICAgIGJh Y2tncm91bmQ6IHZhcigtLWJnLWNhcmQtYWx0KTsKICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigt LWJvcmRlci1saWdodCk7CiAgICBib3JkZXItcmFkaXVzOiA4cHg7CiAgICBwYWRkaW5nOiAxMnB4 IDE0cHg7CiAgICBhbGlnbi1zZWxmOiBzdGFydDsKICAgIHBvc2l0aW9uOiBzdGlja3k7IHRvcDog MDsKICAgIG1heC1oZWlnaHQ6IDcwdmg7IG92ZXJmbG93LXk6IGF1dG87Cn0KLmV2bS12YXJzLXRp dGVsIHsgZm9udC13ZWlnaHQ6IDcwMDsgZm9udC1zaXplOiB2YXIoLS1mcy1tZCk7IG1hcmdpbi1i b3R0b206IDRweDsgY29sb3I6IHZhcigtLXRleHQtaGVhZGluZyk7IH0KLmV2bS12YXJzLWhpbndl aXMgeyBmb250LXNpemU6IHZhcigtLWZzLXNtKTsgY29sb3I6IHZhcigtLXRleHQtbXV0ZWQpOyBt YXJnaW4tYm90dG9tOiAxMnB4OyBsaW5lLWhlaWdodDogMS40OyB9Ci5ldm0tdmFycy1saXN0ZSB7 IGRpc3BsYXk6IGZsZXg7IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47IGdhcDogNXB4OyB9Ci5ldm0t dmFyLWJ0biB7CiAgICBkaXNwbGF5OiBmbGV4OyBmbGV4LWRpcmVjdGlvbjogY29sdW1uOyBnYXA6 IDJweDsKICAgIHBhZGRpbmc6IDdweCAxMHB4OwogICAgYmFja2dyb3VuZDogdmFyKC0tYmctY2Fy ZCk7CiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1ib3JkZXItbGlnaHQpOwogICAgYm9yZGVy LXJhZGl1czogNXB4OwogICAgY3Vyc29yOiBwb2ludGVyOwogICAgdGV4dC1hbGlnbjogbGVmdDsK ICAgIGZvbnQ6IGluaGVyaXQ7CiAgICB0cmFuc2l0aW9uOiBib3JkZXItY29sb3IgMC4xMnMsIGJh Y2tncm91bmQgMC4xMnM7Cn0KLmV2bS12YXItYnRuOmhvdmVyIHsgYm9yZGVyLWNvbG9yOiB2YXIo LS1mYXJiZS1ha3plbnQpOyBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1ob3Zlcik7IH0KLmV2bS12YXIt bmFtZSB7IGZvbnQtZmFtaWx5OiB1aS1tb25vc3BhY2UsICdTRiBNb25vJywgbW9ub3NwYWNlOyBm b250LXNpemU6IDExLjVweDsgY29sb3I6IHZhcigtLWZhcmJlLWFremVudCk7IGZvbnQtd2VpZ2h0 OiA2MDA7IH0KLmV2bS12YXItYmVzY2hyIHsgZm9udC1zaXplOiAxMC41cHg7IGNvbG9yOiB2YXIo LS10ZXh0LW11dGVkKTsgbGluZS1oZWlnaHQ6IDEuMzsgfQoKLyogTWl0YmVhcmJlaXRlci1MaXN0 ZSBpbSBQZXJzb24tRWRpdC1Nb2RhbDogMyBTcGFsdGVuLCBhbHBoYWJldGlzY2ggdm9uIG9iZW4g bmFjaCB1bnRlbiAqLwouZXItcGVyc29uZW4tZ3JpZCB7CiAgICBjb2x1bW4tY291bnQ6IDM7CiAg ICBjb2x1bW4tZ2FwOiAxOHB4OwogICAgbWF4LWhlaWdodDogMzYwcHg7CiAgICBvdmVyZmxvdzog YXV0bzsKICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWJvcmRlci1saWdodCk7CiAgICBwYWRk aW5nOiA4cHggMTBweDsKICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1zbSk7CiAgICBi YWNrZ3JvdW5kOiB2YXIoLS1iZy1jYXJkKTsKfQouZXItcGVyc29uZW4temVpbGUgewogICAgZGlz cGxheTogZmxleDsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICBnYXA6IDZweDsKICAgIHBh ZGRpbmc6IDNweCAwOwogICAgY3Vyc29yOiBwb2ludGVyOwogICAgYnJlYWstaW5zaWRlOiBhdm9p ZDsKICAgIC13ZWJraXQtY29sdW1uLWJyZWFrLWluc2lkZTogYXZvaWQ7CiAgICBwYWdlLWJyZWFr LWluc2lkZTogYXZvaWQ7Cn0KLmVyLXBlcnNvbmVuLW5hbWUgeyBmbGV4OiAxOyBtaW4td2lkdGg6 IDA7IG92ZXJmbG93OiBoaWRkZW47IHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOyB3aGl0ZS1zcGFj ZTogbm93cmFwOyB9Ci5lci1wZXJzb25lbi1ncnVwcGUgewogICAgY29sb3I6IHZhcigtLXRleHQt bXV0ZWQpOwogICAgZm9udC1zaXplOiB2YXIoLS1mcy1zbSk7CiAgICBmb250LXdlaWdodDogNTAw OwogICAgYmFja2dyb3VuZDogdmFyKC0tYmctY2FyZC1hbHQpOwogICAgcGFkZGluZzogMXB4IDZw eDsKICAgIGJvcmRlci1yYWRpdXM6IDhweDsKICAgIGZsZXgtc2hyaW5rOiAwOwp9CkBtZWRpYSAo bWF4LXdpZHRoOiAxMTAwcHgpIHsKICAgIC5lci1wZXJzb25lbi1ncmlkIHsgY29sdW1uLWNvdW50 OiAyOyB9Cn0KCi8qIENoZXJyeS1QaWNrIDg5ZWIzYzc6IERpcmVrdGUtS29sbGVnZW4tSGVydm9y aGVidW5nIGltIFBlcnNvbi1FZGl0LURpYWxvZy4KICAgTnVyIGFrdGl2LCB3ZW5uIGBmZWF0dXJl cy5rb2xsZWdlbkhlcnZvcmhlYmVuYCBhbiBpc3QuCiAgIE1pa3JvdGVhbS1TZWt0aW9uIChrb2xs ZWdlbi1taWtybykgZm9sZ3QgZGVyIGdsZWljaGVuIFN0cnVrdHVyLiAqLwpmaWVsZHNldC5rb2xs ZWdlbi1taWtybywKZmllbGRzZXQua29sbGVnZW4tZGlyZWt0LApmaWVsZHNldC5rb2xsZWdlbi1y ZXN0IHsKICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWJvcmRlci1saWdodCk7CiAgICBib3Jk ZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtc20pOwogICAgcGFkZGluZzogOHB4IDEycHggMTBweDsK ICAgIG1hcmdpbjogMTBweCAwIDA7Cn0KZmllbGRzZXQua29sbGVnZW4tZGlyZWt0IHsKICAgIGJh Y2tncm91bmQ6IHJnYmEoMzksIDEzNywgMTA5LCAwLjA2KTsgIC8qIGRlemVudCBncnVlbmxpY2gg Ki8KICAgIGJvcmRlci1jb2xvcjogcmdiYSgzOSwgMTM3LCAxMDksIDAuNDUpOwp9CmZpZWxkc2V0 LmtvbGxlZ2VuLW1pa3JvIHsKICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgOTksIDE3NSwgMC4wNik7 ICAgIC8qIGRlemVudCBibGFldWxpY2gsIFBvbGl6ZWktQmxhdS1IYXVjaCAqLwogICAgYm9yZGVy LWNvbG9yOiByZ2JhKDAsIDk5LCAxNzUsIDAuNDUpOwp9CmZpZWxkc2V0LmtvbGxlZ2VuLW1pa3Jv ICA+IGxlZ2VuZCwKZmllbGRzZXQua29sbGVnZW4tZGlyZWt0ID4gbGVnZW5kLApmaWVsZHNldC5r b2xsZWdlbi1yZXN0ICAgPiBsZWdlbmQgewogICAgcGFkZGluZzogMCA2cHg7CiAgICBmb250LXdl aWdodDogNjAwOwogICAgZm9udC1zaXplOiB2YXIoLS1mcy1iYXNlKTsKfQpmaWVsZHNldC5rb2xs ZWdlbi1taWtybyAgPiAuZXItcGVyc29uZW4temVpbGUsCmZpZWxkc2V0LmtvbGxlZ2VuLWRpcmVr dCA+IC5lci1wZXJzb25lbi16ZWlsZSwKZmllbGRzZXQua29sbGVnZW4tcmVzdCAgID4gLmVyLXBl cnNvbmVuLXplaWxlIHsKICAgIG1hcmdpbi1yaWdodDogMTJweDsKfQpmaWVsZHNldC5rb2xsZWdl bi1kaXJla3QgPiAuZXItcGVyc29uZW4temVpbGUgKyAuZXItcGVyc29uZW4temVpbGUgewogICAg LyogRGlyZWt0ZSBLb2xsZWdlbiB3ZXJkZW4gaW5saW5lIChGbGV4LUxpa2UpIGdlcmVuZGVydCwg bmljaHQgaW4gU3BhbHRlbiDigJQgbWVpc3QgbnVyIGVpbiBwYWFyICovCn0KCi8qIEluYWt0aXZl IENvZGVzIGFscyBvcHRpc2NoIGFiZ2VzZXR6dGUgU2VrdGlvbiBhbSBFbmRlICovCi5zYy1ncnVw cGUtaW5ha3RpdiB7CiAgICBtYXJnaW4tdG9wOiAyNHB4OwogICAgcGFkZGluZy10b3A6IDEycHg7 CiAgICBib3JkZXItdG9wOiAxcHggZGFzaGVkIHZhcigtLWJvcmRlci1zdHJvbmcpOwogICAgYm9y ZGVyLWxlZnQtY29sb3I6IHZhcigtLWJvcmRlci1saWdodCk7CiAgICBvcGFjaXR5OiAwLjg1Owp9 Ci5zYy1ncnVwcGUtdGl0ZWwtaW5ha3RpdiB7CiAgICBjb2xvcjogdmFyKC0tdGV4dC1zZWNvbmRh cnkpOwp9CgovKiBTb25kZXJ0ZXJtaW5lLUxpc3RlIChyZWFkLW9ubHkpICovCi5zb25kZXItaWNv bi16ZWxsZSB7CiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsg anVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICB3aWR0aDogMzJweDsgaGVpZ2h0OiAzMnB4OyBm b250LXNpemU6IDE4cHg7IGJvcmRlci1yYWRpdXM6IDVweDsKICAgIGJhY2tncm91bmQ6IHZhcigt LWJnLWNhcmQtYWx0KTsgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tYm9yZGVyLWxpZ2h0KTsKICAg IGZvbnQtZmFtaWx5OiAiQXBwbGUgQ29sb3IgRW1vamkiLCJTZWdvZSBVSSBFbW9qaSIsIk5vdG8g Q29sb3IgRW1vamkiLHNhbnMtc2VyaWY7Cn0KLnNvbmRlci1pY29uLXplbGxlLmxlZXIgeyBjb2xv cjogdmFyKC0tdGV4dC1tdXRlZCk7IGZvbnQtc2l6ZTogdmFyKC0tZnMtbWQpOyBmb250LWZhbWls eTogaW5oZXJpdDsgfQouc29uZGVyLXR5cC1iYWRnZSB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxv Y2s7IHBhZGRpbmc6IDJweCA4cHg7IGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1sZyk7IGZv bnQtc2l6ZTogdmFyKC0tZnMtc20pOyBmb250LXdlaWdodDogNjAwOwp9Ci5zb25kZXItdHlwLWlu Zm8geyBiYWNrZ3JvdW5kOiByZ2JhKDQxLDEyOCwxODUsMC4xNSk7IGNvbG9yOiB2YXIoLS1mYXJi ZS1ha3plbnQpOyB9Ci5zb25kZXItdHlwLXdhcm4geyBiYWNrZ3JvdW5kOiByZ2JhKDIwMiwxMTEs MzAsMC4xOCk7IGNvbG9yOiB2YXIoLS1mYXJiZS13YXJudW5nKTsgfQoKLyogQmFja3VwLVR5cC1C YWRnZXMgKi8KLmJrLXR5cCB7IGRpc3BsYXk6IGlubGluZS1ibG9jazsgcGFkZGluZzogMnB4IDhw eDsgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLWxnKTsgZm9udC1zaXplOiAxMC41cHg7IGZv bnQtd2VpZ2h0OiA2MDA7IHdoaXRlLXNwYWNlOiBub3dyYXA7IH0KLmJrLXR5cC1tYW51ZWxsIHsg YmFja2dyb3VuZDogcmdiYSgyNyw5NCwzMiwwLjE1KTsgY29sb3I6ICMxQjVFMjA7IH0KLmJrLXR5 cC1hdXRvIHsgYmFja2dyb3VuZDogcmdiYSgyMDIsMTExLDMwLDAuMTgpOyBjb2xvcjogdmFyKC0t ZmFyYmUtd2FybnVuZyk7IH0KLmJrLXR5cC1zaWNoZXJ1bmcgeyBiYWNrZ3JvdW5kOiByZ2JhKDQx LDEyOCwxODUsMC4xNSk7IGNvbG9yOiB2YXIoLS1mYXJiZS1ha3plbnQpOyB9CltkYXRhLXRoZW1l PSJuaWdodCJdIC5iay10eXAtbWFudWVsbCB7IGJhY2tncm91bmQ6IHJnYmEoMjcsOTQsMzIsMC4z KTsgY29sb3I6ICNhNWQ2YTc7IH0KW2RhdGEtdGhlbWU9Im5pZ2h0Il0gLmJrLXR5cC1hdXRvIHsg YmFja2dyb3VuZDogcmdiYSgyMDIsMTExLDMwLDAuMyk7IGNvbG9yOiAjZmZjYzgwOyB9CltkYXRh LXRoZW1lPSJuaWdodCJdIC5iay10eXAtc2ljaGVydW5nIHsgYmFja2dyb3VuZDogcmdiYSg0MSwx MjgsMTg1LDAuMyk7IGNvbG9yOiAjOTBjYWY5OyB9Ci8qIEJhY2t1cC1JbmhhbHRzdHlwLUJhZGdl IGltIEFkbWluIC0+IEJhY2t1cHMgKEtvbXBsZXR0IHZzLiBOdXIgUGxhbnVuZykuCiAgIEZydWVo ZXIgYWxzIC5iay1pbmhhbHQgZGVmaW5pZXJ0IC0tIGtvbGxpZGllcnRlIG1pdCBkZW0gZ2xlaWNo bmFtaWdlbgogICBDb250YWluZXIgZGVyIFBydWVmdW5ncy1BbnNpY2h0ICgjYmstaW5oYWx0KS4g Ki8KLmJrLWluaGFsdHN0eXAgeyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IHBhZGRpbmc6IDJweCA4 cHg7IGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1sZyk7IGZvbnQtc2l6ZTogMTAuNXB4OyBm b250LXdlaWdodDogNjAwOyB3aGl0ZS1zcGFjZTogbm93cmFwOyB9Ci5iay1pbmhhbHRzdHlwLWtv bXBsZXR0IHsgYmFja2dyb3VuZDogcmdiYSg3NCwxNDQsMjI2LDAuMTUpOyBjb2xvcjogdmFyKC0t ZmFyYmUtYWt6ZW50KTsgfQouYmstaW5oYWx0c3R5cC1wbGFudW5nIHsgYmFja2dyb3VuZDogcmdi YSgxNDksMTY1LDE2NiwwLjE4KTsgY29sb3I6IHZhcigtLXRleHQtbXV0ZWQpOyB9CltkYXRhLXRo ZW1lPSJuaWdodCJdIC5iay1pbmhhbHRzdHlwLWtvbXBsZXR0IHsgYmFja2dyb3VuZDogcmdiYSg3 NCwxNDQsMjI2LDAuMyk7IGNvbG9yOiAjOTBjYWY5OyB9CltkYXRhLXRoZW1lPSJuaWdodCJdIC5i ay1pbmhhbHRzdHlwLXBsYW51bmcgeyBiYWNrZ3JvdW5kOiByZ2JhKDE0OSwxNjUsMTY2LDAuMyk7 IGNvbG9yOiB2YXIoLS10ZXh0LW11dGVkKTsgfQoKLyogPT09PT0gQmVzZXR6dW5nc2tvbnRyb2xs ZSAoR2VzYW10dmVyYW50d29ydGxpY2hlKSA9PT09PSAqLwovKiBmbGV4OjEgKyBvdmVyZmxvdy15 OmF1dG8sIGRhbWl0IGRlciBJbmhhbHQgaW0gLmFuc2ljaHQtQ29udGFpbmVyCiAgIChoZWlnaHQ6 MTAwdmgtNDBweDsgb3ZlcmZsb3c6aGlkZGVuKSBzY3JvbGx0LCB3ZW5uIGVyIGhvZWhlciBpc3QK ICAgYWxzIGRhcyBWaWV3cG9ydC4gbWluLWhlaWdodDowIHdlZ2VuIGZsZXgtbWluLWNvbnRlbnQt RGVmYXVsdC4gKi8KLmJrLWxheW91dCB7CiAgICBwYWRkaW5nOiAxNnB4IDIwcHggNDBweCAyMHB4 OwogICAgd2lkdGg6IDEwMCU7CiAgICBmbGV4OiAxOwogICAgbWluLWhlaWdodDogMDsKICAgIG92 ZXJmbG93LXk6IGF1dG87Cn0KLmJrLWtvcGYgeyBkaXNwbGF5OiBmbGV4OyBqdXN0aWZ5LWNvbnRl bnQ6IHNwYWNlLWJldHdlZW47IGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0OyBnYXA6IDIwcHg7IG1h cmdpbi1ib3R0b206IDE0cHg7IHBhZGRpbmctYm90dG9tOiAxMHB4OyBib3JkZXItYm90dG9tOiAx cHggc29saWQgdmFyKC0tYm9yZGVyLWxpZ2h0KTsgZmxleC13cmFwOiB3cmFwOyB9Ci5iay1rb3Bm LXN0YXRzIHsgZGlzcGxheTogZmxleDsgZ2FwOiAxMHB4OyB9Ci5iay1rcGkgeyBiYWNrZ3JvdW5k OiB2YXIoLS1iZy1jYXJkKTsgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tYm9yZGVyLWxpZ2h0KTsg Ym9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLW1kKTsgcGFkZGluZzogNnB4IDEycHg7IG1pbi13 aWR0aDogNzZweDsgdGV4dC1hbGlnbjogY2VudGVyOyB9Ci5iay1rcGktemFobCB7IGZvbnQtc2l6 ZTogMThweDsgZm9udC13ZWlnaHQ6IDcwMDsgY29sb3I6IHZhcigtLXRleHQtaGVhZGluZyk7IGxp bmUtaGVpZ2h0OiAxLjE7IH0KLmJrLWtwaS1sYWJlbCB7IGZvbnQtc2l6ZTogMTAuNXB4OyBjb2xv cjogdmFyKC0tdGV4dC1tdXRlZCk7IG1hcmdpbi10b3A6IDFweDsgfQouYmsta3BpLXdhcm4geyBi b3JkZXItY29sb3I6IHJnYmEoMjAyLDExMSwzMCwwLjUpOyBiYWNrZ3JvdW5kOiByZ2JhKDIwMiwx MTEsMzAsMC4wNik7IH0KLmJrLWtwaS13YXJuIC5iay1rcGktemFobCB7IGNvbG9yOiB2YXIoLS1m YXJiZS13YXJudW5nKTsgfQouYmsta3BpLW9rIHsgYm9yZGVyLWNvbG9yOiByZ2JhKDM5LDEzNywx MDksMC40KTsgYmFja2dyb3VuZDogcmdiYSgzOSwxMzcsMTA5LDAuMDYpOyB9Ci5iay1rcGktb2sg LmJrLWtwaS16YWhsIHsgY29sb3I6IHZhcigtLWZhcmJlLWVyZm9sZyk7IH0KCi8qIFBlcnNvZW5s aWNoZSBCZWdydWVzc3VuZ3MtQm94IGltIFBydWVmdW5ncy1UYWIg4oCUIGVudHNwYW5udCBtaXQK ICAgZWlua2xhcHBiYXJlciBEZXRhaWwtRXJrbGFlcnVuZy4gQW5yZWRlICsgQnJpZWZpbmctQnV0 dG9uIGltbWVyCiAgIHNpY2h0YmFyIGFscyBRdWljay1FaW5zdGllZywgUXVpY2tpbnRybyBkYXJ1 bnRlci4gKi8KLmJrLWJlZ3J1ZXNzdW5nIHsKICAgIGJhY2tncm91bmQ6IHZhcigtLWJnLWNhcmQp OwogICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tYm9yZGVyLWxpZ2h0KTsKICAgIGJvcmRlci1y YWRpdXM6IDhweDsKICAgIHBhZGRpbmc6IDE0cHggMThweDsKICAgIG1hcmdpbi1ib3R0b206IDE0 cHg7CiAgICBsaW5lLWhlaWdodDogMS41Owp9Ci5iay1iZWdyLWtvcGYgewogICAgZGlzcGxheTog ZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVu OwogICAgZ2FwOiAxNnB4OyBmbGV4LXdyYXA6IHdyYXA7CiAgICBtYXJnaW4tYm90dG9tOiA4cHg7 Cn0KLmJrLWJlZ3ItYW5yZWRlIHsKICAgIGZvbnQtc2l6ZTogMTdweDsKICAgIGZvbnQtd2VpZ2h0 OiA3MDA7CiAgICBjb2xvcjogdmFyKC0tdGV4dC1oZWFkaW5nKTsKfQouYmstYmVnci1xdWlja2lu dHJvIHsKICAgIG1hcmdpbjogMCAwIDZweCAwICFpbXBvcnRhbnQ7CiAgICBmb250LXNpemU6IHZh cigtLWZzLW1kKTsKICAgIGNvbG9yOiB2YXIoLS10ZXh0LXNlY29uZGFyeSk7Cn0KLmJrLWJlZ3It ZGV0YWlscyB7IG1hcmdpbi10b3A6IDZweDsgfQouYmstYmVnci1kZXRhaWxzID4gc3VtbWFyeSB7 CiAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICBmb250LXNpemU6IDEyLjVweDsKICAgIGNvbG9yOiB2 YXIoLS10ZXh0LXNlY29uZGFyeSk7CiAgICBwYWRkaW5nOiA0cHggMDsKICAgIGxpc3Qtc3R5bGU6 IHJldmVydDsKICAgIHVzZXItc2VsZWN0OiBub25lOwp9Ci5iay1iZWdyLWRldGFpbHMgPiBzdW1t YXJ5OmhvdmVyIHsgY29sb3I6IHZhcigtLXRleHQtaGVhZGluZyk7IH0KLmJrLWJlZ3ItZGV0YWls c1tvcGVuXSA+IHN1bW1hcnkgeyBtYXJnaW4tYm90dG9tOiA4cHg7IH0KLmJrLWJlZ3J1ZXNzdW5n IHAgeyBtYXJnaW46IDAgMCA4cHggMDsgZm9udC1zaXplOiAxMi41cHg7IGNvbG9yOiB2YXIoLS10 ZXh0LXByaW1hcnkpOyB9Ci5iay1iZWdyLWxlZ2VuZGUgewogICAgZGlzcGxheTogZmxleDsgZmxl eC1kaXJlY3Rpb246IHJvdzsgZmxleC13cmFwOiB3cmFwOyBnYXA6IDE0cHg7CiAgICBiYWNrZ3Jv dW5kOiB2YXIoLS1iZy1jYXJkLWFsdCk7CiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMt bWQpOwogICAgcGFkZGluZzogOHB4IDEycHg7CiAgICBtYXJnaW46IDhweCAwIDEwcHggMDsKfQou YmstYmVnci1laW50cmFnIHsgZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsgZ2Fw OiA4cHg7IGZvbnQtc2l6ZTogdmFyKC0tZnMtYmFzZSk7IGxpbmUtaGVpZ2h0OiAxLjM1OyBmbGV4 OiAxIDEgMjgwcHg7IH0KLmJrLWJlZ3ItcGlsbCB7CiAgICBmbGV4LXNocmluazogMDsKICAgIGRp c3BsYXk6IGlubGluZS1ibG9jazsKICAgIHBhZGRpbmc6IDJweCAxMHB4OwogICAgYm9yZGVyLXJh ZGl1czogdmFyKC0tcmFkaXVzLXNtKTsKICAgIGZvbnQtc2l6ZTogMTAuNXB4OwogICAgZm9udC13 ZWlnaHQ6IDcwMDsKICAgIGNvbG9yOiAjZmZmOwogICAgbWluLXdpZHRoOiA1MHB4OwogICAgdGV4 dC1hbGlnbjogY2VudGVyOwp9Ci5iay1iZWdyLXBpbGwtcm90ICAgeyBiYWNrZ3JvdW5kOiAjQjAz QTJFOyB9Ci5iay1iZWdyLXBpbGwtZ2VsYiAgeyBiYWNrZ3JvdW5kOiAjQ0E2RjFFOyB9Ci5iay1i ZWdyLXBpbGwtZ3J1ZW4geyBiYWNrZ3JvdW5kOiAjMjc4OTZEOyB9Ci5iay1iZWdyLW1haWwgewog ICAgYmFja2dyb3VuZDogcmdiYSg3NCwxNDQsMjI2LDAuMDgpOwogICAgYm9yZGVyLWxlZnQ6IDNw eCBzb2xpZCB2YXIoLS1mYXJiZS1ha3plbnQpOwogICAgcGFkZGluZzogOHB4IDEycHg7CiAgICBi b3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtc20pOwogICAgbWFyZ2luLXRvcDogNHB4ICFpbXBv cnRhbnQ7CiAgICBmb250LXNpemU6IDEyLjVweCAhaW1wb3J0YW50Owp9CltkYXRhLXRoZW1lPSJu aWdodCJdIC5iay1iZWdyLW1haWwgeyBiYWNrZ3JvdW5kOiByZ2JhKDc0LDE0NCwyMjYsMC4xNSk7 IH0KLmJrLWJlZ3ItYnJpZWZpbmcgewogICAgbWFyZ2luLXRvcDogOHB4ICFpbXBvcnRhbnQ7CiAg ICBkaXNwbGF5OiBmbGV4OwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIGdhcDogMTBweDsK ICAgIGZsZXgtd3JhcDogd3JhcDsKICAgIGZvbnQtc2l6ZTogMTIuNXB4OwogICAgY29sb3I6IHZh cigtLXRleHQtc2Vjb25kYXJ5KTsKfQouYmstYmVnci1icmllZmluZyBzbWFsbCB7IGNvbG9yOiB2 YXIoLS10ZXh0LW11dGVkKTsgfQoKLyogPT09PT0gRGVmaXppdC1CcmllZmluZy1JbnRlcnZpZXct TW9kYWwgPT09PT0gKi8KLmRlZml6aXQtYnJpZWZpbmctbW9kYWwgeyBmb250LXNpemU6IHZhcigt LWZzLW1kKTsgfQouZGVmaXppdC1icmllZmluZy1tb2RhbCAuZGJtLWZyYWdlIHsKICAgIG1hcmdp bjogMTRweCAwIDZweCAwOyBmb250LXNpemU6IDEzLjVweDsgZm9udC13ZWlnaHQ6IDYwMDsKICAg IGNvbG9yOiB2YXIoLS10ZXh0LWhlYWRpbmcpOwp9Ci5kZWZpeml0LWJyaWVmaW5nLW1vZGFsIC5k Ym0tZnJhZ2U6Zmlyc3QtY2hpbGQgeyBtYXJnaW4tdG9wOiAwOyB9Ci5kZWZpeml0LWJyaWVmaW5n LW1vZGFsIC5kYm0tb3B0aW9uZW4gewogICAgZGlzcGxheTogZmxleDsgZmxleC1kaXJlY3Rpb246 IGNvbHVtbjsgZ2FwOiA0cHg7CiAgICBwYWRkaW5nLWxlZnQ6IDRweDsKfQouZGVmaXppdC1icmll ZmluZy1tb2RhbCAuZGJtLW9wdGlvbmVuIGxhYmVsIHsKICAgIGN1cnNvcjogcG9pbnRlcjsgcGFk ZGluZzogNHB4IDZweDsgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLXNtKTsKICAgIHRyYW5z aXRpb246IGJhY2tncm91bmQgMC4xMnM7Cn0KLmRlZml6aXQtYnJpZWZpbmctbW9kYWwgLmRibS1v cHRpb25lbiBsYWJlbDpob3ZlciB7IGJhY2tncm91bmQ6IHZhcigtLWJnLWhvdmVyKTsgfQouZGVm aXppdC1icmllZmluZy1tb2RhbCAuZGJtLW9wdGlvbmVuIGlucHV0W3R5cGU9InJhZGlvIl0geyBt YXJnaW4tcmlnaHQ6IDZweDsgfQouZGVmaXppdC1icmllZmluZy1tb2RhbCAuZGJtLWhpbnQgewog ICAgZm9udC1zaXplOiB2YXIoLS1mcy1iYXNlKTsgY29sb3I6IHZhcigtLXRleHQtbXV0ZWQpOyBt YXJnaW46IDRweCAwIDhweCAwOwp9Ci5kZWZpeml0LWJyaWVmaW5nLW1vZGFsIC5kYm0tZW1wZmFl bmdlci1saXN0ZSB7CiAgICBtYXgtaGVpZ2h0OiAyMjBweDsgb3ZlcmZsb3cteTogYXV0bzsKICAg IGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWJvcmRlci1saWdodCk7IGJvcmRlci1yYWRpdXM6IHZh cigtLXJhZGl1cy1zbSk7CiAgICBwYWRkaW5nOiA2cHggOHB4OyBiYWNrZ3JvdW5kOiB2YXIoLS1i Zy1jYXJkLWFsdCk7Cn0KLmRlZml6aXQtYnJpZWZpbmctbW9kYWwgLmRibS1pbmZvIHsKICAgIGZv bnQtc2l6ZTogdmFyKC0tZnMtYmFzZSk7IGNvbG9yOiB2YXIoLS10ZXh0LW11dGVkKTsKICAgIG1h cmdpbi1ib3R0b206IDZweDsgZm9udC1zdHlsZTogaXRhbGljOwp9Ci5kZWZpeml0LWJyaWVmaW5n LW1vZGFsIC5kYm0tbGVlciB7CiAgICBtYXJnaW46IDRweCAwOyBmb250LXNpemU6IDEyLjVweDsg Y29sb3I6IHZhcigtLXRleHQtbXV0ZWQpOwogICAgdGV4dC1hbGlnbjogY2VudGVyOyBwYWRkaW5n OiA4cHg7Cn0KLmRlZml6aXQtYnJpZWZpbmctbW9kYWwgLmRibS1wZXJzb25lbiB7CiAgICBsaXN0 LXN0eWxlOiBub25lOyBwYWRkaW5nOiAwOyBtYXJnaW46IDA7Cn0KLmRlZml6aXQtYnJpZWZpbmct bW9kYWwgLmRibS1wZXJzb25lbiBsaSB7CiAgICBwYWRkaW5nOiAzcHggMDsgYm9yZGVyLWJvdHRv bTogMXB4IHNvbGlkIHZhcigtLWJvcmRlci1saWdodCk7Cn0KLmRlZml6aXQtYnJpZWZpbmctbW9k YWwgLmRibS1wZXJzb25lbiBsaTpsYXN0LWNoaWxkIHsgYm9yZGVyLWJvdHRvbTogbm9uZTsgfQou ZGVmaXppdC1icmllZmluZy1tb2RhbCAuZGJtLXBlcnNvbmVuIGxhYmVsIHsKICAgIGN1cnNvcjog cG9pbnRlcjsgZGlzcGxheTogYmxvY2s7IHBhZGRpbmc6IDJweCAwOwogICAgZm9udC1zaXplOiAx Mi41cHg7Cn0KLmRlZml6aXQtYnJpZWZpbmctbW9kYWwgLmRibS1wZXJzb25lbiBsYWJlbC5kYm0t ZGlzYWJsZWQgewogICAgY3Vyc29yOiBub3QtYWxsb3dlZDsgb3BhY2l0eTogMC42Owp9Ci5kZWZp eml0LWJyaWVmaW5nLW1vZGFsIC5kYm0tcGVyc29uZW4gaW5wdXRbdHlwZT0iY2hlY2tib3giXSB7 IG1hcmdpbi1yaWdodDogNnB4OyB9Ci5kZWZpeml0LWJyaWVmaW5nLW1vZGFsIC5kYm0tdGFnZSB7 CiAgICBjb2xvcjogdmFyKC0tdGV4dC1tdXRlZCk7IGZvbnQtc2l6ZTogMTEuNXB4Owp9Ci5kZWZp eml0LWJyaWVmaW5nLW1vZGFsIC5kYm0tbm8tbWFpbCB7CiAgICBjb2xvcjogdmFyKC0tZmFyYmUt d2FybnVuZyk7IGZvbnQtc2l6ZTogMTEuNXB4OyBmb250LXdlaWdodDogNTAwOwp9Ci5kZWZpeml0 LWJyaWVmaW5nLW1vZGFsIC5kYm0tY2MtaGludCB7CiAgICBtYXJnaW4tdG9wOiAxMHB4OyBwYWRk aW5nOiA2cHggOHB4OwogICAgYmFja2dyb3VuZDogdmFyKC0tYmctY2FyZC1hbHQpOyBib3JkZXIt cmFkaXVzOiB2YXIoLS1yYWRpdXMtc20pOwogICAgZm9udC1zaXplOiB2YXIoLS1mcy1iYXNlKTsK fQoKLyogPT09PT0gS2FsZW5kZXItTGF5b3V0IGRlciBQcnVlZnVuZ3NhbnNpY2h0ID09PT09ICov Ci5iay1rYWwgewogICAgZGlzcGxheTogZmxleDsgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAg IGJhY2tncm91bmQ6IHZhcigtLWJnLWNhcmQpOwogICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0t Ym9yZGVyLWxpZ2h0KTsKICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1tZCk7CiAgICBv dmVyZmxvdzogaGlkZGVuOwp9Ci5iay1rYWwtd3Qta29wZiwgLmJrLWthbC13b2NoZSB7CiAgICBk aXNwbGF5OiBncmlkOwogICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoNywgMWZyKTsK fQouYmsta2FsLXd0LWtvcGYgeyBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1jYXJkLWFsdCk7IGJvcmRl ci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1ib3JkZXItc3Ryb25nKTsgfQouYmsta2FsLXd0IHsK ICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgIGZvbnQtd2VpZ2h0OiA3MDA7IGZvbnQtc2l6ZTog dmFyKC0tZnMtc20pOwogICAgcGFkZGluZzogNnB4IDA7CiAgICBjb2xvcjogdmFyKC0tdGV4dC1z ZWNvbmRhcnkpOwogICAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgdmFyKC0tYm9yZGVyLWxpZ2h0 KTsKfQouYmsta2FsLXd0Omxhc3QtY2hpbGQgeyBib3JkZXItcmlnaHQ6IG5vbmU7IH0KLmJrLWth bC13dC13ZSB7IGNvbG9yOiB2YXIoLS10ZXh0LW11dGVkKTsgfQouYmsta2FsLXdvY2hlIHsgYm9y ZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLWJvcmRlci1saWdodCk7IH0KLmJrLWthbC13b2No ZTpsYXN0LWNoaWxkIHsgYm9yZGVyLWJvdHRvbTogbm9uZTsgfQoKLmJrLWthbC10YWcgewogICAg Ym9yZGVyLXJpZ2h0OiAxcHggc29saWQgdmFyKC0tYm9yZGVyLWxpZ2h0KTsKICAgIHBhZGRpbmc6 IDZweCA4cHg7CiAgICBtaW4taGVpZ2h0OiA2NHB4OwogICAgZGlzcGxheTogZmxleDsgZmxleC1k aXJlY3Rpb246IGNvbHVtbjsKICAgIGdhcDogNHB4OwogICAgcG9zaXRpb246IHJlbGF0aXZlOwog ICAgdHJhbnNpdGlvbjogZmlsdGVyIDAuMTJzLCB0cmFuc2Zvcm0gMC4wOHM7Cn0KLmJrLWthbC10 YWc6bGFzdC1jaGlsZCB7IGJvcmRlci1yaWdodDogbm9uZTsgfQouYmsta2FsLWF1c3NlbiB7CiAg ICBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1jYXJkLWFsdCk7CiAgICBjb2xvcjogdmFyKC0tdGV4dC1t dXRlZCk7CiAgICBvcGFjaXR5OiAwLjU1Owp9Ci5iay1rYWwtd2UgeyBiYWNrZ3JvdW5kOiByZ2Jh KDAsMCwwLDAuMDIpOyB9CltkYXRhLXRoZW1lPSJuaWdodCJdIC5iay1rYWwtd2UgeyBiYWNrZ3Jv dW5kOiByZ2JhKDI1NSwyNTUsMjU1LDAuMDIpOyB9Ci5iay1rYWwtaGV1dGUgewogICAgYm94LXNo YWRvdzogaW5zZXQgMCAwIDAgMnB4IHZhcigtLXRleHQtaGVhZGluZyk7CiAgICB6LWluZGV4OiAx Owp9CgouYmsta2FsLXRhZ25yIHsKICAgIGZvbnQtc2l6ZTogdmFyKC0tZnMtbGcpOyBmb250LXdl aWdodDogNzAwOwogICAgY29sb3I6IHZhcigtLXRleHQtaGVhZGluZyk7CiAgICBsaW5lLWhlaWdo dDogMTsKfQouYmsta2FsLW1vIHsKICAgIGZvbnQtc2l6ZTogOS41cHg7IGZvbnQtd2VpZ2h0OiA3 MDA7CiAgICBjb2xvcjogdmFyKC0tdGV4dC1tdXRlZCk7CiAgICB0ZXh0LXRyYW5zZm9ybTogdXBw ZXJjYXNlOwogICAgbGV0dGVyLXNwYWNpbmc6IDAuNHB4OwogICAgbWFyZ2luLWxlZnQ6IDZweDsK fQoKLyogU3RhdHVzLUhpbnRlcmdydWVuZGU6IFJvdC9HZWxiL0dydWVuIG1pdCBkZXplbnRlciBT YWV0dGlndW5nLiAqLwouYmsta2FsLXJvdCAgIHsgYmFja2dyb3VuZDogcmdiYSgxNzYsIDU4LCA0 NiwgMC4xOCk7IGN1cnNvcjogcG9pbnRlcjsgfQouYmsta2FsLXJvdDpob3ZlciAgIHsgYmFja2dy b3VuZDogcmdiYSgxNzYsIDU4LCA0NiwgMC4yOCk7IH0KLmJrLWthbC1nZWxiICB7IGJhY2tncm91 bmQ6IHJnYmEoMjAyLCAxMTEsIDMwLCAwLjE2KTsgY3Vyc29yOiBwb2ludGVyOyB9Ci5iay1rYWwt Z2VsYjpob3ZlciAgeyBiYWNrZ3JvdW5kOiByZ2JhKDIwMiwgMTExLCAzMCwgMC4yNik7IH0KLmJr LWthbC1ncnVlbiB7IGJhY2tncm91bmQ6IHJnYmEoMzksIDEzNywgMTA5LCAwLjEzKTsgY3Vyc29y OiBwb2ludGVyOyB9Ci5iay1rYWwtZ3J1ZW46aG92ZXIgeyBiYWNrZ3JvdW5kOiByZ2JhKDM5LCAx MzcsIDEwOSwgMC4yMik7IH0KCi8qIE1pbmktSW5kaWthdG9yZW4gamUgU2NoaWNodCAoRi9TL04p IGFtIHVudGVyZW4gUmFuZCBkZXIgWmVsbGUgKi8KLmJrLWthbC1taW5pIHsgZGlzcGxheTogZmxl eDsgZ2FwOiAzcHg7IG1hcmdpbi10b3A6IGF1dG87IH0KLmJrLWthbC1taW5pLXplbGxlIHsKICAg IGZsZXg6IDE7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICBmb250LXNpemU6IHZhcigtLWZz LXhzKTsgZm9udC13ZWlnaHQ6IDcwMDsKICAgIHBhZGRpbmc6IDFweCAwOwogICAgYm9yZGVyLXJh ZGl1czogdmFyKC0tcmFkaXVzLXhzKTsKICAgIGJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50 Owp9Ci5iay1rYWwtbWluaS1yb3QgICB7IGJhY2tncm91bmQ6ICNCMDNBMkU7IGNvbG9yOiAjZmZm OyBib3JkZXItY29sb3I6IHJnYmEoMCwwLDAsMC4xNSk7IH0KLmJrLWthbC1taW5pLWdlbGIgIHsg YmFja2dyb3VuZDogI0NBNkYxRTsgY29sb3I6ICNmZmY7IGJvcmRlci1jb2xvcjogcmdiYSgwLDAs MCwwLjE1KTsgfQouYmsta2FsLW1pbmktZ3J1ZW4geyBiYWNrZ3JvdW5kOiAjMjc4OTZEOyBjb2xv cjogI2ZmZjsgYm9yZGVyLWNvbG9yOiByZ2JhKDAsMCwwLDAuMTUpOyB9CgovKiBUYWctRGV0YWls LU1vZGFsICovCi5iay1kZXRhaWwta29wZiB7CiAgICBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVt czogY2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47CiAgICBnYXA6IDEycHg7 IHBhZGRpbmc6IDEwcHggMTRweDsKICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1tZCk7 CiAgICBtYXJnaW4tYm90dG9tOiAxNHB4OwogICAgYmFja2dyb3VuZDogdmFyKC0tYmctY2FyZC1h bHQpOwp9Ci5iay1kZXRhaWwta29wZi1yb3QgICB7IGJhY2tncm91bmQ6IHJnYmEoMTc2LCA1OCwg NDYsIDAuMTQpOyB9Ci5iay1kZXRhaWwta29wZi1nZWxiICB7IGJhY2tncm91bmQ6IHJnYmEoMjAy LCAxMTEsIDMwLCAwLjE0KTsgfQouYmstZGV0YWlsLWtvcGYtZ3J1ZW4geyBiYWNrZ3JvdW5kOiBy Z2JhKDM5LCAxMzcsIDEwOSwgMC4xMik7IH0KLmJrLWRldGFpbC10aXRlbCB7IGZvbnQtc2l6ZTog MTZweDsgZm9udC13ZWlnaHQ6IDcwMDsgY29sb3I6IHZhcigtLXRleHQtaGVhZGluZyk7IH0KCi5i ay1kZXRhaWwtc2NoaWNodGVuIHsKICAgIGRpc3BsYXk6IGdyaWQ7CiAgICBncmlkLXRlbXBsYXRl LWNvbHVtbnM6IHJlcGVhdChhdXRvLWZpdCwgbWlubWF4KDI2MHB4LCAxZnIpKTsKICAgIGdhcDog MTBweDsKICAgIG1hcmdpbi1ib3R0b206IDE0cHg7Cn0KLmJrLWRldGFpbC1zY2hpY2h0IHsKICAg IGJhY2tncm91bmQ6IHZhcigtLWJnLWNhcmQpOwogICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0t Ym9yZGVyLWxpZ2h0KTsKICAgIGJvcmRlci1sZWZ0OiA0cHggc29saWQgdmFyKC0tdGV4dC1tdXRl ZCk7CiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbWQpOwogICAgcGFkZGluZzogOHB4 IDEycHg7Cn0KLmJrLWRldGFpbC1zY2hpY2h0LXJvdCAgIHsgYm9yZGVyLWxlZnQtY29sb3I6ICNC MDNBMkU7IH0KLmJrLWRldGFpbC1zY2hpY2h0LWdlbGIgIHsgYm9yZGVyLWxlZnQtY29sb3I6ICND QTZGMUU7IH0KLmJrLWRldGFpbC1zY2hpY2h0LWdydWVuIHsgYm9yZGVyLWxlZnQtY29sb3I6ICMy Nzg5NkQ7IH0KLmJrLWRldGFpbC1zY2hpY2h0LWtvcGYgewogICAgZGlzcGxheTogZmxleDsgYWxp Z24taXRlbXM6IGNlbnRlcjsgZ2FwOiAxMHB4OyBmbGV4LXdyYXA6IHdyYXA7CiAgICBtYXJnaW4t Ym90dG9tOiA2cHg7CiAgICBmb250LXNpemU6IHZhcigtLWZzLW1kKTsKfQouYmstZGV0YWlsLXNj aGljaHQtemFobCB7CiAgICBjb2xvcjogdmFyKC0tdGV4dC1zZWNvbmRhcnkpOwogICAgZm9udC1z aXplOiB2YXIoLS1mcy1iYXNlKTsKfQouYmstZGV0YWlsLWZrLWxpc3RlIHsKICAgIGxpc3Qtc3R5 bGU6IG5vbmU7IHBhZGRpbmc6IDA7IG1hcmdpbjogMDsKICAgIGRpc3BsYXk6IGZsZXg7IGZsZXgt ZGlyZWN0aW9uOiBjb2x1bW47IGdhcDogM3B4Owp9Ci5iay1kZXRhaWwtZmstbGlzdGUgbGkgewog ICAgZGlzcGxheTogZmxleDsgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgIHBhZGRpbmc6IDNw eCA2cHg7CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1jYXJkLWFsdCk7CiAgICBib3JkZXItcmFk aXVzOiB2YXIoLS1yYWRpdXMtc20pOwp9Ci5iay1kZXRhaWwtZmstbmFtZSB7IGZvbnQtc2l6ZTog MTIuNXB4OyBmb250LXdlaWdodDogNjAwOyBjb2xvcjogdmFyKC0tdGV4dC1oZWFkaW5nKTsgfQou YmstZGV0YWlsLWZrLW1ldGEgeyBmb250LXNpemU6IDEwLjVweDsgY29sb3I6IHZhcigtLXRleHQt bXV0ZWQpOyB9Ci5iay1kZXRhaWwtbGVlciB7IGZvbnQtc2l6ZTogdmFyKC0tZnMtYmFzZSk7IGNv bG9yOiB2YXIoLS10ZXh0LW11dGVkKTsgZm9udC1zdHlsZTogaXRhbGljOyBwYWRkaW5nOiA0cHgg NnB4OyB9CgouYmstZGV0YWlsLWF1c2hpbGZlIHsKICAgIGJhY2tncm91bmQ6IHJnYmEoMTc2LCA1 OCwgNDYsIDAuMDYpOwogICAgYm9yZGVyOiAxcHggZGFzaGVkIHJnYmEoMTc2LCA1OCwgNDYsIDAu NCk7CiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbWQpOwogICAgcGFkZGluZzogMTBw eCAxNHB4Owp9Ci5iay1kZXRhaWwtYXVzaGlsZmUta29wZiB7IGZvbnQtd2VpZ2h0OiA3MDA7IGZv bnQtc2l6ZTogdmFyKC0tZnMtbWQpOyBjb2xvcjogdmFyKC0tdGV4dC1oZWFkaW5nKTsgbWFyZ2lu LWJvdHRvbTogOHB4OyB9Ci5iay1kZXRhaWwtYXVzaGlsZmUtYmVyZWljaCB7IG1hcmdpbi10b3A6 IDEwcHg7IH0KLmJrLWRldGFpbC1hdXNoaWxmZS1iZXJlaWNoOmZpcnN0LWNoaWxkIHsgbWFyZ2lu LXRvcDogMDsgfQouYmstZGV0YWlsLWF1c2hpbGZlLWJlcmVpY2ggaDQgewogICAgZm9udC1zaXpl OiB2YXIoLS1mcy1iYXNlKTsgY29sb3I6IHZhcigtLXRleHQtc2Vjb25kYXJ5KTsgbWFyZ2luOiAw IDAgNHB4IDA7CiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOyBsZXR0ZXItc3BhY2luZzog MC40cHg7IGZvbnQtd2VpZ2h0OiA3MDA7Cn0KLmJrLWRldGFpbC1hdXNoaWxmZS1saXN0ZSB7CiAg ICBsaXN0LXN0eWxlOiBub25lOyBwYWRkaW5nOiAwOyBtYXJnaW46IDA7CiAgICBkaXNwbGF5OiBm bGV4OyBmbGV4LWRpcmVjdGlvbjogY29sdW1uOyBnYXA6IDJweDsKfQovKiBUb29sYmFyIG9iZXJo YWxiIGRlciBBdXNoaWxmZS1MaXN0ZTogIkFsbGUgbWFya2llcmVuIiArIE1haWwtQnV0dG9uLiAq LwouYmstZGV0YWlsLWF1c2hpbGZlLXRvb2xiYXIgewogICAgZGlzcGxheTogZmxleDsgYWxpZ24t aXRlbXM6IGNlbnRlcjsgZ2FwOiAxNHB4OwogICAgbWFyZ2luLWJvdHRvbTogOHB4OyBwYWRkaW5n LWJvdHRvbTogOHB4OwogICAgYm9yZGVyLWJvdHRvbTogMXB4IGRhc2hlZCByZ2JhKDE3NiwgNTgs IDQ2LCAwLjI1KTsKfQouYmstZGV0YWlsLWFsbGUgewogICAgZm9udC1zaXplOiB2YXIoLS1mcy1i YXNlKTsgY29sb3I6IHZhcigtLXRleHQtc2Vjb25kYXJ5KTsKICAgIGRpc3BsYXk6IGlubGluZS1m bGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBnYXA6IDZweDsKICAgIGN1cnNvcjogcG9pbnRlcjsg dXNlci1zZWxlY3Q6IG5vbmU7Cn0KLmJrLWRldGFpbC1hdXNoaWxmZS16ZWlsZSB7CiAgICBkaXNw bGF5OiBncmlkOwogICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAyMnB4IDE4MHB4IDYwcHggNjBw eCAxZnIgMTMwcHg7CiAgICBnYXA6IDEwcHg7CiAgICBwYWRkaW5nOiA1cHggOHB4OwogICAgYmFj a2dyb3VuZDogdmFyKC0tYmctY2FyZCk7CiAgICBib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVu dDsKICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1zbSk7CiAgICBmb250LXNpemU6IHZh cigtLWZzLWJhc2UpOwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIHRyYW5zaXRpb246IGJv cmRlci1jb2xvciAwLjEycywgYmFja2dyb3VuZCAwLjEyczsKfQouYmstZGV0YWlsLWF1c2hpbGZl LXplaWxlOmhvdmVyIHsKICAgIGJvcmRlci1jb2xvcjogdmFyKC0tZmFyYmUtYWt6ZW50KTsKICAg IGJhY2tncm91bmQ6IHZhcigtLWJnLWhvdmVyKTsKfQouYmstYXVzaGlsZmUtY2hrIHsgY3Vyc29y OiBwb2ludGVyOyB9Ci5iay1hdXNoaWxmZS1jaGs6ZGlzYWJsZWQgeyBjdXJzb3I6IG5vdC1hbGxv d2VkOyBvcGFjaXR5OiAwLjQ7IH0KLmJrLWRldGFpbC1hdXNoaWxmZS1tYWlsYnRuIHsKICAgIHdo aXRlLXNwYWNlOiBub3dyYXA7Cn0KLmJrLWRldGFpbC1hdXNoaWxmZS1rZWlubWFpbCB7CiAgICBm b250LXNpemU6IHZhcigtLWZzLXNtKTsgY29sb3I6IHZhcigtLXRleHQtbXV0ZWQpOyBmb250LXN0 eWxlOiBpdGFsaWM7Cn0KLmJrLWRldGFpbC1hdXNoaWxmZS1rZWluLW1haWwgeyBvcGFjaXR5OiAw LjU1OyB9Ci5iay1kZXRhaWwtYXVzaGlsZmUtbmFtZSB7IGZvbnQtd2VpZ2h0OiA2MDA7IGNvbG9y OiB2YXIoLS10ZXh0LWhlYWRpbmcpOyB9Ci5iay1kZXRhaWwtYXVzaGlsZmUtY29kZSB7CiAgICBm b250LWZhbWlseTogbW9ub3NwYWNlOyBmb250LXNpemU6IHZhcigtLWZzLXNtKTsKICAgIGJhY2tn cm91bmQ6IHZhcigtLWJnLWNhcmQtYWx0KTsgcGFkZGluZzogMXB4IDZweDsKICAgIGJvcmRlci1y YWRpdXM6IHZhcigtLXJhZGl1cy1zbSk7IHRleHQtYWxpZ246IGNlbnRlcjsKfQouYmstZGV0YWls LWF1c2hpbGZlLWdycCB7IGNvbG9yOiB2YXIoLS10ZXh0LW11dGVkKTsgZm9udC1zaXplOiB2YXIo LS1mcy1zbSk7IH0KLmJrLWRldGFpbC1hdXNoaWxmZS1rb21tIHsKICAgIGZvbnQtc3R5bGU6IGl0 YWxpYzsgY29sb3I6IHZhcigtLXRleHQtbXV0ZWQpOyBmb250LXNpemU6IHZhcigtLWZzLXNtKTsK ICAgIG92ZXJmbG93OiBoaWRkZW47IHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOyB3aGl0ZS1zcGFj ZTogbm93cmFwOwp9Ci5iay1kZXRhaWwtYXVzaGlsZmUtbWFpbCB7IGNvbG9yOiB2YXIoLS1mYXJi ZS1ha3plbnQpOyBmb250LXNpemU6IHZhcigtLWZzLXNtKTsgfQpAbWVkaWEgKG1heC13aWR0aDog OTAwcHgpIHsKICAgIC5iay1kZXRhaWwtYXVzaGlsZmUtemVpbGUgewogICAgICAgIGdyaWQtdGVt cGxhdGUtY29sdW1uczogMWZyIDYwcHg7CiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1hcmVhczoKICAg ICAgICAgICAgIm5hbWUgY29kZSIKICAgICAgICAgICAgImdycCBncnAiCiAgICAgICAgICAgICJr b21tIGtvbW0iCiAgICAgICAgICAgICJtYWlsIG1haWwiOwogICAgfQogICAgLmJrLWRldGFpbC1h dXNoaWxmZS1uYW1lIHsgZ3JpZC1hcmVhOiBuYW1lOyB9CiAgICAuYmstZGV0YWlsLWF1c2hpbGZl LWNvZGUgeyBncmlkLWFyZWE6IGNvZGU7IH0KICAgIC5iay1kZXRhaWwtYXVzaGlsZmUtZ3JwICB7 IGdyaWQtYXJlYTogZ3JwOyB9CiAgICAuYmstZGV0YWlsLWF1c2hpbGZlLWtvbW0geyBncmlkLWFy ZWE6IGtvbW07IH0KICAgIC5iay1kZXRhaWwtYXVzaGlsZmUtbWFpbCB7IGdyaWQtYXJlYTogbWFp bDsgfQp9Ci5iay1hbGxlLW9rIHsgcGFkZGluZzogMzJweDsgdGV4dC1hbGlnbjogY2VudGVyOyBi YWNrZ3JvdW5kOiByZ2JhKDM5LDEzNywxMDksMC4wOCk7IGJvcmRlcjogMXB4IHNvbGlkIHJnYmEo MzksMTM3LDEwOSwwLjM1KTsgYm9yZGVyLXJhZGl1czogOHB4OyBjb2xvcjogdmFyKC0tZmFyYmUt ZXJmb2xnKTsgZm9udC1zaXplOiAxNXB4OyBmb250LXdlaWdodDogNTAwOyB9CgovKiBEZWZpeml0 LU1vZGFsICovCi5iay1tb2RhbC1wZXJzb24geyBkaXNwbGF5OiBncmlkOyBncmlkLXRlbXBsYXRl LWNvbHVtbnM6IDMwcHggMTgwcHggNzBweCAxZnIgYXV0bzsgZ2FwOiAxMHB4OyBhbGlnbi1pdGVt czogY2VudGVyOyBwYWRkaW5nOiA4cHggMTBweDsgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZh cigtLWJvcmRlci1saWdodCk7IGZvbnQtc2l6ZTogdmFyKC0tZnMtbWQpOyB9Ci5iay1tb2RhbC1w ZXJzb246bGFzdC1jaGlsZCB7IGJvcmRlci1ib3R0b206IG5vbmU7IH0KLmJrLW1vZGFsLW5hbWUg eyBmb250LXdlaWdodDogNTAwOyBjb2xvcjogdmFyKC0tdGV4dC1oZWFkaW5nKTsgfQouYmstbW9k YWwtd2VydCB7IGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7IGZvbnQtc2l6ZTogdmFyKC0tZnMtc20p OyBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1wcmltYXJ5KTsgcGFkZGluZzogMnB4IDZweDsgYm9yZGVy LXJhZGl1czogdmFyKC0tcmFkaXVzLXNtKTsgY29sb3I6IHZhcigtLXRleHQtbXV0ZWQpOyBib3Jk ZXI6IDFweCBzb2xpZCB2YXIoLS1ib3JkZXItbGlnaHQpOyB9Ci5iay1tb2RhbC1rb21tIHsgZm9u dC1zaXplOiB2YXIoLS1mcy1iYXNlKTsgY29sb3I6IHZhcigtLXRleHQtbXV0ZWQpOyBmb250LXN0 eWxlOiBpdGFsaWM7IG92ZXJmbG93OiBoaWRkZW47IHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOyB3 aGl0ZS1zcGFjZTogbm93cmFwOyB9Ci5iay1tb2RhbC1rb21tOmVtcHR5OjpiZWZvcmUgeyBjb250 ZW50OiAn4oCUIGtlaW4gS29tbWVudGFyIOKAlCc7IGNvbG9yOiB2YXIoLS10ZXh0LW11dGVkKTsg b3BhY2l0eTogMC41OyB9Ci5iay1tb2RhbC1lbWFpbCB7IGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7 IGZvbnQtc2l6ZTogdmFyKC0tZnMtc20pOyBjb2xvcjogdmFyKC0tdGV4dC1tdXRlZCk7IH0KLmJr LW1vZGFsLWVtYWlsLWZlaGx0IHsgY29sb3I6IHZhcigtLWZhcmJlLWZlaGxlcik7IGZvbnQtc3R5 bGU6IGl0YWxpYzsgfQouYmstbW9kYWwta29wZiB7IGRpc3BsYXk6IGdyaWQ7IGdyaWQtdGVtcGxh dGUtY29sdW1uczogMzBweCAxODBweCA3MHB4IDFmciBhdXRvOyBnYXA6IDEwcHg7IHBhZGRpbmc6 IDZweCAxMHB4OyBmb250LXNpemU6IHZhcigtLWZzLXNtKTsgZm9udC13ZWlnaHQ6IDYwMDsgY29s b3I6IHZhcigtLXRleHQtbXV0ZWQpOyB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOyBsZXR0ZXIt c3BhY2luZzogMC41cHg7IGJvcmRlci1ib3R0b206IDJweCBzb2xpZCB2YXIoLS1ib3JkZXItbGln aHQpOyB9CgovKiA9PT09PSBTY2hpY2h0Y29kZS1MZWdlbmRlIGltIEluZm8tTW9kYWwgPT09PT0g Ki8KLnNjLWxlZ2VuZGUtY29udGFpbmVyIHsgZGlzcGxheTogZmxleDsgZmxleC1kaXJlY3Rpb246 IGNvbHVtbjsgZ2FwOiAxNHB4OyB9Ci5zYy1sZWdlbmRlLWdydXBwZSB7CiAgICBib3JkZXI6IDFw eCBzb2xpZCB2YXIoLS1ib3JkZXItbGlnaHQpOyBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMt bWQpOwogICAgcGFkZGluZzogMTBweCAxMnB4OyBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1jYXJkKTsK fQouc2MtbGVnZW5kZS10aXRlbCB7CiAgICBmb250LXNpemU6IHZhcigtLWZzLXNtKTsgZm9udC13 ZWlnaHQ6IDcwMDsgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKICAgIGxldHRlci1zcGFjaW5n OiAwLjVweDsgY29sb3I6IHZhcigtLXRleHQtbXV0ZWQpOyBtYXJnaW4tYm90dG9tOiA4cHg7CiAg ICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tYm9yZGVyLWxpZ2h0KTsgcGFkZGluZy1i b3R0b206IDRweDsKfQouc2MtbGVnZW5kZS1ncmlkIHsKICAgIGRpc3BsYXk6IGdyaWQ7IGdyaWQt dGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDMsIDFmcik7CiAgICBnYXA6IDZweCAxMnB4Owp9Ci5z Yy1sZWdlbmRlLXplbGxlIHsKICAgIGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7 IGdhcDogOHB4OwogICAgcGFkZGluZzogNHB4IDZweDsgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFk aXVzLXhzKTsKfQouc2MtbGVnZW5kZS1mYXJiZmVsZCB7CiAgICBkaXNwbGF5OiBpbmxpbmUtZmxl eDsgYWxpZ24taXRlbXM6IGNlbnRlcjsganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICB3aWR0 aDogMzZweDsgaGVpZ2h0OiAyMHB4OyBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMteHMpOwog ICAgZm9udC1zaXplOiB2YXIoLS1mcy14cyk7IGZvbnQtd2VpZ2h0OiA3MDA7IGZsZXgtc2hyaW5r OiAwOwogICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgwLDAsMCwwLjEpOwp9Ci5zYy1sZWdlbmRl LXRleHQgeyBmb250LXNpemU6IHZhcigtLWZzLXNtKTsgbGluZS1oZWlnaHQ6IDEuMjU7IH0KQG1l ZGlhIChtYXgtd2lkdGg6IDcwMHB4KSB7CiAgICAuc2MtbGVnZW5kZS1ncmlkIHsgZ3JpZC10ZW1w bGF0ZS1jb2x1bW5zOiByZXBlYXQoMiwgMWZyKTsgfQp9CgovKiA9PT09PSBFeGNlbC1JbXBvcnQg PT09PT0gKi8KLmltcC11cGxvYWQtYm94IHsKICAgIGJhY2tncm91bmQ6IHZhcigtLWJnLWNhcmQp OyBib3JkZXI6IDJweCBkYXNoZWQgdmFyKC0tYm9yZGVyLWxpZ2h0KTsKICAgIGJvcmRlci1yYWRp dXM6IDhweDsgcGFkZGluZzogMjJweCAyMHB4OyB0ZXh0LWFsaWduOiBsZWZ0OwogICAgZGlzcGxh eTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsgZ2FwOiAxNHB4OyBmbGV4LXdyYXA6IHdyYXA7 Cn0KLmltcC1zdGF0dXMta2FydGUgewogICAgYmFja2dyb3VuZDogdmFyKC0tYmctY2FyZCk7IGJv cmRlcjogMXB4IHNvbGlkIHZhcigtLWJvcmRlci1saWdodCk7CiAgICBib3JkZXItcmFkaXVzOiA4 cHg7IHBhZGRpbmc6IDE2cHggMThweDsgbWFyZ2luLXRvcDogMTJweDsKfQouaW1wLWtwaS16ZWls ZSB7IGRpc3BsYXk6IGZsZXg7IGdhcDogMTJweDsgZmxleC13cmFwOiB3cmFwOyBtYXJnaW46IDEy cHggMDsgfQouaW1wLWtwaSB7IGZsZXg6IDE7IG1pbi13aWR0aDogMTQwcHg7IHBhZGRpbmc6IDEw cHggMTRweDsgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLW1kKTsgYmFja2dyb3VuZDogdmFy KC0tYmctcHJpbWFyeSk7IGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWJvcmRlci1saWdodCk7IH0K LmltcC1rcGktemFobCB7IGZvbnQtc2l6ZTogMjBweDsgZm9udC13ZWlnaHQ6IDcwMDsgY29sb3I6 IHZhcigtLXRleHQtaGVhZGluZyk7IGxpbmUtaGVpZ2h0OiAxLjE7IH0KLmltcC1rcGktbGFiZWwg eyBmb250LXNpemU6IHZhcigtLWZzLXNtKTsgY29sb3I6IHZhcigtLXRleHQtbXV0ZWQpOyBtYXJn aW4tdG9wOiAycHg7IH0KLmltcC1rcGktd2FybiB7IGJvcmRlci1jb2xvcjogcmdiYSgyMDIsMTEx LDMwLDAuNSk7IGJhY2tncm91bmQ6IHJnYmEoMjAyLDExMSwzMCwwLjA2KTsgfQouaW1wLWtwaS13 YXJuIC5pbXAta3BpLXphaGwgeyBjb2xvcjogdmFyKC0tZmFyYmUtd2FybnVuZyk7IH0KLmltcC1r cGktb2sgeyBib3JkZXItY29sb3I6IHJnYmEoMzksMTM3LDEwOSwwLjQpOyBiYWNrZ3JvdW5kOiBy Z2JhKDM5LDEzNywxMDksMC4wNik7IH0KLmltcC1rcGktb2sgLmltcC1rcGktemFobCB7IGNvbG9y OiB2YXIoLS1mYXJiZS1lcmZvbGcpOyB9Ci5pbXAta3BpLWZlaGxlciB7IGJvcmRlci1jb2xvcjog cmdiYSgxNzYsNTgsNDYsMC41KTsgYmFja2dyb3VuZDogcmdiYSgxNzYsNTgsNDYsMC4wOCk7IH0K LmltcC1rcGktZmVobGVyIC5pbXAta3BpLXphaGwgeyBjb2xvcjogdmFyKC0tZmFyYmUtZmVobGVy KTsgfQoKLmltcC1tYXBwaW5nLWxpc3RlIHsKICAgIG1heC1oZWlnaHQ6IDM2MHB4OyBvdmVyZmxv dy15OiBhdXRvOwogICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tYm9yZGVyLWxpZ2h0KTsgYm9y ZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLW1kKTsgbWFyZ2luLXRvcDogMTBweDsKfQouaW1wLW1h cHBpbmctemVpbGUgewogICAgZGlzcGxheTogZ3JpZDsgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAy NHB4IDFmciAzMHB4IDFmcjsgZ2FwOiAxMHB4OyBhbGlnbi1pdGVtczogY2VudGVyOwogICAgcGFk ZGluZzogOHB4IDEycHg7IGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1ib3JkZXItbGln aHQpOwogICAgZm9udC1zaXplOiB2YXIoLS1mcy1tZCk7Cn0KLyogU3RhdHVzLUljb24gbGlua3Mg dm9yIGRlciBRdWVsbGUuIEZhcmJlIHdpcmQgaW5saW5lIHBybyBaZWlsZSBnZXNldHp0CiAgIChD bG9zdXJlLUhlbHBlciBzdGF0dXNJY29uSHRtbCBpbiBpbXBvcnRfZXhjZWwuanMpLCBkaWUgS2xh c3NlIGhhZWx0CiAgIG51ciBkYXMgTGF5b3V0LiAqLwouaW1wLW1hcHBpbmctc3RhdHVzIHsgZGlz cGxheTogaW5saW5lLWJsb2NrOyB3aWR0aDogMjBweDsgdGV4dC1hbGlnbjogY2VudGVyOyBmb250 LXdlaWdodDogNzAwOyB9Ci8qIEFnZ3JlZ2F0LVplaWxlIHVlYmVyIGRlbiBUYWItQnV0dG9ucyBp bSBNYXBwaW5nLU1vZGFsOiBrb21wYWt0ZSBMaXZlLQogICBaYWVobGVyIG5hY2ggS2F0ZWdvcmll LiBGYXJiZW4ga29tbWVuIGlubGluZSBhdXMgZGVtIEpTLiAqLwouaW1wLXN0YXR1cy1hZ2dyZWdh dCB7CiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDsgZ2FwOiAxNHB4OyBmb250LXNpemU6IHZhcigt LWZzLW1kKTsKICAgIG1hcmdpbjogMCAwIDEycHggMDsgcGFkZGluZzogNnB4IDEwcHg7CiAgICBi YWNrZ3JvdW5kOiB2YXIoLS1iZy1jYXJkKTsgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tYm9yZGVy LWxpZ2h0KTsgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLXNtKTsKfQouaW1wLXN0YXR1cy1h Z2dyZWdhdDplbXB0eSB7IGRpc3BsYXk6IG5vbmU7IH0KLmltcC1tYXBwaW5nLXplaWxlOmxhc3Qt Y2hpbGQgeyBib3JkZXItYm90dG9tOiBub25lOyB9Ci5pbXAtbWFwcGluZy16ZWlsZS5pbXAtb2sg eyBiYWNrZ3JvdW5kOiByZ2JhKDM5LDEzNywxMDksMC4wNSk7IH0KLmltcC1tYXBwaW5nLXplaWxl LmltcC13YXJuIHsgYmFja2dyb3VuZDogcmdiYSgyMDIsMTExLDMwLDAuMDYpOyB9Ci8qIFBhcGll cmtvcmItVHJlZmZlcjogd2VpY2hlciBLb25mbGlrdCBtaXQgRGVmYXVsdC1XaWVkZXJoZXJzdGVs bGVuLVZvcnNjaGxhZy4KICAgVmlzdWVsbCB6d2lzY2hlbiAib2siIHVuZCAid2FybiIgLS0gZGVy IFVzZXIgc29sbCBkaWUgU3RlbGxlIHBydWVmZW4sIGFiZXIKICAgbmljaHQgaW4gUGFuaWsgZ2Vy YXRlbi4gKi8KLmltcC1tYXBwaW5nLXplaWxlLmltcC1wYXBpZXJrb3JiIHsgYmFja2dyb3VuZDog cmdiYSgyMDIsMTExLDMwLDAuMTApOyB9Ci5pbXAtcGFwaWVya29yYi1oaW53ZWlzIHsKICAgIGZv bnQtc2l6ZTogdmFyKC0tZnMtc20pOyBjb2xvcjogdmFyKC0tZmFyYmUtd2FybnVuZyk7IGxpbmUt aGVpZ2h0OiAxLjQ7CiAgICBiYWNrZ3JvdW5kOiByZ2JhKDIwMiwxMTEsMzAsMC4wOCk7IHBhZGRp bmc6IDRweCA4cHg7IGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1zbSk7Cn0KLyogIk5ldSBh bmxlZ2VuIiDigJQga2VpbiBLb25mbGlrdCwgc29uZGVybiBha3RpdmUgU3RhbmRhcmQtQWt0aW9u LiBTYW5mdGVzCiAgIEJsYXUsIGRhbWl0IGRpZSBaZWlsZSBhbHMgcG9zaXRpdmVyIERlZmF1bHQg c2ljaHRiYXIgd2lyZC4gKi8KLmltcC1tYXBwaW5nLXplaWxlLmltcC1uZXUgeyBiYWNrZ3JvdW5k OiByZ2JhKDQ4LDk5LDE2OCwwLjA2KTsgfQouaW1wLW5ldS1oaW53ZWlzIHsKICAgIGZvbnQtc2l6 ZTogdmFyKC0tZnMtc20pOyBjb2xvcjogdmFyKC0tZmFyYmUtcHJpbWFlcik7IGxpbmUtaGVpZ2h0 OiAxLjQ7CiAgICBiYWNrZ3JvdW5kOiByZ2JhKDQ4LDk5LDE2OCwwLjA4KTsgcGFkZGluZzogNHB4 IDhweDsgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLXNtKTsKfQouaW1wLWtwaS1uZXUgeyBi b3JkZXItY29sb3I6IHJnYmEoNDgsOTksMTY4LDAuNDUpOyBiYWNrZ3JvdW5kOiByZ2JhKDQ4LDk5 LDE2OCwwLjA2KTsgfQouaW1wLWtwaS1uZXUgLmltcC1rcGktemFobCB7IGNvbG9yOiB2YXIoLS1m YXJiZS1wcmltYWVyKTsgfQouaW1wLW1hcHBpbmctcXVlbGxlIHsgZm9udC13ZWlnaHQ6IDYwMDsg fQouaW1wLW1hcHBpbmctYW56YWhsIHsgZm9udC1zaXplOiB2YXIoLS1mcy1zbSk7IGNvbG9yOiB2 YXIoLS10ZXh0LW11dGVkKTsgbWFyZ2luLWxlZnQ6IDZweDsgfQouaW1wLXBmZWlsIHsgdGV4dC1h bGlnbjogY2VudGVyOyBjb2xvcjogdmFyKC0tdGV4dC1tdXRlZCk7IH0KLyogSW5saW5lLUZvcm0g Ik5ldWVuIFNjaGljaHRjb2RlIGFubGVnZW4iIChQaGFzZSAxMC1DMykuIEtsYXBwdCB1bnRlcgog ICBkZXIgamV3ZWlsaWdlbiBNYXBwaW5nLVplaWxlIGF1ZiDigJQga2VpbiBNb2RhbC1TdGFjay4g U2FuZnRlciBCbGF1LVRvbgogICBwYXNzdCB6dXIgIm5ldSItU2VtYW50aWsgZGVzIE1hcHBpbmct U3RhdHVzLiAqLwouaW1wLW5ldWVyLWNvZGUtZm9ybSB7CiAgICBiYWNrZ3JvdW5kOiByZ2JhKDQ4 LDk5LDE2OCwwLjA2KTsgYm9yZGVyOiAxcHggc29saWQgcmdiYSg0OCw5OSwxNjgsMC4yNSk7CiAg ICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtc20pOyBwYWRkaW5nOiAxMHB4IDEycHg7IG1h cmdpbjogMCAxMnB4IDZweCAzNnB4OwogICAgZm9udC1zaXplOiB2YXIoLS1mcy1iYXNlKTsKfQou aW1wLW5ldWVyLWNvZGUtZm9ybSBsYWJlbCB7IGRpc3BsYXk6IGJsb2NrOyBtYXJnaW4tYm90dG9t OiAycHg7IGNvbG9yOiB2YXIoLS10ZXh0LW11dGVkKTsgfQouaW1wLW5ldWVyLWNvZGUtZm9ybSAu Zm9ybS1pbnB1dCB7IHBhZGRpbmc6IDRweCA2cHg7IGZvbnQtc2l6ZTogdmFyKC0tZnMtYmFzZSk7 IH0KCi8qIFByb2dyZXNzLU1vZGFsICovCi5pbXAtcHJvZ3Jlc3Mta29udGV4dCB7IGJhY2tncm91 bmQ6IHZhcigtLWJnLWNhcmQpOyBwYWRkaW5nOiAyMHB4IDI0cHg7IGJvcmRlci1yYWRpdXM6IDhw eDsgbWluLXdpZHRoOiA0NjBweDsgfQouaW1wLXByb2dyZXNzLWJhciB7IGhlaWdodDogMjJweDsg YmFja2dyb3VuZDogdmFyKC0tYmctcHJpbWFyeSk7IGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1 cy1zbSk7IG92ZXJmbG93OiBoaWRkZW47IGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWJvcmRlci1s aWdodCk7IG1hcmdpbjogMTRweCAwIDZweCAwOyB9Ci5pbXAtcHJvZ3Jlc3MtZmlsbCB7CiAgICBo ZWlnaHQ6IDEwMCU7IGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCg5MGRlZywgdmFyKC0tZmFy YmUtcHJpbWFlciksIHZhcigtLWZhcmJlLWVyZm9sZykpOwogICAgd2lkdGg6IDAlOyB0cmFuc2l0 aW9uOiB3aWR0aCAwLjI1cyBlYXNlLW91dDsgYm9yZGVyLXJhZGl1czogaW5oZXJpdDsKfQouaW1w LXByb2dyZXNzLXRleHQgeyBmb250LXNpemU6IHZhcigtLWZzLWJhc2UpOyBjb2xvcjogdmFyKC0t dGV4dC1tdXRlZCk7IGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7IG1pbi1oZWlnaHQ6IDE2cHg7IH0K LmltcC1wcm9ncmVzcy1waGFzZSB7IGZvbnQtc2l6ZTogdmFyKC0tZnMtbGcpOyBmb250LXdlaWdo dDogNjAwOyBjb2xvcjogdmFyKC0tdGV4dC1oZWFkaW5nKTsgfQoKLyogPT09PT0gU2Nyb2xsYmFs a2VuIChXaW5kb3dzL0Nocm9taXVtKSA9PT09PSAqLwovKiBLZWluZSBSYW5kcGZlaWxlLCBEYXVt ZW4gdW5hdWZmYWVsbGlnIGdyYXUsIGJlaW0gSG92ZXIvRHJhZyBIZWFkZXItQmxhdSAqLwo6Oi13 ZWJraXQtc2Nyb2xsYmFyIHsgd2lkdGg6IDEycHg7IGhlaWdodDogMTJweDsgfQo6Oi13ZWJraXQt c2Nyb2xsYmFyLXRyYWNrIHsgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7IH0KOjotd2Via2l0LXNj cm9sbGJhci10aHVtYiB7CiAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuMjIpOwogICAg Ym9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLW1kKTsKICAgIGJvcmRlcjogMnB4IHNvbGlkIHRy YW5zcGFyZW50OwogICAgYmFja2dyb3VuZC1jbGlwOiBwYWRkaW5nLWJveDsKICAgIHRyYW5zaXRp b246IGJhY2tncm91bmQgMC4xNXMgZWFzZTsKfQo6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iOmhv dmVyLAo6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iOmFjdGl2ZSB7CiAgICBiYWNrZ3JvdW5kOiB2 YXIoLS1iZy1wcmltYXJ5KTsKICAgIGJhY2tncm91bmQtY2xpcDogcGFkZGluZy1ib3g7Cn0KOjot d2Via2l0LXNjcm9sbGJhci1idXR0b24geyBkaXNwbGF5OiBub25lOyB3aWR0aDogMDsgaGVpZ2h0 OiAwOyB9Cjo6LXdlYmtpdC1zY3JvbGxiYXItY29ybmVyIHsgYmFja2dyb3VuZDogdHJhbnNwYXJl bnQ7IH0KCi8qIEZpcmVmb3ggKi8KKiB7IHNjcm9sbGJhci1jb2xvcjogcmdiYSgwLCAwLCAwLCAw LjIyKSB0cmFuc3BhcmVudDsgc2Nyb2xsYmFyLXdpZHRoOiB0aGluOyB9CgpbZGF0YS10aGVtZT0i bmlnaHQiXSA6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iIHsgYmFja2dyb3VuZDogcmdiYSgyNTUs IDI1NSwgMjU1LCAwLjE4KTsgYmFja2dyb3VuZC1jbGlwOiBwYWRkaW5nLWJveDsgfQpbZGF0YS10 aGVtZT0ibmlnaHQiXSA6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iOmhvdmVyLApbZGF0YS10aGVt ZT0ibmlnaHQiXSA6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iOmFjdGl2ZSB7IGJhY2tncm91bmQ6 IHZhcigtLWJnLXByaW1hcnkpOyBiYWNrZ3JvdW5kLWNsaXA6IHBhZGRpbmctYm94OyB9CltkYXRh LXRoZW1lPSJuaWdodCJdICogeyBzY3JvbGxiYXItY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwg MC4xOCkgdHJhbnNwYXJlbnQ7IH0KCi8qID09PT09IE1hbnVlbGxlIFNvcnRpZXJ1bmcgKERyYWcg JiBEcm9wKSA9PT09PSAqLwoubXMtbGlzdGUgeyBkaXNwbGF5OiBmbGV4OyBmbGV4LWRpcmVjdGlv bjogY29sdW1uOyBnYXA6IDRweDsgbWF4LWhlaWdodDogNjB2aDsgb3ZlcmZsb3cteTogYXV0bzsg cGFkZGluZzogNHB4OyB9Ci5tcy16ZWlsZSB7CiAgICBkaXNwbGF5OiBncmlkOwogICAgLyogVVgt QXVkaXQgU3ByaW50IDMuNjogKzIgc2NobWFsZSBTcGFsdGVuIGZ1ZXIg4payL+KWvC1QZmVpbC1C dXR0b25zIChUYXN0YXR1ci1WYXJpYW50ZSkuICovCiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6 IDI4cHggMzZweCAxZnIgYXV0byAyNnB4IDI2cHg7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwog ICAgZ2FwOiAxMHB4OwogICAgcGFkZGluZzogOHB4IDEwcHg7CiAgICBiYWNrZ3JvdW5kOiB2YXIo LS1iZy1tdXRlZCk7CiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1ib3JkZXItbGlnaHQpOwog ICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLW1kKTsKICAgIGN1cnNvcjogZ3JhYjsKICAg IHRyYW5zaXRpb246IGJhY2tncm91bmQgMC4xMnMsIGJveC1zaGFkb3cgMC4xMnM7Cn0KLm1zLXpl aWxlOmhvdmVyIHsgYmFja2dyb3VuZDogdmFyKC0tYmctaG92ZXIpOyB9Ci5tcy16ZWlsZS5tcy1k cmFnZ2luZyB7IG9wYWNpdHk6IDAuNDU7IGN1cnNvcjogZ3JhYmJpbmc7IGJveC1zaGFkb3c6IDAg NHB4IDEycHggcmdiYSgwLDAsMCwwLjIpOyB9Ci5tcy1ncmlmZiB7IGZvbnQtc2l6ZTogMThweDsg Y29sb3I6IHZhcigtLXRleHQtbXV0ZWQpOyB0ZXh0LWFsaWduOiBjZW50ZXI7IGN1cnNvcjogZ3Jh YjsgdXNlci1zZWxlY3Q6IG5vbmU7IH0KLm1zLW5hbWUgeyBmb250LXdlaWdodDogNjAwOyB9Ci5t cy1yYW5nIHsgZm9udC1zaXplOiB2YXIoLS1mcy1iYXNlKTsgY29sb3I6IHZhcigtLXRleHQtbXV0 ZWQpOyB3aGl0ZS1zcGFjZTogbm93cmFwOyB9Ci5tcy1wZmVpbCB7CiAgICB3aWR0aDogMjZweDsg aGVpZ2h0OiAyNnB4OyBwYWRkaW5nOiAwOwogICAgYmFja2dyb3VuZDogdmFyKC0tYmctY2FyZCk7 CiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1ib3JkZXItc3Ryb25nKTsKICAgIGJvcmRlci1y YWRpdXM6IHZhcigtLXJhZGl1cy1zbSk7CiAgICBjb2xvcjogdmFyKC0tdGV4dC1oZWFkaW5nKTsK ICAgIGZvbnQtc2l6ZTogdmFyKC0tZnMtYmFzZSk7CiAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICB0 cmFuc2l0aW9uOiB2YXIoLS10cmFuc2l0aW9uLXN0ZCk7Cn0KLm1zLXBmZWlsOmhvdmVyLCAubXMt cGZlaWw6Zm9jdXMtdmlzaWJsZSB7CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1ob3Zlcik7CiAg ICBib3JkZXItY29sb3I6IHZhcigtLWZhcmJlLWFremVudCk7CiAgICBvdXRsaW5lOiBub25lOwp9 CgovKiA9PT09PSBSYW5nLUlubGluZS1FZGl0IGluIGRlciBQZXJzb25hbHZlcndhbHR1bmcgPT09 PT0gKi8KLnJhbmctZWRpdCB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBwYWRkaW5n OiAycHggOHB4OwogICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLXNtKTsKICAgIGN1cnNv cjogcG9pbnRlcjsKICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQgMC4xMnMsIGNvbG9yIDAuMTJz Owp9Ci5yYW5nLWVkaXQ6aG92ZXIgewogICAgYmFja2dyb3VuZDogdmFyKC0tYmctaG92ZXIpOwog ICAgY29sb3I6IHZhcigtLXRleHQtaGVhZGluZyk7CiAgICBvdXRsaW5lOiAxcHggZGFzaGVkIHZh cigtLWJvcmRlci1saWdodCk7Cn0KLnJhbmctZWRpdC1pbnB1dCB7CiAgICB3aWR0aDogNjBweDsK ICAgIHBhZGRpbmc6IDJweCA0cHg7CiAgICBmb250LXNpemU6IHZhcigtLWZzLW1kKTsKICAgIGZv bnQtd2VpZ2h0OiA3MDA7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICBib3JkZXI6IDFweCBz b2xpZCB2YXIoLS1mYXJiZS1wcmltYWVyKTsKICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1 cy1zbSk7CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1jb250ZW50KTsKICAgIGNvbG9yOiB2YXIo LS10ZXh0LWhlYWRpbmcpOwp9CgovKiA9PT09PSBGdW5rdGlvbi1JbmxpbmUtRWRpdCBpbiBkZXIg UGVyc29uYWx2ZXJ3YWx0dW5nID09PT09ICovCi5mdW5rdGlvbi1lZGl0IHsKICAgIGRpc3BsYXk6 IGlubGluZS1ibG9jazsKICAgIHBhZGRpbmc6IDJweCA4cHg7CiAgICBib3JkZXItcmFkaXVzOiB2 YXIoLS1yYWRpdXMtc20pOwogICAgY3Vyc29yOiBwb2ludGVyOwogICAgdHJhbnNpdGlvbjogYmFj a2dyb3VuZCAwLjEycywgY29sb3IgMC4xMnM7Cn0KLmZ1bmt0aW9uLWVkaXQ6aG92ZXIgewogICAg YmFja2dyb3VuZDogdmFyKC0tYmctaG92ZXIpOwogICAgY29sb3I6IHZhcigtLXRleHQtaGVhZGlu Zyk7CiAgICBvdXRsaW5lOiAxcHggZGFzaGVkIHZhcigtLWJvcmRlci1saWdodCk7Cn0KLmZ1bmt0 aW9uLWVkaXQtaW5wdXQgewogICAgd2lkdGg6IDEwMCU7CiAgICBwYWRkaW5nOiAycHggNHB4Owog ICAgZm9udC1zaXplOiB2YXIoLS1mcy1iYXNlKTsKICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigt LWZhcmJlLXByaW1hZXIpOwogICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLXNtKTsKICAg IGJhY2tncm91bmQ6IHZhcigtLWJnLWNvbnRlbnQpOwogICAgY29sb3I6IHZhcigtLXRleHQtaGVh ZGluZyk7Cn0KCi8qID09PT09IERpZW5zdGdyYWQtSW5saW5lLUVkaXQgPT09PT0gKi8KLmRpZW5z dGdyYWQtZWRpdCB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBwYWRkaW5nOiAycHgg OHB4OwogICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLXNtKTsKICAgIGN1cnNvcjogcG9p bnRlcjsKICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQgMC4xMnMsIGNvbG9yIDAuMTJzOwp9Ci5k aWVuc3RncmFkLWVkaXQ6aG92ZXIgewogICAgYmFja2dyb3VuZDogdmFyKC0tYmctaG92ZXIpOwog ICAgY29sb3I6IHZhcigtLXRleHQtaGVhZGluZyk7CiAgICBvdXRsaW5lOiAxcHggZGFzaGVkIHZh cigtLWJvcmRlci1saWdodCk7Cn0KLmRpZW5zdGdyYWQtZWRpdC1pbnB1dCB7CiAgICB3aWR0aDog NzBweDsKICAgIHBhZGRpbmc6IDJweCA0cHg7CiAgICBmb250LXNpemU6IHZhcigtLWZzLWJhc2Up OwogICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tZmFyYmUtcHJpbWFlcik7CiAgICBib3JkZXIt cmFkaXVzOiB2YXIoLS1yYWRpdXMtc20pOwogICAgYmFja2dyb3VuZDogdmFyKC0tYmctY29udGVu dCk7CiAgICBjb2xvcjogdmFyKC0tdGV4dC1oZWFkaW5nKTsKfQoKLyogPT09PT0gUGVyc29uYWwt SW5saW5lLUVkaXQgKGFsbGUgVGV4dGZlbGRlciBwcm8gWmVpbGUpID09PT09ICovCi8qIEtvbnNp c3RlbnQgenVtIHJhbmctL2RpZW5zdGdyYWQtL2Z1bmt0aW9uLWVkaXQtU3RpbC4gQmVpIGxlZXJl bSBXZXJ0CiAgIHBlcm1hbmVudCBkZXplbnQgc2ljaHRiYXIgKFBsYWNlaG9sZGVyICsgbGVpY2h0 ZXIgSGludGVyZ3J1bmQpLCBkYW1pdAogICBkZXIgVXNlciBlcmtlbm50OiBoaWVyIGthbm4gbWFu IGtsaWNrZW4uICovCi5wZXJzb25hbC1pbmxpbmUgewogICAgZGlzcGxheTogaW5saW5lLWJsb2Nr OwogICAgcGFkZGluZzogMnB4IDhweDsKICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1z bSk7CiAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIDAuMTJz LCBjb2xvciAwLjEycywgb3V0bGluZS1jb2xvciAwLjEyczsKICAgIG1pbi13aWR0aDogMjRweDsK ICAgIG1pbi1oZWlnaHQ6IDE4cHg7Cn0KLnBlcnNvbmFsLWlubGluZTpob3ZlciB7CiAgICBiYWNr Z3JvdW5kOiB2YXIoLS1iZy1ob3Zlcik7CiAgICBjb2xvcjogdmFyKC0tdGV4dC1oZWFkaW5nKTsK ICAgIG91dGxpbmU6IDFweCBkYXNoZWQgdmFyKC0tZmFyYmUtYWt6ZW50LCAjNGE5MGUyKTsKfQov KiBMZWVyZSBJbmxpbmUtRmVsZGVyIGJla29tbWVuIGVpbmVuIGtsYXIgZXJrZW5uYmFyZW4gIkRy b3AtWm9uZSItTG9vayDigJQKICAgZ2VwdW5rdGV0ZXIgUmFobWVuIG1pdCBBa3plbnQtRmFyYmUs IGxlaWNodGVyIEhpbnRlcmdydW5kLVNjaGltbWVyLAogICBkYW1pdCBkZXIgS2xpY2stSG90c3Bv dCBuaWNodCBtaXQgZWNodGVtIExlZXJzdGFuZCB2ZXJ3ZWNoc2VsdCB3aXJkLiAqLwoucGVyc29u YWwtaW5saW5lLWxlZXIgewogICAgYmFja2dyb3VuZDogdmFyKC0tYmctY2FyZC1hbHQpOwogICAg b3V0bGluZTogMXB4IGRhc2hlZCB2YXIoLS1ib3JkZXItc3Ryb25nKTsKfQoucGVyc29uYWwtaW5s aW5lLWxlZXI6aG92ZXIgewogICAgYmFja2dyb3VuZDogdmFyKC0tYmctaG92ZXIpOwogICAgb3V0 bGluZTogMXB4IGRhc2hlZCB2YXIoLS1mYXJiZS1ha3plbnQpOwp9Ci5wZXJzb25hbC1pbmxpbmUt cGxhY2Vob2xkZXIgewogICAgZm9udC1zdHlsZTogaXRhbGljOwogICAgZm9udC1zaXplOiB2YXIo LS1mcy1zbSk7CiAgICBjb2xvcjogdmFyKC0tZmFyYmUtYWt6ZW50KTsKICAgIG9wYWNpdHk6IDAu OTsKICAgIGxldHRlci1zcGFjaW5nOiAwLjJweDsKfQoKLyogZWxkZ2wtZWRpdDogZ2xlaWNoZXMg SG92ZXItTXVzdGVyLCBkYW1pdCBkaWUgU3BhbHRlIHNpY2h0YmFyIGVkaXRpZXJiYXIgd2lya3Qu ICovCi5lbGRnbC1lZGl0IHsKICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQgMC4xMnMsIG91dGxp bmUtY29sb3IgMC4xMnM7Cn0KLmVsZGdsLWVkaXQ6aG92ZXIgewogICAgYmFja2dyb3VuZDogdmFy KC0tYmctaG92ZXIpOwogICAgb3V0bGluZTogMXB4IGRhc2hlZCB2YXIoLS1mYXJiZS1ha3plbnQs ICM0YTkwZTIpOwp9CgovKiA9PT09PSBWSTMtREdMLVN0YXR1cy1CdXR0b24gKFBlcnNvbmFsdmVy d2FsdHVuZykgPT09PT0KICAgUXVhZHJhdGlzY2hlciBTdGF0dXMtQnV0dG9uLCAyNngyNiBweC4g R3J1ZW4gKyB3ZWlzc2VyIEhha2VuIGJlaQogICBRdWFsaWZpemllcnVuZywgcm90ICsgd2Vpc3Nl ciBob3Jpem9udGFsZXIgQmFsa2VuIChWZXJrZWhyc3NjaGlsZAogICAiVmVyYm90IGRlciBFaW5m YWhydCItT3B0aWspIGJlaSBuaWNodCBxdWFsaWZpemllcnQuICovCi52aTNkZ2wtYnRuIHsKICAg IGRpc3BsYXk6IGlubGluZS1mbGV4OwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIGp1c3Rp ZnktY29udGVudDogY2VudGVyOwogICAgd2lkdGg6IDI2cHg7CiAgICBoZWlnaHQ6IDI2cHg7CiAg ICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtc20pOwogICAgdmVydGljYWwtYWxpZ246IG1p ZGRsZTsKICAgIHVzZXItc2VsZWN0OiBub25lOwogICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAu MTJzLCBib3gtc2hhZG93IDAuMTJzOwogICAgYm94LXNoYWRvdzogaW5zZXQgMCAtMXB4IDAgcmdi YSgwLDAsMCwwLjE4KTsKfQouZWxkZ2wtZWRpdDpob3ZlciAudmkzZGdsLWJ0biwKLmFuc3ByZWNo cGFydG5lci1lZGl0OmhvdmVyIC52aTNkZ2wtYnRuIHsKICAgIHRyYW5zZm9ybTogc2NhbGUoMS4w OCk7CiAgICBib3gtc2hhZG93OiBpbnNldCAwIC0xcHggMCByZ2JhKDAsMCwwLDAuMTgpLCAwIDAg MCAycHggcmdiYSg3NCwxNDQsMjI2LDAuMzUpOwp9Ci52aTNkZ2wtYnRuLW9rIHsKICAgIGJhY2tn cm91bmQ6IHZhcigtLWZhcmJlLWVyZm9sZywgIzI3ODk2RCk7Cn0KLnZpM2RnbC1idG4tb2s6OmJl Zm9yZSB7CiAgICBjb250ZW50OiAn4pyTJzsKICAgIGNvbG9yOiAjZmZmOwogICAgZm9udC13ZWln aHQ6IDgwMDsKICAgIGZvbnQtc2l6ZTogMTZweDsKICAgIGxpbmUtaGVpZ2h0OiAxOwp9Ci52aTNk Z2wtYnRuLW5vIHsKICAgIGJhY2tncm91bmQ6IHZhcigtLWZhcmJlLWZlaGxlciwgI0IwM0EyRSk7 CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7Cn0KLnZpM2RnbC1idG4tbm86OmJlZm9yZSB7CiAgICBj b250ZW50OiAnJzsKICAgIHdpZHRoOiA2MCU7CiAgICBoZWlnaHQ6IDVweDsKICAgIGJhY2tncm91 bmQ6ICNmZmY7CiAgICBib3JkZXItcmFkaXVzOiAxcHg7CiAgICBib3gtc2hhZG93OiAwIDAgMCAx cHggcmdiYSgwLDAsMCwwLjEyKTsKfQovKiAiQXVzIi1WYXJpYW50ZTogZ3JhdWVyIEhpbnRlcmdy dW5kICsgd2Vpc3NlciBNaW51cy1CYWxrZW4uIFdpcmQgaW4KICAgZGVyIEFuc3ByZWNocGFydG5l ci1TcGFsdGUgYWxzIG5ldXRyYWxlcyAibmljaHQgZ2VzZXR6dCIgZ2VudXR6dCDigJQKICAga2Vp bmUgV2Fybi1PcHRpayB3aWUgLnZpM2RnbC1idG4tbm8sIHdlaWwgZGFzIEZsYWcgcmVpbiBvcHRp b25hbCBpc3QuICovCi52aTNkZ2wtYnRuLW9mZiB7CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS10ZXh0 LW11dGVkLCAjNmM3NTdkKTsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKfQoudmkzZGdsLWJ0bi1v ZmY6OmJlZm9yZSB7CiAgICBjb250ZW50OiAnJzsKICAgIHdpZHRoOiA2MCU7CiAgICBoZWlnaHQ6 IDVweDsKICAgIGJhY2tncm91bmQ6ICNmZmY7CiAgICBib3JkZXItcmFkaXVzOiAxcHg7CiAgICBi b3gtc2hhZG93OiAwIDAgMCAxcHggcmdiYSgwLDAsMCwwLjEyKTsKfQoKLyogPT09PT0gUGVyc29u LU1vZGFsOiBWSTMtREdMLVRvZ2dsZSA9PT09PSAqLwovKiBIb2VoZSBhbiBkaWUgYmVuYWNoYmFy dGVuIGZvcm0taW5wdXQvc2VsZWN0IGFuZ2VwYXNzdCAoVXNlci1GZWVkYmFjawogICAyMDI2LTA1 LTIzOiB3YXIgenUgd3VjaHRpZykuIFN0YXR1cy1RdWFkcmF0IDIyeDIyLCBQYWRkaW5nIGtvbXBh a3QsCiAgIFN0YXR1cyArIEhpbnQgaW5saW5lIHN0YXR0IGdlc3RhcGVsdC4gKi8KLmRsZy1lbGRn bC10b2dnbGUgewogICAgZGlzcGxheTogaW5saW5lLWZsZXg7CiAgICBhbGlnbi1pdGVtczogY2Vu dGVyOwogICAgZ2FwOiAxMHB4OwogICAgd2lkdGg6IDEwMCU7CiAgICBoZWlnaHQ6IDM2cHg7CiAg ICBwYWRkaW5nOiAwIDEwcHg7CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1jYXJkLWFsdCk7CiAg ICBib3JkZXI6IDJweCBzb2xpZCB2YXIoLS1ib3JkZXItbGlnaHQpOwogICAgYm9yZGVyLXJhZGl1 czogdmFyKC0tcmFkaXVzLW1kKTsKICAgIGN1cnNvcjogcG9pbnRlcjsKICAgIHRyYW5zaXRpb246 IGJhY2tncm91bmQgMC4xNXMsIGJvcmRlci1jb2xvciAwLjE1czsKICAgIGZvbnQ6IGluaGVyaXQ7 CiAgICBjb2xvcjogdmFyKC0tdGV4dC1wcmltYXJ5KTsKICAgIHRleHQtYWxpZ246IGxlZnQ7Cn0K LmRsZy1lbGRnbC10b2dnbGU6aG92ZXIgeyBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1ob3Zlcik7IH0K LmRsZy1lbGRnbC10b2dnbGUgLnZpM2RnbC1idG4gewogICAgd2lkdGg6IDIycHg7CiAgICBoZWln aHQ6IDIycHg7CiAgICBmbGV4LXNocmluazogMDsKfQouZGxnLWVsZGdsLXRvZ2dsZSAudmkzZGds LWJ0bjo6YmVmb3JlIHsKICAgIGZvbnQtc2l6ZTogdmFyKC0tZnMtbGcpOwp9Ci5kbGctZWxkZ2wt dG9nZ2xlLmFrdGl2IHsKICAgIGJvcmRlci1jb2xvcjogdmFyKC0tZmFyYmUtZXJmb2xnLCAjMjc4 OTZEKTsKICAgIGJhY2tncm91bmQ6IHJnYmEoMzksMTM3LDEwOSwwLjA4KTsKfQouZGxnLWVsZGds LXRvZ2dsZS5ha3Rpdjpob3ZlciB7IGJhY2tncm91bmQ6IHJnYmEoMzksMTM3LDEwOSwwLjE0KTsg fQouZGxnLWVsZGdsLXRvZ2dsZS5pbmFrdGl2IHsKICAgIGJvcmRlci1jb2xvcjogdmFyKC0tZmFy YmUtZmVobGVyLCAjQjAzQTJFKTsKICAgIGJhY2tncm91bmQ6IHJnYmEoMTc2LDU4LDQ2LDAuMDYp Owp9Ci5kbGctZWxkZ2wtdG9nZ2xlLmluYWt0aXY6aG92ZXIgeyBiYWNrZ3JvdW5kOiByZ2JhKDE3 Niw1OCw0NiwwLjEyKTsgfQouZGxnLWVsZGdsLXRleHQgewogICAgZGlzcGxheTogaW5saW5lLWZs ZXg7CiAgICBhbGlnbi1pdGVtczogYmFzZWxpbmU7CiAgICBnYXA6IDhweDsKICAgIG1pbi13aWR0 aDogMDsKICAgIGZsZXg6IDE7Cn0KLmRsZy1lbGRnbC1zdGF0dXMgewogICAgZm9udC1zaXplOiB2 YXIoLS1mcy1tZCk7CiAgICBmb250LXdlaWdodDogNzAwOwp9Ci5kbGctZWxkZ2wtdG9nZ2xlLmFr dGl2IC5kbGctZWxkZ2wtc3RhdHVzIHsgY29sb3I6IHZhcigtLWZhcmJlLWVyZm9sZywgIzI3ODk2 RCk7IH0KLmRsZy1lbGRnbC10b2dnbGUuaW5ha3RpdiAuZGxnLWVsZGdsLXN0YXR1cyB7IGNvbG9y OiB2YXIoLS1mYXJiZS1mZWhsZXIsICNCMDNBMkUpOyB9Ci5kbGctZWxkZ2wtaGludCB7CiAgICBm b250LXNpemU6IHZhcigtLWZzLXNtKTsKICAgIGNvbG9yOiB2YXIoLS10ZXh0LW11dGVkKTsKICAg IGZvbnQtc3R5bGU6IGl0YWxpYzsKICAgIG1hcmdpbi1sZWZ0OiBhdXRvOwp9CgovKiA9PT09PSBQ cm9maWxiaWxkZXIgKEF2YXRhcmUpID09PT09CiAgIFVuaWZvcm0tTG9vazogdmllcmVja2lnIG1p dCBkZXplbnQgYWJnZXJ1bmRldGVuIEVja2VuIHN0YXR0IEtyZWlzLAogICBEZWZhdWx0LUhpbnRl cmdydW5kIGFudGhyYXppdC1ncmF1LiBib3JkZXItcmFkaXVzIHdpcmQgaW0gSW5saW5lLQogICBT dHlsZSBwcm8gR3JvZXNzZSBnZXNldHp0IChwcm9wb3J0aW9uYWwgfjE4JSkuICovCi52aTMtYXZh dGFyIHsKICAgIGRpc3BsYXk6IGlubGluZS1mbGV4OwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsK ICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgZmxleC1zaHJpbms6IDA7CiAgICBjb2xv cjogI2ZmZjsKICAgIGZvbnQtd2VpZ2h0OiA3MDA7CiAgICBsaW5lLWhlaWdodDogMTsKICAgIHRl eHQtYWxpZ246IGNlbnRlcjsKICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICB1c2VyLXNlbGVjdDog bm9uZTsKICAgIGJveC1zaGFkb3c6IGluc2V0IDAgMCAwIDFweCByZ2JhKDAsMCwwLDAuMTIpOwp9 Ci52aTMtYXZhdGFyLWJpbGQgewogICAgYmFja2dyb3VuZC1zaXplOiBjb3ZlcjsKICAgIGJhY2tn cm91bmQtcG9zaXRpb246IGNlbnRlcjsKICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7 Cn0KLnZpMy1hdmF0YXItaW5pdGlhbGVuIHsKICAgIHRleHQtc2hhZG93OiAwIDFweCAxcHggcmdi YSgwLDAsMCwwLjI1KTsKfQoKLyogUGVyc29uYWwtVGFiZWxsZTogQXZhdGFyIGxpbmtzIG5lYmVu IE5hbWVuICovCi5wZXJzb25hbC1uYW1lLXplbGxlIHsKICAgIGRpc3BsYXk6IGlubGluZS1mbGV4 OwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIGdhcDogOHB4Owp9Ci5wZXJzb25hbC1uYW1l LXplbGxlIC5wZXJzb24tbmFtZS1saW5rIHsKICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICB0ZXh0 LW92ZXJmbG93OiBlbGxpcHNpczsKICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7Cn0KCi8qIFBlcnNv bi1Nb2RhbDogQXZhdGFyLUJsb2NrIGdhbnogb2JlbiAoVm9yc2NoYXUgKyBCdXR0b25zKSAqLwou ZGxnLWF2YXRhci1ibG9jayB7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgYWxpZ24taXRlbXM6IGNl bnRlcjsKICAgIGdhcDogMTZweDsKICAgIHBhZGRpbmc6IDEycHggMTRweDsKICAgIG1hcmdpbi1i b3R0b206IDE0cHg7CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1jYXJkKTsKICAgIGJvcmRlcjog MXB4IHNvbGlkIHZhcigtLWJvcmRlci1saWdodCk7CiAgICBib3JkZXItcmFkaXVzOiA4cHg7Cn0K LmRsZy1hdmF0YXItdm9yc2NoYXUgLnZpMy1hdmF0YXIgewogICAgYm94LXNoYWRvdzogaW5zZXQg MCAwIDAgMXB4IHJnYmEoMCwwLDAsMC4xNSksIDAgMXB4IDRweCByZ2JhKDAsMCwwLDAuMTUpOwp9 Ci5kbGctYXZhdGFyLWFrdGlvbmVuIHsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBmbGV4LWRpcmVj dGlvbjogY29sdW1uOwogICAgZ2FwOiA2cHg7CiAgICBmbGV4OiAxOwogICAgbWluLXdpZHRoOiAw Owp9Ci5kbGctYXZhdGFyLW5hbWUgewogICAgZm9udC1zaXplOiAxNXB4OwogICAgZm9udC13ZWln aHQ6IDcwMDsKICAgIGNvbG9yOiB2YXIoLS10ZXh0LWhlYWRpbmcpOwp9Ci5kbGctYXZhdGFyLWhp bndlaXMgewogICAgZm9udC1zaXplOiB2YXIoLS1mcy1iYXNlKTsKICAgIGNvbG9yOiB2YXIoLS10 ZXh0LW11dGVkKTsKICAgIGZvbnQtc3R5bGU6IGl0YWxpYzsKfQoKLyogPT09PT0gUGVyc29uLUhv dmVyLVBvcG92ZXIgPT09PT0KICAgRWlnZW5lIC5wcHYtKiBLbGFzc2VuLCB3ZWlsIC5wcC0qIG1p dCBkZW0gcGVyc29lbmxpY2hlbiBQbGFuCiAgIGtvbGxpZGllcnQgaGF0IChib3JkZXItcmlnaHQv b3V0bGluZS1TdGlsZSB2b20gUGVycy1QbGFuIGhhYmVuCiAgIGRpZSBNaW5pLVRhZy1aZWxsZW4g aW0gUG9wb3ZlciB1ZWJlcmxhZ2VydCkuICovCi52aTMtcGVyc29uLXBvcG92ZXIgewogICAgcG9z aXRpb246IGZpeGVkOwogICAgei1pbmRleDogdmFyKC0tei1wb3BvdmVyLXBhZ2UpOwogICAgd2lk dGg6IDI4MHB4OwogICAgYmFja2dyb3VuZDogdmFyKC0tYmctY2FyZCk7CiAgICBib3JkZXI6IDFw eCBzb2xpZCB2YXIoLS1ib3JkZXItc3Ryb25nKTsKICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJh ZGl1cy1sZyk7CiAgICBib3gtc2hhZG93OiAwIDhweCAyNHB4IHJnYmEoMCwwLDAsMC4yOCk7CiAg ICBwYWRkaW5nOiAxNHB4OwogICAgcG9pbnRlci1ldmVudHM6IGF1dG87Cn0KLnZpMy1wZXJzb24t cG9wb3Zlci52ZXJzdGVja3QgeyBkaXNwbGF5OiBub25lOyB9CgoucHB2LWtvcGYgewogICAgZGlz cGxheTogZmxleDsgZ2FwOiAxMnB4OyBhbGlnbi1pdGVtczogY2VudGVyOwogICAgbWFyZ2luLWJv dHRvbTogMTJweDsKICAgIHBhZGRpbmctYm90dG9tOiAxMnB4OwogICAgYm9yZGVyLWJvdHRvbTog MXB4IHNvbGlkIHZhcigtLWJvcmRlci1saWdodCk7Cn0KLnBwdi1rb3BmLXRleHQgeyBmbGV4OiAx OyBtaW4td2lkdGg6IDA7IH0KLnBwdi1uYW1lIHsKICAgIGZvbnQtc2l6ZTogdmFyKC0tZnMtbGcp OyBmb250LXdlaWdodDogNzAwOwogICAgY29sb3I6IHZhcigtLXRleHQtaGVhZGluZyk7CiAgICBs aW5lLWhlaWdodDogMS4yNTsKICAgIG1hcmdpbi1ib3R0b206IDJweDsKfQoucHB2LW1ldGEgewog ICAgZm9udC1zaXplOiAxMS41cHg7CiAgICBjb2xvcjogdmFyKC0tdGV4dC1tdXRlZCk7CiAgICBs aW5lLWhlaWdodDogMS40NTsKfQoKLnBwdi10YWdlLXRpdGVsIHsKICAgIGZvbnQtc2l6ZTogMTAu NXB4OwogICAgY29sb3I6IHZhcigtLXRleHQtbXV0ZWQpOwogICAgdGV4dC10cmFuc2Zvcm06IHVw cGVyY2FzZTsKICAgIGxldHRlci1zcGFjaW5nOiAwLjZweDsKICAgIGZvbnQtd2VpZ2h0OiA2MDA7 CiAgICBtYXJnaW4tYm90dG9tOiA4cHg7Cn0KLnBwdi10YWdlIHsKICAgIGRpc3BsYXk6IGdyaWQ7 CiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgyLCAxZnIpOwogICAgZ2FwOiA0cHgg MTBweDsKICAgIGZvbnQtc2l6ZTogdmFyKC0tZnMtc20pOwp9Ci5wcHYtdGFnIHsKICAgIGRpc3Bs YXk6IGdyaWQ7CiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDE4cHggMWZyIGF1dG87CiAgICBn YXA6IDZweDsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICBwYWRkaW5nOiAycHggNHB4Owog ICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLXNtKTsKICAgIHRyYW5zaXRpb246IGJhY2tn cm91bmQgMC4xMnM7Cn0KLnBwdi10YWctd2UgewogICAgY29sb3I6IHZhcigtLXRleHQtbXV0ZWQp Owp9Ci5wcHYtdGFnLWhldXRlIHsKICAgIGJhY2tncm91bmQ6IHJnYmEoNzQsMTQ0LDIyNiwwLjEy KTsKfQoucHB2LXRhZy1oZXV0ZSAucHB2LXRhZy13dCwKLnBwdi10YWctaGV1dGUgLnBwdi10YWct ZGF0dW0gewogICAgY29sb3I6IHZhcigtLWZhcmJlLWFremVudCwgIzRhOTBlMik7CiAgICBmb250 LXdlaWdodDogODAwOwp9Ci5wcHYtdGFnLXd0IHsKICAgIGNvbG9yOiB2YXIoLS10ZXh0LW11dGVk KTsKICAgIGZvbnQtc2l6ZTogdmFyKC0tZnMteHMpOwogICAgZm9udC13ZWlnaHQ6IDYwMDsKICAg IHRleHQtYWxpZ246IGxlZnQ7Cn0KLnBwdi10YWctZGF0dW0gewogICAgY29sb3I6IHZhcigtLXRl eHQtc2Vjb25kYXJ5KTsKICAgIGZvbnQtc2l6ZTogMTAuNXB4OwogICAgZm9udC12YXJpYW50LW51 bWVyaWM6IHRhYnVsYXItbnVtczsKfQoucHB2LXRhZy1jb2RlIHsKICAgIHBhZGRpbmc6IDFweCA2 cHg7CiAgICBtaW4td2lkdGg6IDQ4cHg7CiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMt eHMpOwogICAgZm9udC13ZWlnaHQ6IDcwMDsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgIGZv bnQtc2l6ZTogMTAuNXB4OwogICAgY29sb3I6IHZhcigtLXRleHQtbXV0ZWQpOwogICAgYmFja2dy b3VuZDogdmFyKC0tYmctY2FyZC1hbHQpOwogICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgIHRleHQt b3ZlcmZsb3c6IGVsbGlwc2lzOwogICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKfQoucHB2LXRhZy1s ZWVyIC5wcHYtdGFnLWNvZGUgewogICAgY29sb3I6IHZhcigtLWJvcmRlci1zdHJvbmcpOwogICAg YmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7CiAgICBmb250LXdlaWdodDogNDAwOwp9CgovKiA9PT09 PSBBZG1pbjogUmVjaHRlICYgU2ljaHRiYXJrZWl0IOKAlCBLYXJ0ZW4tTGF5b3V0ID09PT09ICov Ci5yZWNodGUtdGFiLXN1YiB7CiAgICBtYXJnaW46IDRweCAwIDA7CiAgICBmb250LXNpemU6IHZh cigtLWZzLWJhc2UpOwogICAgY29sb3I6IHZhcigtLXRleHQtbXV0ZWQpOwogICAgbGluZS1oZWln aHQ6IDEuNDU7Cn0KCiNhZG1pbi10YWItc3VwZXJ1c2VyIC5hZG1pbi1zZWt0aW9uIHsKICAgIG1h cmdpbi1ib3R0b206IDE4cHg7Cn0KI2FkbWluLXRhYi1zdXBlcnVzZXIgLmFkbWluLXNla3Rpb24t dHJlbm5lciB7IGRpc3BsYXk6IG5vbmU7IH0KCi5yZWNodGUtY2FyZCB7CiAgICBiYWNrZ3JvdW5k OiB2YXIoLS1iZy1jYXJkKTsKICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWJvcmRlci1saWdo dCk7CiAgICBib3JkZXItcmFkaXVzOiAxMnB4OwogICAgcGFkZGluZzogMTRweCAxOHB4IDE2cHg7 CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICBvdmVyZmxvdzogaGlkZGVuOwp9Ci8qIEVpbmhl aXRsaWNoZXIsIHByb2Zlc3Npb25lbGxlciBMb29rOiBrZWluIGZhcmJpZ2VyIEFremVudC1TdHJl aWZlbiB1bmQKICAga2VpbiBSb2xsZW4tRmFyYmNvZGUgbWVociDigJQgYWxsZSBSb2xsZW4tS2Fy dGVuIG5ldXRyYWwsIEljb25zIGltCiAgIFN0YW5kYXJkLUJsYXUgKHNpZWhlIC5yZWNodGUtY2Fy ZC1pY29uKS4gKi8KCi5yZWNodGUtY2FyZC1rb3BmIHsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBh bGlnbi1pdGVtczogZmxleC1zdGFydDsKICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2Vl bjsKICAgIGdhcDogMTJweDsKICAgIG1hcmdpbjogMCAwIDEycHg7CiAgICBwYWRkaW5nLWJvdHRv bTogMTJweDsKICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1ib3JkZXItbGlnaHQp Owp9Ci5yZWNodGUtY2FyZC10aXRlbCB7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgYWxpZ24taXRl bXM6IGNlbnRlcjsKICAgIGdhcDogMTJweDsKICAgIG1pbi13aWR0aDogMDsKICAgIGZsZXg6IDE7 Cn0KLnJlY2h0ZS1jYXJkLXRpdGVsIGgzIHsKICAgIG1hcmdpbjogMDsKICAgIGZvbnQtc2l6ZTog MTZweDsKICAgIGNvbG9yOiB2YXIoLS10ZXh0LWhlYWRpbmcpOwogICAgbGluZS1oZWlnaHQ6IDEu MjsKfQoucmVjaHRlLWNhcmQtc3ViIHsKICAgIG1hcmdpbjogM3B4IDAgMDsKICAgIGZvbnQtc2l6 ZTogdmFyKC0tZnMtYmFzZSk7CiAgICBjb2xvcjogdmFyKC0tdGV4dC1tdXRlZCk7CiAgICBsaW5l LWhlaWdodDogMS40Owp9Ci5yZWNodGUtY2FyZC1pY29uIHsKICAgIGRpc3BsYXk6IGlubGluZS1m bGV4OwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIGp1c3RpZnktY29udGVudDogY2VudGVy OwogICAgd2lkdGg6IDM2cHg7IGhlaWdodDogMzZweDsKICAgIGJvcmRlci1yYWRpdXM6IDhweDsK ICAgIGJhY2tncm91bmQ6IHZhcigtLWJnLXByaW1hcnkpOwogICAgY29sb3I6ICNmZmY7CiAgICBm b250LXNpemU6IDE4cHg7CiAgICBmb250LXdlaWdodDogNzAwOwogICAgZmxleC1zaHJpbms6IDA7 Cn0KLnJlY2h0ZS1ub3RmYWxsLWJveCB7CiAgICBtYXJnaW46IDAgMCAxMnB4OwogICAgYm9yZGVy LWxlZnQtY29sb3I6IHZhcigtLWZhcmJlLXdhcm51bmcsICNjYTZmMWUpOwogICAgZm9udC1zaXpl OiAxMi41cHg7Cn0KLnJlY2h0ZS1jYXJkLWZ1c3MgewogICAgZGlzcGxheTogZmxleDsKICAgIGFs aWduLWl0ZW1zOiBjZW50ZXI7CiAgICBnYXA6IDEycHg7CiAgICBmbGV4LXdyYXA6IHdyYXA7CiAg ICBwYWRkaW5nLXRvcDogMTJweDsKICAgIG1hcmdpbi10b3A6IDEycHg7CiAgICBib3JkZXItdG9w OiAxcHggc29saWQgdmFyKC0tYm9yZGVyLWxpZ2h0KTsKfQoucmVjaHRlLWRpcnR5LWhpbndlaXMg ewogICAgY29sb3I6IHZhcigtLWZhcmJlLXdhcm51bmcsICNjYTZmMWUpOwogICAgZm9udC13ZWln aHQ6IDYwMDsKICAgIGZvbnQtc2l6ZTogdmFyKC0tZnMtYmFzZSk7Cn0KLnJlY2h0ZS1rZWluLXJl Y2h0IHsgbWFyZ2luLXRvcDogMTJweDsgfQoKLyogPT09PT0gSW1wcmVzc3Vtcy1Nb2RhbCA9PT09 PSAqLwouaW1wcmVzc3VtLWluaGFsdCBoNCB7CiAgICBtYXJnaW46IDE0cHggMCA0cHg7CiAgICBm b250LXNpemU6IDEzLjVweDsKICAgIGNvbG9yOiB2YXIoLS10ZXh0LWhlYWRpbmcpOwogICAgdGV4 dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKICAgIGxldHRlci1zcGFjaW5nOiAwLjRweDsKfQouaW1w cmVzc3VtLWluaGFsdCBoNDpmaXJzdC1jaGlsZCB7IG1hcmdpbi10b3A6IDA7IH0KLmltcHJlc3N1 bS1pbmhhbHQgcCB7CiAgICBtYXJnaW46IDAgMCA4cHg7CiAgICBmb250LXNpemU6IHZhcigtLWZz LW1kKTsKfQouaW1wcmVzc3VtLWluaGFsdCB1bCB7CiAgICBtYXJnaW46IDRweCAwIDhweCAxOHB4 OwogICAgcGFkZGluZzogMDsKICAgIGZvbnQtc2l6ZTogdmFyKC0tZnMtbWQpOwp9Ci5pbXByZXNz dW0taW5oYWx0IGxpIHsgbWFyZ2luLWJvdHRvbTogM3B4OyB9CgovKiBOb3RmYWxsLVJ1ZWNrZmFs bGViZW5lOiBpc3QgaGFydGNvZGllcnQgKGtlaW4gVXNlci1FZGl0KSwgZGFtaXQgZGVyCiAgIFN1 cHBvcnRQZmFkIGltbWVyIGV4aXN0aWVydC4gVmlzdWVsbCBhbHMgV2Fybi1Cb3ggbWl0IGxpbmtl bQogICBBa3plbnQtU3RyZWlmZW4gKyBNYWlsLUJ1dHRvbi4gKi8KLmltcHJlc3N1bS1ub3RmYWxs IHsKICAgIG1hcmdpbi10b3A6IDE4cHg7CiAgICBwYWRkaW5nOiAxNHB4IDE2cHg7CiAgICBiYWNr Z3JvdW5kOiByZ2JhKDIwMiwxMTEsMzAsMC4wOCk7CiAgICBib3JkZXI6IDFweCBzb2xpZCByZ2Jh KDIwMiwxMTEsMzAsMC4zNSk7CiAgICBib3JkZXItbGVmdDogNHB4IHNvbGlkIHZhcigtLWZhcmJl LXdhcm51bmcsICNjYTZmMWUpOwogICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLW1kKTsK fQouaW1wcmVzc3VtLW5vdGZhbGwtdGl0ZWwgewogICAgZm9udC1zaXplOiB2YXIoLS1mcy1iYXNl KTsKICAgIGZvbnQtd2VpZ2h0OiA3MDA7CiAgICBjb2xvcjogdmFyKC0tZmFyYmUtd2FybnVuZywg I2NhNmYxZSk7CiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOwogICAgbGV0dGVyLXNwYWNp bmc6IDAuNXB4OwogICAgbWFyZ2luLWJvdHRvbTogNnB4Owp9Ci5pbXByZXNzdW0tbm90ZmFsbC10 ZXh0IHsKICAgIG1hcmdpbjogMCAwIDEycHg7CiAgICBmb250LXNpemU6IDEyLjVweDsKICAgIGxp bmUtaGVpZ2h0OiAxLjU1OwogICAgY29sb3I6IHZhcigtLXRleHQtcHJpbWFyeSk7Cn0KLmltcHJl c3N1bS1ub3RmYWxsLXRleHQgY29kZSB7CiAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsMCwwLDAuMDYp OwogICAgcGFkZGluZzogMXB4IDVweDsKICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy14 cyk7CiAgICBmb250LXNpemU6IDExLjVweDsKfQouaW1wcmVzc3VtLW1haWwtYnRuIHsKICAgIGRp c3BsYXk6IGlubGluZS1mbGV4OwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIGdhcDogNnB4 OwogICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwp9Ci5pbXByZXNzdW0tbWFpbC1idG46aG92ZXIg eyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IH0KCi8qIEJ1Zy1SZXBvcnQtQm94IChNb2RhbCBoaW50 ZXIgZGVtIEhlYWRlci1CdXR0b24g4oCeQnVnUmVwb3J0Iikg4oCUIHJvdGUgVmFyaWFudGUKICAg ZGVyIEltcHJlc3N1bS1Ob3RmYWxsLUJveC4gKi8KLmJ1Z3JlcG9ydC1ib3ggewogICAgcGFkZGlu ZzogMTRweCAxNnB4OwogICAgYmFja2dyb3VuZDogcmdiYSgxNzYsNTgsNDYsMC4wOCk7CiAgICBi b3JkZXI6IDFweCBzb2xpZCByZ2JhKDE3Niw1OCw0NiwwLjM1KTsKICAgIGJvcmRlci1sZWZ0OiA0 cHggc29saWQgdmFyKC0tZmFyYmUtZmVobGVyLCAjQjAzQTJFKTsKICAgIGJvcmRlci1yYWRpdXM6 IHZhcigtLXJhZGl1cy1tZCk7Cn0KLmJ1Z3JlcG9ydC1ib3gtdGl0ZWwgewogICAgZm9udC1zaXpl OiB2YXIoLS1mcy1iYXNlKTsKICAgIGZvbnQtd2VpZ2h0OiA3MDA7CiAgICBjb2xvcjogdmFyKC0t ZmFyYmUtZmVobGVyLCAjQjAzQTJFKTsKICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7CiAg ICBsZXR0ZXItc3BhY2luZzogMC41cHg7CiAgICBtYXJnaW4tYm90dG9tOiA2cHg7Cn0KLmJ1Z3Jl cG9ydC1ib3gtdGV4dCB7CiAgICBtYXJnaW46IDAgMCAxMnB4OwogICAgZm9udC1zaXplOiAxMi41 cHg7CiAgICBsaW5lLWhlaWdodDogMS41NTsKICAgIGNvbG9yOiB2YXIoLS10ZXh0LXByaW1hcnkp Owp9Ci5idWdyZXBvcnQtbWFpbC1idG4gewogICAgZGlzcGxheTogaW5saW5lLWZsZXg7CiAgICBh bGlnbi1pdGVtczogY2VudGVyOwogICAgZ2FwOiA2cHg7CiAgICB0ZXh0LWRlY29yYXRpb246IG5v bmU7CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1mYXJiZS1mZWhsZXIsICNCMDNBMkUpOwogICAgYm9y ZGVyLWNvbG9yOiB2YXIoLS1mYXJiZS1mZWhsZXIsICNCMDNBMkUpOwogICAgY29sb3I6ICNmZmY7 Cn0KLmJ1Z3JlcG9ydC1tYWlsLWJ0bjpob3ZlciB7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgZmls dGVyOiBicmlnaHRuZXNzKDEuMDgpOyB9CgovKiA9PT09PSBHZWJ1cnRzdGFnLU1vZGFsIChCdXR0 b24tR3JpZCBmdWVyIFRhZyAvIE1vbmF0IC8gSmFocikgPT09PT0gKi8KLmdiLWFrdHVlbGwgewog ICAgYmFja2dyb3VuZDogdmFyKC0tYmctY2FyZC1hbHQpOwogICAgcGFkZGluZzogMTBweCAxNHB4 OwogICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLW1kKTsKICAgIG1hcmdpbi1ib3R0b206 IDE0cHg7CiAgICBmb250LXNpemU6IHZhcigtLWZzLWxnKTsKfQouZ2Itc2VrdGlvbiB7IG1hcmdp bi1ib3R0b206IDE0cHg7IH0KLmdiLXNla3Rpb246bGFzdC1jaGlsZCB7IG1hcmdpbi1ib3R0b206 IDA7IH0KLmdiLXNla3Rpb24tdGl0ZWwgewogICAgZm9udC1zaXplOiB2YXIoLS1mcy1zbSk7IGNv bG9yOiB2YXIoLS10ZXh0LW11dGVkKTsKICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7IGxl dHRlci1zcGFjaW5nOiAwLjZweDsKICAgIGZvbnQtd2VpZ2h0OiA2MDA7IG1hcmdpbi1ib3R0b206 IDZweDsKfQouZ2ItZ3JpZCB7IGRpc3BsYXk6IGdyaWQ7IGdhcDogNHB4OyB9Ci5nYi1ncmlkLXRh ZyAgIHsgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoNywgMWZyKTsgfQouZ2ItZ3JpZC1t b25hdCB7IGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDYsIDFmcik7IH0KQG1lZGlhICht YXgtd2lkdGg6IDY0MHB4KSB7CiAgICAuZ2ItZ3JpZC1tb25hdCB7IGdyaWQtdGVtcGxhdGUtY29s dW1uczogcmVwZWF0KDQsIDFmcik7IH0KfQouZ2ItZ3JpZC1qYWhyICB7IGdyaWQtdGVtcGxhdGUt Y29sdW1uczogcmVwZWF0KDgsIDFmcik7IH0KQG1lZGlhIChtYXgtd2lkdGg6IDcwMHB4KSB7CiAg ICAuZ2ItZ3JpZC1qYWhyIHsgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoNiwgMWZyKTsg fQp9Ci5nYi1idG4gewogICAgcGFkZGluZzogNnB4IDRweDsKICAgIGZvbnQtc2l6ZTogdmFyKC0t ZnMtbWQpOwogICAgYmFja2dyb3VuZDogdmFyKC0tYmctY2FyZC1hbHQpOwogICAgYm9yZGVyOiAx cHggc29saWQgdmFyKC0tYm9yZGVyLWxpZ2h0KTsKICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJh ZGl1cy1zbSk7CiAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICBjb2xvcjogdmFyKC0tdGV4dC1wcmlt YXJ5KTsKICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQgMC4xcywgYm9yZGVyLWNvbG9yIDAuMXMs IHRyYW5zZm9ybSAwLjA4czsKfQouZ2ItYnRuOmhvdmVyIHsKICAgIGJhY2tncm91bmQ6IHZhcigt LWJnLWhvdmVyKTsKICAgIGJvcmRlci1jb2xvcjogdmFyKC0tZmFyYmUtYWt6ZW50LCAjNGE5MGUy KTsKfQouZ2ItYnRuOmFjdGl2ZSB7IHRyYW5zZm9ybTogc2NhbGUoMC45NSk7IH0KLmdiLWJ0bi5h a3RpdiB7CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1mYXJiZS1ha3plbnQsICM0YTkwZTIpOwogICAg Ym9yZGVyLWNvbG9yOiB2YXIoLS1mYXJiZS1ha3plbnQsICM0YTkwZTIpOwogICAgY29sb3I6ICNm ZmY7CiAgICBmb250LXdlaWdodDogNzAwOwp9CgovKiA9PT09PSBJbmZvLU1vZGFsOiBBYnNjaG5p dHRlIG9obmUgZG9wcGVsdGUgRWlucsO8Y2t1bmcgPT09PT0KICAgS2VpbiBob3Jpem9udGFsZXMg UGFkZGluZyBhbSBBYnNjaG5pdHRzLVdyYXBwZXIg4oCUIExpc3RlbiBydWVja2VuIG51ciB1bSBk aWUKICAgZWlnZW5lIEJ1bGxldC1CcmVpdGUgZWluLCBibGVpYmVuIHNvIGltIFRleHRmbHVzcyB6 dW0gaDMtVGl0ZWwuIERhcyBpc3QgZGVyCiAgIEtvbXByb21pc3M6IGRpZSBJbmZvLUthcnRlbiBv YmVuIChTdXBwb3J0KSBzdGVoZW4gZXR3YXMgZWluZ2V6b2dlbiBkdXJjaAogICBpaHJlbiA0cHgt Qm9yZGVyLCBkaWUgcmVzdGxpY2hlbiBBYnNjaG5pdHRlIHNpdHplbiBhbSBNb2RhbC1SYW5kLiAq LwouaW5mby1hYnNjaG5pdHQgewogICAgcGFkZGluZzogMDsKICAgIG1hcmdpbi1ib3R0b206IDEy cHg7Cn0KLmluZm8tYWJzY2huaXR0ID4gaDMgewogICAgbWFyZ2luOiAxNHB4IDAgOHB4IDA7CiAg ICBmb250LXNpemU6IDE1cHg7CiAgICBjb2xvcjogdmFyKC0tdGV4dC1oZWFkaW5nKTsKICAgIGJv cmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1ib3JkZXItbGlnaHQpOwogICAgcGFkZGluZy1i b3R0b206IDRweDsKfQouaW5mby1hYnNjaG5pdHQgPiBoMzpmaXJzdC1jaGlsZCB7IG1hcmdpbi10 b3A6IDA7IH0KLmluZm8tYWJzY2huaXR0IHVsLAouaW5mby1hYnNjaG5pdHQgb2wgewogICAgbWFy Z2luOiAwIDAgMTBweCAwOwogICAgcGFkZGluZy1sZWZ0OiAyMHB4OwogICAgZm9udC1zaXplOiB2 YXIoLS1mcy1tZCk7CiAgICBsaW5lLWhlaWdodDogMS43Owp9Ci5pbmZvLWFic2Nobml0dCB1bCBs aSwKLmluZm8tYWJzY2huaXR0IG9sIGxpIHsgbWFyZ2luLWJvdHRvbTogNHB4OyB9Ci5pbmZvLWFi c2Nobml0dCB1bCBsaTpsYXN0LWNoaWxkLAouaW5mby1hYnNjaG5pdHQgb2wgbGk6bGFzdC1jaGls ZCB7IG1hcmdpbi1ib3R0b206IDA7IH0KLmluZm8tYWJzY2huaXR0IHAgeyBtYXJnaW46IDAgMCA4 cHggMDsgZm9udC1zaXplOiB2YXIoLS1mcy1tZCk7IH0KLmluZm8tZnVzcyB7CiAgICBtYXJnaW4t dG9wOiAxNnB4OwogICAgcGFkZGluZzogOHB4IDAgMCAwOwogICAgZm9udC1zaXplOiB2YXIoLS1m cy1zbSk7CiAgICBjb2xvcjogdmFyKC0tdGV4dC1tdXRlZCk7CiAgICBib3JkZXItdG9wOiAxcHgg c29saWQgdmFyKC0tYm9yZGVyLWxpZ2h0KTsKfQoKLyogPT09PT0gU3RhdGlzdGlrOiBJbmZvLUJ1 dHRvbnMgKyBQcm9zYSA9PT09PSAqLwouc3RhdHMtaW5mby1idG4gewogICAgZGlzcGxheTogaW5s aW5lLWZsZXg7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAganVzdGlmeS1jb250ZW50OiBj ZW50ZXI7CiAgICB3aWR0aDogMThweDsKICAgIGhlaWdodDogMThweDsKICAgIG1hcmdpbi1sZWZ0 OiA4cHg7CiAgICBwYWRkaW5nOiAwOwogICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tYm9yZGVy LWxpZ2h0KTsKICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgIGJhY2tncm91bmQ6IHZhcigtLWJn LWNhcmQtYWx0KTsKICAgIGNvbG9yOiB2YXIoLS10ZXh0LW11dGVkKTsKICAgIGZvbnQtc2l6ZTog dmFyKC0tZnMtc20pOwogICAgZm9udC13ZWlnaHQ6IDcwMDsKICAgIGZvbnQtc3R5bGU6IGl0YWxp YzsKICAgIGZvbnQtZmFtaWx5OiBHZW9yZ2lhLCBzZXJpZjsKICAgIGN1cnNvcjogcG9pbnRlcjsK ICAgIGxpbmUtaGVpZ2h0OiAxOwogICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKICAgIHRyYW5z aXRpb246IGJhY2tncm91bmQgMC4xMnMsIGNvbG9yIDAuMTJzOwp9Ci5zdGF0cy1pbmZvLWJ0bjpo b3ZlciB7CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1mYXJiZS1wcmltYWVyLCAjMkMzRTUwKTsKICAg IGNvbG9yOiAjZmZmOwogICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1mYXJiZS1wcmltYWVyLCAjMkMz RTUwKTsKfQoKLnN0YXRzLXByb3NhLWNvbnRhaW5lciB7CiAgICBwYWRkaW5nOiA4cHggMTJweCAx MnB4OwogICAgbWF4LWhlaWdodDogNDgwcHg7CiAgICBvdmVyZmxvdy15OiBhdXRvOwogICAgZGlz cGxheTogZmxleDsKICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICBnYXA6IDhweDsKfQou c3RhdHMtcHJvc2EtemVpbGUgewogICAgZGlzcGxheTogZ3JpZDsKICAgIGdyaWQtdGVtcGxhdGUt Y29sdW1uczogMTgwcHggMWZyOwogICAgZ2FwOiAxMnB4OwogICAgcGFkZGluZzogOHB4IDEwcHg7 CiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtc20pOwogICAgYmFja2dyb3VuZDogdmFy KC0tYmctY2FyZC1hbHQpOwogICAgZm9udC1zaXplOiB2YXIoLS1mcy1tZCk7CiAgICBsaW5lLWhl aWdodDogMS41Owp9Ci5zdGF0cy1wcm9zYS16ZWlsZTpob3ZlciB7IGJhY2tncm91bmQ6IHZhcigt LWJnLWhvdmVyKTsgfQouc3RhdHMtcHJvc2EtbmFtZSB7IGZvbnQtd2VpZ2h0OiA3MDA7IGNvbG9y OiB2YXIoLS10ZXh0LWhlYWRpbmcpOyB9Ci5zdGF0cy1wcm9zYS10ZXh0IHsgY29sb3I6IHZhcigt LXRleHQtcHJpbWFyeSk7IH0KCi8qIE1vZGFsLUluZm8tSW5oYWx0OiBzYXViZXJlcyBTdHlsaW5n IGZ1ZXIgaDQvdWwgKi8KI21vZGFsLWtvZXJwZXIgaDQgeyBtYXJnaW46IDEycHggMCA2cHggMDsg Zm9udC1zaXplOiB2YXIoLS1mcy1tZCk7IGNvbG9yOiB2YXIoLS10ZXh0LWhlYWRpbmcpOyB9CiNt b2RhbC1rb2VycGVyIGNvZGUgeyBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1jYXJkLWFsdCk7IHBhZGRp bmc6IDFweCA0cHg7IGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy14cyk7IGZvbnQtc2l6ZTog dmFyKC0tZnMtYmFzZSk7IH0KLyogTGlzdGVuIGluIGFsbGVuIE1vZGFsLUtvZXJwZXJuOiBiZXd1 c3N0IGZsYWNoZSBFaW5ydWVja3VuZywgZGFtaXQgQnVsbGV0cwogICBkaXJla3QgbmViZW4gZGVt IFRleHRmbHVzcyBibGVpYmVuIHVuZCBuaWNodCB3ZWl0IHZvbSBsaW5rZW4gUmFuZCBhYnN0ZWhl bi4gKi8KI21vZGFsLWtvZXJwZXIgdWwsCiNtb2RhbC1rb2VycGVyIG9sIHsKICAgIG1hcmdpbjog NnB4IDAgMTBweCAwOwogICAgcGFkZGluZy1sZWZ0OiAyMHB4OwogICAgbGluZS1oZWlnaHQ6IDEu NTsKfQojbW9kYWwta29lcnBlciBsaSB7IG1hcmdpbi1ib3R0b206IDNweDsgfQoKLyogPT09PT0g TmV1aW1wb3J0LUJsb2NrIChQZXJzb25hbHZlcndhbHR1bmcpID09PT09CiAgIEVyc2NoZWludCB1 ZWJlciBkZXIgUGVyc29uYWwtVGFiZWxsZSwgd2VubiBkZXIgRXhjZWwtSW1wb3J0IGdlcmFkZSBm cmlzY2hlCiAgIFBlcnNvbmVuIGFuZ2VsZWd0IGhhdC4gU2FtbWVsdCBzaWUgenVtIE5hY2hwZmxl Z2VuIHVuZCB2ZXJzY2h3aW5kZXQsIHNvYmFsZAogICBhbGxlIE1hcmtlciBlcmxlZGlndCBzaW5k LiAqLwojcGVyc29uYWwtbmV1aW1wb3J0LWJsb2NrIHsKICAgIGJhY2tncm91bmQ6IGxpbmVhci1n cmFkaWVudCgxMzVkZWcsIHJnYmEoNDgsOTksMTY4LDAuMDYpLCByZ2JhKDQ4LDk5LDE2OCwwLjEw KSk7CiAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDQ4LDk5LDE2OCwwLjQwKTsKICAgIGJvcmRl ci1sZWZ0OiA0cHggc29saWQgdmFyKC0tZmFyYmUtcHJpbWFlcik7CiAgICBib3JkZXItcmFkaXVz OiA4cHg7CiAgICBwYWRkaW5nOiAxNHB4IDE4cHg7CiAgICBtYXJnaW46IDAgMCAxOHB4IDA7Cn0K Lm5ldWltcG9ydC1rb3BmIHsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6 IHNwYWNlLWJldHdlZW47CiAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDsKICAgIGdhcDogMTZw eDsKICAgIGZsZXgtd3JhcDogd3JhcDsKICAgIG1hcmdpbi1ib3R0b206IDEwcHg7Cn0KLm5ldWlt cG9ydC1rb3BmIGgzIHsKICAgIG1hcmdpbjogMCAwIDRweCAwOwogICAgZm9udC1zaXplOiAxNXB4 OwogICAgY29sb3I6IHZhcigtLXRleHQtaGVhZGluZyk7Cn0KLm5ldWltcG9ydC1rb3BmIHAgewog ICAgbWFyZ2luOiAwOwogICAgZm9udC1zaXplOiB2YXIoLS1mcy1iYXNlKTsKICAgIGNvbG9yOiB2 YXIoLS10ZXh0LW11dGVkKTsKICAgIG1heC13aWR0aDogNjQwcHg7Cn0KLm5ldWltcG9ydC1saXN0 ZSB7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgIGdh cDogNnB4Owp9Ci5uZXVpbXBvcnQtemVpbGUgewogICAgZGlzcGxheTogZ3JpZDsKICAgIGdyaWQt dGVtcGxhdGUtY29sdW1uczogbWlubWF4KDIyMHB4LCAyZnIpIG1pbm1heCgyODBweCwgMWZyKSBh dXRvOwogICAgZ2FwOiAxMnB4OwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIHBhZGRpbmc6 IDhweCAxMHB4OwogICAgYmFja2dyb3VuZDogdmFyKC0tYmctY2FyZCk7CiAgICBib3JkZXI6IDFw eCBzb2xpZCB2YXIoLS1ib3JkZXItbGlnaHQpOwogICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFk aXVzLW1kKTsKfQoubmV1aW1wb3J0LW5hbWUgeyBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczog Y2VudGVyOyBmbGV4LXdyYXA6IHdyYXA7IGdhcDogNHB4OyB9Ci5uZXVpbXBvcnQtZGV0YWlsIHsK ICAgIGZsZXgtYmFzaXM6IDEwMCU7CiAgICBtYXJnaW4tdG9wOiAycHg7CiAgICBmb250LXNpemU6 IHZhcigtLWZzLXNtKTsKICAgIGNvbG9yOiB2YXIoLS10ZXh0LW11dGVkKTsKfQoubmV1aW1wb3J0 LWZlbGRlciB7IGRpc3BsYXk6IGZsZXg7IGdhcDogOHB4OyBmbGV4LXdyYXA6IHdyYXA7IH0KLm5l dWltcG9ydC1ha3Rpb25lbiB7IGRpc3BsYXk6IGZsZXg7IGdhcDogNnB4OyB3aGl0ZS1zcGFjZTog bm93cmFwOyB9CgpbZGF0YS10aGVtZT0ibmlnaHQiXSAjcGVyc29uYWwtbmV1aW1wb3J0LWJsb2Nr IHsKICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEoOTYsMTYwLDI1 NSwwLjEwKSwgcmdiYSg5NiwxNjAsMjU1LDAuMTYpKTsKICAgIGJvcmRlci1jb2xvcjogcmdiYSg5 NiwxNjAsMjU1LDAuNDUpOwogICAgYm9yZGVyLWxlZnQtY29sb3I6IHJnYmEoOTYsMTYwLDI1NSww Ljg1KTsKfQoKLyogPT09PT0gSGlud2Vpcy1TeXN0ZW0gKEJhbm5lciBvYmVuICsgQmFkZ2UgYW0g VXNlci1OYW1lICsgTW9kYWwtTGlzdGUpID09PT09ICovCgouaGlud2Vpcy1iYW5uZXIgewogICAg ZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsgZ2FwOiAxMnB4OwogICAgcGFkZGlu ZzogOHB4IDE2cHg7CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1mYXJiZS1mZWhsZXIpOyBjb2xvcjog I2ZmZjsKICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCByZ2JhKDAsMCwwLDAuMTgpOwogICAg Zm9udC1zaXplOiB2YXIoLS1mcy1tZCk7CiAgICBib3gtc2hhZG93OiAwIDJweCA2cHggdmFyKC0t c2hhZG93LWxpZ2h0KTsKfQouaGlud2Vpcy1iYW5uZXIudmVyc3RlY2t0IHsgZGlzcGxheTogbm9u ZTsgfQouaGlud2Vpcy1iYW5uZXItdGV4dCB7IGZsZXg6IDE7IGZvbnQtd2VpZ2h0OiA2MDA7IH0K LmhpbndlaXMtYmFubmVyIC5idG4geyB3aGl0ZS1zcGFjZTogbm93cmFwOyB9Ci5oaW53ZWlzLWJh bm5lci1zY2hsaWVzc2VuIHsKICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OyBjb2xvcjogI2Zm ZjsgYm9yZGVyOiAxcHggc29saWQgcmdiYSgyNTUsMjU1LDI1NSwwLjQpOwogICAgd2lkdGg6IDI2 cHg7IGhlaWdodDogMjZweDsgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLXNtKTsKICAgIGZv bnQtc2l6ZTogMTZweDsgbGluZS1oZWlnaHQ6IDE7IGN1cnNvcjogcG9pbnRlcjsKICAgIGRpc3Bs YXk6IGlubGluZS1mbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6IGNl bnRlcjsKfQouaGlud2Vpcy1iYW5uZXItc2NobGllc3Nlbjpob3ZlciB7IGJhY2tncm91bmQ6IHJn YmEoMjU1LDI1NSwyNTUsMC4xNSk7IH0KCi5iZW51dHplci13cmFwIHsKICAgIHBvc2l0aW9uOiBy ZWxhdGl2ZTsKICAgIGRpc3BsYXk6IGlubGluZS1mbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBn YXA6IDhweDsKfQojYmVudXR6ZXItYW56ZWlnZSB7IGN1cnNvcjogZGVmYXVsdDsgfQoubWVpbi1h dmF0YXItYnRuIHsKICAgIGN1cnNvcjogcG9pbnRlcjsKICAgIGRpc3BsYXk6IGlubGluZS1mbGV4 OwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIC8qIEZvcm0gZm9sZ3QgZGVtIGlubmVyZW4g LnZpMy1hdmF0YXIgKGVja2lnIG1pdCBhYmdlcnVuZGV0ZW4gRWNrZW4pLiAqLwogICAgdHJhbnNp dGlvbjogdHJhbnNmb3JtIDAuMTJzOwp9Ci5tZWluLWF2YXRhci1idG46aG92ZXIgeyB0cmFuc2Zv cm06IHNjYWxlKDEuMDgpOyB9Ci5tZWluLWF2YXRhci1idG46aG92ZXIgLnZpMy1hdmF0YXIgewog ICAgYm94LXNoYWRvdzogaW5zZXQgMCAwIDAgMXB4IHJnYmEoMCwwLDAsMC4xMiksIDAgMCAwIDJw eCByZ2JhKDI1NSwyNTUsMjU1LDAuNSk7Cn0KLm1laW4tYXZhdGFyLWJ0bjpmb2N1cy12aXNpYmxl IHsKICAgIG91dGxpbmU6IDJweCBzb2xpZCB2YXIoLS1mYXJiZS1ha3plbnQsICM0YTkwZTIpOwog ICAgb3V0bGluZS1vZmZzZXQ6IDJweDsKICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1t ZCk7Cn0KLyogS2xpY2tiYXJlciBDdXJzb3IgbnVyIHdlbm4gZWluIEJhZGdlIGFuZ2V6ZWlndCB3 aXJkICg9IEhpbndlaXNlIHZvcmhhbmRlbikgKi8KLmJlbnV0emVyLXdyYXA6aGFzKC5oaW53ZWlz LWJhZGdlOm5vdCgudmVyc3RlY2t0KSkgI2JlbnV0emVyLWFuemVpZ2UgeyBjdXJzb3I6IHBvaW50 ZXI7IH0KCi5oaW53ZWlzLWJhZGdlIHsKICAgIGRpc3BsYXk6IGlubGluZS1mbGV4OyBhbGlnbi1p dGVtczogY2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgIG1pbi13aWR0aDogMjBw eDsgaGVpZ2h0OiAyMHB4OyBwYWRkaW5nOiAwIDZweDsKICAgIGJvcmRlci1yYWRpdXM6IHZhcigt LXJhZGl1cy1sZyk7CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1mYXJiZS1mZWhsZXIpOyBjb2xvcjog I2ZmZjsKICAgIGZvbnQtc2l6ZTogdmFyKC0tZnMtc20pOyBmb250LXdlaWdodDogNzAwOyBsaW5l LWhlaWdodDogMTsKICAgIGN1cnNvcjogcG9pbnRlcjsgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9u ZTsgdXNlci1zZWxlY3Q6IG5vbmU7CiAgICBib3gtc2hhZG93OiAwIDFweCAzcHggdmFyKC0tc2hh ZG93LWxpZ2h0KTsKfQouaGlud2Vpcy1iYWRnZS52ZXJzdGVja3QgeyBkaXNwbGF5OiBub25lOyB9 Ci5oaW53ZWlzLWJhZGdlOmhvdmVyIHsgZmlsdGVyOiBicmlnaHRuZXNzKDEuMSk7IH0KLmhpbndl aXMtYmFkZ2U6Zm9jdXMgeyBvdXRsaW5lOiAycHggc29saWQgdmFyKC0tdGFnLWZlaWVydGFnKTsg b3V0bGluZS1vZmZzZXQ6IDJweDsgfQoKLmhpbndlaXMtbW9kYWwtdGFiZWxsZSB0ZCB7IHZlcnRp Y2FsLWFsaWduOiB0b3A7IHBhZGRpbmc6IDhweCAxMHB4OyB9Ci5oaW53ZWlzLW1vZGFsLXRhYmVs bGUgdHIgeyBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tYm9yZGVyLWxpZ2h0KTsgfQou aGlud2Vpcy1tb2RhbC10YWJlbGxlIHRyOmxhc3QtY2hpbGQgeyBib3JkZXItYm90dG9tOiBub25l OyB9CgovKiA9PT09PSBLYW5kaWRhdGVuLVBhbmVsIHBybyB1bnRlcmJlc2V0enRlIFNjaGljaHQg KFRhZy1EZXRhaWwpID09PT09ICovCgouYmstZGV0YWlsLXNjaGljaHQta3JpdGlzY2ggewogICAg Ym94LXNoYWRvdzogMCAwIDAgMnB4IHZhcigtLWZhcmJlLWZlaGxlcikgaW5zZXQ7CiAgICBhbmlt YXRpb246IGJrLXB1bHNlIDEuNnMgZWFzZS1pbi1vdXQgaW5maW5pdGU7Cn0KQGtleWZyYW1lcyBi ay1wdWxzZSB7CiAgICAwJSwgMTAwJSB7IGJveC1zaGFkb3c6IDAgMCAwIDJweCB2YXIoLS1mYXJi ZS1mZWhsZXIpIGluc2V0OyB9CiAgICA1MCUgICAgICB7IGJveC1zaGFkb3c6IDAgMCAwIDNweCB2 YXIoLS1mYXJiZS1mZWhsZXIpIGluc2V0OyB9Cn0KCi5iay1zY2hpY2h0LWthbmRpZGF0ZW4geyBt YXJnaW4tdG9wOiAxMHB4OyBwYWRkaW5nLXRvcDogOHB4OyBib3JkZXItdG9wOiAxcHggZGFzaGVk IHZhcigtLWJvcmRlci1saWdodCk7IH0KLmJrLWthbmRpZGF0ZW4tdG9nZ2xlIHsKICAgIGRpc3Bs YXk6IGlubGluZS1mbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBnYXA6IDZweDsKICAgIHRyYW5z aXRpb246IGJhY2tncm91bmQgMC4xMnMsIGJvcmRlci1jb2xvciAwLjEyczsKfQouYmsta2FuZGlk YXRlbi10b2dnbGUgLmJrLWthbmQtcGZlaWwgewogICAgZm9udC1zaXplOiB2YXIoLS1mcy14cyk7 IGNvbG9yOiB2YXIoLS10ZXh0LW11dGVkKTsKICAgIHRyYW5zaXRpb246IGNvbG9yIDAuMTJzOwp9 Ci5iay1rYW5kaWRhdGVuLXRvZ2dsZS5iay1rYW5kaWRhdGVuLXRvZ2dsZS1vZmZlbiB7CiAgICBi YWNrZ3JvdW5kOiB2YXIoLS1iZy1ob3Zlcik7CiAgICBib3JkZXItY29sb3I6IHZhcigtLWZhcmJl LWFremVudCk7Cn0KLmJrLWthbmRpZGF0ZW4tdG9nZ2xlLmJrLWthbmRpZGF0ZW4tdG9nZ2xlLW9m ZmVuIC5iay1rYW5kLXBmZWlsIHsgY29sb3I6IHZhcigtLWZhcmJlLWFremVudCk7IH0KLmJrLWth bmRpZGF0ZW4tcGFuZWwgewogICAgbWFyZ2luLXRvcDogMTBweDsgcGFkZGluZzogMTBweCAxMnB4 OwogICAgYmFja2dyb3VuZDogdmFyKC0tYmctY2FyZC1hbHQpOyBib3JkZXI6IDFweCBzb2xpZCB2 YXIoLS1ib3JkZXItbGlnaHQpOyBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbWQpOwp9Ci5i ay1rYW5kaWRhdGVuLXBhbmVsLnZlcnN0ZWNrdCB7IGRpc3BsYXk6IG5vbmU7IH0KLmJrLWthbmRp ZGF0ZW4taGlud2VpcyB7CiAgICBmb250LXNpemU6IDExLjVweDsgY29sb3I6IHZhcigtLXRleHQt bXV0ZWQpOyBmb250LXdlaWdodDogNjAwOwogICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsg bGV0dGVyLXNwYWNpbmc6IDAuNHB4OwogICAgbWFyZ2luOiAxMHB4IDAgNnB4Owp9Ci5iay1rYW5k aWRhdGVuLWhpbndlaXM6Zmlyc3QtY2hpbGQgeyBtYXJnaW4tdG9wOiAwOyB9Ci5iay1rYW5kaWRh dGVuLWhpbndlaXMtdW1kaXMgeyBjb2xvcjogdmFyKC0tZmFyYmUtd2FybnVuZywgI2NhNmYxZSk7 IH0KLmJrLWthbmRpZGF0ZW4td2FybnVuZyB7CiAgICBmb250LXNpemU6IDExLjVweDsKICAgIGJh Y2tncm91bmQ6IHJnYmEoMjAyLDExMSwzMCwwLjEwKTsKICAgIGJvcmRlcjogMXB4IHNvbGlkIHJn YmEoMjAyLDExMSwzMCwwLjM1KTsKICAgIGJvcmRlci1sZWZ0OiAzcHggc29saWQgdmFyKC0tZmFy YmUtd2FybnVuZywgI2NhNmYxZSk7CiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMteHMp OwogICAgcGFkZGluZzogNnB4IDhweDsKICAgIG1hcmdpbi1ib3R0b206IDZweDsKICAgIGNvbG9y OiB2YXIoLS10ZXh0LXByaW1hcnkpOwogICAgbGluZS1oZWlnaHQ6IDEuNDsKfQouYmsta2FuZGlk YXRlbi1sZWVyIHsgZm9udC1zaXplOiB2YXIoLS1mcy1iYXNlKTsgY29sb3I6IHZhcigtLXRleHQt bXV0ZWQpOyBwYWRkaW5nOiA2cHggMDsgZm9udC1zdHlsZTogaXRhbGljOyB9Ci5iay1rYW5kaWRh dGVuLWxpc3RlIHsgbGlzdC1zdHlsZTogbm9uZTsgbWFyZ2luOiAwOyBwYWRkaW5nOiAwOyB9Ci5i ay1rYW5kaWRhdGVuLXplaWxlIHsKICAgIGRpc3BsYXk6IGdyaWQ7CiAgICBncmlkLXRlbXBsYXRl LWNvbHVtbnM6IDIycHggMWZyIGF1dG87CiAgICBnYXA6IDEwcHg7CiAgICBwYWRkaW5nOiA2cHgg OHB4OwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIGJhY2tncm91bmQ6IHZhcigtLWJnLWNh cmQpOwogICAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7CiAgICBib3JkZXItcmFkaXVz OiB2YXIoLS1yYWRpdXMtc20pOwogICAgbWFyZ2luLWJvdHRvbTogM3B4OwogICAgdHJhbnNpdGlv bjogYm9yZGVyLWNvbG9yIDAuMTJzLCBiYWNrZ3JvdW5kIDAuMTJzOwogICAgbWluLXdpZHRoOiAw Owp9Ci5iay1rYW5kaWRhdGVuLXplaWxlOmhvdmVyIHsKICAgIGJvcmRlci1jb2xvcjogdmFyKC0t ZmFyYmUtYWt6ZW50KTsKICAgIGJhY2tncm91bmQ6IHZhcigtLWJnLWhvdmVyKTsKfQouYmsta2Fu ZGlkYXRlbi16ZWlsZTpsYXN0LWNoaWxkIHsgbWFyZ2luLWJvdHRvbTogMDsgfQouYmsta2FuZGlk YXRlbi16ZWlsZS11bWRpcyB7CiAgICBiYWNrZ3JvdW5kOiByZ2JhKDIwMiwxMTEsMzAsMC4wNik7 CiAgICBib3JkZXItbGVmdDogM3B4IHNvbGlkIHJnYmEoMjAyLDExMSwzMCwwLjU1KTsKfQouYmst a2FuZGlkYXRlbi16ZWlsZS11bWRpczpob3ZlciB7CiAgICBiYWNrZ3JvdW5kOiByZ2JhKDIwMiwx MTEsMzAsMC4xMik7CiAgICBib3JkZXItbGVmdC1jb2xvcjogcmdiYSgyMDIsMTExLDMwLDAuODUp Owp9Ci5iay1rYW5kaWRhdGVuLXRleHQgeyBkaXNwbGF5OiBmbGV4OyBmbGV4LWRpcmVjdGlvbjog Y29sdW1uOyBnYXA6IDJweDsgbWluLXdpZHRoOiAwOyB9Ci5iay1rYW5kaWRhdGVuLW5hbWUgewog ICAgZm9udC13ZWlnaHQ6IDYwMDsgY29sb3I6IHZhcigtLXRleHQtaGVhZGluZyk7IGZvbnQtc2l6 ZTogMTIuNXB4OwogICAgbGluZS1oZWlnaHQ6IDEuMjU7CiAgICBkaXNwbGF5OiBpbmxpbmUtZmxl eDsgYWxpZ24taXRlbXM6IGNlbnRlcjsgZ2FwOiA2cHg7CiAgICB3aGl0ZS1zcGFjZTogbm93cmFw OyBvdmVyZmxvdzogaGlkZGVuOyB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKfQouYmsta2FuZGlk YXRlbi1tZXRhIHsKICAgIGZvbnQtc2l6ZTogMTAuNXB4OyBjb2xvcjogdmFyKC0tdGV4dC1tdXRl ZCk7IGxpbmUtaGVpZ2h0OiAxLjI7CiAgICB3aGl0ZS1zcGFjZTogbm93cmFwOyBvdmVyZmxvdzog aGlkZGVuOyB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKfQouYmsta2FuZGlkYXRlbi13YXJuIHsg Y29sb3I6IHZhcigtLWZhcmJlLXdhcm51bmcsICNjYTZmMWUpOyBmb250LXNpemU6IHZhcigtLWZz LXNtKTsgfQouYmsta2FuZGlkYXRlbi1jb2RlIHsKICAgIGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7 IGZvbnQtc2l6ZTogdmFyKC0tZnMtc20pOwogICAgYmFja2dyb3VuZDogdmFyKC0tYmctY2FyZC1h bHQpOyBwYWRkaW5nOiAycHggN3B4OwogICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLXNt KTsgY29sb3I6IHZhcigtLXRleHQtc2Vjb25kYXJ5KTsKICAgIGJvcmRlcjogMXB4IHNvbGlkIHZh cigtLWJvcmRlci1saWdodCk7CiAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwp9Ci5iay1rYW5kaWRh dGVuLWtlaW4tbWFpbCB7IG9wYWNpdHk6IDAuNTU7IH0KLmJrLWthbmRpZGF0ZW4ta2Vpbi1tYWls IC5iay1rYW5kaWRhdGVuLWNoayB7IGN1cnNvcjogbm90LWFsbG93ZWQ7IH0KLmJrLWthbmRpZGF0 ZW4tYWt0aW9uZW4gewogICAgbWFyZ2luLXRvcDogMTBweDsgcGFkZGluZy10b3A6IDhweDsKICAg IGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS1ib3JkZXItbGlnaHQpOwogICAgZGlzcGxheTog ZmxleDsganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDsKfQoKLyogPT09PT09PT09PSBFcnNjaGVp bnVuZ3NiaWxkLUVkaXRvciA9PT09PT09PT09ICovCi8qIFR3by1Db2x1bW4tTGF5b3V0OgogICDi lIzilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilKzilIDilIDilIDilIDi lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilJAKICAg4pSCIFZvcnNjaGF1ICAgIOKUgiBUYWItQmFyICAgICAgICAgICAg ICAgICAgIOKUggogICDilIIgKHN0aWNreSkgICAg4pSCIEVkaXRvciAoYWt0aXZlciBUeXApICAg ICAg4pSCCiAgIOKUlOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUtOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUmAogICBTdGlja3kgRm9vdGVyIG1pdCBTcGVpY2hlcm4g KyBSZXNldC4KKi8KLmVyc2NoZWludW5nLWxheW91dCB7CiAgICBkaXNwbGF5OiBncmlkOwogICAg Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBtaW5tYXgoMjQwcHgsIDMwMHB4KSAxZnI7CiAgICBnYXA6 IDE2cHg7CiAgICBhbGlnbi1pdGVtczogc3RhcnQ7CiAgICBtYXJnaW4tYm90dG9tOiA3MnB4OyAg LyogUGxhdHogZnVlciBzdGlja3kgRm9vdGVyICovCn0KQG1lZGlhIChtYXgtd2lkdGg6IDEwMDBw eCkgewogICAgLmVyc2NoZWludW5nLWxheW91dCB7IGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZy OyB9Cn0KCi8qIC0tLS0gVm9yc2NoYXUtUGFuZWwgKGxpbmtzLCBzdGlja3kpIC0tLS0gKi8KLmVy c2NoZWludW5nLXZvcnNjaGF1LXBhbmVsIHsKICAgIGJhY2tncm91bmQ6IHZhcigtLWJnLWNhcmQp OwogICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tYm9yZGVyLWxpZ2h0KTsKICAgIGJvcmRlci1y YWRpdXM6IHZhcigtLXJhZGl1cy1sZyk7CiAgICBwYWRkaW5nOiAxMnB4OwogICAgcG9zaXRpb246 IHN0aWNreTsKICAgIHRvcDogMTBweDsKfQouZXJzY2hlaW51bmctdm9yc2NoYXUtdGl0ZWwgewog ICAgZm9udC1zaXplOiAxMC41cHg7IGNvbG9yOiB2YXIoLS10ZXh0LW11dGVkKTsgbWFyZ2luLWJv dHRvbTogOHB4OwogICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsgbGV0dGVyLXNwYWNpbmc6 IDAuNnB4OyBmb250LXdlaWdodDogNjAwOwp9Ci5lcnNjaGVpbnVuZy12b3JzY2hhdS1zdGFjayB7 CiAgICBkaXNwbGF5OiBmbGV4OyBmbGV4LWRpcmVjdGlvbjogY29sdW1uOyBnYXA6IDZweDsKfQou ZXJzY2hlaW51bmctdm9yc2NoYXUtemVpbGUgewogICAgZGlzcGxheTogZ3JpZDsgZ3JpZC10ZW1w bGF0ZS1jb2x1bW5zOiA4NHB4IDFmcjsKICAgIGdhcDogMTBweDsgYWxpZ24taXRlbXM6IGNlbnRl cjsKICAgIHBhZGRpbmc6IDZweCA4cHg7IGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1tZCk7 CiAgICBib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDsKICAgIGN1cnNvcjogcG9pbnRlcjsg dHJhbnNpdGlvbjogYmFja2dyb3VuZCAwLjE1cywgYm9yZGVyLWNvbG9yIDAuMTVzOwp9Ci5lcnNj aGVpbnVuZy12b3JzY2hhdS16ZWlsZTpob3ZlciB7CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1o b3Zlcik7Cn0KLmVyc2NoZWludW5nLXZvcnNjaGF1LXplaWxlLmFrdGl2IHsKICAgIGJhY2tncm91 bmQ6IHZhcigtLWJnLWhvdmVyKTsKICAgIGJvcmRlci1jb2xvcjogdmFyKC0tZmFyYmUtYWt6ZW50 LCAjNGE5MGUyKTsKfQouZXJzY2hlaW51bmctdm9yc2NoYXUtY2VsbHMgewogICAgZGlzcGxheTog ZmxleDsgZ2FwOiAycHg7Cn0KLmVyc2NoZWludW5nLXZvcnNjaGF1LXplbGxlIHsKICAgIGZsZXg6 IDE7IGJhY2tncm91bmQ6IHZhcigtLWJnLWNhcmQtYWx0KTsKICAgIGJvcmRlci1yYWRpdXM6IHZh cigtLXJhZGl1cy14cyk7IHBhZGRpbmc6IDRweCAzcHg7IHRleHQtYWxpZ246IGNlbnRlcjsKICAg IGZvbnQtc2l6ZTogMTEuNXB4OyBmb250LXdlaWdodDogNjAwOyBtaW4taGVpZ2h0OiAyOHB4Owog ICAgZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsganVzdGlmeS1jb250ZW50OiBj ZW50ZXI7Cn0KLmVyc2NoZWludW5nLXZvcnNjaGF1LWZsYXNoIHsKICAgIGJhY2tncm91bmQ6IHZh cigtLWZhcmJlLWZydWVoLCAjQjcxQzFDKSAhaW1wb3J0YW50OwogICAgY29sb3I6ICNmZmY7CiAg ICBtaW4td2lkdGg6IDgwcHg7Cn0KLmVyc2NoZWludW5nLXZvcnNjaGF1LW1ldGEgewogICAgZGlz cGxheTogZmxleDsgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgZ2FwOiAycHg7IG1pbi13aWR0aDog MDsKfQouZXJzY2hlaW51bmctdm9yc2NoYXUtdHlwIHsKICAgIGZvbnQtc2l6ZTogdmFyKC0tZnMt YmFzZSk7IGZvbnQtd2VpZ2h0OiA2MDA7IGNvbG9yOiB2YXIoLS10ZXh0LWhlYWRpbmcpOwogICAg d2hpdGUtc3BhY2U6IG5vd3JhcDsgb3ZlcmZsb3c6IGhpZGRlbjsgdGV4dC1vdmVyZmxvdzogZWxs aXBzaXM7Cn0KLmVyc2NoZWludW5nLXZvcnNjaGF1LW5vdGl6IHsKICAgIGZvbnQtc2l6ZTogdmFy KC0tZnMteHMpOyBjb2xvcjogdmFyKC0tdGV4dC1tdXRlZCk7Cn0KLmVyc2NoZWludW5nLXZvcnNj aGF1LWhpbndlaXMgewogICAgbWFyZ2luLXRvcDogMTBweDsgcGFkZGluZy10b3A6IDEwcHg7CiAg ICBib3JkZXItdG9wOiAxcHggc29saWQgdmFyKC0tYm9yZGVyLWxpZ2h0KTsKICAgIGZvbnQtc2l6 ZTogdmFyKC0tZnMteHMpOyBjb2xvcjogdmFyKC0tdGV4dC1tdXRlZCk7IGZvbnQtc3R5bGU6IGl0 YWxpYzsKfQouYnRuLW1pbmkgewogICAgcGFkZGluZzogM3B4IDhweDsgZm9udC1zaXplOiB2YXIo LS1mcy1zbSk7CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1jYXJkLWFsdCk7CiAgICBib3JkZXI6 IDFweCBzb2xpZCB2YXIoLS1ib3JkZXItbGlnaHQpOwogICAgYm9yZGVyLXJhZGl1czogdmFyKC0t cmFkaXVzLXNtKTsgY3Vyc29yOiBwb2ludGVyOwogICAgY29sb3I6IHZhcigtLXRleHQtcHJpbWFy eSk7Cn0KLmJ0bi1taW5pOmhvdmVyIHsgYmFja2dyb3VuZDogdmFyKC0tYmctaG92ZXIpOyB9Cgov KiBWb3JzY2hhdS1aZWxsZW4gZXJiZW4gZGllIGZlcnRpZ2VuIE1hcmtpZXJ1bmdzLVZhcmlhYmxl bjogKi8KLmVyc2NoZWludW5nLXZvcnNjaGF1LXplbGxlW2RhdGEtdm9yc2NoYXUta2V5PSJzb25k ZXJ0YWdIaW53ZWlzIl0gewogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbWhpbi1iZywgdmFy KC0tYmctY2FyZC1hbHQpKTsKICAgIGNvbG9yOiB2YXIoLS1taGluLXRleHQsIGluaGVyaXQpOwog ICAgZm9udC13ZWlnaHQ6IHZhcigtLW1oaW4tZncsIDYwMCk7CiAgICBib3gtc2hhZG93OiB2YXIo LS1taGluLXNoYWRvdywgbm9uZSk7CiAgICBhbmltYXRpb246IHZhcigtLW1oaW4tYW5pbSwgbm9u ZSk7Cn0KLmVyc2NoZWludW5nLXZvcnNjaGF1LXplbGxlW2RhdGEtdm9yc2NoYXUta2V5PSJzb25k ZXJ0YWdXYXJudW5nIl0gewogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbXdhci1iZywgdmFy KC0tYmctY2FyZC1hbHQpKTsKICAgIGNvbG9yOiB2YXIoLS1td2FyLXRleHQsIGluaGVyaXQpOwog ICAgZm9udC13ZWlnaHQ6IHZhcigtLW13YXItZncsIDYwMCk7CiAgICBib3gtc2hhZG93OiB2YXIo LS1td2FyLXNoYWRvdywgbm9uZSk7CiAgICBhbmltYXRpb246IHZhcigtLW13YXItYW5pbSwgbm9u ZSk7Cn0KLmVyc2NoZWludW5nLXZvcnNjaGF1LXplbGxlW2RhdGEtdm9yc2NoYXUta2V5PSJmZWll cnRhZ1dpY2h0aWciXSB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1tZndpLWJnLCB2YXIo LS1iZy1jYXJkLWFsdCkpOwogICAgY29sb3I6IHZhcigtLW1md2ktdGV4dCwgaW5oZXJpdCk7CiAg ICBmb250LXdlaWdodDogdmFyKC0tbWZ3aS1mdywgNjAwKTsKICAgIGJveC1zaGFkb3c6IHZhcigt LW1md2ktc2hhZG93LCBub25lKTsKICAgIGFuaW1hdGlvbjogdmFyKC0tbWZ3aS1hbmltLCBub25l KTsKfQouZXJzY2hlaW51bmctdm9yc2NoYXUtemVsbGVbZGF0YS12b3JzY2hhdS1rZXk9ImZlcmll biJdIHsKICAgIC8qIFZvcnNjaGF1IHplaWd0IGRpZSBTcGFsdGVuLVRvZW51bmcgYWxzIFplbGxo aW50ZXJncnVuZCArIEJhbGtlbi1UZXh0ZmFyYmU7CiAgICAgICBGYWxsYmFja3MgPSBha3R1ZWxs ZSBGZXJpZW4tRGVmYXVsdHMsIGRhbWl0IGF1Y2ggdW5rb25maWd1cmllcnQgZGVyCiAgICAgICB2 ZXJ0cmF1dGUgTG9vayBlcnNjaGVpbnQuICovCiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1t ZmVyLXNwYWx0ZS1iZywgI0UwRjBFNCk7CiAgICBjb2xvcjogdmFyKC0tbWZlci10ZXh0LCAjMjU2 MDI5KTsKICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1tZmVyLWZ3LCA3MDApOwogICAgYm94LXNoYWRv dzogdmFyKC0tbWZlci1zaGFkb3csIG5vbmUpOwogICAgYW5pbWF0aW9uOiB2YXIoLS1tZmVyLWFu aW0sIG5vbmUpOwp9Ci5lcnNjaGVpbnVuZy12b3JzY2hhdS16ZWxsZVtkYXRhLXZvcnNjaGF1LWtl eT0iaGV1dGVTcGFsdGUiXSB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1taGUtYmcsIHZh cigtLWJnLWNhcmQtYWx0KSk7CiAgICBjb2xvcjogdmFyKC0tbWhlLXRleHQsIGluaGVyaXQpOwog ICAgZm9udC13ZWlnaHQ6IHZhcigtLW1oZS1mdywgNjAwKTsKICAgIGJveC1zaGFkb3c6IHZhcigt LW1oZS1zaGFkb3csIG5vbmUpOwogICAgYW5pbWF0aW9uOiB2YXIoLS1taGUtYW5pbSwgbm9uZSk7 Cn0KCi8qIC0tLS0gRWRpdG9yLVNwYWx0ZSAocmVjaHRzKSAtLS0tICovCi5lcnNjaGVpbnVuZy1l ZGl0b3Itc3BhbHRlIHsKICAgIGRpc3BsYXk6IGZsZXg7IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47 IGdhcDogMTBweDsKICAgIG1pbi13aWR0aDogMDsKfQovKiBUYWItQmFyOiBLYXJ0ZW4tTG9vaywg amUgTWFya2llcnVuZ3MtVHlwIGVpbiBCdXR0b24gbWl0IGVjaHRlciBMaXZlLQogICBWb3JzY2hh dSAoRGF0dW0vV29jaGVudGFnLSBiencuIFNjaGljaHQtWmVsbGUpIHBsdXMgTGFiZWwgZGFydW50 ZXIuCiAgIEFrdGl2ZSBLYXJ0ZSBtaXQgQWt6ZW50LUJvcmRlciArIGxlaWNodGVtIEdsb3cuICov Ci5lcnNjaGVpbnVuZy10YWItYmFyIHsKICAgIGRpc3BsYXk6IGdyaWQ7CiAgICBncmlkLXRlbXBs YXRlLWNvbHVtbnM6IHJlcGVhdCg2LCBtaW5tYXgoMCwgMWZyKSk7CiAgICBnYXA6IDhweDsKICAg IHBhZGRpbmc6IDhweDsKICAgIGJhY2tncm91bmQ6IHZhcigtLWJnLWNhcmQpOwogICAgYm9yZGVy OiAxcHggc29saWQgdmFyKC0tYm9yZGVyLWxpZ2h0KTsKICAgIGJvcmRlci1yYWRpdXM6IHZhcigt LXJhZGl1cy1sZyk7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDkwMHB4KSB7CiAgICAuZXJzY2hlaW51 bmctdGFiLWJhciB7IGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDMsIDFmcik7IH0KfQpA bWVkaWEgKG1heC13aWR0aDogNjAwcHgpIHsKICAgIC5lcnNjaGVpbnVuZy10YWItYmFyIHsgZ3Jp ZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMiwgMWZyKTsgfQp9Ci5lcnNjaGVpbnVuZy10YWIg ewogICAgZGlzcGxheTogZmxleDsgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgIGFsaWduLWl0 ZW1zOiBzdHJldGNoOyBnYXA6IDZweDsKICAgIHBhZGRpbmc6IDhweDsKICAgIGJhY2tncm91bmQ6 IHZhcigtLWJnLWNhcmQtYWx0KTsKICAgIGJvcmRlcjogMnB4IHNvbGlkIHRyYW5zcGFyZW50Owog ICAgYm9yZGVyLXJhZGl1czogOHB4OwogICAgY3Vyc29yOiBwb2ludGVyOwogICAgdGV4dC1hbGln bjogY2VudGVyOwogICAgY29sb3I6IHZhcigtLXRleHQtcHJpbWFyeSk7CiAgICB0cmFuc2l0aW9u OiBiYWNrZ3JvdW5kIDAuMTVzLCBib3JkZXItY29sb3IgMC4xNXMsIHRyYW5zZm9ybSAwLjE1cywg Ym94LXNoYWRvdyAwLjE1czsKfQouZXJzY2hlaW51bmctdGFiOmhvdmVyIHsKICAgIGJhY2tncm91 bmQ6IHZhcigtLWJnLWhvdmVyKTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMXB4KTsKfQou ZXJzY2hlaW51bmctdGFiLmFrdGl2IHsKICAgIGJhY2tncm91bmQ6IHZhcigtLWJnLWhvdmVyKTsK ICAgIGJvcmRlci1jb2xvcjogdmFyKC0tZmFyYmUtYWt6ZW50LCAjNGE5MGUyKTsKICAgIGJveC1z aGFkb3c6IDAgMnB4IDEwcHggcmdiYSg3NCwxNDQsMjI2LDAuMjUpOwp9Ci5lcnNjaGVpbnVuZy10 YWIuYWt0aXYgLmVyc2NoZWludW5nLXRhYi1sYWJlbC10b3AgewogICAgY29sb3I6IHZhcigtLXRl eHQtaGVhZGluZyk7CiAgICBmb250LXdlaWdodDogNzAwOwp9CgovKiBDaGlwOiBiaWxkZXQgZGFz IHRhdHNhZWNobGljaGUgRXJzY2hlaW51bmdzYmlsZCBkZXIgTWFya2llcnVuZyBhYi4KICAgRGF0 dW0gKyBXb2NoZW50YWcgd2llIGltIFBsYW50YWZlbC1Lb3BmIGdlc3RhcGVsdDsgU3luYy1GbGFz aCB6ZWlndAogICBzdGF0dGRlc3NlbiBkZW4gU2NoaWNodGNvZGUtVGV4dC4gKi8KLmVyc2NoZWlu dW5nLXRhYi1jaGlwIHsKICAgIGRpc3BsYXk6IGZsZXg7IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47 CiAgICBhbGlnbi1pdGVtczogY2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgIGdh cDogMXB4OwogICAgbWluLWhlaWdodDogNDRweDsKICAgIGJvcmRlci1yYWRpdXM6IDVweDsKICAg IGJhY2tncm91bmQ6IHZhcigtLWJnLWNhcmQpOwogICAgcGFkZGluZzogNnB4IDRweDsKICAgIGZv bnQtd2VpZ2h0OiA3MDA7Cn0KLmVyc2NoZWludW5nLXRhYi1jaGlwLXRhZyB7CiAgICBmb250LXNp emU6IHZhcigtLWZzLWxnKTsgbGluZS1oZWlnaHQ6IDEuMTsKfQouZXJzY2hlaW51bmctdGFiLWNo aXAtd3QgewogICAgZm9udC1zaXplOiAxMC41cHg7IG9wYWNpdHk6IDAuODU7Cn0KLmVyc2NoZWlu dW5nLXRhYi1jaGlwLXRleHQgewogICAgZm9udC1zaXplOiB2YXIoLS1mcy1tZCk7IGxldHRlci1z cGFjaW5nOiAwLjVweDsKfQoKLmVyc2NoZWludW5nLXRhYi1jaGlwW2RhdGEtdm9yc2NoYXUta2V5 PSJzb25kZXJ0YWdIaW53ZWlzIl0gewogICAgYmFja2dyb3VuZDogdmFyKC0tbWhpbi1iZywgdmFy KC0tYmctY2FyZCkpOwogICAgY29sb3I6IHZhcigtLW1oaW4tdGV4dCwgaW5oZXJpdCk7CiAgICBi b3gtc2hhZG93OiB2YXIoLS1taGluLXNoYWRvdywgbm9uZSk7CiAgICBhbmltYXRpb246IHZhcigt LW1oaW4tYW5pbSwgbm9uZSk7Cn0KLmVyc2NoZWludW5nLXRhYi1jaGlwW2RhdGEtdm9yc2NoYXUt a2V5PSJzb25kZXJ0YWdXYXJudW5nIl0gewogICAgYmFja2dyb3VuZDogdmFyKC0tbXdhci1iZywg dmFyKC0tYmctY2FyZCkpOwogICAgY29sb3I6IHZhcigtLW13YXItdGV4dCwgaW5oZXJpdCk7CiAg ICBib3gtc2hhZG93OiB2YXIoLS1td2FyLXNoYWRvdywgbm9uZSk7CiAgICBhbmltYXRpb246IHZh cigtLW13YXItYW5pbSwgbm9uZSk7Cn0KLmVyc2NoZWludW5nLXRhYi1jaGlwW2RhdGEtdm9yc2No YXUta2V5PSJmZWllcnRhZ1dpY2h0aWciXSB7CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1tZndpLWJn LCB2YXIoLS1iZy1jYXJkKSk7CiAgICBjb2xvcjogdmFyKC0tbWZ3aS10ZXh0LCBpbmhlcml0KTsK ICAgIGJveC1zaGFkb3c6IHZhcigtLW1md2ktc2hhZG93LCBub25lKTsKICAgIGFuaW1hdGlvbjog dmFyKC0tbWZ3aS1hbmltLCBub25lKTsKfQouZXJzY2hlaW51bmctdGFiLWNoaXBbZGF0YS12b3Jz Y2hhdS1rZXk9ImZlcmllbiJdIHsKICAgIGJhY2tncm91bmQ6IHZhcigtLW1mZXItc3BhbHRlLWJn LCAjRTBGMEU0KTsKICAgIGNvbG9yOiB2YXIoLS1tZmVyLXRleHQsICMyNTYwMjkpOwogICAgYm94 LXNoYWRvdzogdmFyKC0tbWZlci1zaGFkb3csIG5vbmUpOwogICAgYW5pbWF0aW9uOiB2YXIoLS1t ZmVyLWFuaW0sIG5vbmUpOwp9Ci5lcnNjaGVpbnVuZy10YWItY2hpcFtkYXRhLXZvcnNjaGF1LWtl eT0iaGV1dGVTcGFsdGUiXSB7CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1taGUtYmcsIHZhcigtLWJn LWNhcmQpKTsKICAgIGNvbG9yOiB2YXIoLS1taGUtdGV4dCwgaW5oZXJpdCk7CiAgICBib3gtc2hh ZG93OiB2YXIoLS1taGUtc2hhZG93LCBub25lKTsKICAgIGFuaW1hdGlvbjogdmFyKC0tbWhlLWFu aW0sIG5vbmUpOwp9Ci5lcnNjaGVpbnVuZy10YWItY2hpcFtkYXRhLXZvcnNjaGF1LWtleT0ic3lu Y0ZsYXNoIl0gewogICAgYmFja2dyb3VuZDogdmFyKC0tZmFyYmUtZnJ1ZWgsICNCNzFDMUMpOwog ICAgY29sb3I6ICNmZmY7Cn0KCi5lcnNjaGVpbnVuZy10YWItbGFiZWwgewogICAgZGlzcGxheTog ZmxleDsgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgZ2FwOiAxcHg7CiAgICBsaW5lLWhlaWdodDog MS4yOwp9Ci5lcnNjaGVpbnVuZy10YWItbGFiZWwtdG9wIHsKICAgIGZvbnQtc2l6ZTogMTEuNXB4 OyBmb250LXdlaWdodDogNjAwOyBjb2xvcjogdmFyKC0tdGV4dC1wcmltYXJ5KTsKfQouZXJzY2hl aW51bmctdGFiLWxhYmVsLWJvdCB7CiAgICBmb250LXNpemU6IDEwLjVweDsgY29sb3I6IHZhcigt LXRleHQtbXV0ZWQpOwp9CgouZXJzY2hlaW51bmctZWRpdG9yIHsKICAgIGJhY2tncm91bmQ6IHZh cigtLWJnLWNhcmQpOwogICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tYm9yZGVyLWxpZ2h0KTsK ICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1sZyk7CiAgICBwYWRkaW5nOiAxNHB4IDE4 cHg7Cn0KLmVyc2NoZWludW5nLWVkaXRvci1rb3BmIHsKICAgIG1hcmdpbi1ib3R0b206IDEycHg7 IHBhZGRpbmctYm90dG9tOiAxMHB4OwogICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigt LWJvcmRlci1saWdodCk7Cn0KLmVyc2NoZWludW5nLWVkaXRvci10aXRlbHplaWxlIHsKICAgIGRp c3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGp1c3RpZnktY29udGVudDogc3BhY2Ut YmV0d2VlbjsKICAgIGdhcDogMTJweDsKfQouZXJzY2hlaW51bmctZWRpdG9yLXRpdGVsIHsKICAg IG1hcmdpbjogMDsgZm9udC1zaXplOiAxNnB4OyBjb2xvcjogdmFyKC0tdGV4dC1oZWFkaW5nKTsK fQouZXJzY2hlaW51bmctZWRpdG9yLXN1YiB7CiAgICBtYXJnaW46IDJweCAwIDA7IGZvbnQtc2l6 ZTogdmFyKC0tZnMtc20pOyBjb2xvcjogdmFyKC0tdGV4dC1tdXRlZCk7Cn0KLmVyc2NoZWludW5n LWVkaXRvci1ib2R5IHsKICAgIGRpc3BsYXk6IGdyaWQ7CiAgICBncmlkLXRlbXBsYXRlLWNvbHVt bnM6IHJlcGVhdCgzLCBtaW5tYXgoMCwgMWZyKSk7CiAgICBnYXA6IDE2cHggMjJweDsKfQpAbWVk aWEgKG1heC13aWR0aDogMTIwMHB4KSB7CiAgICAuZXJzY2hlaW51bmctZWRpdG9yLWJvZHkgeyBn cmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgyLCBtaW5tYXgoMCwgMWZyKSk7IH0KfQpAbWVk aWEgKG1heC13aWR0aDogNzIwcHgpIHsKICAgIC5lcnNjaGVpbnVuZy1lZGl0b3ItYm9keSB7IGdy aWQtdGVtcGxhdGUtY29sdW1uczogMWZyOyB9Cn0KLmVyc2NoZWludW5nLXNla3Rpb24geyBtaW4t d2lkdGg6IDA7IH0KLmVyc2NoZWludW5nLXNla3Rpb24tdGl0ZWwgewogICAgbWFyZ2luOiAwIDAg OHB4OyBmb250LXNpemU6IDEwLjVweDsgZm9udC13ZWlnaHQ6IDcwMDsKICAgIHRleHQtdHJhbnNm b3JtOiB1cHBlcmNhc2U7IGxldHRlci1zcGFjaW5nOiAwLjZweDsKICAgIGNvbG9yOiB2YXIoLS10 ZXh0LW11dGVkKTsKICAgIHBhZGRpbmctYm90dG9tOiA0cHg7IGJvcmRlci1ib3R0b206IDFweCBk YXNoZWQgdmFyKC0tYm9yZGVyLWxpZ2h0KTsKfQouZXJzY2hlaW51bmctc2VrdGlvbi1ncmlkIHsK ICAgIGRpc3BsYXk6IGZsZXg7IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47IGdhcDogOHB4Owp9Ci5l cnNjaGVpbnVuZy1mZWxkIHsKICAgIGRpc3BsYXk6IGdyaWQ7IGdyaWQtdGVtcGxhdGUtY29sdW1u czogOTBweCAxZnI7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOyBnYXA6IDhweDsgbWluLXdpZHRo OiAwOwp9Ci5lcnNjaGVpbnVuZy1mZWxkLWxhYmVsIHsKICAgIGZvbnQtc2l6ZTogMTEuNXB4OyBj b2xvcjogdmFyKC0tdGV4dC1tdXRlZCk7IGZvbnQtd2VpZ2h0OiA1MDA7Cn0KLmVyc2NoZWludW5n LWZlbGQtY29udHJvbCB7CiAgICBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBn YXA6IDZweDsKICAgIG1pbi1oZWlnaHQ6IDI2cHg7IG1pbi13aWR0aDogMDsKfQoKLyogLS0tLSBF aW5nYWJlLUtvbXBvbmVudGVuIC0tLS0gKi8KLmVyc2NoZWludW5nLWlucHV0IHsKICAgIHBhZGRp bmc6IDVweCA4cHg7IGZvbnQtc2l6ZTogdmFyKC0tZnMtbWQpOwogICAgYm9yZGVyOiAxcHggc29s aWQgdmFyKC0tYm9yZGVyLWNvbG9yKTsKICAgIGJhY2tncm91bmQ6IHZhcigtLWJnLWNhcmQtYWx0 KTsKICAgIGNvbG9yOiB2YXIoLS10ZXh0LXByaW1hcnkpOwogICAgYm9yZGVyLXJhZGl1czogdmFy KC0tcmFkaXVzLXNtKTsKfQouZXJzY2hlaW51bmctaW5wdXQ6Zm9jdXMgewogICAgb3V0bGluZTog MnB4IHNvbGlkIHZhcigtLWZhcmJlLWFremVudCwgIzRhOTBlMik7IG91dGxpbmUtb2Zmc2V0OiAx cHg7Cn0KCi8qIEZhcmJwaWNrZXIgbWl0IMOXLUJ1dHRvbiAqLwouZXJzY2hlaW51bmctZmFyYi13 cmFwIHsKICAgIGRpc3BsYXk6IGlubGluZS1mbGV4OyBhbGlnbi1pdGVtczogc3RyZXRjaDsKICAg IGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWJvcmRlci1jb2xvcik7IGJvcmRlci1yYWRpdXM6IHZh cigtLXJhZGl1cy1zbSk7CiAgICBvdmVyZmxvdzogaGlkZGVuOwp9Ci5lcnNjaGVpbnVuZy1mYXJi LXdyYXAubGVlciAuZXJzY2hlaW51bmctZmFyYiB7CiAgICBvcGFjaXR5OiAwLjM7CiAgICBiYWNr Z3JvdW5kLWltYWdlOiByZXBlYXRpbmctbGluZWFyLWdyYWRpZW50KDQ1ZGVnLCB0cmFuc3BhcmVu dCAwIDRweCwgcmdiYSgwLDAsMCwwLjE1KSA0cHggOHB4KTsKfQouZXJzY2hlaW51bmctZmFyYiB7 CiAgICB3aWR0aDogNDRweDsgaGVpZ2h0OiAyOHB4OyBwYWRkaW5nOiAycHg7IGJvcmRlcjogbm9u ZTsKICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OyBjdXJzb3I6IHBvaW50ZXI7Cn0KLmVyc2No ZWludW5nLWZhcmIteCB7CiAgICB3aWR0aDogMjJweDsgaGVpZ2h0OiAyOHB4OyBsaW5lLWhlaWdo dDogMjZweDsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsgZm9udC1zaXplOiB2YXIoLS1mcy1sZyk7 IGZvbnQtd2VpZ2h0OiA2MDA7CiAgICBib3JkZXI6IG5vbmU7IGJvcmRlci1sZWZ0OiAxcHggc29s aWQgdmFyKC0tYm9yZGVyLWNvbG9yKTsKICAgIGJhY2tncm91bmQ6IHZhcigtLWJnLWNhcmQtYWx0 KTsgY29sb3I6IHZhcigtLXRleHQtbXV0ZWQpOwogICAgY3Vyc29yOiBwb2ludGVyOyBwYWRkaW5n OiAwOwp9Ci5lcnNjaGVpbnVuZy1mYXJiLXg6aG92ZXIgewogICAgYmFja2dyb3VuZDogdmFyKC0t YmctaG92ZXIpOyBjb2xvcjogdmFyKC0tdGV4dC1wcmltYXJ5KTsKfQoKLyogU2xpZGVyIG1pdCBO dW1iZXItU3BpbmJveCAqLwouZXJzY2hlaW51bmctc2xpZGVyLXdyYXAgewogICAgZGlzcGxheTog ZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsgZ2FwOiA2cHg7IGZsZXg6IDE7IG1pbi13aWR0aDog MDsKfQouZXJzY2hlaW51bmctaW5wdXQtcmFuZ2UgewogICAgZmxleDogMTsgbWluLXdpZHRoOiA2 MHB4OwogICAgcGFkZGluZzogMDsgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7IGJvcmRlcjogbm9u ZTsKICAgIGFjY2VudC1jb2xvcjogdmFyKC0tZmFyYmUtYWt6ZW50LCAjNGE5MGUyKTsKfQouZXJz Y2hlaW51bmctaW5wdXQtbnVtIHsKICAgIHdpZHRoOiA1NnB4OyB0ZXh0LWFsaWduOiByaWdodDsK fQouZXJzY2hlaW51bmctaW5wdXQtbnVtOjotd2Via2l0LWlubmVyLXNwaW4tYnV0dG9uIHsgb3Bh Y2l0eTogMTsgfQouZXJzY2hlaW51bmctZWluaGVpdCB7CiAgICBmb250LXNpemU6IHZhcigtLWZz LXNtKTsgY29sb3I6IHZhcigtLXRleHQtbXV0ZWQpOyBtaW4td2lkdGg6IDE4cHg7Cn0KCi8qIFRv Z2dsZS1Td2l0Y2ggKHN0YXR0IENoZWNrYm94KSAqLwouZXJzY2hlaW51bmctdG9nZ2xlIHsKICAg IGRpc3BsYXk6IGlubGluZS1mbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBnYXA6IDEwcHg7IGN1 cnNvcjogcG9pbnRlcjsKICAgIHVzZXItc2VsZWN0OiBub25lOwp9Ci5lcnNjaGVpbnVuZy10b2dn bGUgaW5wdXQgeyBkaXNwbGF5OiBub25lOyB9Ci5lcnNjaGVpbnVuZy10b2dnbGUtcmFpbCB7CiAg ICB3aWR0aDogMzZweDsgaGVpZ2h0OiAyMHB4OyBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMt bGcpOwogICAgYmFja2dyb3VuZDogdmFyKC0tYm9yZGVyLWNvbG9yKTsgcG9zaXRpb246IHJlbGF0 aXZlOwogICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAwLjE1czsKfQouZXJzY2hlaW51bmctdG9n Z2xlLXJhaWw6OmFmdGVyIHsKICAgIGNvbnRlbnQ6ICcnOyBwb3NpdGlvbjogYWJzb2x1dGU7CiAg ICB0b3A6IDJweDsgbGVmdDogMnB4OyB3aWR0aDogMTZweDsgaGVpZ2h0OiAxNnB4OwogICAgYm9y ZGVyLXJhZGl1czogNTAlOyBiYWNrZ3JvdW5kOiAjZmZmOwogICAgdHJhbnNpdGlvbjogbGVmdCAw LjE1czsKICAgIGJveC1zaGFkb3c6IDAgMXB4IDJweCByZ2JhKDAsMCwwLDAuMyk7Cn0KLmVyc2No ZWludW5nLXRvZ2dsZSBpbnB1dDpjaGVja2VkICsgLmVyc2NoZWludW5nLXRvZ2dsZS1yYWlsIHsK ICAgIGJhY2tncm91bmQ6IHZhcigtLWZhcmJlLWVyZm9sZywgIzI3ODk2RCk7Cn0KLmVyc2NoZWlu dW5nLXRvZ2dsZSBpbnB1dDpjaGVja2VkICsgLmVyc2NoZWludW5nLXRvZ2dsZS1yYWlsOjphZnRl ciB7CiAgICBsZWZ0OiAxOHB4Owp9Ci5lcnNjaGVpbnVuZy10b2dnbGUtbGFiZWwgewogICAgZm9u dC1zaXplOiB2YXIoLS1mcy1iYXNlKTsgY29sb3I6IHZhcigtLXRleHQtbXV0ZWQpOwp9CgovKiAt LS0tIFN0aWNreSBGb290ZXIgLS0tLSAqLwouZXJzY2hlaW51bmctZm9vdGVyIHsKICAgIHBvc2l0 aW9uOiBzdGlja3k7IGJvdHRvbTogMDsgei1pbmRleDogNTsKICAgIG1hcmdpbjogMTBweCAtMjBw eCAtMjBweDsgIC8qIGluIGRlbiBhZG1pbi10YWItUGFkZGluZy1CZXJlaWNoIHZlcmxhZW5nZXJu ICovCiAgICBwYWRkaW5nOiA4cHggMjBweDsKICAgIGJhY2tncm91bmQ6IHZhcigtLWJnLWNhcmQp OwogICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHZhcigtLWJvcmRlci1saWdodCk7CiAgICBkaXNw bGF5OiBncmlkOyBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IGF1dG8gMWZyIGF1dG87CiAgICBnYXA6 IDE0cHg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7Cn0KLmVyc2NoZWludW5nLWZvb3Rlci1pbmZvIHsK ICAgIGZvbnQtc2l6ZTogdmFyKC0tZnMtc20pOyBjb2xvcjogdmFyKC0tdGV4dC1tdXRlZCk7CiAg ICB0ZXh0LWFsaWduOiBjZW50ZXI7Cn0KCgoKLyogPT09PT0gTWVpbiBTY2hpY2h0LVRlYW0g4oCU IDE0LVRhZ2UtTW9kYWwgKHNjaGljaHR0ZWFtLmpzKSA9PT09PSAqLwouc3Qta29wZmluZm8gewog ICAgZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsgZmxleC13cmFwOiB3cmFwOyBn YXA6IDhweCAxNHB4OwogICAgbWFyZ2luLWJvdHRvbTogMTJweDsKfQouc3QtYmFkZ2UgewogICAg ZGlzcGxheTogaW5saW5lLWJsb2NrOyBwYWRkaW5nOiAzcHggMTJweDsgYm9yZGVyLXJhZGl1czog dmFyKC0tcmFkaXVzLXNtKTsKICAgIGZvbnQtc2l6ZTogdmFyKC0tZnMtYmFzZSk7IGZvbnQtd2Vp Z2h0OiA3MDA7IGNvbG9yOiAjZmZmOyBsZXR0ZXItc3BhY2luZzogMC4zcHg7Cn0KLnN0LWJhZGdl LUYgeyBiYWNrZ3JvdW5kOiAjQzc3ODAwOyB9ICAgLyogRnLDvGhkaWVuc3QgKi8KLnN0LWJhZGdl LVMgeyBiYWNrZ3JvdW5kOiAjMTU2NUMwOyB9ICAgLyogU3DDpHRkaWVuc3QgKi8KLnN0LWJhZGdl LU4geyBiYWNrZ3JvdW5kOiAjM0YzRDhBOyB9ICAgLyogTmFjaHRkaWVuc3QgKi8KLnN0LXplaXRy YXVtIHsgZm9udC1zaXplOiB2YXIoLS1mcy1tZCk7IGNvbG9yOiB2YXIoLS10ZXh0LWhlYWRpbmcp OyBmb250LXdlaWdodDogNjAwOyB9Ci5zdC1oaW53ZWlzICB7IGZvbnQtc2l6ZTogdmFyKC0tZnMt c20pOyBjb2xvcjogdmFyKC0tdGV4dC1tdXRlZCk7IH0KCi5zdC1zY3JvbGwgeyBtYXgtaGVpZ2h0 OiA2MnZoOyBvdmVyZmxvdzogYXV0bzsgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tYm9yZGVyLWxp Z2h0KTsgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLXNtKTsgfQouc3QtdGFiZWxsZSB7IGJv cmRlci1jb2xsYXBzZTogc2VwYXJhdGU7IGJvcmRlci1zcGFjaW5nOiAwOyBmb250LXNpemU6IHZh cigtLWZzLWJhc2UpOyB3aWR0aDogbWF4LWNvbnRlbnQ7IG1pbi13aWR0aDogMTAwJTsgfQouc3Qt dGFiZWxsZSB0aCwgLnN0LXRhYmVsbGUgdGQgeyBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCB2YXIo LS1ib3JkZXItbGlnaHQpOyBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tYm9yZGVyLWxp Z2h0KTsgfQoKLyogS29wZnplaWxlIHN0aWNreSBvYmVuICovCi5zdC10YWJlbGxlIHRoZWFkIHRo IHsgcG9zaXRpb246IHN0aWNreTsgdG9wOiAwOyB6LWluZGV4OiAyOyBiYWNrZ3JvdW5kOiB2YXIo LS1iZy10b29sYmFyKTsgY29sb3I6IHZhcigtLXRleHQtaGVhZGluZyk7IHBhZGRpbmc6IDRweCAy cHg7IH0KLnN0LXRoLXRhZyB7IG1pbi13aWR0aDogMzhweDsgdGV4dC1hbGlnbjogY2VudGVyOyB9 Ci5zdC10aC1kYXR1bSB7IGZvbnQtc2l6ZTogdmFyKC0tZnMtc20pOyBmb250LXdlaWdodDogNzAw OyB9Ci5zdC10aC13dGFnICB7IGZvbnQtc2l6ZTogdmFyKC0tZnMteHMpOyBjb2xvcjogdmFyKC0t dGV4dC1tdXRlZCk7IH0KCi8qIE5hbWVuc3NwYWx0ZSBzdGlja3kgbGlua3MgKGF1Y2ggaW0gS29w ZiAtPiB6LWluZGV4IDMpICovCi5zdC10aC1uYW1lIHsgcG9zaXRpb246IHN0aWNreTsgbGVmdDog MDsgei1pbmRleDogMzsgdGV4dC1hbGlnbjogbGVmdDsgbWluLXdpZHRoOiAxNzBweDsgcGFkZGlu Zy1sZWZ0OiA4cHg7IH0KLnN0LXRkLW5hbWUgeyBwb3NpdGlvbjogc3RpY2t5OyBsZWZ0OiAwOyB6 LWluZGV4OiAxOyBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1jYXJkKTsgbWluLXdpZHRoOiAxNzBweDsg cGFkZGluZzogMnB4IDhweDsgfQouc3QtcGVyc29uIHsgZGlzcGxheTogZmxleDsgYWxpZ24taXRl bXM6IGNlbnRlcjsgZ2FwOiA3cHg7IH0KLnN0LXBlcnNvbi1uYW1lIHsgZm9udC13ZWlnaHQ6IDYw MDsgY29sb3I6IHZhcigtLXRleHQtaGVhZGluZyk7IGxpbmUtaGVpZ2h0OiAxLjE7IH0KLnN0LXBl cnNvbi1tZXRhIHsgZm9udC1zaXplOiB2YXIoLS1mcy14cyk7IGNvbG9yOiB2YXIoLS10ZXh0LW11 dGVkKTsgbGluZS1oZWlnaHQ6IDEuMTsgfQoKLnN0LXRkLXRhZyB7IHRleHQtYWxpZ246IGNlbnRl cjsgcGFkZGluZzogM3B4IDJweDsgbWluLXdpZHRoOiAzOHB4OyBmb250LXdlaWdodDogNjAwOyBj b2xvcjogdmFyKC0tdGV4dC1wcmltYXJ5KTsgfQouc3Qtd2UgeyBiYWNrZ3JvdW5kOiAjRURGMkY4 OyB9CltkYXRhLXRoZW1lPSJuaWdodCJdIC5zdC13ZSB7IGJhY2tncm91bmQ6ICMxRjJBMzg7IH0K Ci8qIEVpZ2VuZSBaZWlsZSBoZXJ2b3JoZWJlbiAqLwouc3QtemVpbGUtaWNoIC5zdC10ZC1uYW1l IHsgYm94LXNoYWRvdzogaW5zZXQgM3B4IDAgMCB2YXIoLS1iZy1wcmltYXJ5KTsgfQouc3QtemVp bGUtaWNoIC5zdC10ZC1uYW1lLCAuc3QtemVpbGUtaWNoIC5zdC10ZC10YWc6bm90KFtzdHlsZV0p IHsgYmFja2dyb3VuZDogdmFyKC0tYmctaG92ZXIpOyB9Cg== ### FILE: sync-check.html | 4249 PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImRlIj4KPGhlYWQ+CjxtZXRhIGNoYXJzZXQ9IlVU Ri04Ij4KPHRpdGxlPlZJMyBTeW5jLUNoZWNrPC90aXRsZT4KPHN0eWxlPgogIGJvZHkgeyBmb250 LWZhbWlseTogLWFwcGxlLXN5c3RlbSwgU2Vnb2UgVUksIFJvYm90bywgc2Fucy1zZXJpZjsgbWFy Z2luOiAyNHB4OyBiYWNrZ3JvdW5kOiNmNWY1Zjc7IGNvbG9yOiMyMjI7IH0KICBoMSB7IG1hcmdp bjogMCAwIDEycHg7IGZvbnQtc2l6ZTogMjJweDsgfQogIC5tZXRhIHsgZm9udC1zaXplOiAxM3B4 OyBjb2xvcjogIzY2NjsgbWFyZ2luLWJvdHRvbTogMTZweDsgfQogIC5rYXJ0ZSB7IGJhY2tncm91 bmQ6I2ZmZjsgYm9yZGVyLXJhZGl1czo4cHg7IHBhZGRpbmc6MTZweDsgbWFyZ2luLWJvdHRvbTox NnB4OyBib3gtc2hhZG93OiAwIDFweCA0cHggcmdiYSgwLDAsMCwwLjA4KTsgfQogIC56dXNhbW1l bmZhc3N1bmcgeyBmb250LXNpemU6IDE2cHg7IGZvbnQtd2VpZ2h0OiA2MDA7IH0KICAuenVzYW1t ZW5mYXNzdW5nLm9rICAgIHsgY29sb3I6ICMxZjdhMWY7IH0KICAuenVzYW1tZW5mYXNzdW5nLndh cm4gIHsgY29sb3I6ICNiMDYwMDA7IH0KICAuenVzYW1tZW5mYXNzdW5nLmZlaCAgIHsgY29sb3I6 ICNiMDIwMjA7IH0KICB0YWJsZSB7IHdpZHRoOiAxMDAlOyBib3JkZXItY29sbGFwc2U6IGNvbGxh cHNlOyBmb250LXNpemU6IDEzcHg7IH0KICB0aCwgdGQgeyB0ZXh0LWFsaWduOiBsZWZ0OyBwYWRk aW5nOiA2cHggMTBweDsgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNlZWU7IH0KICB0aCB7IGJh Y2tncm91bmQ6ICNmYWZhZmE7IGZvbnQtd2VpZ2h0OiA2MDA7IH0KICB0ci5vayAgICAgIHRkLnN0 YXR1cyB7IGNvbG9yOiAjMWY3YTFmOyBmb250LXdlaWdodDogNjAwOyB9CiAgdHIuZmVoICAgICB0 ZC5zdGF0dXMgeyBjb2xvcjogI2IwMjAyMDsgZm9udC13ZWlnaHQ6IDYwMDsgfQogIHRyLndhcm4g ICAgdGQuc3RhdHVzIHsgY29sb3I6ICNiMDYwMDA7IGZvbnQtd2VpZ2h0OiA2MDA7IH0KICB0ci5z a2lwICAgIHRkLnN0YXR1cyB7IGNvbG9yOiAjODg4OyB9CiAgdGQucGZhZCAgIHsgZm9udC1mYW1p bHk6IHVpLW1vbm9zcGFjZSwgU0ZNb25vLVJlZ3VsYXIsIE1lbmxvLCBDb25zb2xhcywgbW9ub3Nw YWNlOyB9CiAgdGQuZGV0YWlsIHsgY29sb3I6ICM2NjY7IGZvbnQtc2l6ZTogMTJweDsgfQogIGRl dGFpbHMgc3VtbWFyeSB7IGN1cnNvcjogcG9pbnRlcjsgcGFkZGluZzogNHB4IDA7IH0KICAubmV1 dHJhbCB7IGNvbG9yOiAjNjY2OyB9CiAgLmxhdWZlbiAgeyBjb2xvcjogIzIwNjBjMDsgfQogIGJ1 dHRvbiB7IHBhZGRpbmc6IDhweCAxNHB4OyBmb250LXNpemU6IDE0cHg7IGJvcmRlci1yYWRpdXM6 IDZweDsgYm9yZGVyOiAxcHggc29saWQgIzIwNjBjMDsKICAgICAgICAgICBiYWNrZ3JvdW5kOiAj MjA2MGMwOyBjb2xvcjojZmZmOyBjdXJzb3I6IHBvaW50ZXI7IH0KICBidXR0b246aG92ZXIgeyBi YWNrZ3JvdW5kOiMxODUwYTA7IH0KICBidXR0b246ZGlzYWJsZWQgeyBiYWNrZ3JvdW5kOiM4ODg7 IGJvcmRlci1jb2xvcjojODg4OyBjdXJzb3I6IG5vdC1hbGxvd2VkOyB9Cjwvc3R5bGU+CjwvaGVh ZD4KPGJvZHk+CjxoMT5WSTMgU3luYy1DaGVjazwvaDE+CjxkaXYgY2xhc3M9Im1ldGEiPkRpYWdu b3N0aXppZXJ0LCA8Yj53YXJ1bSBkaWUgU2VpdGUgbmljaHQgc3RhcnRldDwvYj4gKE1vZHVsLUxh ZGV0ZXN0LCBzaWVoZSBLYXJ0ZSB1bnRlbikgdW5kIHByw7xmdCwgb2IgYWxsZSBEYXRlaWVuIGRl cyBsYXVmZW5kZW4gU2VydmVycyBrb3JyZWt0IGF1c2dlbGllZmVydCB3ZXJkZW4g4oCUIGdlZ2Vu IGRpZSBoYXJ0Y29kaWVydGUgU29sbC1MaXN0ZS4gTGllZ3QgdW50ZXIgPGNvZGU+VkkzL3N5bmMt Y2hlY2suaHRtbDwvY29kZT4gdW5kIHdpcmQgw7xiZXIgZGVuIG5vcm1hbGVuIFdlYnNlcnZlciBi ZXJlaXRnZXN0ZWxsdDogPGNvZGU+aHR0cDovL2xvY2FsaG9zdDo4MDgwL3N5bmMtY2hlY2suaHRt bDwvY29kZT4uPC9kaXY+Cgo8ZGl2IGNsYXNzPSJrYXJ0ZSI+CiAgPGJ1dHRvbiBpZD0iYnRuLXN0 YXJ0Ij5QcsO8ZnVuZyBzdGFydGVuPC9idXR0b24+CiAgPHNwYW4gaWQ9InN0YXR1cyIgY2xhc3M9 Im5ldXRyYWwiIHN0eWxlPSJtYXJnaW4tbGVmdDoxMnB4Ij48L3NwYW4+CjwvZGl2PgoKPGRpdiBj bGFzcz0ia2FydGUiPgogIDxkaXYgaWQ9Inp1c2FtbWVuZmFzc3VuZyIgY2xhc3M9Inp1c2FtbWVu ZmFzc3VuZyBuZXV0cmFsIj5CZXJlaXQuPC9kaXY+CiAgPGRpdiBpZD0iaW5mbyIgY2xhc3M9Im1l dGEiIHN0eWxlPSJtYXJnaW4tdG9wOjhweCI+PC9kaXY+CjwvZGl2PgoKPGRpdiBjbGFzcz0ia2Fy dGUiPgogIDxoMiBzdHlsZT0ibWFyZ2luOjAgMCA4cHg7Zm9udC1zaXplOjE2cHgiPvCfmoAgU3Rh cnQtRGlhZ25vc2Ug4oCUIHdhcnVtIHN0YXJ0ZXQgZGllIFNlaXRlIG5pY2h0PzwvaDI+CiAgPGRp diBjbGFzcz0ibWV0YSI+TMOkZHQgamVkZXMgRVMtTW9kdWwgZWluemVsbiBwZXIgPGNvZGU+aW1w b3J0KCk8L2NvZGU+LCBnZW5hdSB3aWUgZGVyIEJyb3dzZXIgYmVpbSDDlmZmbmVuIHZvbiA8Y29k ZT5pbmRleC5odG1sPC9jb2RlPi4gRWluIFN5bnRheC0gb2RlciBJbXBvcnQvRXhwb3J0LUZlaGxl ciBpbiBudXIgZWluZW0gTW9kdWwgbMOkc3N0IGRpZSBnYW56ZSBBcHAgd2Vpw58gYmxlaWJlbiDi gJQgZGllIGVyc3RlIDxiPkZFSExFUjwvYj4tWmVpbGUgbmVubnQgZGFzIE1vZHVsLCB1bnRlciDi gJ5tZWhyIiBzdGVoZW4gTWVsZHVuZyB1bmQgWmVpbGVubnVtbWVyLiA8Y29kZT5hcHAuanM8L2Nv ZGU+IHdpcmQgenVsZXR6dCBnZWxhZGVuOiBlaW4gZWNodGVyIFBhcnNlLS9MaW5rLUZlaGxlciBl cnNjaGVpbnQgYWxzIEZFSExFUiwgZWluIExhdWZ6ZWl0ZmVobGVyIGF1cyA8Y29kZT5pbml0KCk8 L2NvZGU+IGdlZ2VuIGRpZSBmcmVtZGUgRGlhZ25vc2UtU2VpdGUgaXN0IGVyd2FydGJhciB1bmQg bnVyIGFscyBJTkZPIG1hcmtpZXJ0LjwvZGl2PgogIDxkaXYgaWQ9InN0YXJ0LW1ldGEiIGNsYXNz PSJtZXRhIiBzdHlsZT0ibWFyZ2luLXRvcDo4cHgiPkJlcmVpdC48L2Rpdj4KICA8dGFibGUgaWQ9 InN0YXJ0LXRhYiIgc3R5bGU9Im1hcmdpbi10b3A6OHB4Ij4KICAgIDx0aGVhZD4KICAgICAgPHRy Pjx0aCBzdHlsZT0id2lkdGg6MzIlIj5Nb2R1bDwvdGg+PHRoIHN0eWxlPSJ3aWR0aDoxNCUiPlN0 YXR1czwvdGg+PHRoPkRldGFpbHM8L3RoPjwvdHI+CiAgICA8L3RoZWFkPgogICAgPHRib2R5IGlk PSJzdGFydC16ZWlsZW4iPjwvdGJvZHk+CiAgPC90YWJsZT4KPC9kaXY+Cgo8ZGl2IGNsYXNzPSJr YXJ0ZSI+CiAgPGgyIHN0eWxlPSJtYXJnaW46MCAwIDhweDtmb250LXNpemU6MTZweCI+SW5oYWx0 cy1DaGVjayAoSFRUUC1BdXNsaWVmZXJ1bmcpPC9oMj4KICA8dGFibGUgaWQ9InRhYiI+CiAgICA8 dGhlYWQ+CiAgICAgIDx0cj48dGggc3R5bGU9IndpZHRoOjMyJSI+RGF0ZWkgLyBQZmFkPC90aD48 dGggc3R5bGU9IndpZHRoOjE0JSI+U3RhdHVzPC90aD48dGg+RGV0YWlsczwvdGg+PC90cj4KICAg IDwvdGhlYWQ+CiAgICA8dGJvZHkgaWQ9InplaWxlbiI+PC90Ym9keT4KICA8L3RhYmxlPgo8L2Rp dj4KCjxkaXYgY2xhc3M9ImthcnRlIj4KICA8aDIgc3R5bGU9Im1hcmdpbjowIDAgOHB4O2ZvbnQt c2l6ZToxNnB4Ij5EYXRlaS1HcsO2w59lbi1WZXJnbGVpY2ggKFNvdXJjZSDihpQgQXNzZXQtQ2Fj aGUpPC9oMj4KICA8ZGl2IGNsYXNzPSJtZXRhIiBpZD0iZ3JvZXNzZS1tZXRhIj5XaXJkIGdlbGFk ZW7igKY8L2Rpdj4KICA8dGFibGUgaWQ9Imdyb2Vzc2UtdGFiIiBzdHlsZT0ibWFyZ2luLXRvcDo4 cHgiPgogICAgPHRoZWFkPgogICAgICA8dHI+CiAgICAgICAgPHRoIHN0eWxlPSJ3aWR0aDo0MiUi PkRhdGVpIC8gUGZhZDwvdGg+CiAgICAgICAgPHRoIHN0eWxlPSJ3aWR0aDoxNCU7dGV4dC1hbGln bjpyaWdodCI+U291cmNlPC90aD4KICAgICAgICA8dGggc3R5bGU9IndpZHRoOjE0JTt0ZXh0LWFs aWduOnJpZ2h0Ij5Bc3NldDwvdGg+CiAgICAgICAgPHRoIHN0eWxlPSJ3aWR0aDoxMiU7dGV4dC1h bGlnbjpyaWdodCI+RGlmZjwvdGg+CiAgICAgICAgPHRoIHN0eWxlPSJ3aWR0aDoxOCUiPlN0YXR1 czwvdGg+CiAgICAgIDwvdHI+CiAgICA8L3RoZWFkPgogICAgPHRib2R5IGlkPSJncm9lc3NlLXpl aWxlbiI+PC90Ym9keT4KICA8L3RhYmxlPgo8L2Rpdj4KCjxzY3JpcHQgc3JjPSJzeW5jLWNoZWNr LmpzIj48L3NjcmlwdD4KPC9ib2R5Pgo8L2h0bWw+Cg==