{"id":6405,"date":"2026-07-11T01:11:11","date_gmt":"2026-07-11T01:11:11","guid":{"rendered":"https:\/\/allenglish4u.com\/celpip-set-7-test-2-reading\/"},"modified":"2026-07-12T03:24:32","modified_gmt":"2026-07-12T03:24:32","slug":"celpip-set-7-test-2-reading","status":"publish","type":"page","link":"https:\/\/allenglish4u.com\/vi\/celpip-set-7-test-2-reading\/","title":{"rendered":"CELPIP Reading \u2014 Set 7 \u00b7 Practice Test 2"},"content":{"rendered":"<div class=\"clpr-wrap\" id=\"clprWrap\">\n<section class=\"clpr-hero\">\n<div class=\"clpr-aurora\"><span><\/span><span><\/span><span><\/span><\/div>\n<div class=\"clpr-hero-badges\"> <span class=\"clpr-badge-brand\">AllEnglish4U<\/span> <span class=\"clpr-badge-set\">CELPIP General &middot; Set 7<\/span> <\/div>\n<h1>Reading Practice Test 2<\/h1>\n<p class=\"clpr-hero-sub\">4 parts &middot; 38 questions &middot; about 55 minutes. Read each passage and choose the best option for every drop-down. Official Paragon question set with verified answer key.<\/p>\n<div class=\"clpr-hero-chips\"> <span class=\"clpr-chip\">Part 1 &middot; Correspondence<\/span> <span class=\"clpr-chip\">Part 2 &middot; Apply a Diagram<\/span> <span class=\"clpr-chip\">Part 3 &middot; Information<\/span> <span class=\"clpr-chip\">Part 4 &middot; Viewpoints<\/span> <\/div>\n<p> <button class=\"clpr-cta\" id=\"clprStart\">Start the Reading Test<\/button> <\/section>\n<div class=\"clpr-toolbar\" id=\"clprToolbar\" hidden> <span class=\"clpr-score-chip\" id=\"clprScoreChip\">0 \/ 38 answered<\/span> <span class=\"clpr-toolbar-spacer\"><\/span> <button class=\"clpr-tbtn\" id=\"clprReset\">Reset<\/button> <button class=\"clpr-tbtn clpr-tbtn-check\" id=\"clprCheck\">Check answers<\/button> <\/div>\n<div class=\"clpr-sim\" id=\"clprSim\" hidden>\n<div class=\"clpr-dots\" id=\"clprDots\"><\/div>\n<div class=\"clpr-cat\" id=\"clprCat\"><\/div>\n<\/p><\/div>\n<div class=\"clpr-results\" id=\"clprResults\" hidden><\/div>\n<\/p><\/div>\n<p><script>eval(atob(\"J3VzZSBzdHJpY3QnOwovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQ0VMUElQIFJlYWRpbmcgXHUyMDE0IFByYWN0aWNlIFRlc3QgMiAoU2V0IDEpCiAgIFNvdXJjZTogUGFyYWdvbiBvZmZpY2lhbCAiUHJhY3RpY2UgVGVzdCAyIFNldCAxIC0gUmVhZGluZyIgKDM3IHBwKS4KICAgQWxsIHN0ZW1zLCBvcHRpb25zIGFuZCBrZXlzIHZlcmlmaWVkIGFnYWluc3QgdGhlIHByaW50ZWQgQW5zd2VyIEtleS4KICAgRGF0YSBtb2RlbDogcGFydHNbXSAtPiB7IHBhc3NhZ2UobGVmdCkgLCBibG9ja3NbXShyaWdodCkgfQogICAgIGJsb2NrLnR5cGU6ICdzdGVtbGlzdCcgfCAnY2xvemUnIHwgJ21hdGNoJwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KdmFyIFJEQVRBID0geyJ0ZXN0TGFiZWwiOiJQcmFjdGljZSBUZXN0IDIiLCJwYXJ0cyI6W3siaWQiOjEsIm5hbWUiOiJSZWFkaW5nIFBhcnQgMTogUmVhZGluZyBDb3JyZXNwb25kZW5jZSIsInRpbWUiOiIxMCBtaW51dGVzIiwicGFzc2FnZSI6eyJ0eXBlIjoidGV4dCIsImxhYmVsIjoiUmVhZCB0aGUgZm9sbG93aW5nIG1lc3NhZ2UuIiwiaHRtbCI6IjxwPkRlYXIgU2NvdHQsPC9wPjxwPkhhcyBldmVyeW9uZSBhZGp1c3RlZCB0byB0aGVpciBuZXcgY2l0eSB5ZXQ\/IEkga25vdyBtb3ZpbmcgdG8gVmFuY291dmVyIG1pZ2h0IGhhdmUgYmVlbiBkaWZmaWN1bHQgb24geW91ciBmYW1pbHksIGJ1dCB5b3UgbWFkZSB0aGUgcmlnaHQgY2hvaWNlLiBZb3Ugd291bGQgaGF2ZSBiZWVuIGNyYXp5IHRvIHBhc3MgdXAgc3VjaCBhbiBhbWF6aW5nIG9wcG9ydHVuaXR5LiBUaGF0IGJlaW5nIHNhaWQsIHRoZSBvZmZpY2Ugc3VyZSBpc24mcnNxdW87dCB0aGUgc2FtZSB3aXRob3V0IHlvdSE8L3A+PHA+QW55d2F5cywgeW91JnJzcXVvO2QgYmVlbiBhc2tpbmcgaWYgSSBoYWQgcGxhbnMgZm9yIHRoZSAmbGRxdW87YmlnIGFubml2ZXJzYXJ5LCZyZHF1bzsgc28gSSBoYWQgdG8gd3JpdGUgYW5kIHRlbGwgd2hhdCBoYXBwZW5lZC4gU2luY2UgS2VsbHkgbG92ZXMgdGhlIG91dGRvb3JzLCBJIGhhZCB0aGUgYnJpbGxpYW50IGlkZWEgb2YgaGlraW5nIGluIEFsZ29ucXVpbiBQYXJrLiBJIHNheSAmbGRxdW87YnJpbGxpYW50JnJkcXVvOyBiZWNhdXNlLCBhcyB5b3Uga25vdywgSSZyc3F1bzttIG5vdCBhIG5hdHVyZSBndXkmbWRhc2g7YSBmYWN0IHdoaWNoIG1pZ2h0IGV4cGxhaW4gd2h5IG15IHJvbWFudGljIGdlc3R1cmUgd2VudCBzbyB3cm9uZy48L3A+PHA+V2UgZGVjaWRlZCB0byBicmluZyBTcGFya3ksIGZpZ3VyaW5nIGhlJnJzcXVvO2QgbG92ZSBydW5uaW5nIGFyb3VuZCBvZmYtbGVhc2guIEJpZyBtaXN0YWtlISBXZSZyc3F1bztkIGJlZW4gaGlraW5nIGZvciBhYm91dCAyIGhvdXJzIHdoZW4gU3Bhcmt5LCBoYXZpbmcgc3BvdHRlZCBzb21ldGhpbmcgaW50ZXJlc3RpbmcsIHN1ZGRlbmx5IHRvcmUgb2ZmIGludG8gdGhlIGJ1c2guIFdvcnJpZWQgaGUmcnNxdW87ZCBnZXQgbG9zdCwgd2Ugd2VudCBjaGFzaW5nIGFmdGVyIGhpbS4gQXBwYXJlbnRseSwgaG93ZXZlciwgd2Ugc2hvdWxkJnJzcXVvO3ZlIGJlZW4gbW9yZSB3b3JyaWVkIGFib3V0IG91cnNlbHZlcyBnZXR0aW5nIGxvc3QuIEJ5IHRoZSB0aW1lIHdlJnJzcXVvO2QgY2F1Z2h0IHVwIHdpdGggaGltLCB0aGUgdHJhaWwgd2FzIG5vd2hlcmUgaW4gc2lnaHQgYW5kIHdlIGhhZCBubyBpZGVhIHdoZXJlIHdlIHdlcmUuIFdoaWxlIFNwYXJreSBzYXQgd2FnZ2luZyBoaXMgdGFpbCwgdGhpbmtpbmcgdGhpcyB3YXMgdGhlIGJlc3QgZ2FtZSBldmVyLCBLZWxseSBhbmQgSSBwYW5pY2tlZC4gU2luY2Ugd2UgaGFkbiZyc3F1bzt0IHRvbGQgYW55b25lIHdoZXJlIHdlIHdlcmUgZ29pbmcsIGl0IG1hZGUgbm8gc2Vuc2UgdG8gc3RheSBwdXQgYW5kIHdhaXQgZm9yIGhlbHAuIFNvIHdlIGRlY2lkZWQgdG8ga2VlcCB3YWxraW5nLCBob3Bpbmcgd2UmcnNxdW87ZCBwaWNrZWQgdGhlIHJpZ2h0IGRpcmVjdGlvbi4gRml2ZSBob3VycyBsYXRlciwgd2l0aCBubyBzaWdodCBvZiB0aGUgdHJhaWwgYW5kIGEgZGFya2VuaW5nIHNreSwgd2UgaGFkIG91ciBkb3VidHMuIEFtYXppbmdseSwganVzdCBhcyB3ZSBzdGFydGVkIHRvIHRoaW5rIGFsbCB3YXMgbG9zdCwgd2Ugc3R1bWJsZWQgYWNyb3NzIGFuIGFiYW5kb25lZCByYW5nZXIgY2FiaW4uIFRoZXJlIHdhc24mcnNxdW87dCBtdWNoIGluc2lkZSwgYnV0IGl0IGhhZCB0aGUgZXNzZW50aWFsczogYSBtYXAsIGEgY29tcGFzcywgYSBmZXcgY2FucyBvZiBiZWFucywgYW5kIGEgYmVkLiBIYXZpbmcgZWF0ZW4gdGhlIGxhc3Qgb2Ygb3VyIGZvb2QgaG91cnMgYWdvLCB3ZSBxdWlja2x5IGR1ZyBpbnRvIHRoZSBiZWFucy4gVGhlbiwgZXhoYXVzdGVkLCB3ZSBjb2xsYXBzZWQgaW50byBiZWQuIFRoZSBuZXh0IG1vcm5pbmcgd2UgdXNlZCB0aGUgbWFwIGFuZCBjb21wYXNzIHRvIGxlYWQgdXMgb3V0IG9mIHRoZSB3b29kcy4gSXQgdHVybnMgb3V0IHdlJnJzcXVvO2Qgb25seSBiZWVuIGEgZmV3IGtpbG9tZXRyZXMgZnJvbSBvdXIgY2FyITwvcD48cD5OZWVkbGVzcyB0byBzYXksIEkgaGF2ZSBubyBpbnRlbnRpb24gb2YgdmVudHVyaW5nIGJhY2sgaW50byB0aGUgd29vZHMgYW55IHRpbWUgc29vbi4gTWFrZSBzdXJlIHRvIGJlIGNhcmVmdWwgaWYgeW91IGRvIGFueSBoaWtpbmcgb3V0IHRoZXJlLiBJdCZyc3F1bztzIGVhc2llciB0byBnZXQgbG9zdCB0aGFuIHlvdSB0aGluayE8L3A+PHA+Q2hlZXJzLDxicj5KaW08L3A+In0sImJsb2NrcyI6W3sidHlwZSI6InN0ZW1saXN0IiwiaW5zdHIiOiJVc2luZyB0aGUgZHJvcC1kb3duIG1lbnUgKCAmIzk2NjI7ICksIGNob29zZSB0aGUgYmVzdCBvcHRpb24gYWNjb3JkaW5nIHRvIHRoZSBpbmZvcm1hdGlvbiBnaXZlbiBpbiB0aGUgbWVzc2FnZS4iLCJpdGVtcyI6W3sibiI6MSwicHJlIjoiU2NvdHQgYW5kIGhpcyBmYW1pbHkiLCJvcHRpb25zIjpbImhhdmUgbGl2ZWQgaW4gVmFuY291dmVyIGZvciBtYW55IHllYXJzLiIsIndpbGwgc29vbiBiZSBtb3ZpbmcgdG8gVmFuY291dmVyLiIsIm5vIGxvbmdlciBsaXZlIGluIFZhbmNvdXZlciIsInJlY2VudGx5IG1vdmVkIHRvIFZhbmNvdXZlci4iXSwia2V5Ijo0fSx7Im4iOjIsInByZSI6IkppbSBhbmQgS2VsbHkgd2VudCBoaWtpbmcgYmVjYXVzZSIsIm9wdGlvbnMiOlsidGhleSBib3RoIGxvdmUgdGhlIG91dGRvb3JzLiIsIml0IGlzIHNvbWV0aGluZyBLZWxseSBlbmpveXMuIiwiU3Bhcmt5IGxpa2VzIHRvIHJ1biBvZmYtbGVhc2guIiwiSmltIGxvdmVzIHNwZW5kaW5nIHRpbWUgaW4gbmF0dXJlLiJdLCJrZXkiOjJ9LHsibiI6MywicHJlIjoiSmltIHdyb3RlIFNjb3R0IHRvIiwib3B0aW9ucyI6WyJhc2sgYWJvdXQgaGlzIG5ldyBqb2IgaW4gVmFuY291dmVyLiIsIndhcm4gaGltIGFib3V0IGhpa2luZyBhcm91bmQgVmFuY291dmVyLiIsImFuc3dlciBhIHF1ZXN0aW9uIGFib3V0IGhpcyBhbm5pdmVyc2FyeS4iLCJ0ZWxsIGhvdyBTcGFya3kgc2F2ZWQgYSBiYWQgaGlraW5nIHRyaXAuIl0sImtleSI6M30seyJuIjo0LCJwcmUiOiJKaW0gYW5kIEtlbGx5XHUyMDE5cyByZWNlbnQgYW5uaXZlcnNhcnkiLCJvcHRpb25zIjpbImluY2x1ZGVkIHN0YXlpbmcgYXQgYSBjYWJpbiB0aGV5IGhhZCByZXNlcnZlZC4iLCJkaWQgbm90IHR1cm4gb3V0IGFzIHRoZXkgaGFkIHBsYW5uZWQuIiwid2FzIG9uZSBvZiB0aGVpciBmYXZvdXJpdGUgYW5uaXZlcnNhcmllcyBldmVyLiIsImludm9sdmVkIGEgbG90IG9mIGRyaXZpbmcgaW4gdGhlIGNhci4iXSwia2V5IjoyfSx7Im4iOjUsInByZSI6IlRoZSB0cm91YmxlIGJlZ2FuIHdoZW4gSmltIGFuZCBLZWxseSIsIm9wdGlvbnMiOlsicmVhbGl6ZWQgdGhleSBoYWQgZm9yZ290dGVuIHRoZWlyIG1hcC4iLCJyYW4gb3V0IG9mIGFsbCB0aGVpciBmb29kIGFuZCB3YXRlci4iLCJ3ZW50IHJ1bm5pbmcgaW50byB0aGUgd29vZHMgYWZ0ZXIgU3Bhcmt5LiIsImRlY2lkZWQgdG8gYnJpbmcgU3Bhcmt5IHRvIHRoZSBwYXJrLiJdLCJrZXkiOjN9LHsibiI6NiwicHJlIjoiSXQgd2FzIGx1Y2t5IHRoYXQgSmltIGFuZCBLZWxseSIsIm9wdGlvbnMiOlsiaGFkIGJyb3VnaHQgYSBjb21wYXNzIHdpdGggdGhlbS4iLCJmb3VuZCBzaGVsdGVyIGJlZm9yZSBpdCBnb3QgZGFyayBvdXQuIiwiaGFkIGEgZ29vZCBzbGVlcCB0aGUgbmlnaHQgYmVmb3JlLiIsInBhcmtlZCB0aGVpciBjYXIgY2xvc2UgdG8gdGhlIHRyYWlsaGVhZC4iXSwia2V5IjoyfV19LHsidHlwZSI6ImNsb3plIiwiaW5zdHIiOiJIZXJlIGlzIGEgcmVzcG9uc2UgdG8gdGhlIG1lc3NhZ2UuIENvbXBsZXRlIHRoZSByZXNwb25zZSBieSBmaWxsaW5nIGluIHRoZSBibGFua3MuIFNlbGVjdCB0aGUgYmVzdCBjaG9pY2UgZm9yIGVhY2ggYmxhbmsgZnJvbSB0aGUgZHJvcC1kb3duIG1lbnUgKCAmIzk2NjI7ICkuIiwiYm9keSI6WyJEZWFyIEppbSxcblxuSXRcdTIwMTlzIGdyZWF0IHRvIGhlYXIgZnJvbSB5b3UhIElcdTIwMTl2ZSBiZWVuIHdvbmRlcmluZyB3aGF0IG15ICIseyJiIjo3LCJvcHRpb25zIjpbIm9sZCByb29tbWF0ZSIsImJlc3QgZW1wbG95ZWUiLCJuZXh0LWRvb3IgbmVpZ2hib3VyIiwiZmF2b3JpdGUgYnJvdGhlciJdLCJrZXkiOjJ9LCIgaGFzIGJlZW4gdXAgdG8gd2l0aG91dCBtZSBhcm91bmQuIEhvd2V2ZXIsIEkgYW0gc29ycnkgdG8gaGVhciB0aGF0IHlvdSBkaWQgbm90ICIseyJiIjo4LCJvcHRpb25zIjpbImZpbmQgeW91ciBjYXIiLCJmaW5kIFNwYXJreSIsImVhdCBkaW5uZXIiLCJoYXZlIGEgZ3JlYXQgdGltZSJdLCJrZXkiOjR9LCIgb24geW91ciBhbm5pdmVyc2FyeS4gSSBjYW4gb25seSBpbWFnaW5lIGhvdyAiLHsiYiI6OSwib3B0aW9ucyI6WyJhbm5veWluZyIsInNjYXJ5IiwicmVsaWV2aW5nIiwicmVhc3N1cmluZyJdLCJrZXkiOjJ9LCIgdGhhdCBtdXN0IGhhdmUgYmVlbiFcblxuQXMgdG8gdGhpbmdzIGhlcmUsIHlvdSBhcmUgcmlnaHQsICIseyJiIjoxMCwib3B0aW9ucyI6WyJpdCB3YXMgY2hhbGxlbmdpbmcgYXQgZmlyc3QiLCJ0aGlzIG1heSBoYXZlIGJlZW4gYSBtaXN0YWtlIiwidGhlIHRyYW5zaXRpb24gd2VudCBzbW9vdGhseSIsInRoZSBqb2IgaXMgaGFyZGVyIHRoYW4gZXhwZWN0ZWQiXSwia2V5IjoxfSwiLiBIb3dldmVyLCBpdCBzZWVtcyBsaWtlIG15IGZhbWlseSBpcyByZWFsbHkgc3RhcnRpbmcgdG8gbGlrZSBpdCBoZXJlLiBUaGUga2lkcyBoYXZlIGFscmVhZHkgbWFkZSBhIGxpc3Qgb2YgdHJhaWxzIGFuZCBtb3VudGFpbnMgdGhleSB3YW50IHRvIGV4cGxvcmUuIEFsdGhvdWdoLCBhZnRlciBoZWFyaW5nIHlvdXIgc3RvcnkgSSB0aGluayB3ZSBtaWdodCBhbGwgdGFrZSBhbiBvdXRkb29yIGVkdWNhdGlvbiBjb3Vyc2UgZmlyc3QuIEkgc3VyZSBkb25cdTIwMTl0IHdhbnQgdG8gZW5kIHVwICIseyJiIjoxMSwib3B0aW9ucyI6WyJjaGFzaW5nIFNwYXJreSIsImVhdGluZyBjYW5uZWQgdmVnZXRhYmxlcyIsImxvY2tlZCB1cCBpbiBhIGNhYmluIiwibG9zdCBpbiB0aGUgd29vZHMiXSwia2V5Ijo0fSwiIGxpa2UgeW91IVxuXG5UYWtlIGNhcmUsXG5cblNjb3R0Il19XX0seyJpZCI6MiwibmFtZSI6IlJlYWRpbmcgUGFydCAyOiBSZWFkaW5nIHRvIEFwcGx5IGEgRGlhZ3JhbSIsInRpbWUiOiI4IG1pbnV0ZXMiLCJwYXNzYWdlIjp7InR5cGUiOiJ0ZXh0IiwibGFiZWwiOiJSZWFkIHRoZSBmb2xsb3dpbmcgZGlhZ3JhbS4iLCJodG1sIjoiPHN0eWxlPi5hZS1hY2ZseWVye2JvcmRlcjoxcHggc29saWQgI2Q2Yzg5Mztib3JkZXItcmFkaXVzOjhweDtvdmVyZmxvdzpoaWRkZW47Zm9udC1zaXplOjE0cHg7YmFja2dyb3VuZDojZmZmfS5hZS1hY2hlYWR7cGFkZGluZzoxNHB4IDE0cHggMTBweDt0ZXh0LWFsaWduOmNlbnRlcn0uYWUtYWNoZWFkIGgze21hcmdpbjowIGF1dG8gNHB4O2Rpc3BsYXk6aW5saW5lLWJsb2NrO2JhY2tncm91bmQ6I2ZkZTY4YTtjb2xvcjojMWYyOTM3O2ZvbnQtc2l6ZToyMHB4O3BhZGRpbmc6MnB4IDEycHg7Ym9yZGVyLXJhZGl1czo0cHh9LmFlLWFjaGVhZCAuYWUtYWN0YWd7bWFyZ2luOjJweCAwIDhweDtjb2xvcjojMGQ5NDg4O2ZvbnQtd2VpZ2h0OmJvbGQ7Zm9udC1zaXplOjEzLjVweH0uYWUtYWNoZWFkIC5hZS1hY2NvbnRhY3R7bWFyZ2luOjA7Zm9udC1zaXplOjEyLjVweDtjb2xvcjojMGY3NjZlO2xpbmUtaGVpZ2h0OjEuNTt0ZXh0LWFsaWduOmNlbnRlcn0uYWUtYWNiYW5uZXJ7YmFja2dyb3VuZDojZmRlNjhhO2NvbG9yOiMxZjI5Mzc7Zm9udC13ZWlnaHQ6Ym9sZDt0ZXh0LWFsaWduOmNlbnRlcjtwYWRkaW5nOjdweCAxMHB4O2ZvbnQtc2l6ZToxNC41cHg7Ym9yZGVyLXRvcDoxcHggc29saWQgI2Q2Yzg5Mztib3JkZXItYm90dG9tOjFweCBzb2xpZCAjZDZjODkzfS5hZS1hY2dyaWR7ZGlzcGxheTpncmlkO2dyaWQtdGVtcGxhdGUtY29sdW1uczoxZnIgMWZyIDFmcjtnYXA6MXB4O2JhY2tncm91bmQ6I2Q2Yzg5M30uYWUtYWNjb3Vyc2V7YmFja2dyb3VuZDojZmZmYmViO3BhZGRpbmc6MTBweCAxMnB4O2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW59LmFlLWFjY291cnNlIGg0e21hcmdpbjowIDAgNHB4O2ZvbnQtc2l6ZToxNC41cHg7Y29sb3I6IzFmMjkzNzt0ZXh0LWFsaWduOmNlbnRlcn0uYWUtYWNkYXRlc3t0ZXh0LWFsaWduOmNlbnRlcjtmb250LXdlaWdodDpib2xkfS5hZS1hY2NvdXJzZSBwe21hcmdpbjowIDAgNnB4O2ZvbnQtc2l6ZToxM3B4O2xpbmUtaGVpZ2h0OjEuNDV9LmFlLWFjY291cnNlIHVse21hcmdpbjowIDAgOHB4O3BhZGRpbmctbGVmdDoxOHB4O2ZvbnQtc2l6ZToxMi41cHg7bGluZS1oZWlnaHQ6MS41fS5hZS1hY3NjaGVke21hcmdpbi10b3A6YXV0bztkaXNwbGF5OmdyaWQ7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOmF1dG8gMWZyO2dhcDoxcHg7YmFja2dyb3VuZDojZDZjODkzO2JvcmRlcjoxcHggc29saWQgI2Q2Yzg5Mztmb250LXNpemU6MTIuNXB4fS5hZS1hY3NjaGVkIHNwYW57YmFja2dyb3VuZDojZmZmO3BhZGRpbmc6NHB4IDhweH0uYWUtYWNzY2hlZCAuYWUtYWNsYmx7YmFja2dyb3VuZDojZmRlNjhhO2ZvbnQtd2VpZ2h0OmJvbGR9LmFlLWFjZm9vdHtiYWNrZ3JvdW5kOiNmZGU2OGE7dGV4dC1hbGlnbjpjZW50ZXI7Zm9udC1zaXplOjEyLjVweDtwYWRkaW5nOjZweCAxMHB4O2JvcmRlci10b3A6MXB4IHNvbGlkICNkNmM4OTN9QG1lZGlhKG1heC13aWR0aDo2NDBweCl7LmFlLWFjZ3JpZHtncmlkLXRlbXBsYXRlLWNvbHVtbnM6MWZyfX08L3N0eWxlPjxkaXYgY2xhc3M9XCJhZS1hY2ZseWVyXCI+PGRpdiBjbGFzcz1cImFlLWFjaGVhZFwiPjxoMz5BbHBhY2EgRWR1Y2F0aW9uIENlbnRyZTwvaDM+PHAgY2xhc3M9XCJhZS1hY3RhZ1wiPllvdXIgUHJlbWllciBDaG9pY2UgZm9yIExhbmd1YWdlIFRyYWluaW5nIGFuZCBFZHVjYXRpb248L3A+PHAgY2xhc3M9XCJhZS1hY2NvbnRhY3RcIj48c3Ryb25nPkxvY2F0aW9uOjwvc3Ryb25nPiAjMTEwICZuZGFzaDsgMTIxNSBXZXN0IEJ1cnJhcmQgQXZlbnVlPGJyPjxzdHJvbmc+SG91cnM6PC9zdHJvbmc+IE1vbmRheSB0byBGcmlkYXksIDg6MzAgYS5tLiB0byA5OjMwIHAubS48YnI+PHN0cm9uZz5QaG9uZTo8L3N0cm9uZz4gNjA0LTU1NS0wMTIzPGJyPjxzdHJvbmc+RW1haWw6PC9zdHJvbmc+IGNvdXJzZWluZm9AYWVjLmNhPC9wPjwvZGl2PjxkaXYgY2xhc3M9XCJhZS1hY2Jhbm5lclwiPkNvdXJzZXMgYXZhaWxhYmxlIGNvbW1lbmNpbmcgdGhlIHdlZWsgb2YgQXVndXN0IDM8c3VwPnJkPC9zdXA+IHRvIEF1Z3VzdCA5PHN1cD50aDwvc3VwPjwvZGl2PjxkaXYgY2xhc3M9XCJhZS1hY2dyaWRcIj48ZGl2IGNsYXNzPVwiYWUtYWNjb3Vyc2VcIj48aDQ+QmVnaW5uZXIgRnJlbmNoICZuZGFzaDsgTGV2ZWwgSUksIEludGVuc2l2ZTwvaDQ+PHAgY2xhc3M9XCJhZS1hY2RhdGVzXCI+QXVndXN0IDQ8c3VwPnRoPC9zdXA+IHRvIEF1Z3VzdCAyOTxzdXA+dGg8L3N1cD4qPC9wPjxwPkltbWVyc2UgeW91cnNlbGYgaW4gb3VyIG1vc3QgaW50ZW5zaXZlIGNvdXJzZS4gV2l0aCBmcmVxdWVudCBjbGFzc2VzLCB5b3VyIHNraWxscyB3aWxsIGltcHJvdmUgcmFwaWRseSE8L3A+PHVsPjxsaT42MCBob3VycyBvZiBpbnN0cnVjdGlvbjwvbGk+PGxpPk1heGltdW0gMTAgc3R1ZGVudHM8L2xpPjxsaT5OYXRpdmUgc3BlYWtpbmcgaW5zdHJ1Y3RvcnM8L2xpPjxsaT5Gb2N1cyBvbiBjb252ZXJzYXRpb24gc2tpbGxzPC9saT48L3VsPjxkaXYgY2xhc3M9XCJhZS1hY3NjaGVkXCI+PHNwYW4gY2xhc3M9XCJhZS1hY2xibFwiPkFNPC9zcGFuPjxzcGFuPk1vbiwgVHVlcywgV2VkLCBUaHVycywgRnJpPGJyPjk6MzAgJm5kYXNoOyAxMjozMDwvc3Bhbj48c3BhbiBjbGFzcz1cImFlLWFjbGJsXCI+UE08L3NwYW4+PHNwYW4+TW9uLCBUdWVzLCBXZWQsIFRodXJzPGJyPjM6MDAgJm5kYXNoOyA2OjQ1PC9zcGFuPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJhZS1hY2NvdXJzZVwiPjxoND5CZWdpbm5lciBHZXJtYW4gJm5kYXNoOyBMZXZlbCBJPC9oND48cCBjbGFzcz1cImFlLWFjZGF0ZXNcIj5BdWd1c3QgNDxzdXA+dGg8L3N1cD4gdG8gU2VwdGVtYmVyIDEyPHN1cD50aDwvc3VwPio8L3A+PHA+TGVhcm4gcHJhY3RpY2FsIGtub3dsZWRnZSBhbmQgR2VybWFuIHNwZWFraW5nIHNraWxscyB3aXRoIG91ciBtb3N0IHBvcHVsYXIgaW50cm9kdWN0b3J5IGNvdXJzZSE8L3A+PHVsPjxsaT4yNyBob3VycyBvZiBpbnN0cnVjdGlvbjwvbGk+PGxpPk1heGltdW0gMTYgc3R1ZGVudHM8L2xpPjxsaT5UYXJnZXQgcHJhY3RpY2UgZm9yIHZvY2FidWxhcnkgYW5kIGdyYW1tYXI8L2xpPjwvdWw+PGRpdiBjbGFzcz1cImFlLWFjc2NoZWRcIj48c3BhbiBjbGFzcz1cImFlLWFjbGJsXCI+QU08L3NwYW4+PHNwYW4+TW9uLCBXZWQsIEZyaTxicj4xMDowMCAmbmRhc2g7IDExOjMwPC9zcGFuPjxzcGFuIGNsYXNzPVwiYWUtYWNsYmxcIj5QTTwvc3Bhbj48c3Bhbj5UdWVzLCBUaHVyczxicj43OjE1ICZuZGFzaDsgOTozMDwvc3Bhbj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwiYWUtYWNjb3Vyc2VcIj48aDQ+SW50cm9kdWN0aW9uIHRvIEFtZXJpY2FuIFNpZ24gTGFuZ3VhZ2U8L2g0PjxwIGNsYXNzPVwiYWUtYWNkYXRlc1wiPkF1Z3VzdCA0PHN1cD50aDwvc3VwPiB0byBTZXB0ZW1iZXIgMjY8c3VwPnRoPC9zdXA+KjwvcD48cD5MZWFybiB0aGUgcHJlZG9taW5hbnQgc2lnbiBsYW5ndWFnZSBpbiBDYW5hZGEgYW5kIHRoZSBVU0Egd2l0aCB0aGlzIGJlZ2lubmVyIGNvdXJzZS48L3A+PHVsPjxsaT4zMiBob3VycyBvZiBpbnN0cnVjdGlvbjwvbGk+PGxpPk1heGltdW0gMjAgc3R1ZGVudHM8L2xpPjxsaT5Gb2N1cyBvbiBlbmdhZ2luZyBpbiBzaW1wbGUgY29udmVyc2F0aW9uczwvbGk+PC91bD48ZGl2IGNsYXNzPVwiYWUtYWNzY2hlZFwiPjxzcGFuIGNsYXNzPVwiYWUtYWNsYmxcIj5BTTwvc3Bhbj48c3Bhbj5UdWVzLCBGcmk8YnI+OTowMCAmbmRhc2g7IDExOjAwPC9zcGFuPjxzcGFuIGNsYXNzPVwiYWUtYWNsYmxcIj5QTTwvc3Bhbj48c3Bhbj5Nb24sIFRodXJzPGJyPjU6MzAgJm5kYXNoOyA3OjMwPC9zcGFuPjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJhZS1hY2Zvb3RcIj4qQ291cnNlIGF2YWlsYWJpbGl0eSBpcyBzdWJqZWN0IHRvIGNoYW5nZSBiYXNlZCBvbiBlbnJvbG1lbnQuPC9kaXY+PC9kaXY+In0sImJsb2NrcyI6W3sidHlwZSI6ImNsb3plIiwiaW5zdHIiOiJSZWFkIHRoZSBmb2xsb3dpbmcgZW1haWwgbWVzc2FnZSBhYm91dCB0aGUgZGlhZ3JhbSBvbiB0aGUgbGVmdC4gQ29tcGxldGUgdGhlIGVtYWlsIGJ5IGZpbGxpbmcgaW4gdGhlIGJsYW5rcy4gU2VsZWN0IHRoZSBiZXN0IGNob2ljZSBmb3IgZWFjaCBibGFuayBmcm9tIHRoZSBkcm9wLWRvd24gbWVudSAoICYjOTY2MjsgKS4iLCJib2R5IjpbIlN1YmplY3Q6IExhbmd1YWdlIENvdXJzZXNcblRvOiBDaGFybGllIFZldWkgPGN2ZXVpQHRtc2NvbGxnLmNvbT5cbkZyb206IEdlcnJ5IE5hbGVuIDxHcm5hbEB0bXNjb2xsZy5jb20+XG5cbkhpIENoYXJsaWUsXG5cblJlbWVtYmVyIGhvdyB3ZSBhbHdheXMgd2FudGVkIHRvIGxlYXJuIGFub3RoZXIgbGFuZ3VhZ2U\/IFdlbGwsIHRvZGF5IEkgcGlja2VkIHVwIGEgYnJvY2h1cmUgZm9yIHRoZSBsYW5ndWFnZSBzY2hvb2wgZG93biB0aGUgc3RyZWV0IGZyb20gb3VyIHBsYWNlLiBMZXRcdTIwMTlzIHRha2UgYSBjb3Vyc2UgYW5kIHRyYXZlbCBhdCB0aGUgZW5kIG9mIHRoZSBzZW1lc3RlciEgVGhlIGNvdXJzZXMgb2ZmZXJlZCBhcmUgYWxsIGZvciBsZWFybmVycyB3aXRoICIseyJiIjoxLCJvcHRpb25zIjpbImxpdHRsZSBleHBlcmllbmNlIiwiaW50ZXJtZWRpYXRlIGFiaWxpdGllcyIsInN0cm9uZyBzcGVha2luZyBza2lsbHMiLCJjdWx0dXJhbCBrbm93bGVkZ2UiXSwia2V5IjoxfSwiLiBUaGUgRnJlbmNoIGNvdXJzZSAiLHsiYiI6Miwib3B0aW9ucyI6WyJzZWVtcyBtb3JlIGRlbWFuZGluZyIsImhhcyBsYXJnZXIgY2xhc3Mgc2l6ZXMiLCJmb2N1c2VzIG9uIG1vcmUgc2tpbGxzIiwicmVxdWlyZXMgbGVzcyB0aW1lIl0sImtleSI6MX0sIiB0aGFuIHRoZSBvdGhlcnMsIGJ1dCB0aGV5IHByb21pc2UgdGhhdCBvdXIgbGFuZ3VhZ2Ugd2lsbCBnZXQgYmV0dGVyIGZhc3QuIE9yIHBlcmhhcHMgeW91XHUyMDE5ZCBwcmVmZXIgR2VybWFuPyBZb3VcdTIwMTl2ZSBhbHdheXMgd2FudGVkIHRvIHNlZSBHZXJtYW55LCBhbmQgdGhpcyBjb3Vyc2UgIix7ImIiOjMsIm9wdGlvbnMiOlsiaXMgdGhlIG1vc3QgaW50ZW5zaXZlIG9wdGlvbiIsImluY2x1ZGVzIGN1bHR1cmFsIGFjdGl2aXRpZXMiLCJoYXMgdGhlIG1vc3QgZnJlcXVlbnQgY2xhc3NlcyIsInRlYWNoZXMgZnVuY3Rpb25hbCBsYW5ndWFnZSJdLCJrZXkiOjR9LCIuIEFjY29yZGluZyB0byB0aGUgYnJvY2h1cmUsICIseyJiIjo0LCJvcHRpb25zIjpbIml0IGhhcyB0aGUgc21hbGxlc3QgY2xhc3NlcyIsIm1hbnkgcGVvcGxlIGxpa2UgaXQiLCJpdCByZXF1aXJlcyBhIGxvdCBvZiBzdHVkeSIsImVucm9sbG1lbnQgaXMgcXVpdGUgbG93Il0sImtleSI6Mn0sIi4gT3Igd2UgY291bGQgdGhpbmsgYWJvdXQgZnV0dXJlIGpvYiBvcHBvcnR1bml0aWVzIGFuZCB0YWtlIEFtZXJpY2FuIFNpZ24gTGFuZ3VhZ2UuIElmIHdlIHRvb2sgaXQgaW4gdGhlIGV2ZW5pbmcsIGl0IHdvdWxkblx1MjAxOXQgYWZmZWN0IG91ciBzdW1tZXIgam9icy4gQnV0IHdoZW4gdGhlIGZhbGwgc2VtZXN0ZXIgc3RhcnRzLCAiLHsiYiI6NSwib3B0aW9ucyI6WyJ0aGVyZSBhcmUgb25seSBtb3JuaW5nIGNsYXNzZXMiLCJpdCBtYXkgYmUgdG9vIG11Y2ggd29yayIsInRoZSBjb3Vyc2Ugd2lsbCBiZSBmaW5pc2hlZCIsInRoZXJlIGlzIGEgZmluYWwgYXNzZXNzbWVudCJdLCJrZXkiOjJ9LCIuIE9uIHNlY29uZCB0aG91Z2h0LCBJXHUyMDE5ZCByYXRoZXIgdGFrZSBzb21ldGhpbmcgdXNlZnVsIGZvciB0cmF2ZWxpbmcuIE9oLCBJIGp1c3Qgbm90aWNlZCB0aGF0IHRoZSBicm9jaHVyZSBkb2Vzblx1MjAxOXQgbWVudGlvbiB0aGUgcHJpY2Ugb2YgdGhlIGNvdXJzZXMuIElcdTIwMTlsbCBjYWxsIHRoZW0uXG5cblRhbGsgc29vbixcblxuR2VycnkiXX0seyJ0eXBlIjoic3RlbWxpc3QiLCJpbnN0ciI6IlVzaW5nIHRoZSBkcm9wLWRvd24gbWVudSAoICYjOTY2MjsgKSwgY2hvb3NlIHRoZSBiZXN0IG9wdGlvbi4iLCJpdGVtcyI6W3sibiI6NiwicHJlIjoiV2hhdCBpcyBHZXJyeVx1MjAxOXMgcmVsYXRpb25zaGlwIHRvIENoYXJsaWU\/Iiwib3B0aW9ucyI6WyJyb29tbWF0ZSIsImVtcGxveWVlIiwidGVhY2hlciIsImNvdW5zZWxvciJdLCJrZXkiOjF9LHsibiI6NywicHJlIjoiV2hhdCBhcmUgR2VycnkgYW5kIENoYXJsaWUgZG9pbmcgaW4gU2VwdGVtYmVyPyIsIm9wdGlvbnMiOlsiZ2V0dGluZyBwYXJ0LXRpbWUgam9icyIsInJldHVybmluZyB0byBzY2hvb2wiLCJ0cmF2ZWxpbmcgdG8gdmlzaXQgYSBmcmllbmQiLCJ0YWtpbmcgYSB0cmlwIHRvIEV1cm9wZSJdLCJrZXkiOjJ9LHsibiI6OCwicHJlIjoiV2h5IGRvZXMgR2Vycnkgd2FudCB0byBsZWFybiBhIGxhbmd1YWdlPyIsIm9wdGlvbnMiOlsidG8gZ2V0IGEgdW5pdmVyc2l0eSBjcmVkaXQiLCJ0byBnZXQgYSBqb2IgcHJvbW90aW9uIiwidG8gcHJlcGFyZSBmb3IgYSB0cmlwIGFicm9hZCIsInRvIHRhbGsgdG8gaGlzIEdlcm1hbiBmcmllbmRzIl0sImtleSI6M31dfV19LHsiaWQiOjMsIm5hbWUiOiJSZWFkaW5nIFBhcnQgMzogUmVhZGluZyBmb3IgSW5mb3JtYXRpb24iLCJ0aW1lIjoiOSBtaW51dGVzIiwicGFzc2FnZSI6eyJ0eXBlIjoidGV4dCIsImxhYmVsIjoiUmVhZCB0aGUgZm9sbG93aW5nIHBhc3NhZ2UuIiwiaHRtbCI6IjxwPjxzdHJvbmc+QS48L3N0cm9uZz4gT24gTWF5IDgsIDE5ODcsIENhbmFkYSBpbnRyb2R1Y2VkIHRoZSBvbmUtZG9sbGFyIGNvaW4gbm93IGtub3duIGFzIHRoZSAmbGRxdW87bG9vbmllLiZyZHF1bzsgSXQgaXMgZWxldmVuLXNpZGVkIGFuZCBnb2xkLWNvbG91cmVkIChpdCZyc3F1bztzIGFjdHVhbGx5IGJyb256ZS1wbGF0ZWQgbmlja2VsKS4gVGhlIGNvaW4gZmVhdHVyZXMgYSBkZXNpZ24gYnkgT250YXJpbyB3aWxkbGlmZSBhcnRpc3QgUm9iZXJ0IFJhbHBoIENhcm1pY2hhZWwmbWRhc2g7YSBsb29uIG9uIG9uZSBzaWRlIGFuZCBRdWVlbiBFbGl6YWJldGggSUkgb24gdGhlIG90aGVyLiBDYW5hZGEgaXMsIGFmdGVyIGFsbCwgc3RpbGwgYSBtZW1iZXIgb2YgdGhlIEJyaXRpc2ggQ29tbW9ud2VhbHRoLiBUaGUgbG9vbiBpcyBhIHdhdGVyIGJpcmQgY29tbW9uIGFjcm9zcyBDYW5hZGEsIGtub3duIGZvciBpdHMgYWJpbGl0eSB0byBzd2ltIGdyZWF0IGRpc3RhbmNlcyB1bmRlciB3YXRlciBhbmQgZm9yIGl0cyBiZWF1dGlmdWwsIGhhdW50aW5nIGNhbGwuPC9wPjxwPjxzdHJvbmc+Qi48L3N0cm9uZz4gVGhlIGxvb25pZSB3YXNuJnJzcXVvO3QgQ2FuYWRhJnJzcXVvO3MgZmlyc3Qgb25lLWRvbGxhciBjb2luLiBBIHNpbHZlciBkb2xsYXIgd2FzIGludHJvZHVjZWQgaW4gMTkzNSwgZmVhdHVyaW5nIGFuIGltYWdlIG9mIHR3byB2b3lhZ2V1cnMgcGFkZGxpbmcgYSBjYW5vZSBvbiBvbmUgc2lkZSBhbmQsIHRvIGRpc3BsYXkgQ2FuYWRhJnJzcXVvO3MgQnJpdGlzaCBjb25uZWN0aW9ucywgYW4gaW1hZ2Ugb2YgQnJpdGFpbiZyc3F1bztzIEtpbmcgR2VvcmdlIG9uIHRoZSBvdGhlci4gQnV0IHRoZSBzaWx2ZXIgZG9sbGFyJm1kYXNoO3doaWNoIHdhcyBtYWRlIG9mIG5pY2tlbCBieSAxOTY3Jm1kYXNoO3dhc24mcnNxdW87dCB1c2VkIG11Y2ggYmVjYXVzZSBvZiBpdHMgc2l6ZSBhbmQgd2VpZ2h0IChhYm91dCAyMyBncmFtcykuIFdoYXQgd2FzIGluIGNvbW1vbiB1c2Ugd2FzIGEgZ3JlZW4tYW5kLXdoaXRlIHBhcGVyIGJpbGwuIEhvd2V2ZXIsIHRoZSBwYXBlciBiaWxscyB3b3JlIG91dCB3aXRoaW4gYSB5ZWFyLCB3aGljaCBpcyB3aHkgdGhlIGxvb25pZSB3YXMgaW50cm9kdWNlZC4gSXQgd2FzIGV4cGVjdGVkIHRvIGxhc3QgdHdlbnR5IHllYXJzLCBzYXZpbmcgdGF4cGF5ZXJzICQxNzUmbmRhc2g7MjUwIG1pbGxpb24uPC9wPjxwPjxzdHJvbmc+Qy48L3N0cm9uZz4gSW4gZmFjdCwgdGhlIFJveWFsIENhbmFkaWFuIE1pbnQgaW50ZW5kZWQgdG8gdXNlIHRoZSBzYW1lIHZveWFnZXVyIGRlc2lnbiBmb3IgdGhlIG5ldyBjb2luLCBidXQgdGhlIG1hc3RlciBkaWVzIHdlcmUgbG9zdCBzb21ld2hlcmUgYmV0d2VlbiBPdHRhd2EgYW5kIHRoZSBXaW5uaXBlZyBwcm9kdWN0aW9uIGZhY2lsaXR5LiBUaGUgZGllcyB3ZXJlIGVudHJ1c3RlZCB0byBhIGNvdXJpZXIgc2VydmljZSBpbnN0ZWFkIG9mIHRvIGEgaGlnaC1zZWN1cml0eSBzZXJ2aWNlLiBXb3JzZSwgYXBwYXJlbnRseSBubyBvbmUgYXNrZWQgdGhlIGNvdXJpZXIgcmVwcmVzZW50YXRpdmUgd2hvIHNob3dlZCB1cCB0byB0YWtlIHBvc3Nlc3Npb24gb2YgdGhlIGRpZXMgZm9yIGlkZW50aWZpY2F0aW9uLiBXb3JzZSBzdGlsbCwgZGVzaWducyBmb3IgYm90aCBzaWRlcyBvZiB0aGUgY29pbiB3ZW50IGluIHRoZSBzYW1lIHBhY2thZ2UgaW5zdGVhZCBvZiBpbiBzZXBhcmF0ZSBwYWNrYWdlcy4gRm9yIHRoZXNlIHJlYXNvbnMsIHRoZSBNaW50IHN1c3BlY3RlZCBmb3VsIHBsYXkgYW5kLCBmZWFyaW5nIGNvdW50ZXJmZWl0cywgZGVjaWRlZCB0byBnbyB3aXRoIGEgbmV3IGRlc2lnbiwgdGhhdCBieSBDYXJtaWNoYWVsLiBBbiBpbnZlc3RpZ2F0aW9uIGJ5IHRoZSBSb3lhbCBDYW5hZGlhbiBNb3VudGVkIFBvbGljZSBjb25jbHVkZWQsIGhvd2V2ZXIsIHRoYXQgdGhlIGRpZXMgd2VyZSBzaW1wbHkgbG9zdCBpbiB0cmFuc2l0LjwvcD48cD48c3Ryb25nPkQuPC9zdHJvbmc+IEluIDE5OTYsIHRoZSBvcmFuZ2UtYnJvd24gdHdvLWRvbGxhciBwYXBlciBiaWxsIHdhcyBhbHNvIHJlcGxhY2VkIHdpdGggYSBjb2luLiBDYWxsZWQgYSAmbGRxdW87dG9vbmllLCZyZHF1bzsgdGhlIHNpbHZlciBjb2luIGhhcyBhIGdvbGQgY2VudGVyIChhY3R1YWxseSBuaWNrZWwgYW5kIGJyb256ZSkgZmVhdHVyaW5nIGFub3RoZXIgQ2FuYWRpYW4gYW5pbWFsLCBhIHBvbGFyIGJlYXIgb24gYW4gaWNlIGZsb2UuIEFscmVhZHkgbGlnaHQsIGF0IDcuMyBncmFtcywgYSBsaWdodGVyIHZlcnNpb24gd2FzIGludHJvZHVjZWQgaW4gMjAxMiBieSByZXBsYWNpbmcgdGhlIG5pY2tlbCB3aXRoIHN0ZWVsLiBBIGxpZ2h0ZXIgdmVyc2lvbiBvZiB0aGUgbG9vbmllIHdhcyBhbHNvIGludHJvZHVjZWQuIFVuZm9ydHVuYXRlbHksIHRoZSBsaWdodGVyIGNvaW5zIGRpZG4mcnNxdW87dCB3b3JrIGluIGNvaW4tb3BlcmF0ZWQgbWFjaGluZXMsIHN1Y2ggYXMgdmVuZGluZyBtYWNoaW5lcywgcGFya2luZyBtZXRlcnMsIGFuZCB3YXNoZXJzIGFuZCBkcnllcnMgaW4gbGF1bmRyb21hdHMuIEFzIGEgcmVzdWx0LCBtYW55IGJ1c2luZXNzIG93bmVycyBoYXZlIGhhZCB0byBwYXkgdGhvdXNhbmRzIG9mIGRvbGxhcnMgdG8gcmVwbGFjZSBhbmQgdXBncmFkZSB0aGVpciBlcXVpcG1lbnQuPC9wPjxwPjxzdHJvbmc+RS48L3N0cm9uZz4gTm90IGdpdmVuIGluIGFueSBvZiB0aGUgYWJvdmUgcGFyYWdyYXBocy48L3A+In0sImJsb2NrcyI6W3sidHlwZSI6Im1hdGNoIiwiaW5zdHIiOiJEZWNpZGUgd2hpY2ggcGFyYWdyYXBoLCBBIHRvIEQsIGhhcyB0aGUgaW5mb3JtYXRpb24gZ2l2ZW4gaW4gZWFjaCBzdGF0ZW1lbnQgYmVsb3cuIFNlbGVjdCBFIGlmIHRoZSBpbmZvcm1hdGlvbiBpcyBub3QgZ2l2ZW4gaW4gYW55IG9mIHRoZSBwYXJhZ3JhcGhzLiIsImxldHRlcnMiOlsiQSIsIkIiLCJDIiwiRCIsIkUiXSwiaXRlbXMiOlt7Im4iOjEsInRleHQiOiJHb3Zlcm5tZW50IG9mZmljaWFscyB3ZXJlIGFmcmFpZCB0aGF0IHNvbWVvbmUgd291bGQgbWFrZSB1bmF1dGhvcml6ZWQgY29pbnMuIiwia2V5IjozfSx7Im4iOjIsInRleHQiOiJCeSB0aGUgZW5kIG9mIHRoZSAyMHRoIGNlbnR1cnksIGNvaW5zIHJlcGxhY2VkIHR3byBwYXBlciBiaWxscyBpbiBDYW5hZGEuIiwia2V5Ijo0fSx7Im4iOjMsInRleHQiOiJSZXBsYWNpbmcgcGFwZXIgYmlsbHMgZXZlcnkgeWVhciB3YXMgZXhwZW5zaXZlLiIsImtleSI6Mn0seyJuIjo0LCJ0ZXh0IjoiUGVvcGxlIHByZWZlcnJlZCB0byBjYXJyeSB0aGUgbGlnaHRlciBzaWx2ZXIgZG9sbGFyLiIsImtleSI6NX0seyJuIjo1LCJ0ZXh0IjoiVGhlIGFuaW1hbCBkZXBpY3RlZCBvbiBhIGxvb25pZSBpcyBmb3VuZCB0aHJvdWdob3V0IENhbmFkYS4iLCJrZXkiOjF9LHsibiI6NiwidGV4dCI6IlRoZSBpbmRpdmlkdWFsIHdobyBwaWNrZWQgdXAgdGhlIGRpZXMgaGFkIGZvcmdvdHRlbiB0byBicmluZyBpZGVudGlmaWNhdGlvbi4iLCJrZXkiOjV9LHsibiI6NywidGV4dCI6IlNob3BrZWVwZXJzIHdlcmUgdW5oYXBweSB0byBoYXZlIHBhcGVyIGJpbGxzIHJlcGxhY2VkIHdpdGggY29pbnMuIiwia2V5Ijo1fSx7Im4iOjgsInRleHQiOiJDYW5hZGFcdTIwMTlzIGNvbm5lY3Rpb24gdG8gQnJpdGFpbiBpcyBkZXBpY3RlZCBvbiBvbmUgc2lkZSBvZiB0aGUgbG9vbmllLiIsImtleSI6MX0seyJuIjo5LCJ0ZXh0IjoiQSBjaGFuZ2UgaW4gcmF3IG1hdGVyaWFscyByZWR1Y2VkIHRoZSB3ZWlnaHQgb2YgdGhlIGNvaW5zLiIsImtleSI6NH1dfV19LHsiaWQiOjQsIm5hbWUiOiJSZWFkaW5nIFBhcnQgNDogUmVhZGluZyBmb3IgVmlld3BvaW50cyIsInRpbWUiOiIxMiBtaW51dGVzIiwicGFzc2FnZSI6eyJ0eXBlIjoidGV4dCIsImxhYmVsIjoiUmVhZCB0aGUgZm9sbG93aW5nIGFydGljbGUgZnJvbSBhIHdlYnNpdGUuIiwiaHRtbCI6IjxwPkEgcmVjZW50IHZpc2l0IHRvIENhbmFkYSBieSBUdXJrcyBhbmQgQ2FpY29zIFByZW1pZXIsIFJ1ZnVzIEV3aW5nLCByZXNwYXJrZWQgaW50ZXJlc3QgaW4gQ2FuYWRhJnJzcXVvO3MgYW5uZXhhdGlvbiBvZiB0aGUgY291bnRyeS4gVHVya3MgYW5kIENhaWNvcywgYSBDYXJpYmJlYW4gYXJjaGlwZWxhZ28gb2YgNDAgaXNsYW5kcywgaGFzIGJlZW4gYSBwb2ludCBvZiBpbnRlcmVzdCBpbiBDYW5hZGEmcnNxdW87cyBoaXN0b3J5LiBUaGlzIG1vc3QgcmVjZW50IGRlYmF0ZSBtYXJrcyB0aGUgdGhpcmQgdGltZSBpbiB0aGUgbGFzdCBjZW50dXJ5IHRoYXQgT3R0YXdhIHBvbGl0aWNpYW5zIGhhdmUgcHVzaGVkIHRvIG1ha2UgdGhlIHRlcnJpdG9yeSBDYW5hZGEmcnNxdW87cyBlbGV2ZW50aCBwcm92aW5jZS4gV2l0aCBvdmVyIDMwMCBraWxvbWV0cmVzIG9mIGJlYWNoZXMsIHRoZSB0cm9waWNhbCBwYXJhZGlzZSB3b3VsZCBjZXJ0YWlubHkgYmUgYSB3ZWxjb21lIGFzc2V0LjwvcD48cD5Fd2luZyBoYWlsZWQgQ2FuYWRhIGFzIGEgcm9sZSBtb2RlbCBvZiBmaXNjYWwgcmVzcG9uc2liaWxpdHkgZnJvbSB3aGljaCBoaXMgY291bnRyeSBjb3VsZCBsZWFybiwgYWNjb2xhZGVzIHRoYXQgcmVzb3VuZGVkIGluIE90dGF3YSBvbiB0aGUgZm9yZWlnbiBsZWFkZXImcnNxdW87cyByZWNlbnQgZGlwbG9tYXRpYyBqdW5rZXQgdG8gc3B1ciBiaWxhdGVyYWwgdHJhZGUgYW5kIHRvdXJpc20uIFdoZW4gYXNrZWQgYWJvdXQgdGhlIHBvc3NpYmlsaXR5IG9mIFR1cmtzIGFuZCBDYWljb3MgYmVjb21pbmcgYSBDYW5hZGlhbiBwcm92aW5jZSwgdGhlIFByZW1pZXIgc2tpcnRlZCB0aGUgaXNzdWUuIEhlIHNhaWQgaGUgd291bGQgbm90IGRpc21pc3MgdGhlIGlkZWEgY29tcGxldGVseSwgYnV0IGhlIGFsc28gb2ZmZXJlZCB1cyBhIGdsaW1tZXIgb2YgaG9wZSB3aXRoIHRoZSB0YW50YWxpemluZyBvYnNlcnZhdGlvbiB0aGF0ICZsZHF1bzt0aGVyZSBpcyBubyBtYXJyaWFnZSB3aXRob3V0IHNvbWUga2luZCBvZiByZWxhdGlvbnNoaXAgZmlyc3QuJnJkcXVvOzwvcD48cD5MaWJlcmFsIHBvbGl0aWNpYW4gUGV0ZXIgR29sZHJpbmcgaXMgc3BlYXJoZWFkaW5nIHRoZSBsYXRlc3QgY2FtcGFpZ24gZm9yIHRoZSBhbm5leGF0aW9uIGFuZCBmZWVscyB0aGF0IG11Y2ggb2YgdGhlIGxlZ3dvcmsgaGFzIGFscmVhZHkgYmVlbiBkb25lLiBBY2NvcmRpbmcgdG8gR29sZHJpbmcsICZsZHF1bztDYW5hZGEgaGFzIHRoZSBncmVhdGVzdCBwcm9wb3J0aW9uIG9mIGZvcmVpZ24gaW52ZXN0bWVudCBpbiBUdXJrcyBhbmQgQ2FpY29zLCBhbmQgdGhlIHNlY29uZCBoaWdoZXN0IG51bWJlciBvZiB0b3VyaXN0cyB0byB0aGUgY291bnRyeS4gQW5uZXhhdGlvbiB3b3VsZCBwZXJtaXQgZnVydGhlciBncm93dGggaW4gdGhlc2UgYXJlYXMuJnJkcXVvOyBHb2xkcmluZyBhbHNvIGFyZ3VlcyB0aGF0IHRoZSBpc2xhbmQgY291bGQgc2VydmUgYXMgYSBnYXRld2F5IHRvIExhdGluIEFtZXJpY2EuICZsZHF1bztUaGUgbG9jYXRpb24gd291bGQgYmUgaWRlYWwgZm9yIG1pbGl0YXJ5IHN1cHBvcnQgZnJvbSBPdHRhd2EgYW5kIHBhcnRpY3VsYXJseSBmb3IgZGlzYXN0ZXIgcmVsaWVmLCZyZHF1bzsgaGUgYWRkcy48L3A+PHA+RGlzYXBwb2ludGluZ2x5LCBDb25zZXJ2YXRpdmUgcG9saXRpY2lhbiBKYW5pY2UgQmxvb20gY2FsbHMgdGhlIHdob2xlIGlkZWEgYSBwaXBlIGRyZWFtLiAmbGRxdW87Q2FuYWRhIGlzIG5vdCBpbiB0aGUgYnVzaW5lc3Mgb2YgYW5uZXhpbmcgdHJvcGljYWwgaXNsYW5kcywmcmRxdW87IHNoZSBjbGFpbXMuICZsZHF1bztBbm5leGF0aW9uIHdvdWxkIGJlIGV4dHJlbWVseSBjb21wbGljYXRlZCBzaW5jZSBpdCB3b3VsZCBpbnZvbHZlIGNoYW5nZXMgdG8gdGhlIGlzbGFuZHMmcnNxdW87IHRheCBhbmQgaGVhbHRoIGNhcmUgc3lzdGVtcy4mcmRxdW87IEJsb29tIGNvbnRlbmRzIHRoYXQgdGhlIGdvdmVybm1lbnQgaGFzIG1vcmUgcHJlc3NpbmcgbWF0dGVycy48L3A+PHA+WWV0LCBhY2NvcmRpbmcgdG8gYSByZWNlbnQgcG9sbCwgdGhlIG1ham9yaXR5IG9mIHRoZSBpc2xhbmRzJnJzcXVvOyByZXNpZGVudHMgc3VwcG9ydCB0aGUgcHJvcG9zYWwuIENhYiBkcml2ZXIgUm9uIERvdWdsYXMgc2F5cyBoZSZyc3F1bztkIGxvdmUgdGhlIG9wcG9ydHVuaXR5IHRvIHdvcmsgaW4gQWxiZXJ0YSZyc3F1bztzIG9pbCBpbmR1c3RyeS4gSG93ZXZlciwgaGUgYWRtaXRzIHRoZSBwcmltYXJ5IGNvbmNlcm4gb2YgbWFueSBsb2NhbHMgaXMgdGhhdCBDYW5hZGEmcnNxdW87cyBydWxlcyBhcmUgdG9vIHN0cmljdC4gJmxkcXVvO1RoZXkgZ28gYWdhaW5zdCB0aGUgbGFpZC1iYWNrIGF0dGl0dWRlIG9mIHVzIGlzbGFuZGVycy4mcmRxdW87PC9wPiJ9LCJibG9ja3MiOlt7InR5cGUiOiJzdGVtbGlzdCIsImluc3RyIjoiVXNpbmcgdGhlIGRyb3AtZG93biBtZW51ICggJiM5NjYyOyApLCBjaG9vc2UgdGhlIGJlc3Qgb3B0aW9uIGFjY29yZGluZyB0byB0aGUgaW5mb3JtYXRpb24gZ2l2ZW4gb24gdGhlIHdlYnNpdGUuIiwiaXRlbXMiOlt7Im4iOjEsInByZSI6IkV3aW5nIHZpc2l0ZWQgT3R0YXdhIHRvIiwib3B0aW9ucyI6WyJzdHJlbmd0aGVuIGVjb25vbWljIHRpZXMuIiwiZGlzY3VzcyBqb2luaW5nIENhbmFkYS4iLCJzdHVkeSBmaW5hbmNpYWwgcG9saWNpZXMuIiwiYm9vc3QgaW52ZXN0bWVudCBpbiBDYW5hZGEuIl0sImtleSI6MX0seyJuIjoyLCJwcmUiOiJBcmd1bWVudHMgcHJlc2VudGVkIGluIGZhdm91ciBvZiBhbm5leGF0aW9uIHN1Z2dlc3QiLCJvcHRpb25zIjpbImltcHJvdmVkIHJlZ3VsYXRpb25zIGZvciBib3RoIGNvdW50cmllcy4iLCJpbmNyZWFzZWQgb3Bwb3J0dW5pdGllcyBmb3IgYm90aCBwYXJ0aWVzLiIsImluY3JlYXNlZCB0b3VyaXNtIGluIGJvdGggY291bnRyaWVzLiIsImltcHJvdmVkIGhlYWx0aCBjYXJlIGZvciBib3RoIHBhcnRpZXMuIl0sImtleSI6Mn0seyJuIjozLCJwcmUiOiJKYW5pY2UgQmxvb20gYmVsaWV2ZXMgdGhhdCBhbm5leGluZyBUdXJrcyBhbmQgQ2FpY29zIGlzIiwib3B0aW9ucyI6WyJhIHNoYXJlZCBDYW5hZGlhbiBkcmVhbS4iLCJhIHBvaW50bGVzcyBwcm9wb3NpdGlvbi4iLCJhIHdvcnRoeSBjYXVzZSB0byBwdXJzdWUuIiwiYSBwcmVzc2luZyBnb3Zlcm5tZW50IGlzc3VlLiJdLCJrZXkiOjJ9LHsibiI6NCwicHJlIjoiSW5oYWJpdGFudHMgb2YgVHVya3MgYW5kIENhaWNvcyIsIm9wdGlvbnMiOlsibGVhZCBhIGRpZmZlcmVudCBsaWZlc3R5bGUgdGhhbiBDYW5hZGlhbnMuIiwid2FudCB0byBzcGVlZCB1cCB0aGUgcHJvY2VzcyBvZiBqb2luaW5nIENhbmFkYS4iLCJoYXZlIGhpZ2ggcmF0ZXMgb2YgdW5lbXBsb3ltZW50LiIsInZhbHVlIHRoZWlyIGluZGVwZW5kZW5jZSBmcm9tIGZvcmVpZ24gcG93ZXJzLiJdLCJrZXkiOjF9LHsibiI6NSwicHJlIjoiVGhlIGF1dGhvciBvZiB0aGUgYXJ0aWNsZSBpcyIsIm9wdGlvbnMiOlsiaW4gZmF2b3VyIG9mIHRoZSBwcm9wb3NhbC4iLCJza2VwdGljYWwgYWJvdXQgdGhlIHByb3NwZWN0LiIsIm9wcG9zZWQgdG8gdGhlIGFubmV4YXRpb24uIiwic3VycHJpc2VkIGJ5IHRoZSByZWFjdGlvbnMuIl0sImtleSI6MX1dfSx7InR5cGUiOiJjbG96ZSIsImluc3RyIjoiVGhlIGZvbGxvd2luZyBpcyBhIGNvbW1lbnQgYnkgYSB2aXNpdG9yIHRvIHRoZSB3ZWJzaXRlIHBhZ2UuIENvbXBsZXRlIHRoZSBjb21tZW50IGJ5IGNob29zaW5nIHRoZSBiZXN0IG9wdGlvbiB0byBmaWxsIGluIGVhY2ggYmxhbmsuIiwiYm9keSI6WyJJIGhhdmUgdG8gYWRtaXQsIHJlYWRpbmcgdGhhdCBDYW5hZGEgY291bGQgcG90ZW50aWFsbHkgIix7ImIiOjYsIm9wdGlvbnMiOlsiZW50ZXIgaW50byBidXNpbmVzcyB3aXRoIGEgQ2FyaWJiZWFuIHBhcmFkaXNlIiwiZm9yZ2UgbmV3IGRpcGxvbWF0aWMgdGllcyB3aXRoIFR1cmtzIGFuZCBDYWljb3MiLCJpbmNvcnBvcmF0ZSBhIGdyb3VwIG9mIHN1bm55IHNvdXRoZXJuIGlzbGFuZHMiLCJwcm9tb3RlIGxvdy1jb3N0IHRyYXZlbCB0aHJvdWdob3V0IHRoZSBDYXJpYmJlYW4iXSwia2V5IjozfSwiIG1hZGUgbXkgZGF5LiBUbyBiZSBob25lc3QsIGhvd2V2ZXIsIEkgYW0gbm90IGF0IGFsbCBzdXJwcmlzZWQgdGhhdCAiLHsiYiI6Nywib3B0aW9ucyI6WyJFd2luZyByZW1haW5lZCBsYXJnZWx5IHNpbGVudCBvbiB0aGUgbWF0dGVyIiwiR29sZHJpbmcgZmVsdCBoZSBoYXMgZG9uZSBhbGwgdGhhdCBoZSBjYW4iLCJCbG9vbSB0aG91Z2h0IEV3aW5nIGhhcyBiZXR0ZXIgdGhpbmdzIHRvIGRvIiwiRG91Z2xhcyBmZWFyZWQgYSBDYW5hZGlhbiBqb2IgbWlnaHQgYmUgdG9vIGhhcmQiXSwia2V5IjoxfSwiLiBUdXJrcyBhbmQgQ2FpY29zIG9mZmljaWFscyBoYXZlIGFwcHJvYWNoZWQgdGhlIENhbmFkaWFuIGdvdmVybm1lbnQgYmVmb3JlIHJlZ2FyZGluZyB0aGUgaXNzdWUsIGFuZCB3ZXJlIHJlamVjdGVkIGVhY2ggdGltZS4gQXMgRXdpbmcgaW5zaW51YXRlcywgdGhleSBsaWtlbHkgIix7ImIiOjgsIm9wdGlvbnMiOlsiZmVlbCByZXNlbnRtZW50IHRvd2FyZCIsImRlc2lyZSBjb21wZW5zYXRpb24gZnJvbSIsIm5lZWQgYW4gaW5jZW50aXZlIGZyb20iLCJ3YW50IHRvIGF2b2lkIHJlbGF0aW9ucyB3aXRoIl0sImtleSI6M30sIiBDYW5hZGEgbm93LiBJIGFtLCBob3dldmVyLCBzaG9ja2VkIGJ5IHRoZSAiLHsiYiI6OSwib3B0aW9ucyI6WyJhcnJvZ2FudGx5IG92ZXJjb25maWRlbnQgTGliZXJhbCBwb3NpdGlvbiIsImV2aWRlbnRseSBndWlsZWZ1bCBUdXJrcyBhbmQgQ2FpY29zIFByZW1pZXIiLCJoaWdobHkgcmVsdWN0YW50IFR1cmtzIGFuZCBDYWljb3MgcmVzaWRlbnQiLCJ0ZXJzZWx5IGRpc21pc3NpdmUgQ29uc2VydmF0aXZlIHBvc2l0aW9uIl0sImtleSI6NH0sIi4gWW91XHUyMDE5ZCB0aGluayBpZiB0aGVyZSB3YXMgYW55IGZpbmFuY2lhbCBnYWluIHRvIGJlIGhhZCwgdGhleSB3b3VsZCBiZSB0aGUgZmlyc3Qgb24gYm9hcmQuIEhvd2V2ZXIsIEkgZG8gYWdyZWUgd2l0aCBCbG9vbVx1MjAxOXMgc2VudGltZW50IHRoYXQgYXQgcHJlc2VudCwgaXQgaXMgcGVyaGFwcyAiLHsiYiI6MTAsIm9wdGlvbnMiOlsidG9vIGxhdGUgdG8gaW1wbGVtZW50IiwiYW4gdXJnZW50IHBvbGl0aWNhbCBtYXR0ZXIiLCJhbiB1bmZlYXNpYmxlIHNjaGVtZSIsInRvbyBidXJkZW5zb21lIGZvciBidXNpbmVzc2VzIl0sImtleSI6M30sIi4iXX1dfV19OwoKZnVuY3Rpb24gY2xiRXN0aW1hdGVSKHJhdyl7CiAgaWYgKHJhdyA+PSAzNSkgcmV0dXJuIHsgbGV2ZWw6J0NFTFBJUCAxMFx1MjAxMzEyJywgbm90ZTonQWR2YW5jZWQgcHJvZmljaWVuY3knIH07CiAgaWYgKHJhdyA+PSAzMCkgcmV0dXJuIHsgbGV2ZWw6J0NFTFBJUCA5JywgIG5vdGU6J0VmZmVjdGl2ZSBwcm9maWNpZW5jeScgfTsKICBpZiAocmF3ID49IDI3KSByZXR1cm4geyBsZXZlbDonQ0VMUElQIDgnLCAgbm90ZTonR29vZCBwcm9maWNpZW5jeScgfTsKICBpZiAocmF3ID49IDIyKSByZXR1cm4geyBsZXZlbDonQ0VMUElQIDcnLCAgbm90ZTonQWRlcXVhdGUgcHJvZmljaWVuY3knIH07CiAgaWYgKHJhdyA+PSAxNykgcmV0dXJuIHsgbGV2ZWw6J0NFTFBJUCA2JywgIG5vdGU6J0RldmVsb3BpbmcgcHJvZmljaWVuY3knIH07CiAgaWYgKHJhdyA+PSAxMSkgcmV0dXJuIHsgbGV2ZWw6J0NFTFBJUCA1JywgIG5vdGU6J0FjcXVpcmluZyBwcm9maWNpZW5jeScgfTsKICByZXR1cm4geyBsZXZlbDonQ0VMUElQIDQgb3IgYmVsb3cnLCBub3RlOidLZWVwIHByYWN0aWNpbmchJyB9Owp9CgooZnVuY3Rpb24oKXsKICAvKiAtLS0tIGluamVjdCBzY29wZWQgQ1NTIChXb3JkUHJlc3Mtc2FmZTogPHN0eWxlPiBpbiBjb250ZW50IGNhbiBiZSBzdHJpcHBlZCkgLS0tLSAqLwogIHZhciBDU1MgPSBgCi5jbHByLXdyYXB7LS1uYXZ5OiMwNTBFMjA7LS1iOTAwOiMwRDIzNTI7LS1iNzAwOiMxMjQ1QTg7LS1iNTAwOiMyNTYzRUI7LS1iNDAwOiMzQjgyRjY7LS1iMjAwOiM5M0M1RkQ7LS1iMTAwOiNEQkVBRkU7LS1iNTA6I0VGRjZGRjstLXRlYWw6IzBEOTQ4ODstLWN5YW46IzA2QjZENDstLWdyZWVuOiMxMEI5ODE7LS1ncmVlbjUwOiNFQ0ZERjU7LS1yb3NlOiNGNDNGNUU7LS10ZXh0OiMwRjE3MkE7LS1tdXRlZDojNDc1NTY5Oy0tc3VidGxlOiM5NEEzQjg7LS1ib3JkZXI6I0UyRThGMDstLWJhci1iZzojRThFQkVGOy0tYmFyLWJvcmRlcjojRDNEOUUwOy0tYmFyLXRleHQ6IzFGMjkzNzstLXBhbmVsLXAtYmc6I0Y0RjVGNzstLXBhbmVsLXAtYm9yZGVyOiNFM0U2RUE7LS1wYW5lbC1xLWJnOiNFOUY0Rjc7LS1wYW5lbC1xLWJvcmRlcjojRDZFOEVEOy0tZGQtb3Blbi1iZzojQ0JFQkY0O2ZvbnQtZmFtaWx5OidQbHVzIEpha2FydGEgU2Fucycsc3lzdGVtLXVpLC1hcHBsZS1zeXN0ZW0sU2Vnb2UgVUksUm9ib3RvLHNhbnMtc2VyaWY7Y29sb3I6dmFyKC0tdGV4dCk7bWF4LXdpZHRoOjExODBweDttYXJnaW46MCBhdXRvO3BhZGRpbmc6MTZweCAxNnB4IDU2cHg7bGluZS1oZWlnaHQ6MS41O2ZvbnQtc2l6ZToxNnB4O30KLmNscHItd3JhcCAqLC5jbHByLXdyYXAgKjo6YmVmb3JlLC5jbHByLXdyYXAgKjo6YWZ0ZXJ7Ym94LXNpemluZzpib3JkZXItYm94O30KLmNscHItd3JhcCBidXR0b257Zm9udC1mYW1pbHk6aW5oZXJpdDtjdXJzb3I6cG9pbnRlcjt9Ci5jbHByLXdyYXAgaDEsLmNscHItd3JhcCBoMiwuY2xwci13cmFwIGgzLC5jbHByLXdyYXAgcHttYXJnaW46MDt9Ci5jbHByLWhlcm97cG9zaXRpb246cmVsYXRpdmU7b3ZlcmZsb3c6aGlkZGVuO2JvcmRlci1yYWRpdXM6MjJweDtiYWNrZ3JvdW5kOnZhcigtLW5hdnkpO2NvbG9yOiNmZmY7cGFkZGluZzozNHB4IDM4cHg7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtnYXA6MTNweDthbGlnbi1pdGVtczpmbGV4LXN0YXJ0O2JveC1zaGFkb3c6MCAyMHB4IDQwcHggLTIwcHggcmdiYSg1LDE0LDMyLC40NSk7fQouY2xwci1hdXJvcmF7cG9zaXRpb246YWJzb2x1dGU7aW5zZXQ6MDtwb2ludGVyLWV2ZW50czpub25lO30KLmNscHItYXVyb3JhIHNwYW57cG9zaXRpb246YWJzb2x1dGU7ZGlzcGxheTpibG9jaztib3JkZXItcmFkaXVzOjUwJTtmaWx0ZXI6Ymx1cig0NnB4KTtvcGFjaXR5Oi41NTt9Ci5jbHByLWF1cm9yYSBzcGFuOm50aC1jaGlsZCgxKXt3aWR0aDo0MjBweDtoZWlnaHQ6NDIwcHg7bGVmdDotMTIwcHg7dG9wOi0yMDBweDtiYWNrZ3JvdW5kOnJhZGlhbC1ncmFkaWVudChjaXJjbGUsIzEyNDVBOCAwJSx0cmFuc3BhcmVudCA3MCUpO30KLmNscHItYXVyb3JhIHNwYW46bnRoLWNoaWxkKDIpe3dpZHRoOjM4MHB4O2hlaWdodDozODBweDtyaWdodDotODBweDt0b3A6LTE2MHB4O2JhY2tncm91bmQ6cmFkaWFsLWdyYWRpZW50KGNpcmNsZSwjMEQ5NDg4IDAlLHRyYW5zcGFyZW50IDcwJSk7fQouY2xwci1hdXJvcmEgc3BhbjpudGgtY2hpbGQoMyl7d2lkdGg6MzQwcHg7aGVpZ2h0OjM0MHB4O3JpZ2h0OjIyJTtib3R0b206LTI0MHB4O2JhY2tncm91bmQ6cmFkaWFsLWdyYWRpZW50KGNpcmNsZSwjMjU2M0VCIDAlLHRyYW5zcGFyZW50IDcwJSk7fQouY2xwci1oZXJvLWJhZGdlc3tkaXNwbGF5OmZsZXg7Z2FwOjEwcHg7YWxpZ24taXRlbXM6Y2VudGVyO2ZsZXgtd3JhcDp3cmFwO3Bvc2l0aW9uOnJlbGF0aXZlO30KLmNscHItYmFkZ2UtYnJhbmR7YmFja2dyb3VuZDojZmZmO2NvbG9yOnZhcigtLWI5MDApO2ZvbnQtd2VpZ2h0OjgwMDtmb250LXNpemU6MTNweDtwYWRkaW5nOjRweCAxMXB4O2JvcmRlci1yYWRpdXM6OTk5cHg7bGV0dGVyLXNwYWNpbmc6LjAxZW07fQouY2xwci1iYWRnZS1zZXR7Y29sb3I6dmFyKC0tYjIwMCk7Zm9udC1zaXplOjEzcHg7Zm9udC13ZWlnaHQ6NjAwO30KLmNscHItaGVybyBoMXtwb3NpdGlvbjpyZWxhdGl2ZTtmb250LXNpemU6Y2xhbXAoMjZweCw0dncsNDBweCk7Zm9udC13ZWlnaHQ6ODAwO2xldHRlci1zcGFjaW5nOi0uMDJlbTtsaW5lLWhlaWdodDoxLjEyO30KLmNscHItaGVyby1zdWJ7cG9zaXRpb246cmVsYXRpdmU7Y29sb3I6I0M3RDJFMztmb250LXNpemU6MTQuNXB4O21heC13aWR0aDo3NjBweDt9Ci5jbHByLWhlcm8tY2hpcHN7ZGlzcGxheTpmbGV4O2dhcDo4cHg7ZmxleC13cmFwOndyYXA7cG9zaXRpb246cmVsYXRpdmU7fQouY2xwci1jaGlwe2ZvbnQtc2l6ZToxMi41cHg7Zm9udC13ZWlnaHQ6NjAwO2NvbG9yOiNFNUVFRkI7YmFja2dyb3VuZDpyZ2JhKDI1NSwyNTUsMjU1LC4wOCk7Ym9yZGVyOjFweCBzb2xpZCByZ2JhKDI1NSwyNTUsMjU1LC4xNik7cGFkZGluZzo1cHggMTFweDtib3JkZXItcmFkaXVzOjk5OXB4O30KLmNscHItY3Rhe3Bvc2l0aW9uOnJlbGF0aXZlO21hcmdpbi10b3A6NnB4O2JhY2tncm91bmQ6dmFyKC0tYjUwMCk7Y29sb3I6I2ZmZjtib3JkZXI6bm9uZTtmb250LXdlaWdodDo3MDA7Zm9udC1zaXplOjE1cHg7cGFkZGluZzoxMnB4IDIycHg7Ym9yZGVyLXJhZGl1czoxMnB4O2JveC1zaGFkb3c6MCAxMnB4IDI0cHggLTEwcHggcmdiYSgzNyw5OSwyMzUsLjgpO3RyYW5zaXRpb246dHJhbnNmb3JtIC4xNXMsYmFja2dyb3VuZCAuMTVzO30KLmNscHItY3RhOmhvdmVye3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0ycHgpO2JhY2tncm91bmQ6dmFyKC0tYjQwMCk7fQouY2xwci10b29sYmFye2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjEwcHg7bWFyZ2luLXRvcDoxOHB4O3BhZGRpbmc6MTBweCAxNHB4O2JhY2tncm91bmQ6I2ZmZjtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWJvcmRlcik7Ym9yZGVyLXJhZGl1czoxNHB4O2JveC1zaGFkb3c6MCA2cHggMThweCAtMTJweCByZ2JhKDE1LDIzLDQyLC4yNSk7cG9zaXRpb246c3RpY2t5O3RvcDo4cHg7ei1pbmRleDozMDt9Ci5jbHByLXRvb2xiYXJbaGlkZGVuXXtkaXNwbGF5Om5vbmU7fQouY2xwci10b29sYmFyLXNwYWNlcntmbGV4OjE7fQouY2xwci1zY29yZS1jaGlwe2ZvbnQtc2l6ZToxM3B4O2ZvbnQtd2VpZ2h0OjcwMDtjb2xvcjp2YXIoLS1iOTAwKTtiYWNrZ3JvdW5kOnZhcigtLWI1MCk7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1iMTAwKTtwYWRkaW5nOjZweCAxMnB4O2JvcmRlci1yYWRpdXM6OTk5cHg7fQouY2xwci10YnRue2JhY2tncm91bmQ6I2ZmZjtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWJvcmRlcik7Y29sb3I6dmFyKC0tdGV4dCk7Zm9udC13ZWlnaHQ6NzAwO2ZvbnQtc2l6ZToxM3B4O3BhZGRpbmc6OHB4IDE1cHg7Ym9yZGVyLXJhZGl1czoxMHB4O3RyYW5zaXRpb246dHJhbnNmb3JtIC4xMnMsYm94LXNoYWRvdyAuMTJzO30KLmNscHItdGJ0bjpob3Zlcnt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMXB4KTtib3gtc2hhZG93OjAgNnB4IDE0cHggLThweCByZ2JhKDE1LDIzLDQyLC4zKTt9Ci5jbHByLXRidG4tY2hlY2t7YmFja2dyb3VuZDp2YXIoLS1ncmVlbik7Ym9yZGVyLWNvbG9yOnZhcigtLWdyZWVuKTtjb2xvcjojZmZmO30KLmNscHItdGJ0bi1jaGVjazpob3ZlcntiYWNrZ3JvdW5kOiMwY2E2Nzg7fQouY2xwci10YnRuW2Rpc2FibGVkXXtvcGFjaXR5Oi41O2N1cnNvcjpub3QtYWxsb3dlZDt0cmFuc2Zvcm06bm9uZTtib3gtc2hhZG93Om5vbmU7fQouY2xwci1zaW17bWFyZ2luLXRvcDoxNnB4O30KLmNscHItc2ltW2hpZGRlbl17ZGlzcGxheTpub25lO30KLmNscHItZG90c3tkaXNwbGF5OmZsZXg7Z2FwOjhweDttYXJnaW46MCAwIDEycHggMnB4O2ZsZXgtd3JhcDp3cmFwO30KLmNscHItZG90e2Rpc3BsYXk6aW5saW5lLWZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDo3cHg7Zm9udC1zaXplOjEyLjVweDtmb250LXdlaWdodDo3MDA7Y29sb3I6dmFyKC0tbXV0ZWQpO2JhY2tncm91bmQ6I2ZmZjtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWJvcmRlcik7cGFkZGluZzo2cHggMTJweDtib3JkZXItcmFkaXVzOjk5OXB4O2N1cnNvcjpwb2ludGVyO3RyYW5zaXRpb246YWxsIC4xNXM7fQouY2xwci1kb3QgYntkaXNwbGF5OmlubGluZS1mbGV4O3dpZHRoOjE5cHg7aGVpZ2h0OjE5cHg7Ym9yZGVyLXJhZGl1czo1MCU7YmFja2dyb3VuZDp2YXIoLS1iMTAwKTtjb2xvcjp2YXIoLS1iOTAwKTthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjtmb250LXNpemU6MTFweDt9Ci5jbHByLWRvdC5jbHByLWN1cntiYWNrZ3JvdW5kOnZhcigtLWI1MDApO2JvcmRlci1jb2xvcjp2YXIoLS1iNTAwKTtjb2xvcjojZmZmO30KLmNscHItZG90LmNscHItY3VyIGJ7YmFja2dyb3VuZDpyZ2JhKDI1NSwyNTUsMjU1LC4yNSk7Y29sb3I6I2ZmZjt9Ci5jbHByLWRvdC5jbHByLWRvbmUgYntiYWNrZ3JvdW5kOnZhcigtLWdyZWVuKTtjb2xvcjojZmZmO30KLmNscHItY2F0e2JhY2tncm91bmQ6I2ZmZjtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWJhci1ib3JkZXIpO2JvcmRlci1yYWRpdXM6MTJweDtvdmVyZmxvdzpoaWRkZW47Ym94LXNoYWRvdzowIDEwcHggMzBweCAtMThweCByZ2JhKDE1LDIzLDQyLC40KTt9Ci5jbHByLWJhcntkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDoxMnB4O3BhZGRpbmc6MTFweCAxNnB4O2JhY2tncm91bmQ6dmFyKC0tYmFyLWJnKTtib3JkZXItYm90dG9tOjFweCBzb2xpZCB2YXIoLS1iYXItYm9yZGVyKTt9Ci5jbHByLWJhci10aXRsZXtmb250LXNpemU6MTNweDtmb250LXdlaWdodDo3MDA7Y29sb3I6dmFyKC0tYmFyLXRleHQpO2ZsZXg6MTttaW4td2lkdGg6MDt9Ci5jbHByLWJhci10aW1lcntmb250LXNpemU6MTJweDtjb2xvcjp2YXIoLS1iYXItdGV4dCk7d2hpdGUtc3BhY2U6bm93cmFwO30KLmNscHItYmFyLXRpbWVyIGJ7Zm9udC13ZWlnaHQ6ODAwO30KLmNscHItY29sc3tkaXNwbGF5OmdyaWQ7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjFmciAxZnI7Z2FwOjA7fQouY2xwci1wYXNzYWdle3BhZGRpbmc6MjBweCAyMnB4O2JhY2tncm91bmQ6dmFyKC0tcGFuZWwtcC1iZyk7Ym9yZGVyLXJpZ2h0OjFweCBzb2xpZCB2YXIoLS1wYW5lbC1wLWJvcmRlcik7bWF4LWhlaWdodDoxMjAwcHg7b3ZlcmZsb3c6YXV0bzt9Ci5jbHByLXFjb2x7cGFkZGluZzoxOHB4IDIycHg7YmFja2dyb3VuZDp2YXIoLS1wYW5lbC1xLWJnKTttYXgtaGVpZ2h0OjEyMDBweDtvdmVyZmxvdzphdXRvO30KLmNscHItcGxhYmVsLC5jbHByLWluc3Rye2Rpc3BsYXk6ZmxleDtnYXA6OXB4O2FsaWduLWl0ZW1zOmZsZXgtc3RhcnQ7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NzAwO2NvbG9yOnZhcigtLWI5MDApO21hcmdpbi1ib3R0b206MTJweDt9Ci5jbHByLXBsYWJlbDo6YmVmb3JlLC5jbHByLWluc3RyOjpiZWZvcmV7Y29udGVudDoiaSI7ZmxleDpub25lO3dpZHRoOjE3cHg7aGVpZ2h0OjE3cHg7Ym9yZGVyLXJhZGl1czo1MCU7YmFja2dyb3VuZDp2YXIoLS1iNTAwKTtjb2xvcjojZmZmO2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjgwMDtmb250LXN0eWxlOml0YWxpYztkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXI7bWFyZ2luLXRvcDoxcHg7fQouY2xwci1wYXNzYWdlIHB7Zm9udC1zaXplOjE0LjVweDtjb2xvcjojMWUyYTNhO21hcmdpbi1ib3R0b206MTFweDtsaW5lLWhlaWdodDoxLjcyO30KLmNscHItcGltZ3t3aWR0aDoxMDAlO2hlaWdodDphdXRvO2JvcmRlcjoxcHggc29saWQgdmFyKC0tcGFuZWwtcC1ib3JkZXIpO2JvcmRlci1yYWRpdXM6OHB4O2JhY2tncm91bmQ6I2ZmZjtkaXNwbGF5OmJsb2NrO30KLmNscHItYmxvY2t7YmFja2dyb3VuZDojZmZmO2JvcmRlcjoxcHggc29saWQgdmFyKC0tcGFuZWwtcS1ib3JkZXIpO2JvcmRlci1yYWRpdXM6MTJweDtwYWRkaW5nOjE2cHggMTZweDttYXJnaW4tYm90dG9tOjE2cHg7fQouY2xwci1zdGVte2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjhweDtmbGV4LXdyYXA6d3JhcDtmb250LXNpemU6MTVweDtjb2xvcjp2YXIoLS10ZXh0KTtwYWRkaW5nOjlweCAwO2xpbmUtaGVpZ2h0OjEuNzt9Ci5jbHByLXN0ZW0gKyAuY2xwci1zdGVte2JvcmRlci10b3A6MXB4IGRhc2hlZCAjRTZFREYxO30KLmNscHItc251bXtmb250LXdlaWdodDo4MDA7Y29sb3I6dmFyKC0tYjcwMCk7fQouY2xwci1jbG96ZXtmb250LXNpemU6MTVweDtjb2xvcjp2YXIoLS10ZXh0KTtsaW5lLWhlaWdodDoyLjE1O30KLmNscHItY2xvemUgLmNscHItcGFyYXttYXJnaW4tYm90dG9tOjEycHg7d2hpdGUtc3BhY2U6cHJlLXdyYXA7fQouY2xwci1tYXRjaC1yb3d7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmZsZXgtc3RhcnQ7Z2FwOjEycHg7cGFkZGluZzoxMXB4IDA7Zm9udC1zaXplOjE0LjVweDtsaW5lLWhlaWdodDoxLjY7fQouY2xwci1tYXRjaC1yb3cgKyAuY2xwci1tYXRjaC1yb3d7Ym9yZGVyLXRvcDoxcHggZGFzaGVkICNFNkVERjE7fQouY2xwci1tYXRjaC1yb3cgLmNscHItc251bXttYXJnaW4tdG9wOjVweDt9Ci8qIGRyb3Bkb3duIHdpZGdldCAqLwouY2xwci1kZHtwb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5OmlubGluZS1mbGV4O3ZlcnRpY2FsLWFsaWduOm1pZGRsZTttYXJnaW46MnB4IDJweDt9Ci5jbHByLWRkLWJ0bntkaXNwbGF5OmlubGluZS1mbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6OHB4O21pbi13aWR0aDo2NHB4O21heC13aWR0aDozNDBweDtiYWNrZ3JvdW5kOiNmZmY7Ym9yZGVyOjFweCBzb2xpZCAjQjdDMkNFO2JvcmRlci1yYWRpdXM6NnB4O3BhZGRpbmc6NXB4IDlweDtmb250LXNpemU6MTMuNXB4O2NvbG9yOnZhcigtLXRleHQpO2xpbmUtaGVpZ2h0OjEuMzU7dGV4dC1hbGlnbjpsZWZ0O3RyYW5zaXRpb246YmFja2dyb3VuZCAuMTJzLGJvcmRlci1jb2xvciAuMTJzO30KLmNscHItZGQtYnRuOmhvdmVye2JhY2tncm91bmQ6dmFyKC0tYjUwKTtib3JkZXItY29sb3I6dmFyKC0tYjQwMCk7fQouY2xwci1kZC5jbHByLW9wZW4gLmNscHItZGQtYnRue2JhY2tncm91bmQ6dmFyKC0tZGQtb3Blbi1iZyk7Ym9yZGVyLWNvbG9yOnZhcigtLWI0MDApO30KLmNscHItZGQtdHh0e2ZsZXg6MTttaW4td2lkdGg6MDt9Ci5jbHByLWRkLXR4dC5jbHByLWVtcHR5e2NvbG9yOnZhcigtLXN1YnRsZSk7bGV0dGVyLXNwYWNpbmc6M3B4O30KLmNscHItZGQtY2FyZXR7Zm9udC1zaXplOjlweDtjb2xvcjp2YXIoLS1iNzAwKTtmbGV4Om5vbmU7fQouY2xwci1kZC1tZW51e3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6NjA7dG9wOmNhbGMoMTAwJSArIDRweCk7bGVmdDowO21pbi13aWR0aDoyNDBweDttYXgtd2lkdGg6MzYwcHg7YmFja2dyb3VuZDojZmZmO2JvcmRlcjoxcHggc29saWQgI0M2RDBEQTtib3JkZXItcmFkaXVzOjhweDtib3gtc2hhZG93OjAgMTZweCAzNHB4IC0xMnB4IHJnYmEoMTUsMjMsNDIsLjQpO3BhZGRpbmc6NXB4O2Rpc3BsYXk6bm9uZTt9Ci5jbHByLWRkLmNscHItb3BlbiAuY2xwci1kZC1tZW51e2Rpc3BsYXk6YmxvY2s7fQouY2xwci1kZC1vcHR7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmZsZXgtc3RhcnQ7Z2FwOjlweDtwYWRkaW5nOjhweCA5cHg7Ym9yZGVyLXJhZGl1czo2cHg7Zm9udC1zaXplOjEzLjVweDtjb2xvcjp2YXIoLS10ZXh0KTtjdXJzb3I6cG9pbnRlcjtsaW5lLWhlaWdodDoxLjQ7fQouY2xwci1kZC1vcHQ6aG92ZXJ7YmFja2dyb3VuZDp2YXIoLS1iNTApO30KLmNscHItZGQtb3B0IC5jbHByLXJhZGlve2ZsZXg6bm9uZTt3aWR0aDoxNXB4O2hlaWdodDoxNXB4O2JvcmRlci1yYWRpdXM6NTAlO2JvcmRlcjoxLjVweCBzb2xpZCAjOUFBN0I0O21hcmdpbi10b3A6MXB4O30KLmNscHItZGQtb3B0LmNscHItc2VsIC5jbHByLXJhZGlve2JvcmRlci1jb2xvcjp2YXIoLS1iNTAwKTtiYWNrZ3JvdW5kOnJhZGlhbC1ncmFkaWVudChjaXJjbGUsIzI1NjNFQiA0MiUsI2ZmZiA0NyUpO30KLmNscHItZGQuY2xwci1yaWdodCAuY2xwci1kZC1idG57YmFja2dyb3VuZDp2YXIoLS1ncmVlbjUwKTtib3JkZXI6MnB4IHNvbGlkIHZhcigtLWdyZWVuKTtjb2xvcjojMDQ3ODU3O30KLmNscHItZGQuY2xwci13cm9uZyAuY2xwci1kZC1idG57YmFja2dyb3VuZDojRkZGMUYyO2JvcmRlcjoycHggc29saWQgdmFyKC0tcm9zZSk7Y29sb3I6I0JFMTIzQzt9Ci5jbHByLXNvbHZlZHtkaXNwbGF5Om5vbmU7bWFyZ2luLWxlZnQ6N3B4O2ZvbnQtc2l6ZToxMi41cHg7Zm9udC13ZWlnaHQ6NzAwO2NvbG9yOiMwNDc4NTc7fQouY2xwci1kZC5jbHByLXdyb25nIC5jbHByLXNvbHZlZHtkaXNwbGF5OmlubGluZTt9Ci5jbHByLW5hdntkaXNwbGF5OmZsZXg7Z2FwOjEwcHg7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47cGFkZGluZzoxNHB4IDE4cHg7YmFja2dyb3VuZDp2YXIoLS1iYXItYmcpO2JvcmRlci10b3A6MXB4IHNvbGlkIHZhcigtLWJhci1ib3JkZXIpO30KLmNscHItbmF2YnRue2JhY2tncm91bmQ6dmFyKC0tYjkwMCk7Y29sb3I6I2ZmZjtib3JkZXI6bm9uZTtmb250LXdlaWdodDo3MDA7Zm9udC1zaXplOjEzLjVweDtwYWRkaW5nOjlweCAyMHB4O2JvcmRlci1yYWRpdXM6OXB4O3RyYW5zaXRpb246dHJhbnNmb3JtIC4xMnMsYmFja2dyb3VuZCAuMTJzO30KLmNscHItbmF2YnRuOmhvdmVye2JhY2tncm91bmQ6dmFyKC0tYjcwMCk7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTFweCk7fQouY2xwci1uYXZidG4uY2xwci1naG9zdHtiYWNrZ3JvdW5kOiNmZmY7Y29sb3I6dmFyKC0tbXV0ZWQpO2JvcmRlcjoxcHggc29saWQgdmFyKC0tYmFyLWJvcmRlcik7fQouY2xwci1uYXZidG5bZGlzYWJsZWRde29wYWNpdHk6LjQ7Y3Vyc29yOm5vdC1hbGxvd2VkO3RyYW5zZm9ybTpub25lO30KLmNscHItcmVzdWx0c3ttYXJnaW4tdG9wOjE4cHg7fQouY2xwci1yZXN1bHRzW2hpZGRlbl17ZGlzcGxheTpub25lO30KLmNscHItcmVzLWNhcmR7YmFja2dyb3VuZDojZmZmO2JvcmRlcjoxcHggc29saWQgdmFyKC0tYm9yZGVyKTtib3JkZXItcmFkaXVzOjE4cHg7cGFkZGluZzoyNHB4IDI2cHg7Ym94LXNoYWRvdzowIDE2cHggNDBweCAtMjJweCByZ2JhKDE1LDIzLDQyLC40KTt9Ci5jbHByLXJlcy10b3B7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6MjBweDtmbGV4LXdyYXA6d3JhcDt9Ci5jbHByLXJlcy1zY29yZXtmb250LXNpemU6NDRweDtmb250LXdlaWdodDo4MDA7Y29sb3I6dmFyKC0tYjcwMCk7bGluZS1oZWlnaHQ6MTt9Ci5jbHByLXJlcy1zY29yZSBzcGFue2ZvbnQtc2l6ZToyMHB4O2NvbG9yOnZhcigtLXN1YnRsZSk7fQouY2xwci1yZXMtY2xie2JhY2tncm91bmQ6dmFyKC0tYjUwKTtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWIxMDApO2JvcmRlci1yYWRpdXM6MTJweDtwYWRkaW5nOjEwcHggMTZweDt9Ci5jbHByLXJlcy1jbGIgYntkaXNwbGF5OmJsb2NrO2ZvbnQtc2l6ZToxOHB4O2NvbG9yOnZhcigtLWI5MDApO30KLmNscHItcmVzLWNsYiBzbWFsbHtjb2xvcjp2YXIoLS1tdXRlZCk7fQouY2xwci1yZXMtYnJlYWt7ZGlzcGxheTpmbGV4O2dhcDoxMHB4O2ZsZXgtd3JhcDp3cmFwO21hcmdpbi10b3A6MTZweDt9Ci5jbHByLXJlcy1waWxse2ZvbnQtc2l6ZToxM3B4O2ZvbnQtd2VpZ2h0OjcwMDtjb2xvcjp2YXIoLS1tdXRlZCk7YmFja2dyb3VuZDojRjFGNUY5O2JvcmRlci1yYWRpdXM6OTk5cHg7cGFkZGluZzo2cHggMTNweDt9Ci5jbHByLXJlcy1hY3Rpb25ze2Rpc3BsYXk6ZmxleDtnYXA6MTBweDttYXJnaW4tdG9wOjE4cHg7ZmxleC13cmFwOndyYXA7fQpAbWVkaWEobWF4LXdpZHRoOjgyMHB4KXsuY2xwci1jb2xze2dyaWQtdGVtcGxhdGUtY29sdW1uczoxZnI7fS5jbHByLXBhc3NhZ2V7Ym9yZGVyLXJpZ2h0Om5vbmU7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgdmFyKC0tcGFuZWwtcC1ib3JkZXIpO21heC1oZWlnaHQ6bm9uZTt9LmNscHItcWNvbHttYXgtaGVpZ2h0Om5vbmU7fX0KYDsKICB2YXIgc3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpOyBzdC50ZXh0Q29udGVudCA9IENTUzsgZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChzdCk7CiAgdmFyIHdyYXAgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2xwcldyYXAnKTsKICB2YXIgc3RhcnRCdG4gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2xwclN0YXJ0Jyk7CiAgdmFyIHRvb2xiYXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2xwclRvb2xiYXInKTsKICB2YXIgc2ltID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NscHJTaW0nKTsKICB2YXIgZG90c0VsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NscHJEb3RzJyk7CiAgdmFyIGNhdEVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NscHJDYXQnKTsKICB2YXIgcmVzdWx0c0VsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NscHJSZXN1bHRzJyk7CiAgdmFyIHNjb3JlQ2hpcCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjbHByU2NvcmVDaGlwJyk7CiAgdmFyIGNoZWNrQnRuID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NscHJDaGVjaycpOwogIHZhciByZXNldEJ0biA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjbHByUmVzZXQnKTsKCiAgdmFyIFEgPSBbXTsKICB2YXIgY3VyUGFydCA9IDA7CiAgdmFyIGNoZWNrZWQgPSBmYWxzZTsKCiAgZnVuY3Rpb24gZWwodGFnLCBjbHMsIGh0bWwpeyB2YXIgZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KHRhZyk7IGlmKGNscyllLmNsYXNzTmFtZT1jbHM7IGlmKGh0bWwhPW51bGwpZS5pbm5lckhUTUw9aHRtbDsgcmV0dXJuIGU7IH0KCiAgLyogQnVpbGQgdGhlIHBlcnNpc3RlbnQgcXVlc3Rpb24gbGlzdCBPTkNFOyBhdHRhY2ggLl9xIHRvIGVhY2ggaXRlbS9ibGFuayBzbwogICAgIHJlLXJlbmRlcmluZyBhIHBhcnQgcmV1c2VzIHRoZSBzYW1lIHN0YXRlIGluc3RlYWQgb2YgZHVwbGljYXRpbmcgaXQuICovCiAgZnVuY3Rpb24gaW5pdFF1ZXN0aW9ucygpewogICAgUSA9IFtdOwogICAgUkRBVEEucGFydHMuZm9yRWFjaChmdW5jdGlvbihwYXJ0KXsKICAgICAgcGFydC5ibG9ja3MuZm9yRWFjaChmdW5jdGlvbihibGspewogICAgICAgIGlmKGJsay50eXBlPT09J2Nsb3plJyl7CiAgICAgICAgICBibGsuYm9keS5mb3JFYWNoKGZ1bmN0aW9uKHRvayl7IGlmKHR5cGVvZiB0b2s9PT0nb2JqZWN0Jyl7IHRvay5fcT17c2VsOm51bGwsa2V5OnRvay5rZXksbjp0b2suYixwYXJ0OnBhcnQuaWR9OyBRLnB1c2godG9rLl9xKTsgfSB9KTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgYmxrLml0ZW1zLmZvckVhY2goZnVuY3Rpb24oaXQpeyBpdC5fcT17c2VsOm51bGwsa2V5Oml0LmtleSxuOml0Lm4scGFydDpwYXJ0LmlkfTsgUS5wdXNoKGl0Ll9xKTsgfSk7CiAgICAgICAgfQogICAgICB9KTsKICAgIH0pOwogIH0KCiAgZnVuY3Rpb24gbWFrZURyb3Bkb3duKG9wdGlvbnMsIHFyZWYpewogICAgdmFyIGRkID0gZWwoJ3NwYW4nLCdjbHByLWRkJyk7CiAgICB2YXIgYnRuID0gZWwoJ2J1dHRvbicsJ2NscHItZGQtYnRuJyk7CiAgICB2YXIgdHh0ID0gZWwoJ3NwYW4nLCdjbHByLWRkLXR4dCBjbHByLWVtcHR5JywnICAgJyk7CiAgICB2YXIgY2FyZXQgPSBlbCgnc3BhbicsJ2NscHItZGQtY2FyZXQnLCdcdTI1YmUnKTsKICAgIGJ0bi5hcHBlbmRDaGlsZCh0eHQpOyBidG4uYXBwZW5kQ2hpbGQoY2FyZXQpOwogICAgdmFyIHNvbHZlZCA9IGVsKCdzcGFuJywnY2xwci1zb2x2ZWQnLCcnKTsKICAgIHZhciBtZW51ID0gZWwoJ3NwYW4nLCdjbHByLWRkLW1lbnUnKTsKICAgIG9wdGlvbnMuZm9yRWFjaChmdW5jdGlvbihvcHQsIGkpewogICAgICB2YXIgbyA9IGVsKCdzcGFuJywnY2xwci1kZC1vcHQnKTsKICAgICAgby5hcHBlbmRDaGlsZChlbCgnc3BhbicsJ2NscHItcmFkaW8nKSk7CiAgICAgIG8uYXBwZW5kQ2hpbGQoZWwoJ3NwYW4nLG51bGwsb3B0KSk7CiAgICAgIG8uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbihldil7CiAgICAgICAgZXYuc3RvcFByb3BhZ2F0aW9uKCk7CiAgICAgICAgaWYoY2hlY2tlZCkgcmV0dXJuOwogICAgICAgIHFyZWYuc2VsID0gaSsxOwogICAgICAgIHR4dC50ZXh0Q29udGVudCA9IG9wdDsgdHh0LmNsYXNzTmFtZT0nY2xwci1kZC10eHQnOwogICAgICAgIG1lbnUucXVlcnlTZWxlY3RvckFsbCgnLmNscHItZGQtb3B0JykuZm9yRWFjaChmdW5jdGlvbih4KXt4LmNsYXNzTGlzdC5yZW1vdmUoJ2NscHItc2VsJyk7fSk7CiAgICAgICAgby5jbGFzc0xpc3QuYWRkKCdjbHByLXNlbCcpOwogICAgICAgIGNsb3NlQWxsKCk7CiAgICAgICAgdXBkYXRlU2NvcmVDaGlwKCk7CiAgICAgIH0pOwogICAgICBtZW51LmFwcGVuZENoaWxkKG8pOwogICAgfSk7CiAgICBidG4uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbihldil7CiAgICAgIGV2LnN0b3BQcm9wYWdhdGlvbigpOwogICAgICBpZihjaGVja2VkKSByZXR1cm47CiAgICAgIHZhciB3YXNPcGVuID0gZGQuY2xhc3NMaXN0LmNvbnRhaW5zKCdjbHByLW9wZW4nKTsKICAgICAgY2xvc2VBbGwoKTsKICAgICAgaWYoIXdhc09wZW4pIGRkLmNsYXNzTGlzdC5hZGQoJ2NscHItb3BlbicpOwogICAgfSk7CiAgICBkZC5hcHBlbmRDaGlsZChidG4pOyBkZC5hcHBlbmRDaGlsZChzb2x2ZWQpOyBkZC5hcHBlbmRDaGlsZChtZW51KTsKICAgIHFyZWYuZGRFbCA9IGRkOyBxcmVmLnR4dEVsID0gdHh0OyBxcmVmLnNvbHZlZEVsID0gc29sdmVkOyBxcmVmLm9wdGlvbnMgPSBvcHRpb25zOwogICAgaWYocXJlZi5zZWwhPW51bGwpewogICAgICB0eHQudGV4dENvbnRlbnQgPSBvcHRpb25zW3FyZWYuc2VsLTFdOyB0eHQuY2xhc3NOYW1lPSdjbHByLWRkLXR4dCc7CiAgICAgIHZhciBzbyA9IG1lbnUucXVlcnlTZWxlY3RvckFsbCgnLmNscHItZGQtb3B0JylbcXJlZi5zZWwtMV07IGlmKHNvKSBzby5jbGFzc0xpc3QuYWRkKCdjbHByLXNlbCcpOwogICAgfQogICAgcmV0dXJuIGRkOwogIH0KICBmdW5jdGlvbiBjbG9zZUFsbCgpeyB3cmFwLnF1ZXJ5U2VsZWN0b3JBbGwoJy5jbHByLWRkLmNscHItb3BlbicpLmZvckVhY2goZnVuY3Rpb24oZCl7ZC5jbGFzc0xpc3QucmVtb3ZlKCdjbHByLW9wZW4nKTt9KTsgfQogIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgY2xvc2VBbGwpOwoKICBmdW5jdGlvbiBidWlsZFBhcnQocGkpewogICAgdmFyIHBhcnQgPSBSREFUQS5wYXJ0c1twaV07CiAgICBjYXRFbC5pbm5lckhUTUw9Jyc7CiAgICB2YXIgYmFyID0gZWwoJ2RpdicsJ2NscHItYmFyJyk7CiAgICBiYXIuYXBwZW5kQ2hpbGQoZWwoJ2RpdicsJ2NscHItYmFyLXRpdGxlJywgJ1ByYWN0aWNlIFRlc3QgMiBcdTIwMTMgJytwYXJ0Lm5hbWUpKTsKICAgIGJhci5hcHBlbmRDaGlsZChlbCgnZGl2JywnY2xwci1iYXItdGltZXInLCdTdWdnZXN0ZWQgdGltZTogPGI+JytwYXJ0LnRpbWUrJzwvYj4nKSk7CiAgICBjYXRFbC5hcHBlbmRDaGlsZChiYXIpOwogICAgdmFyIGNvbHMgPSBlbCgnZGl2JywnY2xwci1jb2xzJyk7CiAgICB2YXIgbGVmdCA9IGVsKCdkaXYnLCdjbHByLXBhc3NhZ2UnKTsKICAgIGxlZnQuYXBwZW5kQ2hpbGQoZWwoJ2RpdicsJ2NscHItcGxhYmVsJywgcGFydC5wYXNzYWdlLmxhYmVsKSk7CiAgICBpZihwYXJ0LnBhc3NhZ2UudHlwZT09PSdpbWFnZScpewogICAgICB2YXIgaW1nID0gZWwoJ2ltZycsJ2NscHItcGltZycpOyBpbWcuc3JjID0gcGFydC5wYXNzYWdlLnNyYzsgaW1nLmFsdCA9IHBhcnQucGFzc2FnZS5hbHR8fCcnOyBsZWZ0LmFwcGVuZENoaWxkKGltZyk7CiAgICB9IGVsc2UgewogICAgICBsZWZ0LmFwcGVuZENoaWxkKGVsKCdkaXYnLG51bGwsIHBhcnQucGFzc2FnZS5odG1sKSk7CiAgICB9CiAgICB2YXIgcmlnaHQgPSBlbCgnZGl2JywnY2xwci1xY29sJyk7CiAgICBwYXJ0LmJsb2Nrcy5mb3JFYWNoKGZ1bmN0aW9uKGJsb2NrKXsgcmlnaHQuYXBwZW5kQ2hpbGQoYnVpbGRCbG9jayhibG9jaywgcGFydCkpOyB9KTsKICAgIGNvbHMuYXBwZW5kQ2hpbGQobGVmdCk7IGNvbHMuYXBwZW5kQ2hpbGQocmlnaHQpOwogICAgY2F0RWwuYXBwZW5kQ2hpbGQoY29scyk7CiAgICB2YXIgbmF2ID0gZWwoJ2RpdicsJ2NscHItbmF2Jyk7CiAgICB2YXIgcHJldiA9IGVsKCdidXR0b24nLCdjbHByLW5hdmJ0biBjbHByLWdob3N0JywnXHUyMTkwIFByZXZpb3VzIHBhcnQnKTsKICAgIHZhciBuZXh0ID0gZWwoJ2J1dHRvbicsJ2NscHItbmF2YnRuJywnTmV4dCBwYXJ0IFx1MjE5MicpOwogICAgcHJldi5kaXNhYmxlZCA9IChwaT09PTApOyBuZXh0LmRpc2FibGVkID0gKHBpPT09UkRBVEEucGFydHMubGVuZ3RoLTEpOwogICAgcHJldi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKCl7IGlmKHBpPjApIGdvKHBpLTEpOyB9KTsKICAgIG5leHQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbigpeyBpZihwaTxSREFUQS5wYXJ0cy5sZW5ndGgtMSkgZ28ocGkrMSk7IH0pOwogICAgbmF2LmFwcGVuZENoaWxkKHByZXYpOyBuYXYuYXBwZW5kQ2hpbGQobmV4dCk7CiAgICBjYXRFbC5hcHBlbmRDaGlsZChuYXYpOwogICAgaWYoY2hlY2tlZCkgYXBwbHlNYXJrcygpOwogIH0KCiAgZnVuY3Rpb24gYnVpbGRCbG9jayhibG9jaywgcGFydCl7CiAgICB2YXIgd3JhcEIgPSBlbCgnZGl2JywnY2xwci1ibG9jaycpOwogICAgd3JhcEIuYXBwZW5kQ2hpbGQoZWwoJ2RpdicsJ2NscHItaW5zdHInLCBibG9jay5pbnN0cikpOwogICAgaWYoYmxvY2sudHlwZT09PSdzdGVtbGlzdCcpewogICAgICBibG9jay5pdGVtcy5mb3JFYWNoKGZ1bmN0aW9uKGl0KXsKICAgICAgICB2YXIgcm93ID0gZWwoJ2RpdicsJ2NscHItc3RlbScpOwogICAgICAgIHJvdy5hcHBlbmRDaGlsZChlbCgnc3BhbicsJ2NscHItc251bScsIGl0Lm4rJy4nKSk7CiAgICAgICAgcm93LmFwcGVuZENoaWxkKGVsKCdzcGFuJyxudWxsLCBpdC5wcmUrJyAnKSk7CiAgICAgICAgcm93LmFwcGVuZENoaWxkKG1ha2VEcm9wZG93bihpdC5vcHRpb25zLCBpdC5fcSkpOwogICAgICAgIHdyYXBCLmFwcGVuZENoaWxkKHJvdyk7CiAgICAgIH0pOwogICAgfSBlbHNlIGlmKGJsb2NrLnR5cGU9PT0nY2xvemUnKXsKICAgICAgdmFyIGJveCA9IGVsKCdkaXYnLCdjbHByLWNsb3plJyk7CiAgICAgIGJsb2NrLmJvZHkuZm9yRWFjaChmdW5jdGlvbih0b2spewogICAgICAgIGlmKHR5cGVvZiB0b2s9PT0nc3RyaW5nJyl7CiAgICAgICAgICB2YXIgc2VncyA9IHRvay5zcGxpdCgnXG5cbicpOwogICAgICAgICAgc2Vncy5mb3JFYWNoKGZ1bmN0aW9uKHNlZywgaWR4KXsKICAgICAgICAgICAgaWYoaWR4PjApeyBib3guYXBwZW5kQ2hpbGQoZWwoJ3NwYW4nLG51bGwsJzxicj48YnI+JykpOyB9CiAgICAgICAgICAgIGJveC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShzZWcpKTsKICAgICAgICAgIH0pOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBib3guYXBwZW5kQ2hpbGQobWFrZURyb3Bkb3duKHRvay5vcHRpb25zLCB0b2suX3EpKTsKICAgICAgICB9CiAgICAgIH0pOwogICAgICB3cmFwQi5hcHBlbmRDaGlsZChib3gpOwogICAgfSBlbHNlIGlmKGJsb2NrLnR5cGU9PT0nbWF0Y2gnKXsKICAgICAgYmxvY2suaXRlbXMuZm9yRWFjaChmdW5jdGlvbihpdCl7CiAgICAgICAgdmFyIHJvdyA9IGVsKCdkaXYnLCdjbHByLW1hdGNoLXJvdycpOwogICAgICAgIHJvdy5hcHBlbmRDaGlsZChtYWtlRHJvcGRvd24oYmxvY2subGV0dGVycywgaXQuX3EpKTsKICAgICAgICByb3cuYXBwZW5kQ2hpbGQoZWwoJ3NwYW4nLCdjbHByLXNudW0nLCBpdC5uKycuJykpOwogICAgICAgIHJvdy5hcHBlbmRDaGlsZChlbCgnc3BhbicsbnVsbCwgaXQudGV4dCkpOwogICAgICAgIHdyYXBCLmFwcGVuZENoaWxkKHJvdyk7CiAgICAgIH0pOwogICAgfQogICAgcmV0dXJuIHdyYXBCOwogIH0KCiAgZnVuY3Rpb24gYnVpbGREb3RzKCl7CiAgICBkb3RzRWwuaW5uZXJIVE1MPScnOwogICAgUkRBVEEucGFydHMuZm9yRWFjaChmdW5jdGlvbihwLCBpKXsKICAgICAgdmFyIGQgPSBlbCgnYnV0dG9uJywnY2xwci1kb3QnKyhpPT09Y3VyUGFydD8nIGNscHItY3VyJzonJykpOwogICAgICBkLmFwcGVuZENoaWxkKGVsKCdiJyxudWxsLChpKzEpKSk7CiAgICAgIGQuYXBwZW5kQ2hpbGQoZWwoJ3NwYW4nLG51bGwsWydDb3JyZXNwb25kZW5jZScsJ0FwcGx5IGEgRGlhZ3JhbScsJ0luZm9ybWF0aW9uJywnVmlld3BvaW50cyddW2ldKSk7CiAgICAgIGQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbigpeyBnbyhpKTsgfSk7CiAgICAgIGRvdHNFbC5hcHBlbmRDaGlsZChkKTsKICAgIH0pOwogIH0KICBmdW5jdGlvbiBnbyhwaSl7IGN1clBhcnQ9cGk7IGJ1aWxkRG90cygpOyBidWlsZFBhcnQocGkpOyBjYXRFbC5zY3JvbGxJbnRvVmlldyh7YmVoYXZpb3I6J3Ntb290aCcsYmxvY2s6J3N0YXJ0J30pOyB9CgogIGZ1bmN0aW9uIHVwZGF0ZVNjb3JlQ2hpcCgpewogICAgdmFyIGFucyA9IFEuZmlsdGVyKGZ1bmN0aW9uKHEpe3JldHVybiBxLnNlbCE9bnVsbDt9KS5sZW5ndGg7CiAgICBzY29yZUNoaXAudGV4dENvbnRlbnQgPSBjaGVja2VkID8gKFEuZmlsdGVyKGZ1bmN0aW9uKHEpe3JldHVybiBxLnNlbD09PXEua2V5O30pLmxlbmd0aCsnIC8gJytRLmxlbmd0aCsnIGNvcnJlY3QnKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IChhbnMrJyAvICcrUS5sZW5ndGgrJyBhbnN3ZXJlZCcpOwogIH0KCiAgZnVuY3Rpb24gYXBwbHlNYXJrcygpewogICAgUS5mb3JFYWNoKGZ1bmN0aW9uKHEpewogICAgICBpZighcS5kZEVsKSByZXR1cm47CiAgICAgIHEuZGRFbC5jbGFzc0xpc3QucmVtb3ZlKCdjbHByLXJpZ2h0JywnY2xwci13cm9uZycpOwogICAgICBpZihxLnNlbD09PXEua2V5KXsgcS5kZEVsLmNsYXNzTGlzdC5hZGQoJ2NscHItcmlnaHQnKTsgfQogICAgICBlbHNlIHsKICAgICAgICBxLmRkRWwuY2xhc3NMaXN0LmFkZCgnY2xwci13cm9uZycpOwogICAgICAgIGlmKHEuc29sdmVkRWwpIHEuc29sdmVkRWwudGV4dENvbnRlbnQgPSAnXHUyNzEzICcrcS5vcHRpb25zW3Eua2V5LTFdOwogICAgICAgIGlmKHEuc2VsPT1udWxsICYmIHEudHh0RWwpeyBxLnR4dEVsLnRleHRDb250ZW50PScobm8gYW5zd2VyKSc7IHEudHh0RWwuY2xhc3NOYW1lPSdjbHByLWRkLXR4dCc7IH0KICAgICAgfQogICAgfSk7CiAgfQoKICBmdW5jdGlvbiBkb0NoZWNrKCl7CiAgICBjaGVja2VkID0gdHJ1ZTsKICAgIGFwcGx5TWFya3MoKTsKICAgIHZhciBjb3JyZWN0ID0gUS5maWx0ZXIoZnVuY3Rpb24ocSl7cmV0dXJuIHEuc2VsPT09cS5rZXk7fSkubGVuZ3RoOwogICAgdXBkYXRlU2NvcmVDaGlwKCk7CiAgICBjaGVja0J0bi5kaXNhYmxlZCA9IHRydWU7CiAgICB2YXIgYnlQYXJ0ID0ge307CiAgICBRLmZvckVhY2goZnVuY3Rpb24ocSl7IGJ5UGFydFtxLnBhcnRdPWJ5UGFydFtxLnBhcnRdfHx7YzowLHQ6MH07IGJ5UGFydFtxLnBhcnRdLnQrKzsgaWYocS5zZWw9PT1xLmtleSlieVBhcnRbcS5wYXJ0XS5jKys7IH0pOwogICAgdmFyIGVzdCA9IGNsYkVzdGltYXRlUihjb3JyZWN0KTsKICAgIHZhciBwaWxscyA9IFJEQVRBLnBhcnRzLm1hcChmdW5jdGlvbihwKXsgdmFyIGI9YnlQYXJ0W3AuaWRdfHx7YzowLHQ6MH07IHJldHVybiAnPHNwYW4gY2xhc3M9ImNscHItcmVzLXBpbGwiPlBhcnQgJytwLmlkKyc6ICcrYi5jKycvJytiLnQrJzwvc3Bhbj4nOyB9KS5qb2luKCcnKTsKICAgIHJlc3VsdHNFbC5pbm5lckhUTUwgPSAnPGRpdiBjbGFzcz0iY2xwci1yZXMtY2FyZCI+JwogICAgICArICc8ZGl2IGNsYXNzPSJjbHByLXJlcy10b3AiPicKICAgICAgKyAnPGRpdiBjbGFzcz0iY2xwci1yZXMtc2NvcmUiPicrY29ycmVjdCsnPHNwYW4+LycrUS5sZW5ndGgrJzwvc3Bhbj48L2Rpdj4nCiAgICAgICsgJzxkaXYgY2xhc3M9ImNscHItcmVzLWNsYiI+PGI+Jytlc3QubGV2ZWwrJzwvYj48c21hbGw+Jytlc3Qubm90ZSsnICZtaWRkb3Q7IGVzdGltYXRlZCBSZWFkaW5nIGJhbmQ8L3NtYWxsPjwvZGl2PicKICAgICAgKyAnPC9kaXY+JwogICAgICArICc8ZGl2IGNsYXNzPSJjbHByLXJlcy1icmVhayI+JytwaWxscysnPC9kaXY+JwogICAgICArICc8ZGl2IGNsYXNzPSJjbHByLXJlcy1hY3Rpb25zIj48YnV0dG9uIGNsYXNzPSJjbHByLW5hdmJ0biBjbHByLWdob3N0IiBpZD0iY2xwclJldmlldyI+UmV2aWV3IGFuc3dlcnMgaW4gZWFjaCBwYXJ0PC9idXR0b24+PGJ1dHRvbiBjbGFzcz0iY2xwci1uYXZidG4iIGlkPSJjbHByUmV0cnkiPlRyeSBhZ2FpbjwvYnV0dG9uPjwvZGl2PicKICAgICAgKyAnPHAgc3R5bGU9Im1hcmdpbi10b3A6MTJweDtmb250LXNpemU6MTIuNXB4O2NvbG9yOnZhcigtLW11dGVkKSI+RXN0aW1hdGVkIGJhbmQgaXMgYSBzdHVkeSBndWlkZSBvbmx5LCBub3QgYW4gb2ZmaWNpYWwgQ0VMUElQIHNjb3JlLiBDb3JyZWN0IGFuc3dlcnMgYXJlIHNob3duIHdpdGggYSBncmVlbiBjaGVjayBvbiBlYWNoIGRyb3AtZG93biB5b3UgYW5zd2VyZWQgaW5jb3JyZWN0bHkuPC9wPicKICAgICAgKyAnPC9kaXY+JzsKICAgIHJlc3VsdHNFbC5oaWRkZW4gPSBmYWxzZTsKICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjbHByUmV0cnknKS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIHJlc2V0QWxsKTsKICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjbHByUmV2aWV3JykuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbigpeyBnbygwKTsgfSk7CiAgICByZXN1bHRzRWwuc2Nyb2xsSW50b1ZpZXcoe2JlaGF2aW9yOidzbW9vdGgnLGJsb2NrOidzdGFydCd9KTsKICB9CgogIGZ1bmN0aW9uIHJlc2V0QWxsKCl7CiAgICBjaGVja2VkPWZhbHNlOyBpbml0UXVlc3Rpb25zKCk7IGN1clBhcnQ9MDsKICAgIGNoZWNrQnRuLmRpc2FibGVkPWZhbHNlOwogICAgcmVzdWx0c0VsLmhpZGRlbj10cnVlOyByZXN1bHRzRWwuaW5uZXJIVE1MPScnOwogICAgYnVpbGREb3RzKCk7IGJ1aWxkUGFydCgwKTsKICAgIHVwZGF0ZVNjb3JlQ2hpcCgpOwogICAgc2ltLnNjcm9sbEludG9WaWV3KHtiZWhhdmlvcjonc21vb3RoJyxibG9jazonc3RhcnQnfSk7CiAgfQoKICBzdGFydEJ0bi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKCl7CiAgICB3cmFwLnF1ZXJ5U2VsZWN0b3IoJy5jbHByLWhlcm8nKS5zdHlsZS5kaXNwbGF5PSdub25lJzsKICAgIHRvb2xiYXIuaGlkZGVuPWZhbHNlOyBzaW0uaGlkZGVuPWZhbHNlOwogICAgaW5pdFF1ZXN0aW9ucygpOyBjdXJQYXJ0PTA7IGNoZWNrZWQ9ZmFsc2U7CiAgICBidWlsZERvdHMoKTsgYnVpbGRQYXJ0KDApOyB1cGRhdGVTY29yZUNoaXAoKTsKICB9KTsKICBjaGVja0J0bi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGRvQ2hlY2spOwogIHJlc2V0QnRuLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgcmVzZXRBbGwpOwp9KSgpOw==\"))<\/script><\/p>","protected":false},"excerpt":{"rendered":"<p>CELPIP Reading Set 7 Practice Test 2: 4 parts, 38 questions in the real exam format with instant scoring and answer key. About 55 minutes. 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-6405","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/6405","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=6405"}],"version-history":[{"count":2,"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/6405\/revisions"}],"predecessor-version":[{"id":6557,"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/6405\/revisions\/6557"}],"wp:attachment":[{"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/media?parent=6405"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}