{"id":6398,"date":"2026-07-10T16:52:16","date_gmt":"2026-07-10T16:52:16","guid":{"rendered":"https:\/\/allenglish4u.com\/celpip-set-9-test-2-writing\/"},"modified":"2026-07-12T03:24:38","modified_gmt":"2026-07-12T03:24:38","slug":"celpip-set-9-test-2-writing","status":"publish","type":"page","link":"https:\/\/allenglish4u.com\/vi\/celpip-set-9-test-2-writing\/","title":{"rendered":"CELPIP Writing \u2014 Set 9 \u00b7 Practice Test 2"},"content":{"rendered":"<div class=\"clpw-wrap\" id=\"clpwApp\"><\/div>\n<p><script>eval(atob(\"dmFyIFdEQVRBPXsibWV0YSI6eyJicmFuZCI6IkNFTFBJUCIsInNldCI6IlNldCA5IFx1MDBiNyBQcmFjdGljZSBUZXN0IDIiLCJ0aXRsZSI6IkNFTFBJUCBXcml0aW5nIFByYWN0aWNlIFRlc3QiLCJ0b3RhbE1pbiI6NTN9LCJ0YXNrcyI6W3siaWQiOjEsImJhclRpdGxlIjoiUHJhY3RpY2UgVGVzdCAyIFx1MjAxMyBXcml0aW5nIFRhc2sgMTogV3JpdGluZyBhbiBFbWFpbCIsIm5hbWUiOiJXcml0aW5nIGFuIEVtYWlsIiwibWludXRlcyI6MjcsIndvcmRBaW0iOiIxNTBcdTIwMTMyMDAgd29yZHMiLCJyZWFkSGVhZCI6IlJlYWQgdGhlIGZvbGxvd2luZyBpbmZvcm1hdGlvbi4iLCJzY2VuYXJpbyI6IllvdSBhcmUgYSBjb2xsZWdlIHN0dWRlbnQuIFlvdXIgc2Nob29sIGlzIG9mZmVyaW5nICQyLDAwMCB0byBvbmUgc3R1ZGVudDogdGhpcyBtb25leSB3aWxsIGJlIHVzZWQgdG8gcGF5IGNvbGxlZ2UgZmVlcy4gVGhlIHNjaG9vbCBpcyBpbnZpdGluZyBhbGwgc3R1ZGVudHMgdG8gZXhwbGFpbiB3aHkgdGhleSBzaG91bGQgZ2V0IHRoaXMgYXdhcmQuIiwicHJvbXB0SGVhZCI6IldyaXRlIGFuIGVtYWlsIG9mIGFib3V0IDE1MFx1MjAxMzIwMCB3b3JkcyB0byB0aGUgY29sbGVnZS4gWW91ciBlbWFpbCBtdXN0IGluY2x1ZGUgdGhlIGZvbGxvd2luZyBwb2ludHM6IiwiYnVsbGV0cyI6WyJhIGRlc2NyaXB0aW9uIG9mIHdoYXQgeW91IGFyZSBzdHVkeWluZyBhdCBjb2xsZWdlIiwid2h5IHlvdSBhcmUgaW50ZXJlc3RlZCBpbiB5b3VyIHN0dWRpZXMiLCJhIHN0YXRlbWVudCBvZiBob3cgd2VsbCB5b3UgYXJlIGRvaW5nIGF0IGNvbGxlZ2UiLCJ5b3VyIGZ1dHVyZSBwbGFucyJdLCJvcHRpb25zIjpudWxsLCJzYW1Ob3RlIjoiVGhlc2UgYXJlIEFsbEVuZ2xpc2g0VSBtb2RlbCBhbnN3ZXJzIHdyaXR0ZW4gZm9yIHRoaXMgZXhhY3QgVGFzayAxIGVtYWlsIHByb21wdCAoYXBwbHlpbmcgZm9yIHRoZSBjb2xsZWdlJ3MgJDIsMDAwIHN0dWRlbnQgYXdhcmQpLCBzaG93biBhdCB0aHJlZSBzY29yZSBsZXZlbHMgKENFTFBJUCA0XHUyMDEzNSwgN1x1MjAxMzggYW5kIDEwXHUyMDEzMTIpIHNvIHlvdSBjYW4gc2VlIGhvdyB0aGUgc2FtZSB0YXNrIHJlYWRzIGFzIGl0IGltcHJvdmVzLiBUaGV5IGFyZSBBRTRVIHN0dWR5IG1vZGVscywgbm90IG9mZmljaWFsIENFTFBJUCBzYW1wbGVzOyB0aGUgNFx1MjAxMzUgbW9kZWwgZGVsaWJlcmF0ZWx5IGtlZXBzIHNvbWUgZXJyb3JzLiIsInNhbXBsZXMiOlt7ImxldmVsIjoiQ0VMUElQIDRcdTIwMTM1IFJlc3BvbnNlIiwibm90ZSI6IkFsbCBmb3VyIHBvaW50cyBwcmVzZW50IHdpdGggZ2VudWluZSBtb3RpdmF0aW9uOyBsYW5ndWFnZSBpcyBwbGFpbiBhbmQgaW1wZXJmZWN0IGJ1dCBzaW5jZXJlLiIsInRleHQiOiJEZWFyIEF3YXJkcyBDb21taXR0ZWUsXG5cbk15IG5hbWUgaXMgVHVhbiBMZSwgc3R1ZGVudCBudW1iZXIgMjAyNDExODcsIGFuZCBJIHdhbnQgdG8gYXBwbHkgZm9yIHRoZSAkMiwwMDAgYXdhcmQuXG5cbkkgYW0gc3R1ZHlpbmcgQ29tcHV0ZXIgU2NpZW5jZSwgc2Vjb25kIHllYXIuIEkgY2hvc2UgdGhpcyBwcm9ncmFtIGJlY2F1c2Ugb2YgbXkgbW90aGVyLiBTaGUgaGF2ZSBhIHNtYWxsIHNob3AsIGFuZCB0d28geWVhcnMgYWdvIEkgYnVpbHQgYSBzaW1wbGUgYXBwIGZvciBoZXIgdG8gY291bnQgdGhlIHByb2R1Y3RzLiBXaGVuIEkgc2F3IGhvdyB0aGUgYXBwIGhlbHAgaGVyIHdvcmssIEkgdW5kZXJzdGFuZCB0aGF0IEkgd2FudCB0byBidWlsZCBzb2Z0d2FyZSBmb3IgcmVhbCBwZW9wbGUsIG5vdCBvbmx5IGZvciBtb25leS5cblxuQWJvdXQgbXkgc3R1ZHlpbmc6IEkgd29yayBoYXJkIGFuZCBteSBHUEEgaXMgMy44LiBMYXN0IHNlbWVzdGVyIEkgd2FzIG9uIHRoZSBEZWFuJ3MgTGlzdCwgYW5kIG15IHRlYWNoZXIgY2hvb3NlIG15IGRhdGFiYXNlIHByb2plY3QgdG8gc2hvdyB0aGUgZmlyc3QteWVhciBzdHVkZW50cy5cblxuTXkgZnV0dXJlIHBsYW4gaXMgdG8gam9pbiB0aGUgY28tb3AgcHJvZ3JhbSBuZXh0IHllYXIgYW5kIGFmdGVyIGdyYWR1YXRpb24gd29yayBhcyBhIHNvZnR3YXJlIGRldmVsb3BlciBpbiB0aGUgaGVhbHRoIGFyZWEsIG1ha2luZyBhcHBzIGZvciBvbGQgcGVvcGxlIGFuZCBwYXRpZW50cy5cblxuVGhpcyBhd2FyZCBpcyBpbXBvcnRhbnQgZm9yIG1lIGJlY2F1c2Ugbm93IEkgd29yayAyMCBob3VycyBldmVyeSB3ZWVrIGluIGEgcmVzdGF1cmFudCB0byBwYXkgbXkgZmVlcy4gV2l0aCAkMiwwMDAsIEkgY2FuIHdvcmsgbGVzcyBob3VycyBhbmQgc3R1ZHkgbW9yZS5cblxuVGhhbmsgeW91IGZvciByZWFkaW5nIG15IGFwcGxpY2F0aW9uLlxuXG5TaW5jZXJlbHksXG5UdWFuIExlIn0seyJsZXZlbCI6IkNFTFBJUCA3XHUyMDEzOCBSZXNwb25zZSIsIm5vdGUiOiJBIHBlcnN1YXNpdmUgYXBwbGljYXRpb246IGNvbmNyZXRlIG9yaWdpbiBzdG9yeSwgZXZpZGVuY2Ugb2YgYWNoaWV2ZW1lbnQsIGFuZCBhIGNsZWFyIGxpbmsgYmV0d2VlbiB0aGUgYXdhcmQgYW5kIGJldHRlciBvdXRjb21lcy4iLCJ0ZXh0IjoiRGVhciBBd2FyZHMgQ29tbWl0dGVlLFxuXG5NeSBuYW1lIGlzIFR1YW4gTGUgKHN0dWRlbnQgIzIwMjQxMTg3KSwgYW5kIEkgYW0gd3JpdGluZyB0byBhcHBseSBmb3IgdGhlICQyLDAwMCBzdHVkZW50IGF3YXJkLlxuXG5JIGFtIGEgc2Vjb25kLXllYXIgQ29tcHV0ZXIgU2NpZW5jZSBzdHVkZW50LiBNeSBpbnRlcmVzdCBpbiB0aGUgZmllbGQgYmVnYW4gYmVoaW5kIHRoZSBjb3VudGVyIG9mIG15IG1vdGhlcidzIHNtYWxsIGdyb2Nlcnkgc2hvcDogdHdvIHllYXJzIGFnbyBJIHRhdWdodCBteXNlbGYgZW5vdWdoIHByb2dyYW1taW5nIHRvIGJ1aWxkIGhlciBhIHNpbXBsZSBpbnZlbnRvcnkgYXBwLCBhbmQgd2F0Y2hpbmcgdGhhdCBsaXR0bGUgdG9vbCBzYXZlIGhlciBhbiBob3VyIGV2ZXJ5IGV2ZW5pbmcgY29udmluY2VkIG1lIHRoYXQgc29mdHdhcmUgaXMgdGhlIG1vc3QgcHJhY3RpY2FsIHdheSBJIGNhbiBpbXByb3ZlIHBlb3BsZSdzIGxpdmVzLlxuXG5UaGF0IGNvbnZpY3Rpb24gc2hvd3MgaW4gbXkgcmVzdWx0cy4gSSBjdXJyZW50bHkgaG9sZCBhIDMuOCBHUEEsIG1hZGUgdGhlIERlYW4ncyBMaXN0IGxhc3Qgc2VtZXN0ZXIsIGFuZCBteSBkYXRhYmFzZSBwcm9qZWN0IHdhcyBzZWxlY3RlZCBhcyBhIG1vZGVsIGV4YW1wbGUgZm9yIHRoaXMgeWVhcidzIGZpcnN0LXllYXIgc3R1ZGVudHMuIEkgZG8gdGhpcyB3aGlsZSB3b3JraW5nIHR3ZW50eSBob3VycyBhIHdlZWsgdG8gY292ZXIgbXkgZmVlcy5cblxuTXkgcGxhbiBpcyB0byBlbnRlciB0aGUgY28tb3AgcHJvZ3JhbSBuZXh0IHllYXIgYW5kLCBhZnRlciBncmFkdWF0aW9uLCB0byBidWlsZCBoZWFsdGhjYXJlIHNvZnR3YXJlIFx1MjAxNCB0b29scyB0aGF0IGhlbHAgc2VuaW9ycyBhbmQgcGF0aWVudHMgbWFuYWdlIHRoZWlyIGNhcmUuXG5cblRoZSBhd2FyZCB3b3VsZCBsZXQgbWUgY3V0IG15IHJlc3RhdXJhbnQgc2hpZnRzIG5lYXJseSBpbiBoYWxmIGFuZCBnaXZlIHRob3NlIGhvdXJzIGJhY2sgdG8gbXkgc3R1ZGllcy4gSSB3b3VsZCBiZSBncmF0ZWZ1bCBmb3IgdGhlIGNvbW1pdHRlZSdzIGNvbnNpZGVyYXRpb24uXG5cblNpbmNlcmVseSxcblR1YW4gTGUifSx7ImxldmVsIjoiQ0VMUElQIDEwXHUyMDEzMTIgUmVzcG9uc2UiLCJub3RlIjoiQSBzdGFuZG91dCBhcHBsaWNhdGlvbjogYSBtZW1vcmFibGUgbmFycmF0aXZlIHRocmVhZCwgcXVhbnRpZmllZCBleGNlbGxlbmNlLCBhbmQgYSBwcmVjaXNlIGFjY291bnQgb2Ygd2hhdCB0aGUgbW9uZXkgY2hhbmdlcy4iLCJ0ZXh0IjoiRGVhciBBd2FyZHMgQ29tbWl0dGVlLFxuXG5NeSBuYW1lIGlzIFR1YW4gTGUgKHN0dWRlbnQgIzIwMjQxMTg3KSwgYW5kIEkgd291bGQgbGlrZSB0byBtYWtlIHRoZSBjYXNlIGZvciB3aHkgdGhpcyB5ZWFyJ3MgJDIsMDAwIGF3YXJkIHdvdWxkIGJlIHdlbGwgaW52ZXN0ZWQgaW4gbWUuXG5cbkkgYW0gaW4gbXkgc2Vjb25kIHllYXIgb2YgQ29tcHV0ZXIgU2NpZW5jZSwgYW5kIG15IHJlYXNvbiBmb3IgYmVpbmcgaGVyZSBmaXRzIGluIG9uZSBpbWFnZTogbXkgbW90aGVyLCBjbG9zaW5nIGhlciBzbWFsbCBncm9jZXJ5IHNob3AgYXQgbWlkbmlnaHQsIGNvdW50aW5nIHN0b2NrIGJ5IGhhbmQuIFR3byB5ZWFycyBhZ28gSSB0YXVnaHQgbXlzZWxmIHRvIGNvZGUgYW5kIGJ1aWx0IGhlciBhIGJhcmUtYm9uZXMgaW52ZW50b3J5IGFwcC4gSXQgd2FzIGNsdW1zeSwgYnV0IGl0IGdhdmUgaGVyIGJhY2sgYW4gaG91ciBldmVyeSBuaWdodCBcdTIwMTQgYW5kIGl0IHRhdWdodCBtZSB3aGF0IEkgd2FudCBmcm9tIHRoaXMgcHJvZmVzc2lvbjogc29mdHdhcmUgbWVhc3VyZWQgbm90IGluIGRvd25sb2FkcywgYnV0IGluIGhvdXJzIHJldHVybmVkIHRvIHBlb3BsZSdzIGxpdmVzLlxuXG5JIGhhdmUgcHVyc3VlZCB0aGF0IGdvYWwgc2VyaW91c2x5LiBJIGhvbGQgYSAzLjggR1BBIGFuZCBhIERlYW4ncyBMaXN0IGNpdGF0aW9uOyBteSBkYXRhYmFzZSBwcm9qZWN0IG5vdyBzZXJ2ZXMgYXMgYSBtb2RlbCBleGFtcGxlIHNob3duIHRvIGZpcnN0LXllYXIgc3R1ZGVudHM7IGFuZCBJIGhhdmUgZG9uZSBhbGwgb2YgaXQgd2hpbGUgd29ya2luZyB0d2VudHkgaG91cnMgYSB3ZWVrIGluIGEgcmVzdGF1cmFudCB0byBwYXkgbXkgb3duIGZlZXMuXG5cbkFmdGVyIGNvLW9wIG5leHQgeWVhciwgSSBpbnRlbmQgdG8gc3BlY2lhbGl6ZSBpbiBoZWFsdGhjYXJlIHNvZnR3YXJlIFx1MjAxNCBwYXRpZW50LWZhY2luZyB0b29scyBmb3Igc2VuaW9ycywgdGhlIHVzZXJzIHRoZSBpbmR1c3RyeSBtb3N0IG9mdGVuIGZvcmdldHMuXG5cbkhlcmUgaXMgcHJlY2lzZWx5IHdoYXQgeW91ciAkMiwwMDAgd291bGQgZG86IHJlcGxhY2UgdGVuIHdlZWtseSByZXN0YXVyYW50IGhvdXJzIGZvciBhIGZ1bGwgc2VtZXN0ZXIgXHUyMDE0IGhvdXJzIEkgd291bGQgcmVpbnZlc3QgaW4gbXkgc3R1ZGllcyBhbmQgaW4gdGhlIGNhbXB1cyBjb2RpbmcgY2x1YiBJIGhlbHAgcnVuLiBGZXcgaW52ZXN0bWVudHMgcGF5IGEgY2xlYXJlciByZXR1cm4uXG5cblRoYW5rIHlvdSBmb3IgeW91ciBjb25zaWRlcmF0aW9uLlxuXG5TaW5jZXJlbHksXG5UdWFuIExlIn1dfSx7ImlkIjoyLCJiYXJUaXRsZSI6IlByYWN0aWNlIFRlc3QgMiBcdTIwMTMgV3JpdGluZyBUYXNrIDI6IFJlc3BvbmRpbmcgdG8gU3VydmV5IFF1ZXN0aW9ucyIsIm5hbWUiOiJSZXNwb25kaW5nIHRvIFN1cnZleSBRdWVzdGlvbnMiLCJtaW51dGVzIjoyNiwid29yZEFpbSI6IjE1MFx1MjAxMzIwMCB3b3JkcyIsInJlYWRIZWFkIjoiUmVhZCB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uLiIsInNjZW5hcmlvSGVhZCI6IkNsYXNzIFNjaGVkdWxlIFN1cnZleSIsInNjZW5hcmlvIjoiWW91ciBjb2xsZWdlIGlzIHN1cnZleWluZyB5b3VyIG9waW5pb24gYWJvdXQgZXZlbmluZyBjbGFzcyBzY2hlZHVsZXMuIEN1cnJlbnRseSwgZXZlbmluZyBjbGFzc2VzIGFyZSBvZmZlcmVkIG9uY2UgcGVyIHdlZWssIDMgaG91cnMgZWFjaCBjbGFzcy4gVGhlIGNvbGxlZ2UgaXMgY29uc2lkZXJpbmcgY2hhbmdpbmcgdGhlIHNjaGVkdWxlIHRvIHR3byBldmVuaW5ncyBwZXIgd2VlaywgMS41IGhvdXJzIGVhY2ggY2xhc3MuIFRoZSBjb2xsZWdlIGhhcyBhc2tlZCB5b3UgdG8gY29tcGxldGUgYW4gb3BpbmlvbiBzdXJ2ZXkuIiwicHJvbXB0SGVhZCI6IkNob29zZSB0aGUgb3B0aW9uIHRoYXQgeW91IHByZWZlci4gV2h5IGRvIHlvdSBwcmVmZXIgeW91ciBjaG9pY2U\/IEV4cGxhaW4gdGhlIHJlYXNvbnMgZm9yIHlvdXIgY2hvaWNlLiBXcml0ZSBhYm91dCAxNTBcdTIwMTMyMDAgd29yZHMuIiwiYnVsbGV0cyI6W10sIm9wdGlvbnMiOlt7ImtleSI6IkEiLCJsYWJlbCI6Ik9wdGlvbiBBOiBJIHdhbnQgdG8ga2VlcCBteSBjdXJyZW50IHNjaGVkdWxlIG9mIDMtaG91ciBjbGFzc2VzLCBvbmNlIHBlciB3ZWVrLiJ9LHsia2V5IjoiQiIsImxhYmVsIjoiT3B0aW9uIEI6IEkgd2FudCB0byBjaGFuZ2UgbXkgc2NoZWR1bGUgdG8gMS41LWhvdXIgY2xhc3NlcywgdHdpY2UgcGVyIHdlZWsuIn1dLCJzYW1Ob3RlIjoiVGhlc2UgYXJlIEFsbEVuZ2xpc2g0VSBtb2RlbCBhbnN3ZXJzIHdyaXR0ZW4gZm9yIHRoaXMgZXhhY3QgVGFzayAyIG9waW5pb24tc3VydmV5IHByb21wdCAob25lIDMtaG91ciBldmVuaW5nIGNsYXNzIHBlciB3ZWVrIHZlcnN1cyB0d28gMS41LWhvdXIgY2xhc3NlcyksIHNob3duIGF0IHRocmVlIHNjb3JlIGxldmVscyAoQ0VMUElQIDRcdTIwMTM1LCA3XHUyMDEzOCBhbmQgMTBcdTIwMTMxMikgc28geW91IGNhbiBzZWUgaG93IHRoZSBzYW1lIHRhc2sgcmVhZHMgYXMgaXQgaW1wcm92ZXMuIFRoZXkgYXJlIEFFNFUgc3R1ZHkgbW9kZWxzLCBub3Qgb2ZmaWNpYWwgQ0VMUElQIHNhbXBsZXM7IHRoZSA0XHUyMDEzNSBtb2RlbCBkZWxpYmVyYXRlbHkga2VlcHMgc29tZSBlcnJvcnMuIiwic2FtcGxlcyI6W3sibGV2ZWwiOiJDRUxQSVAgNFx1MjAxMzUgUmVzcG9uc2UiLCJub3RlIjoiT3B0aW9uIEEgZ3JvdW5kZWQgaW4gd29yayBhbmQgY29tbXV0aW5nIHJlYWxpdHk7IHNpbXBsZSBhbmQgYSBsaXR0bGUgcmVwZXRpdGl2ZSwgYnV0IGNsZWFyLiIsInRleHQiOiJJIGNob29zZSBPcHRpb24gQS4gSSB3YW50IHRvIGtlZXAgdGhlIDMtaG91ciBjbGFzcywgb25lIHRpbWUgcGVyIHdlZWsuXG5cblRoZSBtYWluIHJlYXNvbiBpcyBteSBqb2IuIEkgd29yayBmdWxsLXRpbWUgaW4gYSB3YXJlaG91c2UgdW50aWwgNSBwbSwgYW5kIHRoZSBjb2xsZWdlIGlzIDQ1IG1pbnV0ZXMgZnJvbSBteSB3b3JrIGJ5IGJ1cy4gR29pbmcgdG8gc2Nob29sIGlzIGxpa2UgYSBzbWFsbCB0cmlwIGZvciBtZS4gV2l0aCBvbmUgY2xhc3MgcGVyIHdlZWssIEkgbWFrZSB0aGlzIHRyaXAgb25seSBvbmUgdGltZS4gV2l0aCB0aGUgbmV3IHBsYW4sIEkgbXVzdCB0cmF2ZWwgdHdvIGV2ZW5pbmdzIFx1MjAxNCB0aGF0IGlzIDMgaG91cnMgdHJhdmVsIGZvciB0aGUgc2FtZSBsZXNzb25zLiBJIGxvc2UgdGltZSBhbmQgYnVzIG1vbmV5LlxuXG5TZWNvbmQgcmVhc29uIGlzIG15IGZhbWlseS4gSSBoYXZlIGEgc21hbGwgZGF1Z2h0ZXIuIE5vdywgb25lIGV2ZW5pbmcgbXkgd2lmZSBzdGF5IGFsb25lIHdpdGggaGVyLCBhbmQgb3RoZXIgZXZlbmluZ3MgSSBoZWxwIGF0IGhvbWUuIFR3byBzY2hvb2wgZXZlbmluZ3MgcGVyIHdlZWsgbWFrZSBteSB3aWZlJ3MgbGlmZSBoYXJkZXIuXG5cblRoaXJkLCBpbiBhIDMtaG91ciBjbGFzcyB3ZSBoYXZlIHRpbWUgZm9yIGV2ZXJ5dGhpbmc6IHRoZSB0ZWFjaGVyIGV4cGxhaW4sIHdlIHByYWN0aWNlLCB3ZSBhc2sgcXVlc3Rpb25zLiBJbiAxLjUgaG91ciwgd2hlbiB0aGUgY2xhc3MgYmVjb21lIGludGVyZXN0aW5nLCBpdCBpcyBhbHJlYWR5IGZpbmlzaC5cblxuU28gT3B0aW9uIEEgaXMgYmV0dGVyIGZvciB3b3JraW5nIHN0dWRlbnRzIGxpa2UgbWUuIn0seyJsZXZlbCI6IkNFTFBJUCA3XHUyMDEzOCBSZXNwb25zZSIsIm5vdGUiOiJPcHRpb24gQiBzdXBwb3J0ZWQgYnkgbGVhcm5pbmcgcXVhbGl0eSBhbmQgZmxleGliaWxpdHk7IGNvbmNlZGVzIHRoZSBjb21tdXRpbmcgY29zdCBmYWlybHkuIiwidGV4dCI6IkluIHJlc3BvbnNlIHRvIHRoZSBzdXJ2ZXksIEkgd291bGQgY2hvb3NlIE9wdGlvbiBCOiB0d28gMS41LWhvdXIgY2xhc3NlcyBwZXIgd2Vlay5cblxuTXkgZmlyc3QgcmVhc29uIGlzIHNpbXBsZTogbm9ib2R5IHRydWx5IGxlYXJucyBmb3IgdGhyZWUgc3RyYWlnaHQgaG91cnMgYWZ0ZXIgYSBmdWxsIHdvcmtkYXkuIEluIG15IGN1cnJlbnQgZXZlbmluZyBjbGFzcywgdGhlIGZpcnN0IGhvdXIgaXMgcHJvZHVjdGl2ZSwgdGhlIHNlY29uZCBpcyBhIHN0cnVnZ2xlLCBhbmQgdGhlIHRoaXJkIGlzIHN1cnZpdmFsIFx1MjAxNCB0aGUgdGVhY2hlciBydXNoZXMsIGFuZCB3ZSBhYnNvcmIgbGl0dGxlLiBUd28gc2hvcnRlciBzZXNzaW9ucyB3b3VsZCBtZWV0IHVzIGF0IG91ciBiZXN0IGluc3RlYWQgb2Ygb3VyIGVtcHRpZXN0LlxuXG5TZWNvbmQsIHNwcmVhZGluZyB0aGUgY2xhc3MgYWNyb3NzIHRoZSB3ZWVrIGltcHJvdmVzIG1lbW9yeS4gUmV2aWV3aW5nIG1hdGVyaWFsIHR3aWNlIHdlZWtseSwgd2l0aCBkYXlzIGJldHdlZW4gdG8gcHJhY3Rpc2UsIGJlYXRzIG9uZSBsb25nIGV4cG9zdXJlIGZvbGxvd2VkIGJ5IHNpeCBkYXlzIG9mIGZvcmdldHRpbmcgXHUyMDE0IGV2ZXJ5IHN0dWR5LXNraWxscyB3b3Jrc2hvcCB0aGUgY29sbGVnZSBydW5zIHNheXMgZXhhY3RseSB0aGlzLlxuXG5UaGlyZCwgdGhlIG5ldyBzY2hlZHVsZSBpcyBtb3JlIGZvcmdpdmluZy4gVW5kZXIgdGhlIGN1cnJlbnQgc3lzdGVtLCBtaXNzaW5nIG9uZSBldmVuaW5nIFx1MjAxNCBhIHNpY2sgY2hpbGQsIGFuIG92ZXJ0aW1lIHNoaWZ0IFx1MjAxNCBtZWFucyBsb3NpbmcgYSB3aG9sZSB3ZWVrIG9mIGNvbnRlbnQuIE1pc3Npbmcgb25lIG9mIHR3byBzaG9ydCBjbGFzc2VzIGNvc3RzIGhhbGYgYXMgbXVjaC5cblxuSSBhY2NlcHQgdGhlIHJlYWwgZHJhd2JhY2s6IHR3byBjb21tdXRlcyBpbnN0ZWFkIG9mIG9uZSwgd2hpY2ggaXMgYSBnZW51aW5lIGJ1cmRlbiBmb3Igc3R1ZGVudHMgd2hvIHRyYXZlbCBmYXIuIEJ1dCBsZWFybmluZyBxdWFsaXR5IGhhcyB0byBjb21lIGZpcnN0IGluIGEgY29sbGVnZSBzY2hlZHVsZS5cblxuRm9yIHRoZXNlIHJlYXNvbnMsIEkgcHJlZmVyIE9wdGlvbiBCLiJ9LHsibGV2ZWwiOiJDRUxQSVAgMTBcdTIwMTMxMiBSZXNwb25zZSIsIm5vdGUiOiJBbiBPcHRpb24gQiBjYXNlIGJ1aWx0IG9uIGV2aWRlbmNlIGFib3V0IGF0dGVudGlvbiBhbmQgc3BhY2VkIGxlYXJuaW5nLCB3aXRoIGEgcHJvcG9zZWQgbWl0aWdhdGlvbiBmb3IgY29tbXV0ZXJzLiIsInRleHQiOiJIYXZpbmcgZXhwZXJpZW5jZWQgdGhlIGN1cnJlbnQgZm9ybWF0IGZvciB0d28gc2VtZXN0ZXJzLCBJIHdvdWxkIGNob29zZSBPcHRpb24gQjogdHdvIDEuNS1ob3VyIGNsYXNzZXMgcGVyIHdlZWsgXHUyMDE0IGFuZCBJIHdvdWxkIGZyYW1lIGl0IGFzIGEgZGVjaXNpb24gYWJvdXQgaG93IGFkdWx0cyBhY3R1YWxseSBsZWFybi5cblxuVGhlIGV2aWRlbmNlIG9uIGF0dGVudGlvbiBpcyBub3QgY29udHJvdmVyc2lhbDogZm9jdXNlZCBjb25jZW50cmF0aW9uIGluIGFuIGV2ZW5pbmcgbGVjdHVyZSBkZWdyYWRlcyBzaGFycGx5IGFmdGVyIGFib3V0IG5pbmV0eSBtaW51dGVzLCBhbmQgb3VyIHRocmVlLWhvdXIgYmxvY2tzIFx1MjAxNCB0YXVnaHQgdG8gc3R1ZGVudHMgYXJyaXZpbmcgc3RyYWlnaHQgZnJvbSBmdWxsIHdvcmtkYXlzIFx1MjAxNCBzcGVuZCB0aGVpciBmaW5hbCBob3VyIHRlYWNoaW5nIHBlb3BsZSB3aG8gYXJlIHBoeXNpY2FsbHkgcHJlc2VudCBhbmQgY29nbml0aXZlbHkgZ29uZS4gVGhlIHByb3Bvc2VkIGZvcm1hdCBlbmRzIGNsYXNzIHByZWNpc2VseSB3aGVyZSB0aGUgdmFsdWUgZW5kcy5cblxuVGhlIHNlY29uZCBhcmd1bWVudCBpcyB0aGUgc3BhY2luZyBlZmZlY3QsIG9uZSBvZiB0aGUgbW9zdCByZXBsaWNhdGVkIGZpbmRpbmdzIGluIGxlYXJuaW5nIHJlc2VhcmNoOiB0d28gZXhwb3N1cmVzIHNlcGFyYXRlZCBieSBkYXlzIHByb2R1Y2UgZHJhbWF0aWNhbGx5IGJldHRlciByZXRlbnRpb24gdGhhbiBvbmUgbG9uZyBleHBvc3VyZS4gQmV0d2VlbiBUdWVzZGF5J3MgY2xhc3MgYW5kIFRodXJzZGF5J3MsIHN0dWRlbnRzIGNhbiBhdHRlbXB0IGhvbWV3b3JrLCBkaXNjb3ZlciB3aGF0IHRoZXkgbWlzdW5kZXJzdG9vZCwgYW5kIGFycml2ZSB3aXRoIHF1ZXN0aW9ucyB3aGlsZSB0aGUgbWF0ZXJpYWwgaXMgc3RpbGwgYWxpdmUuIFRoZSB3ZWVrbHkgZm9ybWF0IG9mZmVycyBubyBzdWNoIGxvb3AgXHUyMDE0IHNpeCBzaWxlbnQgZGF5cyBiZXR3ZWVuIGNvbnRhY3QuXG5cblRoaXJkLCByZXNpbGllbmNlOiB3aGVuIGxpZmUgaW50ZXJydXB0cyBcdTIwMTQgYW5kIGZvciBldmVuaW5nIHN0dWRlbnRzIGl0IGFsd2F5cyBkb2VzIFx1MjAxNCBtaXNzaW5nIGEgc2hvcnQgY2xhc3MgY29zdHMgaGFsZiBhIHdlZWssIG5vdCBhIHdob2xlIG9uZS5cblxuVGhlIGhvbmVzdCBjb3N0IGlzIGNvbW11dGluZzogdHdvIHRyaXBzIGluc3RlYWQgb2Ygb25lLCBubyBzbWFsbCB0aGluZyBmb3IgZGlzdGFudCBzdHVkZW50cy4gSSB3b3VsZCBwYWlyIHRoZSBjaGFuZ2Ugd2l0aCBoeWJyaWQgYXR0ZW5kYW5jZSBmb3Igb25lIG9mIHRoZSB0d28gc2Vzc2lvbnMsIHdoaWNoIHNvbHZlcyBtb3N0IG9mIHRoYXQuXG5cbk9uIGV2ZXJ5IGRpbWVuc2lvbiB0aGF0IGNvbmNlcm5zIGxlYXJuaW5nIGl0c2VsZiwgdGhlIHNwbGl0IHNjaGVkdWxlIHdpbnMuIE9wdGlvbiBCLiJ9XX1dLCJydWJyaWMiOlt7ImsiOiJDb250ZW50IC8gQ29oZXJlbmNlIiwiZCI6IkFsbCByZXF1aXJlZCBwb2ludHMgYXJlIGNvdmVyZWQgYW5kIGRldmVsb3BlZCB3aXRoIGNsZWFyLCBsb2dpY2FsbHkgY29ubmVjdGVkIGlkZWFzIGFuZCBwYXJhZ3JhcGhzLiJ9LHsiayI6IlZvY2FidWxhcnkiLCJkIjoiV29yZCBjaG9pY2UgaXMgdmFyaWVkLCBwcmVjaXNlIGFuZCBzdWl0cyB0aGUgdG9uZSAoYSBzZW1pLWZvcm1hbCBlbWFpbCAvIGEgcmVhc29uZWQgb3BpbmlvbikuIn0seyJrIjoiUmVhZGFiaWxpdHkiLCJkIjoiR3JhbW1hciwgc3BlbGxpbmcgYW5kIHB1bmN0dWF0aW9uIGFyZSBhY2N1cmF0ZSBlbm91Z2ggdGhhdCB0aGUgcmVhZGVyIGlzIG5ldmVyIHNsb3dlZCBkb3duLiJ9LHsiayI6IlRhc2sgRnVsZmlsbG1lbnQiLCJkIjoiVGhlIHJlc3BvbnNlIGZpdHMgdGhlIHB1cnBvc2UgYW5kIGF1ZGllbmNlLCBrZWVwcyB0aGUgMTUwXHUyMDEzMjAwIHdvcmQgbGVuZ3RoLCBhbmQgcmVhZHMgbGlrZSBhIHJlYWwgZW1haWwgLyBzdXJ2ZXkgYW5zd2VyLiJ9XSwic2NvcmluZ05vdGUiOiJDRUxQSVAgV3JpdGluZyBpcyByYXRlZCBieSBodW1hbiByYXRlcnMgb24gYSBzY2FsZSBmcm9tIE0gdG8gMTIgdGhhdCBtYXBzIDE6MSB0byB0aGUgQ2FuYWRpYW4gTGFuZ3VhZ2UgQmVuY2htYXJrcyAoQ0xCKS4gRWFjaCB0YXNrIGlzIGp1ZGdlZCBob2xpc3RpY2FsbHkgb24gZm91ciBkaW1lbnNpb25zIFx1MjAxNCBDb250ZW50L0NvaGVyZW5jZSwgVm9jYWJ1bGFyeSwgUmVhZGFiaWxpdHkgYW5kIFRhc2sgRnVsZmlsbG1lbnQuIFRoZXJlIGlzIG5vIHNpbmdsZSBcdTIwMThjb3JyZWN0XHUyMDE5IGFuc3dlciwgc28gdXNlIHRoZSBzYW1wbGUgcmVzcG9uc2VzIGFuZCB0aGUgc2VsZi1jaGVjayBiZWxvdyB0byBzZWUgd2hlcmUgeW91ciB3cml0aW5nIHNpdHMgYW5kIHdoYXQgdG8gaW1wcm92ZS4ifTsKKGZ1bmN0aW9uKCl7CiAgInVzZSBzdHJpY3QiOwogIGlmKHdpbmRvdy5fX2NscHdJbml0KSByZXR1cm47IHdpbmRvdy5fX2NscHdJbml0ID0gdHJ1ZTsKCiAgdmFyIExTID0gImFlNHVfY2xwd19zMXQxX3YxIjsKICB2YXIgc3RhdGUgPSB7IGFjdGl2ZToxLCBzYW1wbGVzOnsxOmZhbHNlLDI6ZmFsc2V9LCB0YWI6ezE6MCwyOjB9LCBvcHQ6bnVsbCwKICAgICAgICAgICAgICAgIHRleHQ6ezE6IiIsMjoiIn0sIHJ1YnJpYzp7MTp7fSwyOnt9fSwKICAgICAgICAgICAgICAgIHRpbWVyOnsxOntyZW06V0RBVEEudGFza3NbMF0ubWludXRlcyo2MCxydW46ZmFsc2UsaXY6bnVsbH0sCiAgICAgICAgICAgICAgICAgICAgICAgIDI6e3JlbTpXREFUQS50YXNrc1sxXS5taW51dGVzKjYwLHJ1bjpmYWxzZSxpdjpudWxsfX0gfTsKCiAgLy8gLS0tLS0tLS0tLSBoZWxwZXJzIC0tLS0tLS0tLS0KICBmdW5jdGlvbiBlc2Mocyl7IHJldHVybiBTdHJpbmcocykucmVwbGFjZSgvJi9nLCImYW1wOyIpLnJlcGxhY2UoLzwvZywiJmx0OyIpLnJlcGxhY2UoLz4vZywiJmd0OyIpOyB9CiAgZnVuY3Rpb24gd2Mocyl7IHZhciBtPShzfHwiIikudHJpbSgpLm1hdGNoKC9cUysvZyk7IHJldHVybiBtP20ubGVuZ3RoOjA7IH0KICBmdW5jdGlvbiBmbXQoc2VjKXsgc2VjPU1hdGgubWF4KDAsc2VjfDApOyB2YXIgbT1NYXRoLmZsb29yKHNlYy82MCksIHM9c2VjJTYwOyByZXR1cm4gKG08MTA\/IjAiOiIiKSttKyI6IisoczwxMD8iMCI6IiIpK3M7IH0KICBmdW5jdGlvbiBsb2FkKCl7IHRyeXsgdmFyIG89SlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShMUykpOyBpZihvJiZ0eXBlb2Ygbz09PSJvYmplY3QiKXsKICAgICAgICBzdGF0ZS50ZXh0WzFdPW8udDF8fCIiOyBzdGF0ZS50ZXh0WzJdPW8udDJ8fCIiOyBzdGF0ZS5vcHQ9by5vcHR8fG51bGw7CiAgICAgICAgc3RhdGUucnVicmljWzFdPW8ucjF8fHt9OyBzdGF0ZS5ydWJyaWNbMl09by5yMnx8e307IH0gfWNhdGNoKGUpe30gfQogIGZ1bmN0aW9uIHNhdmUoKXsgdHJ5eyBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShMUywgSlNPTi5zdHJpbmdpZnkoewogICAgICAgIHQxOnN0YXRlLnRleHRbMV0sIHQyOnN0YXRlLnRleHRbMl0sIG9wdDpzdGF0ZS5vcHQsIHIxOnN0YXRlLnJ1YnJpY1sxXSwgcjI6c3RhdGUucnVicmljWzJdIH0pKTsgfWNhdGNoKGUpe30KICAgICAgICBmbGFzaFNhdmVkKCk7IH0KICB2YXIgc2F2ZWRUTz1udWxsOwogIGZ1bmN0aW9uIGZsYXNoU2F2ZWQoKXsgdmFyIGVsPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjbHB3U2F2ZWQiKTsgaWYoIWVsKSByZXR1cm47CiAgICAgICAgZWwuY2xhc3NMaXN0LmFkZCgiY2xwdy1zYXZlZC1vbiIpOyBpZihzYXZlZFRPKSBjbGVhclRpbWVvdXQoc2F2ZWRUTyk7CiAgICAgICAgc2F2ZWRUTz1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7IGVsLmNsYXNzTGlzdC5yZW1vdmUoImNscHctc2F2ZWQtb24iKTsgfSwxMjAwKTsgfQoKICAvLyAtLS0tLS0tLS0tIENTUyAtLS0tLS0tLS0tCiAgdmFyIENTUyA9ICIiCiAgKyIuY2xwdy13cmFwey0tbmF2eTojMDUwRTIwOy0tYjkwMDojMEQyMzUyOy0tYjcwMDojMTI0NUE4Oy0tYjUwMDojMjU2M0VCOy0tYjQwMDojM0I4MkY2Oy0tYjIwMDojOTNDNUZEOy0tYjEwMDojREJFQUZFOy0tYjUwOiNFRkY2RkY7LS10ZWFsOiMwRDk0ODg7LS1ncmVlbjojMTBCOTgxOy0tZ3JlZW41MDojRUNGREY1Oy0tcm9zZTojRjQzRjVFOy0tcm9zZTUwOiNGRkYxRjM7LS1vcmFuZ2U6I0Y5NzMxNjstLWFtYmVyNTA6I0ZGRkJFQjstLXRleHQ6IzBGMTcyQTstLW11dGVkOiM0NzU1Njk7LS1zdWJ0bGU6Izk0QTNCODstLWJvcmRlcjojRTJFOEYwOy0tY3JpbXNvbjojQjQyQjNDOy0tcGFnZTojRjhGQUZGO2ZvbnQtZmFtaWx5OidQbHVzIEpha2FydGEgU2Fucycsc3lzdGVtLXVpLC1hcHBsZS1zeXN0ZW0sU2Vnb2UgVUksUm9ib3RvLHNhbnMtc2VyaWY7Y29sb3I6dmFyKC0tdGV4dCk7bWF4LXdpZHRoOjExNDBweDttYXJnaW46MCBhdXRvO3BhZGRpbmc6MTZweCAxNnB4IDU2cHg7bGluZS1oZWlnaHQ6MS41NTtmb250LXNpemU6MTZweDt9IgogICsiLmNscHctd3JhcCAqLC5jbHB3LXdyYXAgKjo6YmVmb3JlLC5jbHB3LXdyYXAgKjo6YWZ0ZXJ7Ym94LXNpemluZzpib3JkZXItYm94O30iCiAgKyIuY2xwdy13cmFwIGJ1dHRvbntmb250LWZhbWlseTppbmhlcml0O2N1cnNvcjpwb2ludGVyO30iCiAgKyIuY2xwdy13cmFwIGgxLC5jbHB3LXdyYXAgaDIsLmNscHctd3JhcCBoMywuY2xwdy13cmFwIHB7bWFyZ2luOjA7fSIKICAvLyBoZXJvCiAgKyIuY2xwdy1oZXJve3Bvc2l0aW9uOnJlbGF0aXZlO292ZXJmbG93OmhpZGRlbjtib3JkZXItcmFkaXVzOjIycHg7YmFja2dyb3VuZDp2YXIoLS1uYXZ5KTtjb2xvcjojZmZmO3BhZGRpbmc6MzRweCAzOHB4O2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47Z2FwOjEzcHg7YWxpZ24taXRlbXM6ZmxleC1zdGFydDtib3gtc2hhZG93OjAgMjBweCA0MHB4IC0yMHB4IHJnYmEoNSwxNCwzMiwuNDUpLDAgNHB4IDEycHggLTZweCByZ2JhKDUsMTQsMzIsLjMpO30iCiAgKyIuY2xwdy1hdXJvcmF7cG9zaXRpb246YWJzb2x1dGU7aW5zZXQ6MDtwb2ludGVyLWV2ZW50czpub25lO30iCiAgKyIuY2xwdy1hdXJvcmEgc3Bhbntwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXItcmFkaXVzOjUwJTtmaWx0ZXI6Ymx1cig2MHB4KTtvcGFjaXR5Oi41O2FuaW1hdGlvbjpjbHB3RmxvYXQgMTRzIGVhc2UtaW4tb3V0IGluZmluaXRlIGFsdGVybmF0ZTt9IgogICsiLmNscHctYXVyb3JhIHNwYW46bnRoLWNoaWxkKDEpe3dpZHRoOjQyMHB4O2hlaWdodDo0MjBweDtsZWZ0Oi0xMjBweDt0b3A6LTIwMHB4O2JhY2tncm91bmQ6cmFkaWFsLWdyYWRpZW50KGNpcmNsZSwjMTI0NUE4IDAlLHRyYW5zcGFyZW50IDcwJSk7fSIKICArIi5jbHB3LWF1cm9yYSBzcGFuOm50aC1jaGlsZCgyKXt3aWR0aDozODBweDtoZWlnaHQ6MzgwcHg7cmlnaHQ6LTgwcHg7dG9wOi0xNjBweDtiYWNrZ3JvdW5kOnJhZGlhbC1ncmFkaWVudChjaXJjbGUsIzBEOTQ4OCAwJSx0cmFuc3BhcmVudCA3MCUpO2FuaW1hdGlvbi1kZWxheTotNHM7fSIKICArIi5jbHB3LWF1cm9yYSBzcGFuOm50aC1jaGlsZCgzKXt3aWR0aDozNDBweDtoZWlnaHQ6MzQwcHg7cmlnaHQ6MjIlO2JvdHRvbTotMjQwcHg7YmFja2dyb3VuZDpyYWRpYWwtZ3JhZGllbnQoY2lyY2xlLCMyNTYzRUIgMCUsdHJhbnNwYXJlbnQgNzAlKTthbmltYXRpb24tZGVsYXk6LThzO30iCiAgKyJAa2V5ZnJhbWVzIGNscHdGbG9hdHtmcm9te3RyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLDAsMCkgc2NhbGUoMSk7fXRve3RyYW5zZm9ybTp0cmFuc2xhdGUzZCg0MHB4LDI2cHgsMCkgc2NhbGUoMS4xMik7fX0iCiAgKyIuY2xwdy1oYmFkZ2Vze2Rpc3BsYXk6ZmxleDtnYXA6MTBweDthbGlnbi1pdGVtczpjZW50ZXI7ZmxleC13cmFwOndyYXA7cG9zaXRpb246cmVsYXRpdmU7fSIKICArIi5jbHB3LWJicmFuZHtiYWNrZ3JvdW5kOnZhcigtLWNyaW1zb24pO2NvbG9yOiNmZmY7Zm9udC13ZWlnaHQ6ODAwO2ZvbnQtc2l6ZToxMnB4O2xldHRlci1zcGFjaW5nOi4xMmVtO3BhZGRpbmc6NXB4IDEycHg7Ym9yZGVyLXJhZGl1czo2cHg7fSIKICArIi5jbHB3LWJzZXR7Y29sb3I6dmFyKC0tYjIwMCk7Zm9udC1zaXplOjEzcHg7Zm9udC13ZWlnaHQ6NjAwO30iCiAgKyIuY2xwdy1oZXJvIGgxe3Bvc2l0aW9uOnJlbGF0aXZlO2ZvbnQtc2l6ZTpjbGFtcCgyNnB4LDR2dyw0MHB4KTtmb250LXdlaWdodDo4MDA7bGV0dGVyLXNwYWNpbmc6LS4wMmVtO2xpbmUtaGVpZ2h0OjEuMTI7fSIKICArIi5jbHB3LWhlcm8tc3Vie3Bvc2l0aW9uOnJlbGF0aXZlO2NvbG9yOiNDN0QyRTg7Zm9udC1zaXplOjE1cHg7bWF4LXdpZHRoOjYwY2g7fSIKICArIi5jbHB3LWhjaGlwc3tkaXNwbGF5OmZsZXg7Z2FwOjhweDtmbGV4LXdyYXA6d3JhcDtwb3NpdGlvbjpyZWxhdGl2ZTt9IgogICsiLmNscHctY2hpcHtiYWNrZ3JvdW5kOnJnYmEoMjU1LDI1NSwyNTUsLjA5KTtib3JkZXI6MXB4IHNvbGlkIHJnYmEoMTQ3LDE5NywyNTMsLjI1KTtjb2xvcjojREJFQUZFO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtd2VpZ2h0OjYwMDtwYWRkaW5nOjZweCAxNHB4O2JvcmRlci1yYWRpdXM6MzJweDtiYWNrZHJvcC1maWx0ZXI6Ymx1cig0cHgpO3RyYW5zaXRpb246dHJhbnNmb3JtIC4yNXMgZWFzZSxiYWNrZ3JvdW5kIC4yNXMgZWFzZTt9IgogICsiLmNscHctY2hpcDpob3Zlcnt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMnB4KTtiYWNrZ3JvdW5kOnJnYmEoMjU1LDI1NSwyNTUsLjE1KTt9IgogICsiLmNscHctY3Rhe3Bvc2l0aW9uOnJlbGF0aXZlO2JhY2tncm91bmQ6dmFyKC0tYjUwMCk7Y29sb3I6I2ZmZjtib3JkZXI6bm9uZTtib3JkZXItcmFkaXVzOjEwcHg7Zm9udC1zaXplOjE2cHg7Zm9udC13ZWlnaHQ6NzAwO3BhZGRpbmc6MTNweCAzNHB4O21hcmdpbi10b3A6MnB4O2JveC1zaGFkb3c6MCAxMHB4IDIycHggLThweCByZ2JhKDM3LDk5LDIzNSwuNjUpO3RyYW5zaXRpb246dHJhbnNmb3JtIC4yMnMgZWFzZSxib3gtc2hhZG93IC4yMnMgZWFzZSxiYWNrZ3JvdW5kIC4yMnMgZWFzZTt9IgogICsiLmNscHctY3RhOmhvdmVye3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0ycHgpO2JhY2tncm91bmQ6dmFyKC0tYjQwMCk7Ym94LXNoYWRvdzowIDE0cHggMjZweCAtOHB4IHJnYmEoMzcsOTksMjM1LC43NSk7fSIKICAvLyB0b29sYmFyCiAgKyIuY2xwdy10b29sc3twb3NpdGlvbjpzdGlja3k7dG9wOjhweDt6LWluZGV4OjYwO2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjEwcHg7ZmxleC13cmFwOndyYXA7YmFja2dyb3VuZDpyZ2JhKDI1NSwyNTUsMjU1LC45Myk7YmFja2Ryb3AtZmlsdGVyOmJsdXIoOHB4KTtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWJvcmRlcik7Ym9yZGVyLXJhZGl1czoxNnB4O3BhZGRpbmc6OHB4IDEycHg7bWFyZ2luOjE4cHggMCAwO2JveC1zaGFkb3c6MCA4cHggMjRweCAtMTRweCByZ2JhKDE1LDIzLDQyLC4yNSksMCAycHggNnB4IC00cHggcmdiYSgxNSwyMyw0MiwuMTIpO21pbi1oZWlnaHQ6NTJweDt9IgogICsiLmNscHctd2NvdW50e2ZvbnQtd2VpZ2h0OjgwMDtmb250LXNpemU6MTNweDtjb2xvcjp2YXIoLS1iOTAwKTtiYWNrZ3JvdW5kOnZhcigtLWI1MCk7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1iMTAwKTtib3JkZXItcmFkaXVzOjMycHg7cGFkZGluZzo3cHggMTRweDt9IgogICsiLmNscHctc3BhY2Vye2ZsZXg6MTt9IgogICsiLmNscHctc2F2ZWR7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NzAwO2NvbG9yOnZhcigtLWdyZWVuKTtvcGFjaXR5OjA7dHJhbnNpdGlvbjpvcGFjaXR5IC4ycyBlYXNlO30iCiAgKyIuY2xwdy1zYXZlZC1vbntvcGFjaXR5OjE7fSIKICArIi5jbHB3LXRidG57Ym9yZGVyLXJhZGl1czoxMHB4O2ZvbnQtc2l6ZToxM3B4O2ZvbnQtd2VpZ2h0OjcwMDtwYWRkaW5nOjlweCAxNnB4O2JvcmRlcjoxcHggc29saWQgdmFyKC0tYm9yZGVyKTtiYWNrZ3JvdW5kOiNmZmY7Y29sb3I6dmFyKC0tbXV0ZWQpO21pbi1oZWlnaHQ6NDBweDt0cmFuc2l0aW9uOnRyYW5zZm9ybSAuMnMgZWFzZSxib3gtc2hhZG93IC4ycyBlYXNlLGJhY2tncm91bmQgLjJzIGVhc2U7fSIKICArIi5jbHB3LXRidG46aG92ZXJ7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTFweCk7Ym94LXNoYWRvdzowIDZweCAxNHB4IC04cHggcmdiYSgxNSwyMyw0MiwuMyk7fSIKICAvLyBkb3RzCiAgKyIuY2xwdy1zaW17bWFyZ2luLXRvcDoxOHB4O30iCiAgKyIuY2xwdy1kb3Rze2Rpc3BsYXk6ZmxleDtnYXA6NnB4O21hcmdpbjowIDAgMTBweCAycHg7fSIKICArIi5jbHB3LWRvdHtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWJvcmRlcik7YmFja2dyb3VuZDojZmZmO2NvbG9yOnZhcigtLXN1YnRsZSk7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NzAwO2JvcmRlci1yYWRpdXM6MzJweDtwYWRkaW5nOjVweCAxNHB4O2N1cnNvcjpwb2ludGVyO3RyYW5zaXRpb246YmFja2dyb3VuZCAuMjVzIGVhc2UsY29sb3IgLjI1cyBlYXNlO30iCiAgKyIuY2xwdy1kb3Qub257YmFja2dyb3VuZDp2YXIoLS1iNTAwKTtib3JkZXItY29sb3I6dmFyKC0tYjUwMCk7Y29sb3I6I2ZmZjt9IgogICsiLmNscHctZG90LmZpbGxlZHtiYWNrZ3JvdW5kOnZhcigtLWIxMDApO2JvcmRlci1jb2xvcjp2YXIoLS1iMjAwKTtjb2xvcjp2YXIoLS1iOTAwKTt9IgogIC8vIGNhdCBjYXJkCiAgKyIuY2xwdy1jYXR7cG9zaXRpb246cmVsYXRpdmU7Ym9yZGVyOjFweCBzb2xpZCAjRDNEOUUwO2JvcmRlci1yYWRpdXM6MTBweDtiYWNrZ3JvdW5kOiNmZmY7Ym94LXNoYWRvdzowIDEwcHggMzBweCAtMThweCByZ2JhKDE1LDIzLDQyLC4yMiksMCAycHggOHB4IC01cHggcmdiYSgxNSwyMyw0MiwuMSk7fSIKICArIi5jbHB3LXRhc2t7ZGlzcGxheTpub25lO30iCiAgKyIuY2xwdy10YXNrLm9ue2Rpc3BsYXk6YmxvY2s7fSIKICArIi5jbHB3LWJhcntkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDoxMnB4O2JhY2tncm91bmQ6I0U4RUJFRjtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjRDNEOUUwO2JvcmRlci1yYWRpdXM6MTBweCAxMHB4IDAgMDtwYWRkaW5nOjlweCAxNHB4O21pbi1oZWlnaHQ6NDRweDt9IgogICsiLmNscHctYmFyLXR7Zm9udC1zaXplOjEzcHg7Zm9udC13ZWlnaHQ6NzAwO2NvbG9yOiMxRjI5Mzc7ZmxleDoxO21pbi13aWR0aDowO30iCiAgKyIuY2xwdy1iYXItdGltZXtmb250LXNpemU6MTJweDtjb2xvcjojMUYyOTM3O3doaXRlLXNwYWNlOm5vd3JhcDt9IgogICsiLmNscHctYmFyLXRpbWUgYntmb250LXdlaWdodDo4MDA7Zm9udC12YXJpYW50LW51bWVyaWM6dGFidWxhci1udW1zO30iCiAgKyIuY2xwdy1iYXItdGltZS5sb3cgYntjb2xvcjp2YXIoLS1yb3NlKTt9IgogIC8vIHNwbGl0CiAgKyIuY2xwdy1zcGxpdHtkaXNwbGF5OmdyaWQ7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOm1pbm1heCgyMjBweCwyOTBweCkgMWZyO30iCiAgKyIuY2xwdy1yZWFke2JhY2tncm91bmQ6I0Y0RjZGODtib3JkZXItcmlnaHQ6MXB4IHNvbGlkICNFM0U2RUE7cGFkZGluZzoxNnB4IDE2cHggMThweDt9IgogICsiLmNscHctd3JpdGV7YmFja2dyb3VuZDojRUFGNEY3O3BhZGRpbmc6MTZweCAxOHB4IDE4cHg7fSIKICArIi5jbHB3LXJoZWFke2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpmbGV4LXN0YXJ0O2dhcDo4cHg7bWFyZ2luLWJvdHRvbTo4cHg7fSIKICArIi5jbHB3LWluZm97ZmxleDpub25lO3dpZHRoOjE4cHg7aGVpZ2h0OjE4cHg7bWFyZ2luLXRvcDoxcHg7Ym9yZGVyLXJhZGl1czo1MCU7YmFja2dyb3VuZDp2YXIoLS1iNTAwKTtjb2xvcjojZmZmO2ZvbnQtd2VpZ2h0OjgwMDtmb250LXNpemU6MTFweDtmb250LXN0eWxlOml0YWxpYztkaXNwbGF5OmlubGluZS1mbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2ZvbnQtZmFtaWx5Okdlb3JnaWEsc2VyaWY7fSIKICArIi5jbHB3LXJoZWFkIHB7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NzAwO2NvbG9yOnZhcigtLWI5MDApO30iCiAgKyIuY2xwdy1zY2VuYXJpby1oe2ZvbnQtc2l6ZToxM3B4O2ZvbnQtd2VpZ2h0OjgwMDtjb2xvcjojMzM0MTU1O21hcmdpbi1ib3R0b206NHB4O30iCiAgKyIuY2xwdy1zY2VuYXJpb3tmb250LXNpemU6MTMuNXB4O2NvbG9yOiMzMzQxNTU7bGluZS1oZWlnaHQ6MS42O30iCiAgKyIuY2xwdy1zYW10b2dnbGV7bWFyZ2luLXRvcDoxNHB4O3dpZHRoOjEwMCU7YmFja2dyb3VuZDojZmZmO2JvcmRlcjoxLjVweCBzb2xpZCB2YXIoLS1jcmltc29uKTtjb2xvcjp2YXIoLS1jcmltc29uKTtmb250LXdlaWdodDo3MDA7Zm9udC1zaXplOjEzLjVweDtib3JkZXItcmFkaXVzOjlweDtwYWRkaW5nOjExcHggMTJweDt0ZXh0LWFsaWduOmNlbnRlcjt0cmFuc2l0aW9uOmJhY2tncm91bmQgLjJzIGVhc2UsY29sb3IgLjJzIGVhc2U7fSIKICArIi5jbHB3LXNhbXRvZ2dsZTpob3ZlcntiYWNrZ3JvdW5kOnZhcigtLWNyaW1zb24pO2NvbG9yOiNmZmY7fSIKICArIi5jbHB3LXByb21wdHJvd3tkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6ZmxleC1zdGFydDtnYXA6OHB4O21hcmdpbi1ib3R0b206OHB4O30iCiAgKyIuY2xwdy1wcm9tcHRyb3cgcHtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo3MDA7Y29sb3I6dmFyKC0tYjkwMCk7fSIKICArIi5jbHB3LWJ1bGxldHN7bWFyZ2luOjAgMCAxMnB4IDA7cGFkZGluZy1sZWZ0OjIwcHg7Y29sb3I6IzMzNDE1NTtmb250LXNpemU6MTMuNXB4O30iCiAgKyIuY2xwdy1idWxsZXRzIGxpe21hcmdpbjozcHggMDt9IgogICsiLmNscHctb3B0c3tkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2dhcDo4cHg7bWFyZ2luOjAgMCAxMnB4O30iCiAgKyIuY2xwdy1vcHR7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmZsZXgtc3RhcnQ7Z2FwOjlweDtiYWNrZ3JvdW5kOiNmZmY7Ym9yZGVyOjFweCBzb2xpZCAjRDZFOEVEO2JvcmRlci1yYWRpdXM6OXB4O3BhZGRpbmc6MTBweCAxMnB4O2N1cnNvcjpwb2ludGVyO2ZvbnQtc2l6ZToxMy41cHg7Y29sb3I6IzMzNDE1NTt0cmFuc2l0aW9uOmJvcmRlci1jb2xvciAuMnMgZWFzZSxiYWNrZ3JvdW5kIC4ycyBlYXNlO30iCiAgKyIuY2xwdy1vcHQ6aG92ZXJ7Ym9yZGVyLWNvbG9yOnZhcigtLWI0MDApO30iCiAgKyIuY2xwdy1vcHQuc2Vse2JvcmRlci1jb2xvcjp2YXIoLS1iNTAwKTtiYWNrZ3JvdW5kOnZhcigtLWI1MCk7fSIKICArIi5jbHB3LW9wdCBpbnB1dHttYXJnaW4tdG9wOjNweDthY2NlbnQtY29sb3I6dmFyKC0tYjUwMCk7ZmxleDpub25lO30iCiAgKyIuY2xwdy10YXt3aWR0aDoxMDAlO21pbi1oZWlnaHQ6MjYwcHg7cmVzaXplOnZlcnRpY2FsO2JvcmRlcjoxcHggc29saWQgI0M5RDZEYztib3JkZXItcmFkaXVzOjhweDtwYWRkaW5nOjEzcHggMTRweDtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6ZToxNC41cHg7bGluZS1oZWlnaHQ6MS42O2NvbG9yOiMwRjE3MkE7YmFja2dyb3VuZDojZmZmO2JveC1zaGFkb3c6aW5zZXQgMCAxcHggM3B4IHJnYmEoMTUsMjMsNDIsLjA1KTt9IgogICsiLmNscHctdGE6Zm9jdXN7b3V0bGluZTpub25lO2JvcmRlci1jb2xvcjp2YXIoLS1iNDAwKTtib3gtc2hhZG93OjAgMCAwIDNweCByZ2JhKDU5LDEzMCwyNDYsLjE1KTt9IgogICsiLmNscHctd21ldGVye2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjEwcHg7ZmxleC13cmFwOndyYXA7bWFyZ2luLXRvcDo5cHg7fSIKICArIi5jbHB3LXdwaWxse2ZvbnQtd2VpZ2h0OjgwMDtmb250LXNpemU6MTNweDtib3JkZXItcmFkaXVzOjMycHg7cGFkZGluZzo2cHggMTRweDtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWJvcmRlcik7YmFja2dyb3VuZDojZmZmO2NvbG9yOnZhcigtLW11dGVkKTt9IgogICsiLmNscHctd3BpbGwubG93e2NvbG9yOnZhcigtLW11dGVkKTt9IgogICsiLmNscHctd3BpbGwuZ29vZHtjb2xvcjojMDQ3ODU3O2JhY2tncm91bmQ6dmFyKC0tZ3JlZW41MCk7Ym9yZGVyLWNvbG9yOiNBN0YzRDA7fSIKICArIi5jbHB3LXdwaWxsLm92ZXJ7Y29sb3I6I0I0NTMwOTtiYWNrZ3JvdW5kOnZhcigtLWFtYmVyNTApO2JvcmRlci1jb2xvcjojRkRFNjhBO30iCiAgKyIuY2xwdy13cGlsbC5tYXh7Y29sb3I6I0JFMTIzQztiYWNrZ3JvdW5kOnZhcigtLXJvc2U1MCk7Ym9yZGVyLWNvbG9yOiNGRUNERDM7fSIKICArIi5jbHB3LXRtcntkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDo2cHg7bWFyZ2luLWxlZnQ6YXV0bzt9IgogICsiLmNscHctdG1yLWJ0bntib3JkZXI6MXB4IHNvbGlkIHZhcigtLWJvcmRlcik7YmFja2dyb3VuZDojZmZmO2NvbG9yOnZhcigtLW11dGVkKTtmb250LXdlaWdodDo3MDA7Zm9udC1zaXplOjEyLjVweDtib3JkZXItcmFkaXVzOjhweDtwYWRkaW5nOjdweCAxMnB4O3RyYW5zaXRpb246YmFja2dyb3VuZCAuMnMgZWFzZSxjb2xvciAuMnMgZWFzZSxib3JkZXItY29sb3IgLjJzIGVhc2U7fSIKICArIi5jbHB3LXRtci1idG46aG92ZXJ7Ym9yZGVyLWNvbG9yOnZhcigtLWI0MDApO2NvbG9yOnZhcigtLWI3MDApO30iCiAgKyIuY2xwdy10bXItYnRuLnJ1bntiYWNrZ3JvdW5kOnZhcigtLWI1MDApO2JvcmRlci1jb2xvcjp2YXIoLS1iNTAwKTtjb2xvcjojZmZmO30iCiAgLy8gc2FtcGxlIHBhbmVsCiAgKyIuY2xwdy1zYW1wbGVze21hcmdpbi10b3A6MTRweDtib3JkZXItdG9wOjFweCBkYXNoZWQgI0QzRDlFMDtwYWRkaW5nOjE2cHggMThweCAyMHB4O2JhY2tncm91bmQ6I2ZmZjtib3JkZXItcmFkaXVzOjAgMCAxMHB4IDEwcHg7fSIKICArIi5jbHB3LXNhbXBsZXNbaGlkZGVuXXtkaXNwbGF5Om5vbmU7fSIKICArIi5jbHB3LXNhbW5vdGV7Zm9udC1zaXplOjEyLjVweDtjb2xvcjp2YXIoLS1tdXRlZCk7bWFyZ2luLWJvdHRvbToxMnB4O30iCiAgKyIuY2xwdy10YWJze2Rpc3BsYXk6ZmxleDtnYXA6OHB4O2ZsZXgtd3JhcDp3cmFwO21hcmdpbi1ib3R0b206MTJweDt9IgogICsiLmNscHctdGFie2JvcmRlcjoxcHggc29saWQgI0Q5REVFNTtiYWNrZ3JvdW5kOiNGMUYzRjY7Y29sb3I6IzQ3NTU2OTtmb250LXdlaWdodDo3MDA7Zm9udC1zaXplOjEzcHg7Ym9yZGVyLXJhZGl1czo4cHg7cGFkZGluZzo5cHggMTZweDt0cmFuc2l0aW9uOmJhY2tncm91bmQgLjJzIGVhc2UsY29sb3IgLjJzIGVhc2U7fSIKICArIi5jbHB3LXRhYi5vbntiYWNrZ3JvdW5kOnZhcigtLWNyaW1zb24pO2JvcmRlci1jb2xvcjp2YXIoLS1jcmltc29uKTtjb2xvcjojZmZmO30iCiAgKyIuY2xwdy1zYW1ib2R5e2JhY2tncm91bmQ6I0Y3RjhGQTtib3JkZXI6MXB4IHNvbGlkICNFN0VBRUU7Ym9yZGVyLXJhZGl1czoxMHB4O3BhZGRpbmc6MTZweCAxOHB4O30iCiAgKyIuY2xwdy1zYW1sdmx7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6ODAwO2xldHRlci1zcGFjaW5nOi4wNmVtO3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZTtjb2xvcjp2YXIoLS1jcmltc29uKTttYXJnaW4tYm90dG9tOjhweDt9IgogICsiLmNscHctc2FtdGV4dHtmb250LXNpemU6MTRweDtjb2xvcjojMUYyOTM3O2xpbmUtaGVpZ2h0OjEuNzt3aGl0ZS1zcGFjZTpwcmUtd3JhcDt9IgogICsiLmNscHctc2FtaGludHttYXJnaW4tdG9wOjEycHg7Zm9udC1zaXplOjEyLjVweDtjb2xvcjojNDc1NTY5O2JhY2tncm91bmQ6I0VFRjJGRjtib3JkZXI6MXB4IHNvbGlkICNEQkUzRkY7Ym9yZGVyLXJhZGl1czo4cHg7cGFkZGluZzo5cHggMTJweDt9IgogICsiLmNscHctc2FtaGludCBie2NvbG9yOnZhcigtLWI5MDApO30iCiAgLy8gcnVicmljIC8gc2NvcmluZwogICsiLmNscHctcGFuZWx7bWFyZ2luLXRvcDoxOHB4O2JhY2tncm91bmQ6I2ZmZjtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWJvcmRlcik7Ym9yZGVyLXJhZGl1czoxNnB4O3BhZGRpbmc6MjBweCAyMnB4O2JveC1zaGFkb3c6MCAxMHB4IDMwcHggLTIwcHggcmdiYSgxNSwyMyw0MiwuMik7fSIKICArIi5jbHB3LXBhbmVsIGgye2ZvbnQtc2l6ZToxOXB4O2ZvbnQtd2VpZ2h0OjgwMDtjb2xvcjp2YXIoLS1iOTAwKTttYXJnaW4tYm90dG9tOjRweDt9IgogICsiLmNscHctcGFuZWwgLmNscHctbGVhZHtmb250LXNpemU6MTMuNXB4O2NvbG9yOnZhcigtLW11dGVkKTttYXJnaW4tYm90dG9tOjE0cHg7fSIKICArIi5jbHB3LXJ1YmdyaWR7ZGlzcGxheTpncmlkO2dyaWQtdGVtcGxhdGUtY29sdW1uczoxZnIgMWZyO2dhcDoxMHB4O30iCiAgKyIuY2xwdy1ydWJ7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmZsZXgtc3RhcnQ7Z2FwOjEwcHg7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1ib3JkZXIpO2JvcmRlci1yYWRpdXM6MTFweDtwYWRkaW5nOjEycHggMTRweDtiYWNrZ3JvdW5kOiNGQ0ZERkY7Y3Vyc29yOnBvaW50ZXI7dHJhbnNpdGlvbjpib3JkZXItY29sb3IgLjJzIGVhc2UsYmFja2dyb3VuZCAuMnMgZWFzZTt9IgogICsiLmNscHctcnViOmhvdmVye2JvcmRlci1jb2xvcjp2YXIoLS1iNDAwKTt9IgogICsiLmNscHctcnViLmRvbmV7Ym9yZGVyLWNvbG9yOiNBN0YzRDA7YmFja2dyb3VuZDp2YXIoLS1ncmVlbjUwKTt9IgogICsiLmNscHctcnViIGlucHV0e21hcmdpbi10b3A6M3B4O2FjY2VudC1jb2xvcjp2YXIoLS1ncmVlbik7ZmxleDpub25lO3dpZHRoOjE2cHg7aGVpZ2h0OjE2cHg7fSIKICArIi5jbHB3LXJ1Yi1re2ZvbnQtd2VpZ2h0OjgwMDtmb250LXNpemU6MTMuNXB4O2NvbG9yOnZhcigtLWI5MDApO30iCiAgKyIuY2xwdy1ydWItZHtmb250LXNpemU6MTIuNXB4O2NvbG9yOnZhcigtLW11dGVkKTtsaW5lLWhlaWdodDoxLjU7bWFyZ2luLXRvcDoycHg7fSIKICArIi5jbHB3LXNjb3JlYm94e21hcmdpbi10b3A6MTRweDtmb250LXNpemU6MTNweDtjb2xvcjojMzM0MTU1O2xpbmUtaGVpZ2h0OjEuNjtiYWNrZ3JvdW5kOnZhcigtLWI1MCk7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1iMTAwKTtib3JkZXItcmFkaXVzOjEycHg7cGFkZGluZzoxNHB4IDE2cHg7fSIKICArIi5jbHB3LXNjb3JlYm94IGJ7Y29sb3I6dmFyKC0tYjkwMCk7fSIKICArIi5jbHB3LWNsYnJvd3tkaXNwbGF5OmZsZXg7Z2FwOjhweDtmbGV4LXdyYXA6d3JhcDttYXJnaW4tdG9wOjEycHg7fSIKICArIi5jbHB3LWNsYnRhZ3tmb250LXNpemU6MTJweDtmb250LXdlaWdodDo3MDA7Y29sb3I6dmFyKC0tYjcwMCk7YmFja2dyb3VuZDojZmZmO2JvcmRlcjoxcHggc29saWQgdmFyKC0tYjEwMCk7Ym9yZGVyLXJhZGl1czozMnB4O3BhZGRpbmc6NnB4IDEzcHg7fSIKICArIi5jbHB3LWZvb3R7bWFyZ2luLXRvcDoxNnB4O2ZvbnQtc2l6ZToxMnB4O2NvbG9yOnZhcigtLXN1YnRsZSk7dGV4dC1hbGlnbjpjZW50ZXI7fSIKICArIkBtZWRpYShtYXgtd2lkdGg6ODIwcHgpey5jbHB3LXNwbGl0e2dyaWQtdGVtcGxhdGUtY29sdW1uczoxZnI7fS5jbHB3LXJlYWR7Ym9yZGVyLXJpZ2h0Om5vbmU7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI0UzRTZFQTt9LmNscHctcnViZ3JpZHtncmlkLXRlbXBsYXRlLWNvbHVtbnM6MWZyO30uY2xwdy1oZXJve3BhZGRpbmc6MjZweCAyMnB4O319IgogIDsKCiAgZnVuY3Rpb24gaW5qZWN0Q1NTKCl7IGlmKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjbHB3U3R5bGUiKSkgcmV0dXJuOwogICAgdmFyIHN0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInN0eWxlIik7IHN0LmlkPSJjbHB3U3R5bGUiOyBzdC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShDU1MpKTsKICAgIChkb2N1bWVudC5oZWFkfHxkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpLmFwcGVuZENoaWxkKHN0KTsgfQoKICAvLyAtLS0tLS0tLS0tIGJ1aWxkIC0tLS0tLS0tLS0KICBmdW5jdGlvbiB0YXNrSFRNTCh0KXsKICAgIHZhciBkPVdEQVRBLnRhc2tzW3QtMV07IHZhciBoPSIiOwogICAgaCs9JzxkaXYgY2xhc3M9ImNscHctdGFzaycrKHQ9PT1zdGF0ZS5hY3RpdmU\/JyBvbic6JycpKyciIGRhdGEtdGFzaz0iJyt0KyciIGlkPSJjbHB3VGFzaycrdCsnIj4nOwogICAgaCs9ICc8ZGl2IGNsYXNzPSJjbHB3LWJhciI+PHNwYW4gY2xhc3M9ImNscHctYmFyLXQiPicrZXNjKGQuYmFyVGl0bGUpKyc8L3NwYW4+JwogICAgICAgKyc8c3BhbiBjbGFzcz0iY2xwdy1iYXItdGltZSIgaWQ9ImNscHdCYXJUaW1lJyt0KyciPlRpbWUgcmVtYWluaW5nOiA8Yj4nK2ZtdChzdGF0ZS50aW1lclt0XS5yZW0pKyc8L2I+PC9zcGFuPicKICAgICAgICsnPGJ1dHRvbiBjbGFzcz0iY2xwdy10bXItYnRuIiBkYXRhLXRuZXh0PSInK3QrJyI+JysodDxXREFUQS50YXNrcy5sZW5ndGg\/J05FWFQnOidET05FJykrJzwvYnV0dG9uPjwvZGl2Pic7CiAgICBoKz0gJzxkaXYgY2xhc3M9ImNscHctc3BsaXQiPic7CiAgICAvLyBsZWZ0CiAgICBoKz0gICc8ZGl2IGNsYXNzPSJjbHB3LXJlYWQiPic7CiAgICBoKz0gICAnPGRpdiBjbGFzcz0iY2xwdy1yaGVhZCI+PHNwYW4gY2xhc3M9ImNscHctaW5mbyI+aTwvc3Bhbj48cD4nK2VzYyhkLnJlYWRIZWFkKSsnPC9wPjwvZGl2Pic7CiAgICBpZihkLnNjZW5hcmlvSGVhZCl7IGgrPSc8ZGl2IGNsYXNzPSJjbHB3LXNjZW5hcmlvLWgiPicrZXNjKGQuc2NlbmFyaW9IZWFkKSsnPC9kaXY+JzsgfQogICAgaCs9ICAgJzxkaXYgY2xhc3M9ImNscHctc2NlbmFyaW8iPicrZXNjKGQuc2NlbmFyaW8pKyc8L2Rpdj4nOwogICAgaCs9ICAgJzxidXR0b24gY2xhc3M9ImNscHctc2FtdG9nZ2xlIiBkYXRhLXNhbXRvZ2dsZT0iJyt0KyciPkNsaWNrIGhlcmUgdG8gdmlldyBzYW1wbGUgcmVzcG9uc2VzPC9idXR0b24+JzsKICAgIGgrPSAgJzwvZGl2Pic7CiAgICAvLyByaWdodAogICAgaCs9ICAnPGRpdiBjbGFzcz0iY2xwdy13cml0ZSI+JzsKICAgIGgrPSAgICc8ZGl2IGNsYXNzPSJjbHB3LXByb21wdHJvdyI+PHNwYW4gY2xhc3M9ImNscHctaW5mbyI+aTwvc3Bhbj48cD4nK2VzYyhkLnByb21wdEhlYWQpKyc8L3A+PC9kaXY+JzsKICAgIGlmKGQuYnVsbGV0cyAmJiBkLmJ1bGxldHMubGVuZ3RoKXsgaCs9Jzx1bCBjbGFzcz0iY2xwdy1idWxsZXRzIj4nOyBkLmJ1bGxldHMuZm9yRWFjaChmdW5jdGlvbihiKXsgaCs9JzxsaT4nK2VzYyhiKSsnPC9saT4nOyB9KTsgaCs9JzwvdWw+JzsgfQogICAgaWYoZC5vcHRpb25zKXsgaCs9JzxkaXYgY2xhc3M9ImNscHctb3B0cyI+JzsgZC5vcHRpb25zLmZvckVhY2goZnVuY3Rpb24obyl7CiAgICAgICAgaCs9JzxsYWJlbCBjbGFzcz0iY2xwdy1vcHQnKyhzdGF0ZS5vcHQ9PT1vLmtleT8nIHNlbCc6JycpKyciIGRhdGEtb3B0d3JhcD0iJytvLmtleSsnIj48aW5wdXQgdHlwZT0icmFkaW8iIG5hbWU9ImNscHdPcHQiIHZhbHVlPSInK28ua2V5KyciJysoc3RhdGUub3B0PT09by5rZXk\/JyBjaGVja2VkJzonJykrJz48c3Bhbj4nK2VzYyhvLmxhYmVsKSsnPC9zcGFuPjwvbGFiZWw+JzsgfSk7CiAgICAgICAgaCs9JzwvZGl2Pic7IH0KICAgIGgrPSAgICc8dGV4dGFyZWEgY2xhc3M9ImNscHctdGEiIGlkPSJjbHB3VGEnK3QrJyIgZGF0YS10YT0iJyt0KyciIHBsYWNlaG9sZGVyPSJUeXBlIHlvdXIgcmVzcG9uc2UgaGVyZS4uLiI+Jytlc2Moc3RhdGUudGV4dFt0XSkrJzwvdGV4dGFyZWE+JzsKICAgIGgrPSAgICc8ZGl2IGNsYXNzPSJjbHB3LXdtZXRlciI+JzsKICAgIGgrPSAgICAgJzxzcGFuIGNsYXNzPSJjbHB3LXdwaWxsIiBpZD0iY2xwd1dwaWxsJyt0KyciPjAgd29yZHM8L3NwYW4+JzsKICAgIGgrPSAgICAgJzxzcGFuIHN0eWxlPSJmb250LXNpemU6MTIuNXB4O2NvbG9yOiM2NDc0OEI7Ij5haW0gJytlc2MoZC53b3JkQWltKSsnPC9zcGFuPic7CiAgICBoKz0gICAgICc8c3BhbiBjbGFzcz0iY2xwdy10bXIiPicKICAgICAgICAgICAgICsnPGJ1dHRvbiBjbGFzcz0iY2xwdy10bXItYnRuIiBkYXRhLXRzdGFydD0iJyt0KyciPlN0YXJ0IHRpbWVyPC9idXR0b24+JwogICAgICAgICAgICAgKyc8YnV0dG9uIGNsYXNzPSJjbHB3LXRtci1idG4iIGRhdGEtdHJlc2V0PSInK3QrJyI+UmVzZXQ8L2J1dHRvbj48L3NwYW4+JzsKICAgIGgrPSAgICc8L2Rpdj4nOwogICAgaCs9ICAnPC9kaXY+JzsKICAgIGgrPSAnPC9kaXY+JzsgLy8gc3BsaXQKICAgIC8vIHNhbXBsZXMKICAgIGgrPSAnPGRpdiBjbGFzcz0iY2xwdy1zYW1wbGVzIiBpZD0iY2xwd1NhbScrdCsnIiBoaWRkZW4+JzsKICAgIGgrPSAgICc8ZGl2IGNsYXNzPSJjbHB3LXNhbW5vdGUiPicrKGQuc2FtTm90ZT9kLnNhbU5vdGU6J1RoZXNlIGFyZSB0aGUgb2ZmaWNpYWwgcHJhY3RpY2Ugc2FtcGxlIHJlc3BvbnNlcyBhdCB0aHJlZSBzY29yZSBsZXZlbHMuIExvd2VyLWxldmVsIHNhbXBsZXMga2VlcCB0aGVpciBvcmlnaW5hbCBtaXN0YWtlcyBvbiBwdXJwb3NlICZtZGFzaDsgc3R1ZHkgd2hhdCBjaGFuZ2VzIGFzIHRoZSBzY29yZSByaXNlcy4nKSsnPC9kaXY+JzsKICAgIGgrPSAgICc8ZGl2IGNsYXNzPSJjbHB3LXRhYnMiIGlkPSJjbHB3VGFicycrdCsnIj4nOwogICAgZC5zYW1wbGVzLmZvckVhY2goZnVuY3Rpb24ocyxpKXsgaCs9JzxidXR0b24gY2xhc3M9ImNscHctdGFiJysoaT09PTA\/JyBvbic6JycpKyciIGRhdGEtdGFiPSInK3QrJyIgZGF0YS1pPSInK2krJyI+Jytlc2Mocy5sZXZlbCkrJzwvYnV0dG9uPic7IH0pOwogICAgaCs9ICAgJzwvZGl2Pic7CiAgICBoKz0gICAnPGRpdiBjbGFzcz0iY2xwdy1zYW1ib2R5IiBpZD0iY2xwd1NhbUJvZHknK3QrJyI+PC9kaXY+JzsKICAgIGgrPSAnPC9kaXY+JzsKICAgIGgrPSc8L2Rpdj4nOwogICAgcmV0dXJuIGg7CiAgfQoKICBmdW5jdGlvbiByZW5kZXIoKXsKICAgIHZhciByb290PWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjbHB3QXBwIik7IGlmKCFyb290KSByZXR1cm47CiAgICB2YXIgbT1XREFUQS5tZXRhLCBoPSIiOwogICAgLy8gaGVybwogICAgaCs9JzxzZWN0aW9uIGNsYXNzPSJjbHB3LWhlcm8iPjxkaXYgY2xhc3M9ImNscHctYXVyb3JhIj48c3Bhbj48L3NwYW4+PHNwYW4+PC9zcGFuPjxzcGFuPjwvc3Bhbj48L2Rpdj4nOwogICAgaCs9ICc8ZGl2IGNsYXNzPSJjbHB3LWhiYWRnZXMiPjxzcGFuIGNsYXNzPSJjbHB3LWJicmFuZCI+Jytlc2MobS5icmFuZCkrJzwvc3Bhbj48c3BhbiBjbGFzcz0iY2xwdy1ic2V0Ij4nK2VzYyhtLnNldCkrJzwvc3Bhbj48L2Rpdj4nOwogICAgaCs9ICc8aDE+Jytlc2MobS50aXRsZSkrJzwvaDE+JzsKICAgIGgrPSAnPHAgY2xhc3M9ImNscHctaGVyby1zdWIiPldyaXRlIHlvdXIgcmVzcG9uc2UsIHRpbWUgeW91cnNlbGYsIHRoZW4gY29tcGFyZSBpdCB3aXRoIG9mZmljaWFsIHNhbXBsZSBhbnN3ZXJzIGF0IHRocmVlIHNjb3JlIGxldmVscyAmbWRhc2g7IENFTFBJUCA0Jm5kYXNoOzUsIDcmbmRhc2g7OCBhbmQgMTAmbmRhc2g7MTIuPC9wPic7CiAgICBoKz0gJzxkaXYgY2xhc3M9ImNscHctaGNoaXBzIj48c3BhbiBjbGFzcz0iY2xwdy1jaGlwIj4yIHRhc2tzPC9zcGFuPjxzcGFuIGNsYXNzPSJjbHB3LWNoaXAiPn4nK20udG90YWxNaW4rJyBtaW51dGVzPC9zcGFuPjxzcGFuIGNsYXNzPSJjbHB3LWNoaXAiPjE1MCZuZGFzaDsyMDAgd29yZHMgZWFjaDwvc3Bhbj48c3BhbiBjbGFzcz0iY2xwdy1jaGlwIj5TYW1wbGUgYW5zd2VycyBpbmNsdWRlZDwvc3Bhbj48L2Rpdj4nOwogICAgaCs9ICc8YnV0dG9uIGNsYXNzPSJjbHB3LWN0YSIgaWQ9ImNscHdTdGFydCI+U3RhcnQgd3JpdGluZzwvYnV0dG9uPic7CiAgICBoKz0nPC9zZWN0aW9uPic7CiAgICAvLyB0b29sYmFyCiAgICBoKz0nPGRpdiBjbGFzcz0iY2xwdy10b29scyI+PHNwYW4gY2xhc3M9ImNscHctd2NvdW50IiBpZD0iY2xwd1RvdFdvcmRzIj5Xb3JkcyAmbWRhc2g7IFRhc2sgMTogMCAmbWlkZG90OyBUYXNrIDI6IDA8L3NwYW4+PHNwYW4gY2xhc3M9ImNscHctc2F2ZWQiIGlkPSJjbHB3U2F2ZWQiPkRyYWZ0IHNhdmVkICYjMTAwMDM7PC9zcGFuPjxzcGFuIGNsYXNzPSJjbHB3LXNwYWNlciI+PC9zcGFuPjxidXR0b24gY2xhc3M9ImNscHctdGJ0biIgaWQ9ImNscHdSZXNldEFsbCI+UmVzZXQgYWxsPC9idXR0b24+PC9kaXY+JzsKICAgIC8vIHNpbQogICAgaCs9JzxzZWN0aW9uIGNsYXNzPSJjbHB3LXNpbSI+PGRpdiBjbGFzcz0iY2xwdy1kb3RzIiBpZD0iY2xwd0RvdHMiPic7CiAgICBXREFUQS50YXNrcy5mb3JFYWNoKGZ1bmN0aW9uKGQpeyBoKz0nPGJ1dHRvbiBjbGFzcz0iY2xwdy1kb3QiIGRhdGEtZG90PSInK2QuaWQrJyI+VGFzayAnK2QuaWQrJyAmbWlkZG90OyAnK2VzYyhkLm5hbWUpKyc8L2J1dHRvbj4nOyB9KTsKICAgIGgrPSc8L2Rpdj48ZGl2IGNsYXNzPSJjbHB3LWNhdCIgaWQ9ImNscHdDYXQiPic7CiAgICBXREFUQS50YXNrcy5mb3JFYWNoKGZ1bmN0aW9uKGQpeyBoKz10YXNrSFRNTChkLmlkKTsgfSk7CiAgICBoKz0nPC9kaXY+PC9zZWN0aW9uPic7CiAgICAvLyBydWJyaWMgcGFuZWwKICAgIGgrPSc8c2VjdGlvbiBjbGFzcz0iY2xwdy1wYW5lbCI+PGgyPlNjb3JlIHlvdXIgb3duIHdyaXRpbmc8L2gyPjxwIGNsYXNzPSJjbHB3LWxlYWQiPlRoZXJlIGlzIG5vIGFuc3dlciBrZXkgZm9yIFdyaXRpbmcuIFJhdGUgZWFjaCByZXNwb25zZSBhZ2FpbnN0IHRoZSBmb3VyIG9mZmljaWFsIENFTFBJUCBkaW1lbnNpb25zLjwvcD4nOwogICAgaCs9JzxkaXYgY2xhc3M9ImNscHctcnViZ3JpZCIgaWQ9ImNscHdSdWJHcmlkIj48L2Rpdj4nOwogICAgaCs9JzxkaXYgY2xhc3M9ImNscHctc2NvcmVib3giPicrZXNjKFdEQVRBLnNjb3JpbmdOb3RlKSsnPGRpdiBjbGFzcz0iY2xwdy1jbGJyb3ciPjxzcGFuIGNsYXNzPSJjbHB3LWNsYnRhZyI+TTwvc3Bhbj48c3BhbiBjbGFzcz0iY2xwdy1jbGJ0YWciPkNMQiA0Jm5kYXNoOzUgJnJhcnI7IGRldmVsb3Bpbmc8L3NwYW4+PHNwYW4gY2xhc3M9ImNscHctY2xidGFnIj5DTEIgNyZuZGFzaDs4ICZyYXJyOyBhZGVxdWF0ZSZuZGFzaDtnb29kPC9zcGFuPjxzcGFuIGNsYXNzPSJjbHB3LWNsYnRhZyI+Q0xCIDkmbmRhc2g7MTIgJnJhcnI7IHN0cm9uZzwvc3Bhbj48L2Rpdj48L2Rpdj4nOwogICAgaCs9Jzwvc2VjdGlvbj4nOwogICAgaCs9JzxkaXYgY2xhc3M9ImNscHctZm9vdCI+QWxsRW5nbGlzaDRVICZtaWRkb3Q7IENFTFBJUCBXcml0aW5nIFByYWN0aWNlICZtaWRkb3Q7ICcrZXNjKFdEQVRBLm1ldGEuc2V0KSsnPC9kaXY+JzsKICAgIHJvb3QuaW5uZXJIVE1MPWg7CiAgICBidWlsZFJ1YnJpYygpOwogICAgV0RBVEEudGFza3MuZm9yRWFjaChmdW5jdGlvbihkKXsgcmVuZGVyU2FtcGxlKGQuaWQpOyB1cGRhdGVXQyhkLmlkKTsgfSk7CiAgICB3aXJlRXZlbnRzKCk7CiAgICByZWZyZXNoRG90cygpOwogICAgdXBkYXRlVG90YWxzKCk7CiAgfQoKICBmdW5jdGlvbiBidWlsZFJ1YnJpYygpewogICAgdmFyIGc9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNscHdSdWJHcmlkIik7IGlmKCFnKSByZXR1cm47IHZhciBoPSIiOwogICAgV0RBVEEucnVicmljLmZvckVhY2goZnVuY3Rpb24ocixpKXsKICAgICAgdmFyIG9uID0gc3RhdGUucnVicmljW3N0YXRlLmFjdGl2ZV0gJiYgc3RhdGUucnVicmljW3N0YXRlLmFjdGl2ZV1baV07CiAgICAgIGgrPSc8bGFiZWwgY2xhc3M9ImNscHctcnViJysob24\/JyBkb25lJzonJykrJyIgZGF0YS1ydWJ3cmFwPSInK2krJyI+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBkYXRhLXJ1Yj0iJytpKyciJysob24\/JyBjaGVja2VkJzonJykrJz48c3Bhbj48c3BhbiBjbGFzcz0iY2xwdy1ydWItayI+Jytlc2Moci5rKSsnPC9zcGFuPjxzcGFuIGNsYXNzPSJjbHB3LXJ1Yi1kIj4nK2VzYyhyLmQpKyc8L3NwYW4+PC9zcGFuPjwvbGFiZWw+JzsKICAgIH0pOwogICAgZy5pbm5lckhUTUw9aDsKICB9CgogIGZ1bmN0aW9uIHJlbmRlclNhbXBsZSh0KXsKICAgIHZhciBkPVdEQVRBLnRhc2tzW3QtMV0sIGk9c3RhdGUudGFiW3RdLCBzPWQuc2FtcGxlc1tpXTsKICAgIHZhciBib2R5PWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjbHB3U2FtQm9keSIrdCk7IGlmKCFib2R5KSByZXR1cm47CiAgICBib2R5LmlubmVySFRNTD0nPGRpdiBjbGFzcz0iY2xwdy1zYW1sdmwiPicrZXNjKHMubGV2ZWwpKyc8L2Rpdj48ZGl2IGNsYXNzPSJjbHB3LXNhbXRleHQiPicrZXNjKHMudGV4dCkrJzwvZGl2PicKICAgICAgKyc8ZGl2IGNsYXNzPSJjbHB3LXNhbWhpbnQiPjxiPldoYXQgc2V0cyB0aGlzIGxldmVsIGFwYXJ0OjwvYj4gJytlc2Mocy5ub3RlKSsnPC9kaXY+JzsKICAgIHZhciB0YWJzPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjbHB3VGFicyIrdCk7IGlmKHRhYnMpeyBBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKHRhYnMuY2hpbGRyZW4sZnVuY3Rpb24oYixiaSl7IGIuY2xhc3NMaXN0LnRvZ2dsZSgib24iLGJpPT09aSk7IH0pOyB9CiAgfQoKICBmdW5jdGlvbiB1cGRhdGVXQyh0KXsKICAgIHZhciBuPXdjKHN0YXRlLnRleHRbdF0pOyB2YXIgcGlsbD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2xwd1dwaWxsIit0KTsgaWYoIXBpbGwpIHJldHVybjsKICAgIHBpbGwudGV4dENvbnRlbnQ9bisobj09PTE\/IiB3b3JkIjoiIHdvcmRzIik7CiAgICBwaWxsLmNsYXNzTmFtZT0iY2xwdy13cGlsbCAiKyhuPDE1MD8ibG93Ijoobjw9MjAwPyJnb29kIjoobjw9MjUwPyJvdmVyIjoibWF4IikpKTsKICAgIHVwZGF0ZVRvdGFscygpOwogIH0KICBmdW5jdGlvbiB1cGRhdGVUb3RhbHMoKXsKICAgIHZhciBlbD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2xwd1RvdFdvcmRzIik7IGlmKGVsKSBlbC5pbm5lckhUTUw9IldvcmRzICZtZGFzaDsgVGFzayAxOiAiK3djKHN0YXRlLnRleHRbMV0pKyIgJm1pZGRvdDsgVGFzayAyOiAiK3djKHN0YXRlLnRleHRbMl0pOwogIH0KCiAgZnVuY3Rpb24gcmVmcmVzaERvdHMoKXsKICAgIHZhciBkb3RzPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjbHB3RG90cyIpOyBpZighZG90cykgcmV0dXJuOwogICAgQXJyYXkucHJvdG90eXBlLmZvckVhY2guY2FsbChkb3RzLmNoaWxkcmVuLGZ1bmN0aW9uKGIpeyB2YXIgaWQ9K2IuZ2V0QXR0cmlidXRlKCJkYXRhLWRvdCIpOwogICAgICBiLmNsYXNzTGlzdC50b2dnbGUoIm9uIixpZD09PXN0YXRlLmFjdGl2ZSk7CiAgICAgIGIuY2xhc3NMaXN0LnRvZ2dsZSgiZmlsbGVkIiwgaWQhPT1zdGF0ZS5hY3RpdmUgJiYgd2Moc3RhdGUudGV4dFtpZF0pPjApOyB9KTsKICAgIFdEQVRBLnRhc2tzLmZvckVhY2goZnVuY3Rpb24oZCl7IHZhciBlbD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2xwd1Rhc2siK2QuaWQpOyBpZihlbCkgZWwuY2xhc3NMaXN0LnRvZ2dsZSgib24iLGQuaWQ9PT1zdGF0ZS5hY3RpdmUpOyB9KTsKICB9CgogIGZ1bmN0aW9uIHN3aXRjaFRhc2sodCl7IHN0YXRlLmFjdGl2ZT10OyByZWZyZXNoRG90cygpOyBidWlsZFJ1YnJpYygpOwogICAgdmFyIGNhdD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2xwd0NhdCIpOyBpZihjYXQmJmNhdC5zY3JvbGxJbnRvVmlldykgY2F0LnNjcm9sbEludG9WaWV3KHtiZWhhdmlvcjoic21vb3RoIixibG9jazoic3RhcnQifSk7IH0KCiAgLy8gdGltZXJzCiAgZnVuY3Rpb24gdGljayh0KXsgdmFyIFQ9c3RhdGUudGltZXJbdF07IGlmKFQucmVtPD0wKXsgc3RvcFRpbWVyKHQpOyByZXR1cm47IH0gVC5yZW0tLTsgcGFpbnRUaW1lKHQpOyBpZihULnJlbTw9MCkgc3RvcFRpbWVyKHQpOyB9CiAgZnVuY3Rpb24gcGFpbnRUaW1lKHQpeyB2YXIgZWw9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNscHdCYXJUaW1lIit0KTsgdmFyIFQ9c3RhdGUudGltZXJbdF07CiAgICBpZihlbCl7IGVsLmlubmVySFRNTD0iVGltZSByZW1haW5pbmc6IDxiPiIrZm10KFQucmVtKSsiPC9iPiI7IGVsLmNsYXNzTGlzdC50b2dnbGUoImxvdyIsVC5yZW08PTEyMCk7IH0KICAgIHZhciBidG49ZG9jdW1lbnQucXVlcnlTZWxlY3RvcignW2RhdGEtdHN0YXJ0PSInK3QrJyJdJyk7IGlmKGJ0bil7IGJ0bi50ZXh0Q29udGVudD1ULnJ1bj8iUGF1c2UgdGltZXIiOihULnJlbTw9MD8iVGltZSB1cCI6IlN0YXJ0IHRpbWVyIik7IGJ0bi5jbGFzc0xpc3QudG9nZ2xlKCJydW4iLFQucnVuKTsgfSB9CiAgZnVuY3Rpb24gc3RhcnRUaW1lcih0KXsgdmFyIFQ9c3RhdGUudGltZXJbdF07IGlmKFQucmVtPD0wKSByZXR1cm47IFQucnVuPXRydWU7IGlmKFQuaXYpIGNsZWFySW50ZXJ2YWwoVC5pdik7IFQuaXY9c2V0SW50ZXJ2YWwoZnVuY3Rpb24oKXt0aWNrKHQpO30sMTAwMCk7IHBhaW50VGltZSh0KTsgfQogIGZ1bmN0aW9uIHN0b3BUaW1lcih0KXsgdmFyIFQ9c3RhdGUudGltZXJbdF07IFQucnVuPWZhbHNlOyBpZihULml2KXsgY2xlYXJJbnRlcnZhbChULml2KTsgVC5pdj1udWxsOyB9IHBhaW50VGltZSh0KTsgfQogIGZ1bmN0aW9uIHRvZ2dsZVRpbWVyKHQpeyBzdGF0ZS50aW1lclt0XS5ydW4\/c3RvcFRpbWVyKHQpOnN0YXJ0VGltZXIodCk7IH0KICBmdW5jdGlvbiByZXNldFRpbWVyKHQpeyBzdG9wVGltZXIodCk7IHN0YXRlLnRpbWVyW3RdLnJlbT1XREFUQS50YXNrc1t0LTFdLm1pbnV0ZXMqNjA7IHBhaW50VGltZSh0KTsgfQoKICAvLyAtLS0tLS0tLS0tIGV2ZW50cyAtLS0tLS0tLS0tCiAgZnVuY3Rpb24gd2lyZUV2ZW50cygpewogICAgdmFyIHJvb3Q9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNscHdBcHAiKTsKICAgIHZhciBzdGFydD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2xwd1N0YXJ0Iik7CiAgICBpZihzdGFydCkgc3RhcnQuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLGZ1bmN0aW9uKCl7IHN3aXRjaFRhc2soMSk7IHN0YXJ0VGltZXIoMSk7IH0pOwogICAgdmFyIHJlc2V0QWxsPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjbHB3UmVzZXRBbGwiKTsKICAgIGlmKHJlc2V0QWxsKSByZXNldEFsbC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsZnVuY3Rpb24oKXsKICAgICAgaWYoIWNvbmZpcm0oIkNsZWFyIGJvdGggZHJhZnRzLCBzZWxlY3RlZCBvcHRpb24gYW5kIHRpbWVycyBvbiB0aGlzIGRldmljZT8iKSkgcmV0dXJuOwogICAgICBzdGF0ZS50ZXh0WzFdPSIiO3N0YXRlLnRleHRbMl09IiI7c3RhdGUub3B0PW51bGw7c3RhdGUucnVicmljPXsxOnt9LDI6e319OwogICAgICByZXNldFRpbWVyKDEpO3Jlc2V0VGltZXIoMik7IHNhdmUoKTsgcmVuZGVyKCk7IH0pOwoKICAgIHJvb3QuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLGZ1bmN0aW9uKGUpewogICAgICB2YXIgZWw9ZS50YXJnZXQuY2xvc2VzdCgiW2RhdGEtZG90XSxbZGF0YS1zYW10b2dnbGVdLFtkYXRhLXRhYl0sW2RhdGEtdHN0YXJ0XSxbZGF0YS10cmVzZXRdLFtkYXRhLXRuZXh0XSIpOyBpZighZWwpIHJldHVybjsKICAgICAgaWYoZWwuaGFzQXR0cmlidXRlKCJkYXRhLWRvdCIpKXsgc3dpdGNoVGFzaygrZWwuZ2V0QXR0cmlidXRlKCJkYXRhLWRvdCIpKTsgfQogICAgICBlbHNlIGlmKGVsLmhhc0F0dHJpYnV0ZSgiZGF0YS1zYW10b2dnbGUiKSl7IHZhciB0PStlbC5nZXRBdHRyaWJ1dGUoImRhdGEtc2FtdG9nZ2xlIik7IHZhciBwPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjbHB3U2FtIit0KTsKICAgICAgICBpZihwKXsgcC5oaWRkZW49IXAuaGlkZGVuOyBlbC50ZXh0Q29udGVudD1wLmhpZGRlbj8iQ2xpY2sgaGVyZSB0byB2aWV3IHNhbXBsZSByZXNwb25zZXMiOiJIaWRlIHNhbXBsZSByZXNwb25zZXMiOyBpZighcC5oaWRkZW4pIHJlbmRlclNhbXBsZSh0KTsgfSB9CiAgICAgIGVsc2UgaWYoZWwuaGFzQXR0cmlidXRlKCJkYXRhLXRhYiIpKXsgdmFyIHR0PStlbC5nZXRBdHRyaWJ1dGUoImRhdGEtdGFiIik7IHN0YXRlLnRhYlt0dF09K2VsLmdldEF0dHJpYnV0ZSgiZGF0YS1pIik7IHJlbmRlclNhbXBsZSh0dCk7IH0KICAgICAgZWxzZSBpZihlbC5oYXNBdHRyaWJ1dGUoImRhdGEtdHN0YXJ0IikpeyB0b2dnbGVUaW1lcigrZWwuZ2V0QXR0cmlidXRlKCJkYXRhLXRzdGFydCIpKTsgfQogICAgICBlbHNlIGlmKGVsLmhhc0F0dHJpYnV0ZSgiZGF0YS10cmVzZXQiKSl7IHJlc2V0VGltZXIoK2VsLmdldEF0dHJpYnV0ZSgiZGF0YS10cmVzZXQiKSk7IH0KICAgICAgZWxzZSBpZihlbC5oYXNBdHRyaWJ1dGUoImRhdGEtdG5leHQiKSl7IHZhciBjdXI9K2VsLmdldEF0dHJpYnV0ZSgiZGF0YS10bmV4dCIpOyBpZihjdXI8V0RBVEEudGFza3MubGVuZ3RoKXsgc3dpdGNoVGFzayhjdXIrMSk7IH0gfQogICAgfSk7CgogICAgcm9vdC5hZGRFdmVudExpc3RlbmVyKCJpbnB1dCIsZnVuY3Rpb24oZSl7IHZhciB0YT1lLnRhcmdldC5jbG9zZXN0KCJbZGF0YS10YV0iKTsgaWYoIXRhKSByZXR1cm47CiAgICAgIHZhciB0PSt0YS5nZXRBdHRyaWJ1dGUoImRhdGEtdGEiKTsgc3RhdGUudGV4dFt0XT10YS52YWx1ZTsgdXBkYXRlV0ModCk7IHJlZnJlc2hEb3RzKCk7IHNhdmUoKTsgfSk7CgogICAgcm9vdC5hZGRFdmVudExpc3RlbmVyKCJjaGFuZ2UiLGZ1bmN0aW9uKGUpewogICAgICB2YXIgb3B0PWUudGFyZ2V0LmNsb3Nlc3QoJ2lucHV0W25hbWU9ImNscHdPcHQiXScpOwogICAgICBpZihvcHQpeyBzdGF0ZS5vcHQ9b3B0LnZhbHVlOyBBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIltkYXRhLW9wdHdyYXBdIiksZnVuY3Rpb24obCl7IGwuY2xhc3NMaXN0LnRvZ2dsZSgic2VsIixsLmdldEF0dHJpYnV0ZSgiZGF0YS1vcHR3cmFwIik9PT1zdGF0ZS5vcHQpOyB9KTsgc2F2ZSgpOyByZXR1cm47IH0KICAgICAgdmFyIHJ1Yj1lLnRhcmdldC5jbG9zZXN0KCJbZGF0YS1ydWJdIik7CiAgICAgIGlmKHJ1Yil7IHZhciBpPStydWIuZ2V0QXR0cmlidXRlKCJkYXRhLXJ1YiIpOyBpZighc3RhdGUucnVicmljW3N0YXRlLmFjdGl2ZV0pIHN0YXRlLnJ1YnJpY1tzdGF0ZS5hY3RpdmVdPXt9OyBzdGF0ZS5ydWJyaWNbc3RhdGUuYWN0aXZlXVtpXT1ydWIuY2hlY2tlZDsKICAgICAgICB2YXIgd3JhcD1ydWIuY2xvc2VzdCgiW2RhdGEtcnVid3JhcF0iKTsgaWYod3JhcCkgd3JhcC5jbGFzc0xpc3QudG9nZ2xlKCJkb25lIixydWIuY2hlY2tlZCk7IHNhdmUoKTsgfQogICAgfSk7CiAgfQoKICBmdW5jdGlvbiBib290KCl7IGxvYWQoKTsgaW5qZWN0Q1NTKCk7IHJlbmRlcigpOyB9CiAgaWYoZG9jdW1lbnQucmVhZHlTdGF0ZT09PSJsb2FkaW5nIikgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsYm9vdCk7IGVsc2UgYm9vdCgpOwp9KSgpOwoK\"));<\/script><\/p>","protected":false},"excerpt":{"rendered":"<p>CELPIP Writing Set 9 Practice Test 2: Task 1 (email) and Task 2 (survey response) with timers and word counter, plus a self-assessment guide. Free, no sign-up.<\/p>","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"page-with-title","meta":{"footnotes":""},"class_list":["post-6398","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/6398","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/comments?post=6398"}],"version-history":[{"count":1,"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/6398\/revisions"}],"predecessor-version":[{"id":6563,"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/6398\/revisions\/6563"}],"wp:attachment":[{"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/media?parent=6398"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}