# +--------------------------------------------------------------+ # | | # | bas_img_selector v0.8 | # | Add images from a drop-down list to your post. | # | | # | by Bastian Sackermann | # | http://samisdat.org | # | | # +--------------------------------------------------------------+ # +--------------------------------------------------------------+ # | | # | This is a plugin for Textpattern - http://textpattern.com/ | # | To install: textpattern > admin > plugins | # | Paste this page's content into the 'Install plugin' box: | # | | # +--------------------------------------------------------------+ YTo5OntzOjQ6Im5hbWUiO3M6MTE6ImJhc19pbWdfc2VsIjtzOjY6ImF1dGhvciI7czoxODoiQmFzdGlhbiBTYWNrZXJtYW5uIjtzOjEwOiJhdXRob3JfdXJpIjtzOjIwOiJodHRwOi8vc2FtaXNkYXQub3JnLyI7czo3OiJ2ZXJzaW9uIjtzOjM6IjAuOCI7czoxMToiZGVzY3JpcHRpb24iO3M6NDY6IkFkZCBpbWFnZXMgZnJvbSBhIGRyb3AtZG93biBsaXN0IHRvIHlvdXIgcG9zdC4iO3M6NDoiaGVscCI7czo4Njk6IjxoMj5iYXMgSW1hZ2UgU2VsZWN0b3I8L2gxPg0KPHA+VGhpcyBhZG1pbiBwbHVnaW4gYWxsb3dzIHlvdSB0byBhZGQgaW1hZ2VzIHRvIGFuIGFydGljbGUgYnkgc2VsZWN0aW5nIGZyb20gYW4gZHJvcCBkb3duIGxpc3QuPC9wPg0KDQo8cD5XaGlsZSB1c2luZyBBSkFYIHRvIGxvYWQgdGhlIGltYWdlIGxpc3QsIGl0IGlzIHF1aXRlIGZhc3QgZXZlbiBmb3IgbGFyZ2UgaW1hZ2UgY29sbGVjdGlvbnMuPC9wPg0KDQo8cD5Zb3UgY2FuIHNlbGVjdCBpbWFnZXMgYXMgYXJ0aWNsZSBpbWFnZSBvciB1c2UgdGhlIGluY2x1ZGVkIHRhZyBidWlsZGVyIHRvIGFkZCBpbWFnZXMgaW50byBib2R5IG9yIGV4Y2VycHQuPC9wPg0KDQo8cD5Gb3IgYXJ0aWNsZSBpbWFnZXMgYWxyZWFkeSBzYXZlZCB0aGVyZSBpcyBhbHNvIGEgcHJldmlldzwvcD4NCg0KPGgzPiBBZHZhbmNlZCBJbnN0YWxsPC9oMz4NCg0KPHA+VGhlcmUgaXMgYW4gYWR2YW5jZWQgaW5zdGFsbCBhdCBleHRlbnNpb25zIC0+IGJhc19pbWdfc2VsLjwvcD4NCjxwPlVzZSB0aGF0IHRvIGFkZCBzb21lIHBsdWdpbiBwcmVmZXJlbmNlcyB0byB0eHA/cyBwcmVmcyB0YWJsZS48L3A+DQoNCjxwPllvdSBjYW4gY2hhbmdlIHRoZXNlIHByZWZlcmVuY2VzIGF0IFRYUD9zIGFkdmFuY2VkIHByZWZlcmVuY2VzIHRhYiBhbmQgb2YgY291cnNlIHRoZXJlIGlzIGFuIDxwPnJlbW92ZSBzY3JpcHQgaW5jbHVkZWQuPC9wPg0KDQo8cD5JZiB5b3Ugd2FudCB0byBkZWxldGUgYmFzX2ltZ19zZWwgZm9yIHNvbWUgcmVhc29uLCB5b3VzIGdvdCB0byBpdHMgZXh0ZW5zaW9uIGFuZCBydW4gdGhlIHVuaW5zdGFsbCBzY3JpcHQuIERlbGV0ZSB0aGUgcGx1Z2luIGFmdGVyIHlvdSBkaWQgdGhhdC48L3A+IjtzOjQ6ImNvZGUiO3M6NDA4NTc6IgkNCgkNCglnbG9iYWwgJHByZWZzLCRiYXNfaW1nX3NlbDsNCgkNCgkkcHJlZnNbJ2Jhc19pbWdfc2VsX2RlZmF1bHRfY2F0J10gPSAnJzsNCglpZiAoQHR4cGludGVyZmFjZSA9PSAnYWRtaW4nKQ0KCXsNCg0KCQlnbG9iYWwgJGV2ZW50Ow0KCQlpZigkZXZlbnQgPT0gJ2Jhc19pbWdfc2VsX291dCcpew0KCQkJJGZpbGUgPSBncHMoJ2ZpbGUnKTsNCgkJCWlmKCFlbXB0eSgkZmlsZSkgJiYgaW5fYXJyYXkoJGZpbGUsYXJyYXkoJ2pxdWVyeScsJ2Jhc19pbWdfc2VsX2pzJykpKXsNCgkJCQliYXNfaW1nX3NlbF9vdXQoJGZpbGUpOw0KCQkJCWRpZSgpOw0KCQkJfQ0KCQkJJGpzb24gPSBncHMoJ2pzb24nKTsNCgkJCWlmKCRqc29uID09ICdiYXNfaW1nX3NlbCcpew0KCQkJCWVjaG8gYmFzX2ltZ19zZWxfanNvbigpOw0KCQkJCWRpZSgpOw0KCQkJfQ0KCQl9DQoJCXJlZ2lzdGVyX2NhbGxiYWNrKCdiYXNfaW1nX3NlbF9kb19tYXJrdXAnLCdhcnRpY2xlJywgJycsIDApOw0KCQlyZWdpc3Rlcl9jYWxsYmFjaygnYmFzX2ltZ19zZWxfYWRkX21hcmt1cCcsJ2FydGljbGUnLCAnJywgMSk7DQoJCQ0KCQlyZWdpc3Rlcl9jYWxsYmFjaygiYmFzX2ltZ19zZWxlY3Rvcl9wcmVmc19kb19tYXJrdXAiLCAicHJlZnMiLCJhZHZhbmNlZF9wcmVmcyIsMCk7DQoJCXJlZ2lzdGVyX2NhbGxiYWNrKCJiYXNfaW1nX3NlbGVjdG9yX3ByZWZzX2RvX21hcmt1cCIsICJwcmVmcyIsImFkdmFuY2VkX3ByZWZzX3NhdmUiLDApOw0KCQlyZWdpc3Rlcl9jYWxsYmFjaygiYmFzX2ltZ19zZWxlY3Rvcl9wcmVmcyIsICJwcmVmcyIsImFkdmFuY2VkX3ByZWZzIiwxKTsNCgkJcmVnaXN0ZXJfY2FsbGJhY2soImJhc19pbWdfc2VsZWN0b3JfcHJlZnMiLCAicHJlZnMiLCJhZHZhbmNlZF9wcmVmc19zYXZlIiwxKTsNCgkJcmVnaXN0ZXJfdGFiKCJleHRlbnNpb25zIiwgJ2Jhc19pbWdfc2VsZWN0b3JfaW5zdGFsbCcsICdiYXNfaW1nX3NlbCcpOw0KCQlyZWdpc3Rlcl9jYWxsYmFjaygiYmFzX2ltZ19zZWxlY3Rvcl9pbnN0YWxsIiwgJ2Jhc19pbWdfc2VsZWN0b3JfaW5zdGFsbCcpOw0KDQoJfQ0KDQovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoJZnVuY3Rpb24gYmFzX2ltZ19zZWxfZG9fbWFya3VwKCl7DQoJCWdsb2JhbCAkcHJlZnMsICRiYXNfaW1nX3NlbDsNCg0KCQkkbmV3ID0gZ3BzKCdwdWJsaXNoJyk7DQoJCSRuZXcgPSAoIWVtcHR5KCRuZXcpKT90cnVlOmZhbHNlOwkJDQoJCSRzYXZlZCA9IGdwcygnc2F2ZScpOw0KCQkkc2F2ZWQgPSAoIWVtcHR5KCRzYXZlZCkpP3RydWU6ZmFsc2U7CQkNCgkJaWYoJG5ldyB8fCAkc2F2ZWQpew0KCQkJJGFydGljbGVfaW1nID0gZ3BzKCdJbWFnZScpOw0KDQoJCX0NCgkJZWxzZXsNCgkJCSRpZCA9IGdwcygnSUQnKTsNCgkJCWlmKCFlbXB0eSgkaWQpKQ0KCQkJCSRhcnRpY2xlX2ltZyA9IGZldGNoKCdJbWFnZScsJ3RleHRwYXR0ZXJuJywnSUQnLCRpZCk7DQoJCX0NCg0KCQkkaXNfYXJ0aWNsZV9pbWcgPSAoIWVtcHR5KCRhcnRpY2xlX2ltZykpP3RydWU6ZmFsc2U7DQoJCQ0KCQkkcHJldmlld19oaWRkZW4gPSAoJGlzX2FydGljbGVfaW1nID09IHRydWUpPydkaXNwbGF5OmJsb2NrJzonZGlzcGxheTpub25lJzsNCgkJDQoJCSRwcmV2aWV3X2V4cGFuZCA9ICghZW1wdHkoJHByZWZzWydiYXNfaW1nX3NlbF9leHBhbmRfYXJ0aWNsZV9pbWcnXSkgJiYgJGlzX2FydGljbGVfaW1nID09IHRydWUpPydkaXNwbGF5OmJsb2NrJzonZGlzcGxheTpub25lJzsNCgkJDQoJCQ0KCQlpZighZW1wdHkoJGFydGljbGVfaW1nKSl7DQoJCQlpZihpc19udW1lcmljKCRhcnRpY2xlX2ltZykpew0KCQkJCSRhcnRpY2xlX2ltZyA9IHNhZmVfcm93KCdpZCxleHQnLCd0eHBfaW1hZ2UnLCJpZCA9JyRhcnRpY2xlX2ltZyciKTsNCgkJCQkkYXJ0aWNsZV9pbWcgPWh1LiRwcmVmc1siaW1nX2RpciJdLiIvIi4kYXJ0aWNsZV9pbWdbJ2lkJ10uJGFydGljbGVfaW1nWydleHQnXTsNCgkJCQkNCgkJCX0NCgkJCQ0KCQkJJGFydGljbGVfaW1nID0gIjxpbWcgc3JjPSckYXJ0aWNsZV9pbWcnLz4iOyANCgkJfQ0KCQkkYXJ0aWNsZV9pbWcgPSAoZW1wdHkoJGFydGljbGVfaW1nKSk/Jyc6JGFydGljbGVfaW1nOw0KCQkkcHJldmlldyA9ICc8aDMgY2xhc3M9InBsYWluIiBzdHlsZT0iJy4kcHJldmlld19oaWRkZW4uJyIgaWQ9ImJhc19pbWdfc2VsX2FydGljbGVfaW1nX2hlYWRpbmciPjxhIGhyZWY9IiNiYXNfaW1nX3NlbF9hcnRpY2xlX2ltZyIgb25jbGljaz0idG9nZ2xlRGlzcGxheShcJ2Jhc19pbWdfc2VsX2FydGljbGVfaW1nXCcpOyByZXR1cm4gZmFsc2U7Ij4nLmdUeHQoJ2FydGljbGVfaW1hZ2UnKS4nPC9hPjwvaDM+JzsNCgkJJHByZXZpZXcuPSAnPHAgaWQ9ImJhc19pbWdfc2VsX2FydGljbGVfaW1nIiBzdHlsZT0iJy4kcHJldmlld19leHBhbmQuJzt3aWR0aDoxMzBweDtoZWlnaHQ6MTMwcHg7Ym9yZGVyLWxlZnQ6MXB4IHNvbGlkICM5OTY2MzM7IHBhZGRpbmc6MnB4O3Bvc2l0aW9uOnJlbGF0aXZlO292ZXJmbG93OmhpZGRlbjsiPicuJGFydGljbGVfaW1nLic8L3A+JzsNCg0KCQkNCgkJJGJhc19pbWdfc2VsID0gJHByZXZpZXc7DQoJCSRiYXNfaW1nX3NlbCAuPSAnPGgzIGNsYXNzPSJwbGFpbiI+PGEgaHJlZj0iI2Jhc19pbWdfc2VsIiBvbmNsaWNrPSJ0b2dnbGVEaXNwbGF5KFwnYmFzX2ltZ19zZWxcJyk7IHJldHVybiBmYWxzZTsiPmJhcyBJbWFnZSBTZWxlY3RvcjwvYT48L2gzPic7DQoJCQ0KCQkvL2NhdCBsaXN0DQoJCSRpbWdfY2F0cyA9IHNhZmVfcm93cygnbmFtZSx0aXRsZScsJ3R4cF9jYXRlZ29yeScsJ3R5cGUgPSAiaW1hZ2UiJyk7DQoJCSRpbWdfc2VsZWN0ID0gYXJyYXkoKTsNCgkJZm9yZWFjaCgkaW1nX2NhdHMgYXMgJGNhdCl7DQoJCQlleHRyYWN0KCRjYXQpOw0KCQkJJGltZ19zZWxlY3RbJG5hbWVdID0gJHRpdGxlOw0KDQoJCX0NCgkJJGNhdF9saXN0ID0gdGFnKGdUeHQoJ2ltYWdlX2NhdGVnb3J5JyksJ2xhYmVsJywnIGZvcj0iYmFzX2ltZ19zZWxfY2F0cyInKS4nPGJyLz4nOw0KCQkkY2F0X2xpc3QuPSBzZWxlY3RJbnB1dCgnYmFzX2ltZ19zZWxfY2F0cycsICRpbWdfc2VsZWN0LCAkcHJlZnNbJ2Jhc19pbWdfc2VsX3N0YXJ0X2NhdCddLHRydWUpOw0KCQkkZm9ybVtdID0gdGFnKCRjYXRfbGlzdCwncCcpOw0KDQoJCS8vc29ydCBieQ0KCQkkc29ydF9ieSA9IHRhZyhnVHh0KCdzb3J0X2J5JyksJ2xhYmVsJywnIGZvcj0iYmFzX2ltZ19zZWxfc29ydF9ieSInKS4nPGJyLz4nOw0KCQkkc29ydF9ieS49IHNlbGVjdElucHV0KCdiYXNfaW1nX3NlbF9zb3J0X2J5JywgYXJyYXkoJ09SREVSIEJZIGRhdGUgREVTQycgPT4gJ05ldyAtPiBPbGQnLCdPUkRFUiBCWSBkYXRlIEFTQycgPT4gJ09sZCAtPiBOZXcnLCdPUkRFUiBCWSBuYW1lIEFTQycgPT4gJ0EgLT4geicsJ09SREVSIEJZIG5hbWUgREVTQycgPT4gJ3ogLT4gQScpLCAnT1JERVIgQlkgZGF0ZSBERVNDJyxmYWxzZSk7DQoJCSRmb3JtW10gPSB0YWcoJHNvcnRfYnksJ3AnLCcgaWQ9ImJhc19pbWdfc2VsX3dyYXBfc29ydF9ieSIgc3R5bGU9ImRpc3BsYXk6bm9uZSInKTsNCgkJDQoJCS8vaW1nIGxpc3QNCgkJJGltZ19saXN0ID0gdGFnKHVjZmlyc3QoZ1R4dCgnaW1hZ2VzJykpLnRhZygnICgnLmdUeHQoJ3NvcnRfYnknKS4nKScsJ2EnLCcgaHJlZj0iI2Jhc19pbWdfc2VsX3dyYXBfc29ydF9ieSIgb25jbGljaz0idG9nZ2xlRGlzcGxheShcJ2Jhc19pbWdfc2VsX3dyYXBfc29ydF9ieVwnKTsgcmV0dXJuIGZhbHNlOyInKSwnbGFiZWwnLCcgZm9yPSJiYXNfaW1nX3NlbF9pbWciJykuJzxici8+JzsNCgkJJGltZ19saXN0Lj0gdGFnKCcgJywnZGl2JywnIGlkPSJiYXNfaW1nX3NlbF9pbWdzX2hvbGRlciInKTsNCgkJJGZvcm1bXSA9IHRhZygkaW1nX2xpc3QsJ2RpdicsJyBpZD0iYmFzX2ltZ19zZWxfd3JhcF9pbWdzIiBzdHlsZT0iZGlzcGxheTpub25lOyInKTsNCgkJDQoJCQ0KCQkkdXNlX3RodW1iID0gdGFnKCdVc2UnLCdsYWJlbCcpLic8YnIvPic7DQoJCSR1c2VfdGh1bWIuPSB0YWcocmFkaW8oJ2Jhc191c2VfdGh1bWInLCAnZmFsc2UnLCAnMScsICdiYXNfdXNlX3RodW1iJykuJ09yZ2luYWwnLCdsYWJlbCcpOw0KCQkkdXNlX3RodW1iLj0gdGFnKHJhZGlvKCdiYXNfdXNlX3RodW1iJywgJ3RydWUnLCAnMCcsICdiYXNfdXNlX3RodW1iJykuJ1RodW1iJywnbGFiZWwnKTsNCgkJJGZvcm1bXSA9IHRhZygkdXNlX3RodW1iLCdwJywnIGlkPSJiYXNfaW1nX3NlbF93cmFwX3VzZV90aHVtYiIgc3R5bGU9ImRpc3BsYXk6bm9uZSInKTsNCgkJDQoJCS8vcHJldmlldw0KCQkkZm9ybVtdID10YWcoJzxpbWcgc3JjPSIiLz4nLCdwJywnIGlkPSJiYXNQcmV2aWV3IiBzdHlsZT0iZGlzcGxheTpub25lO3Bvc2l0aW9uOnJlbGF0aXZlO3dpZHRoOjEzMHB4O2hlaWdodDoxMzBweDtvdmVyZmxvdzpoaWRkZW47Ym9yZGVyLWxlZnQ6MXB4IHNvbGlkICM5OTY2MzM7IHBhZGRpbmc6MnB4IicpOw0KDQoJCS8vYnV0dG9ucw0KCQkkYnV0dG9ucyA9IGZJbnB1dCgnYnV0dG9uJywnYmFzX2ltZ19zZWxfYWRkJyxnVHh0KCdhZGQnKSwnJywnJywnJywnJywnJywnYmFzX2ltZ19zZWxfYWRkJyk7DQoJCSRidXR0b25zLj0gJzxici8+Jy50YWcoJ1RhZyBCdWlsZGVyJywnYScsJyBpZD0iYmFzX2ltZ19zZWxfdGFnX2J1aWxkZXIiIHRhcmdldD0iX2JsYW5rIiBocmVmPSIuLz9ldmVudD10YWcmYW1wO3RhZ19uYW1lPWJhc19pbWdfc2VsIicpOw0KCQkkZm9ybVtdID0gdGFnKCRidXR0b25zLCdwJywnIGlkPSJiYXNfaW1nX3NlbF93cmFwX2J1dHRvbiIgc3R5bGU9ImRpc3BsYXk6bm9uZSInKTsJCQ0KCQkNCgkJJGZvcm1bXSA9IGZJbnB1dCgnaGlkZGVuJywnYmFzX2ltZ19zZWxfaW1nX2RpcicsaHUuJHByZWZzWyJpbWdfZGlyIl0uJy8nKTsNCgkJDQoJCSRsaXN0X2V4cGFuZCA9ICghZW1wdHkoJHByZWZzWydiYXNfaW1nX3NlbF9leHBhbmRfc2VsZWN0b3InXSkpPydkaXNwbGF5OmJsb2NrJzonZGlzcGxheTpub25lJzsNCgkJDQoJCSRiYXNfaW1nX3NlbC49IHRhZyhqb2luKCcnLCRmb3JtKSwnZGl2JywgIiBpZD0nYmFzX2ltZ19zZWwnIHN0eWxlPSckbGlzdF9leHBhbmQ7bWFyZ2luLWJvdHRvbTo1cHg7JyIpOw0KDQoJDQoJfQ0KLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KCWZ1bmN0aW9uIGJhc19pbWdfc2VsX2FkZF9tYXJrdXAoKQ0KCXsNCgkJZ2xvYmFsICRwcmVmcywkYmFzX2ltZ19zZWw7DQoJCQ0KCQlvYl9zdGFydCgnYmFzX2ltZ19zZWxfYnVmZmVyJyk7DQoJfQ0KDQovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoJZnVuY3Rpb24gYmFzX2ltZ19zZWxfYnVmZmVyKCRidWZmZXIpDQoJew0KCQlnbG9iYWwgJHByZWZzLCRiYXNfaW1nX3NlbDsNCg0KCQkkZmluZCA9ICc8L2hlYWQ+JzsNCgkJJHJlcGxhY2UgPSAoJHByZWZzWyd2ZXJzaW9uJ10gPT0gJzQuMC40Jyk/bi50Lic8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIuLz9ldmVudD1iYXNfaW1nX3NlbF9vdXQmZmlsZT1qcXVlcnkiPjwvc2NyaXB0Pic6Jyc7DQoJCSRyZXBsYWNlLj0gbi50Lic8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIuLz9ldmVudD1iYXNfaW1nX3NlbF9vdXQmZmlsZT1iYXNfaW1nX3NlbF9qcyI+PC9zY3JpcHQ+Jy5uLiRmaW5kOw0KCQkkYnVmZmVyID0gc3RyX3JlcGxhY2UoJGZpbmQsICRyZXBsYWNlLCAkYnVmZmVyKTsNCgkJDQoJCQ0KCQkkZmluZCA9ICc8aDMgY2xhc3M9InBsYWluIj48YSBocmVmPSIjYWR2YW5jZWQiIG9uY2xpY2s9InRvZ2dsZURpc3BsYXkoXCdhZHZhbmNlZFwnKTsgcmV0dXJuIGZhbHNlOyI+Jy5nVHh0KCdhZHZhbmNlZF9vcHRpb25zJykuJzwvYT48L2gzPic7DQoJCSRyZXBsYWNlID0gJGJhc19pbWdfc2VsOw0KCQkkYnVmZmVyID0gc3RyX3JlcGxhY2UoJGZpbmQsIG4udC4kcmVwbGFjZS5uLiRmaW5kLCAkYnVmZmVyKTsNCgkJcmV0dXJuICRidWZmZXI7DQoJfQ0KDQoNCgkNCglmdW5jdGlvbiB0YWdfYmFzX2ltZ19zZWwoKXsNCgkJZ2xvYmFsICRzdGVwLCAkZW5kZm9ybSwgJHRhZ19uYW1lLCAkaW1nX2RpciwkdGV4dGFycmF5LCRwcmVmczsNCg0KCQkkdGV4dGFycmF5Wyd0YWdfYmFzX2ltZ19zZWwnXSA9ICdHcmFiIGEgdGFnJzsNCgkJJGF0dHMgPSBncHNhKGFycmF5KA0KCQkJJ2NsYXNzJywNCgkJCSdlc2NhcGUnLA0KCQkJJ2h0bWxfaWQnLA0KCQkJJ3N0eWxlJywNCgkJCSd3cmFwdGFnJywNCg0KCQkJJ2FsdCcsDQoJCQknY2FwdGlvbicsDQoJCQknaCcsDQoJCQknaWQnLA0KCQkJJ3cnLA0KCQkJJ3RodW1iJw0KCQkpKTsNCg0KCQlleHRyYWN0KCRhdHRzKTsNCg0KCQkkZXh0ID0gZ3BzKCdleHQnKTsNCgkJJHR5cGUgPSBncHMoJ3R5cGUnKTsNCgkJDQovLwkJJHR5cGUgPSAoIWVtcHR5KCRfR0VUWyd0eXBlJ10pKT8kcHJlZnNbJ2Jhc19pbWdfc2VsX2FkZF9hcyddOiR0eXBlOw0KDQoJCSR0eXBlcyA9IGFycmF5KA0KCQkJJ3RleHRpbGUnCQkJPT4gJ1RleHRpbGUnLA0KCQkJJ3RleHRwYXR0ZXJuJyA9PiAnVGV4dHBhdHRlcm4nLA0KCQkJJ3hodG1sJwkJCQk9PiAnWEhUTUwnDQoJCSk7DQoNCgkJJG91dCA9IGZvcm0oDQoJCQlzdGFydFRhYmxlKCd0YWdidWlsZGVyJykuDQoNCgkJCXRyKA0KCQkJCXRkY3MoDQoJCQkJCWhlZChnVHh0KCd0YWdfJy4kdGFnX25hbWUpLCAzKQ0KCQkJCSwgMikNCgkJCSkuDQoNCgkJCXRhZ1JvdygndHlwZScsDQoJCQkJJycuc2VsZWN0SW5wdXQoJ3R5cGUnLCAkdHlwZXMsICR0eXBlLCB0cnVlKSkuDQoNCgkJCXRhZ1JvdygnZXNjYXBlJywNCgkJCQllc2NhcGVfcG9wKCRlc2NhcGUpKS4NCg0KCQkJdGFnUm93KCdodG1sX2lkJywNCgkJCQlmSW5wdXQoJ3RleHQnLCAnaHRtbF9pZCcsICRodG1sX2lkLCAnZWRpdCcsICcnLCAnJywgMjUpKS4NCg0KCQkJdGFnUm93KCdjbGFzcycsDQoJCQkJZklucHV0KCd0ZXh0JywgJ2NsYXNzJywgJGNsYXNzLCAnZWRpdCcsICcnLCAnJywgMjUpKS4NCg0KCQkJdGFnUm93KCdpbmxpbmVfc3R5bGUnLA0KCQkJCWZJbnB1dCgndGV4dCcsICdzdHlsZScsICRzdHlsZSwgJ2VkaXQnLCAnJywgJycsIDI1KSkuDQoNCgkJCXRhZ1Jvdygnd3JhcHRhZycsDQoJCQkJZklucHV0KCd0ZXh0JywgJ3dyYXB0YWcnLCAkd3JhcHRhZywgJ2VkaXQnLCAnJywgJycsIDI1KSkuDQoNCgkJCWhJbnB1dCgnaWQnLCAkaWQpLg0KCQkJaElucHV0KCdleHQnLCAkZXh0KS4NCgkJCWhJbnB1dCgndycsICR3KS4NCgkJCWhJbnB1dCgnaCcsICRoKS4NCgkJCWhJbnB1dCgnYWx0JywgJGFsdCkuDQoJCQloSW5wdXQoJ2NhcHRpb24nLCAkY2FwdGlvbikuDQoJCQloSW5wdXQoJ3RodW1iJywgJHRodW1iKS4NCg0KCQkJDQoJCQkkZW5kZm9ybQ0KCQkJDQoJCSk7DQoNCgkJCWlmICgkZXNjYXBlID09ICdodG1sJykNCgkJCXsNCgkJCQkkYWx0ID0gc3RyX3JlcGxhY2UoJyYnLCAnJiMzODsnLCBlc2NhcGVfb3V0cHV0KCRhbHQpKTsNCgkJCQkkY2FwdGlvbiA9IHN0cl9yZXBsYWNlKCcmJywgJyYjMzg7JywgZXNjYXBlX291dHB1dCgkY2FwdGlvbikpOw0KCQkJfQ0KDQoJCQlpZigkdGh1bWIgPT0gdHJ1ZSkNCgkJCQkkdXJsID0gaHUuJGltZ19kaXIuJy8nLiRpZC4ndCcuJGV4dDsNCgkJCWVsc2UNCgkJCQkkdXJsID0gaHUuJGltZ19kaXIuJy8nLiRpZC4kZXh0Ow0KDQoJCQlzd2l0Y2ggKCR0eXBlKQ0KCQkJew0KCQkJCWNhc2UgJ3RleHRpbGUnOg0KCQkJCQkkYWx0ID0gKCRhbHQpID8gJyAoJy4kYWx0LicpJyA6ICcnOw0KCQkJCQkNCgkJCQkJJG91dCAuPSB0ZGIoJyEnLiR1cmwuJGFsdC4nIScpOw0KCQkJCWJyZWFrOw0KDQoJCQkJY2FzZSAneGh0bWwnOg0KCQkJCQkkYWx0ICAgICA9ICgkYWx0KSAgICAgPyAnIGFsdD0iJy4kYWx0LiciJyA6ICcnOw0KCQkJCQkkY2FwdGlvbiA9ICgkY2FwdGlvbikgPyAnIHRpdGxlPSInLiRjYXB0aW9uLiciJyA6ICcnOw0KCQkJCQkkY2xhc3MgICA9ICgkY2xhc3MpICAgPyAnIGNsYXNzPSInLiRjbGFzcy4nIicgOiAnJzsNCgkJCQkJJGh0bWxfaWQgPSAoJGh0bWxfaWQpID8gJyBpZD0iJy4kaHRtbF9pZC4nIicgOiAnJzsNCgkJCQkJJHN0eWxlICAgPSAoJHN0eWxlKSAgID8gJyBzdHlsZT0iJy4kc3R5bGUuJyInIDogJyc7DQoNCgkJCQkJJG91dCAuPSB0ZGIoDQoJCQkJCQkoJHdyYXB0YWcgPyAiPCR3cmFwdGFnPiIgOiAnJykuDQoJCQkJCQknPGltZyBzcmM9IicuJHVybC4nIiB3aWR0aD0iJy4kdy4nIiBoZWlnaHQ9IicuJGguJyInLiRhbHQuJGNhcHRpb24uJGh0bWxfaWQuJGNsYXNzLiRzdHlsZS4nIC8+Jy4NCgkJCQkJCSgkd3JhcHRhZyA/ICI8LyR3cmFwdGFnPiIgOiAnJykNCgkJCQkJKTsNCgkJCQlicmVhazsNCg0KCQkJCWNhc2UgJ3RleHRwYXR0ZXJuJzoNCgkJCQlkZWZhdWx0Og0KDQoJCQkJCSRhdHRzID0gYXJyYXkoDQoJCQkJCQknY2xhc3MnICAgPT4gJGNsYXNzLCANCgkJCQkJCSdodG1sX2lkJyA9PiAkaHRtbF9pZCwgDQoJCQkJCQknaWQnICAgICAgPT4gJGlkLCANCgkJCQkJCSdzdHlsZScgICA9PiAkc3R5bGUsDQoJCQkJCQknd3JhcHRhZycgPT4gJHdyYXB0YWcNCgkJCQkJKTsNCgkJCQkJaWYoJHRodW1iID09IHRydWUpDQoJCQkJCQkkb3V0IC49IHRkYih0YigndGh1bWJuYWlsJywgJGF0dHMpKTsNCgkJCQkJZWxzZQ0KCQkJCQkJJG91dCAuPSB0ZGIodGIoJ2ltYWdlJywgJGF0dHMpKTsNCgkJCQlicmVhazsNCgkJCX0NCgkJDQoNCgkJcmV0dXJuICRvdXQ7DQoJCQ0KCX0NCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCglmdW5jdGlvbiBiYXNfaW1nX3NlbF9vdXQoJGZpbGUpew0KCQlnbG9iYWwgJHByZWZzOw0KCQlpZigkZmlsZSA9PSAnanF1ZXJ5JyAmJiAkcHJlZnNbJ3ZlcnNpb24nXSA9PSAnNC4wLjQnKXsNCgkJCWhlYWRlcigiQ29udGVudC10eXBlOiB0ZXh0L2phdmFzY3JpcHQiKTsNCgkJCT8+ZXZhbChmdW5jdGlvbihwLGEsYyxrLGUsZCl7ZT1mdW5jdGlvbihjKXtyZXR1cm4oYzxhPyIiOmUocGFyc2VJbnQoYy9hKSkpKygoYz1jJWEpPjM1P1N0cmluZy5mcm9tQ2hhckNvZGUoYysyOSk6Yy50b1N0cmluZygzNikpfTtpZighJycucmVwbGFjZSgvXi8sU3RyaW5nKSl7d2hpbGUoYy0tKXtkW2UoYyldPWtbY118fGUoYyl9az1bZnVuY3Rpb24oZSl7cmV0dXJuIGRbZV19XTtlPWZ1bmN0aW9uKCl7cmV0dXJuJ1xcdysnfTtjPTF9O3doaWxlKGMtLSl7aWYoa1tjXSl7cD1wLnJlcGxhY2UobmV3IFJlZ0V4cCgnXFxiJytlKGMpKydcXGInLCdnJyksa1tjXSl9fXJldHVybiBwfSgnNygxQyAxdy42PT0iVCIpezF3LlQ9MXcuVDtCIDY9dShhLGMpezcoMXc9PXEpdiAxcCA2KGEsYyk7YT1hfHwxNzs3KDYuMXQoYSkpdiAxcCA2KDE3KVs2LkUuMjc/IjI3IjoiMk8iXShhKTs3KDFDIGE9PSIyMyIpe0IgbT0vXltePF0qKDwoLnxcXHMpKz4pW14+XSokLy4yUShhKTs3KG0pYT02LjNrKFttWzFdXSk7SiB2IDFwIDYoYykuMm8oYSl9diBxLjZyKGEuMWw9PTJ5JiZhfHwoYS4zWXx8YS5JJiZhIT0xdyYmIWEuMjQmJmFbMF0hPVQmJmFbMF0uMjQpJiY2LjNNKGEpfHxbYV0pfTs3KDFDICQhPSJUIik2LjJTJD0kO0IgJD02OzYuRT02LjhwPXszWToiMS4xLjIiLDhxOnUoKXt2IHEuSX0sSTowLDJiOnUoMVQpe3YgMVQ9PVQ/Ni4zTShxKTpxWzFUXX0sMnI6dShhKXtCIEw9NihhKTtMLjZwPXE7diBMfSw2cjp1KGEpe3EuST0wO1tdLjFnLjE0KHEsYSk7diBxfSxLOnUoRSwxRSl7diA2LksocSxFLDFFKX0sMmg6dSgxYyl7QiA0Yz0tMTtxLksodShpKXs3KHE9PTFjKTRjPWl9KTt2IDRjfSwxSTp1KDFZLE8sQyl7QiAxYz0xWTs3KDFZLjFsPT0zdCk3KE89PVQpdiBxLkkmJjZbQ3x8IjFJIl0ocVswXSwxWSl8fFQ7SnsxYz17fTsxY1sxWV09T312IHEuSyh1KDJoKXtQKEIgSCAxeCAxYyk2LjFJKEM/cS4xcTpxLEgsNi5IKHEsMWNbSF0sQywyaCxIKSl9KX0sMW06dSgxWSxPKXt2IHEuMUkoMVksTywiMzAiKX0sMkw6dShlKXs3KDFDIGU9PSIyMyIpdiBxLjN1KCkuM3IoMTcuOHQoZSkpO0IgdD0iIjs2LksoZXx8cSx1KCl7Ni5LKHEuMkksdSgpezcocS4yNCE9OCl0Kz1xLjI0IT0xP3EuNjA6Ni5FLjJMKFtxXSl9KX0pO3YgdH0sMks6dSgpe0IgYT02LjNrKDFBKTt2IHEuSyh1KCl7QiBiPWFbMF0uM2woVSk7cS4xMS4yWChiLHEpOzIyKGIuMWIpYj1iLjFiO2IuNEMocSl9KX0sM3I6dSgpe3YgcS4zaigxQSxVLDEsdShhKXtxLjRDKGEpfSl9LDVpOnUoKXt2IHEuM2ooMUEsVSwtMSx1KGEpe3EuMlgoYSxxLjFiKX0pfSw1ajp1KCl7diBxLjNqKDFBLDEyLDEsdShhKXtxLjExLjJYKGEscSl9KX0sNXQ6dSgpe3YgcS4zaigxQSwxMiwtMSx1KGEpe3EuMTEuMlgoYSxxLjJlKX0pfSw0Zzp1KCl7diBxLjZwfHw2KFtdKX0sMm86dSh0KXt2IHEuMnIoNi4zMShxLHUoYSl7diA2LjJvKHQsYSl9KSx0KX0sNFk6dSg0Til7diBxLjJyKDYuMzEocSx1KGEpe0IgYT1hLjNsKDROIT1UPzROOlUpO2EuJDFIPTE2O3YgYX0pKX0sMUQ6dSh0KXt2IHEuMnIoNi4xdCh0KSYmNi4ycShxLHUoMnosMmgpe3YgdC4xNCgyeixbMmhdKX0pfHw2LjN6KHQscSkpfSwyZzp1KHQpe3YgcS4ycih0LjFsPT0zdCYmNi4zeih0LHEsVSl8fDYuMnEocSx1KGEpe3YodC4xbD09Mnl8fHQuM1kpPzYuM3koYSx0KTwwOmEhPXR9KSl9LDFNOnUodCl7diBxLjJyKDYuMmsocS4yYigpLHQuMWw9PTN0PzYodCkuMmIoKTp0LkkhPVQmJighdC4xZnx8dC4xZj09Ijh2Iik/dDpbdF0pKX0sNGw6dSgxcyl7diAxcz82LjFEKDFzLHEpLnIuST4wOjEyfSwxYTp1KDFhKXt2IDFhPT1UPyhxLkk/cVswXS5POjE2KTpxLjFJKCJPIiwxYSl9LDRVOnUoMWEpe3YgMWE9PVQ/KHEuST9xWzBdLjJ0OjE2KTpxLjN1KCkuM3IoMWEpfSwzajp1KDFFLDFQLDNaLEUpe0IgNFk9cS5JPjE7QiBhPTYuM2soMUUpOzcoM1o8MClhLjh3KCk7diBxLksodSgpe0IgMWM9cTs3KDFQJiY2LjFmKHEsIjFQIikmJjYuMWYoYVswXSwiM20iKSkxYz1xLjVKKCIyMCIpWzBdfHxxLjRDKDE3LjZuKCIyMCIpKTs2LksoYSx1KCl7RS4xNCgxYyxbNFk/cS4zbChVKTpxXSl9KX0pfX07Ni4xej02LkUuMXo9dSgpe0IgMU89MUFbMF0sYT0xOzcoMUEuST09MSl7MU89cTthPTB9QiBIOzIyKEg9MUFbYSsrXSlQKEIgaSAxeCBIKTFPW2ldPUhbaV07diAxT307Ni4xeih7OHg6dSgpezcoNi4yUyQpJD02LjJTJDt2IDZ9LDF0OnUoRSl7diEhRSYmMUMgRSE9IjIzIiYmIUUuMWYmJjFDIEVbMF09PSJUIiYmL3UvaS4xbihFKyIiKX0sNEI6dShEKXt2IEQuNjYmJkQuNUkmJiFELjVJLjY0fSwxZjp1KEQsWSl7diBELjFmJiZELjFmLjNLKCk9PVkuM0soKX0sSzp1KDFjLEUsMUUpezcoMWMuST09VClQKEIgaSAxeCAxYylFLjE0KDFjW2ldLDFFfHxbaSwxY1tpXV0pO0ogUChCIGk9MCw2cT0xYy5JO2k8NnE7aSsrKTcoRS4xNCgxY1tpXSwxRXx8W2ksMWNbaV1dKT09PTEyKTNPO3YgMWN9LEg6dShELE8sQywyaCxIKXs3KDYuMXQoTykpTz1PLjNuKEQsWzJoXSk7QiA2cz0vei0/Mmh8N1AtPzhBfDFkfDU4fDhCLT8yOC9pO3YgTyYmTy4xbD09M1EmJkM9PSIzMCImJiE2cy4xbihIKT9PKyI0UyI6T30sMTk6ezFNOnUoRCxjKXs2LksoYy4zbygvXFxzKy8pLHUoaSxRKXs3KCE2LjE5LjJWKEQuMTksUSkpRC4xOSs9KEQuMTk/IiAiOiIiKStRfSl9LDJmOnUoRCxjKXtELjE5PWM/Ni4ycShELjE5LjNvKC9cXHMrLyksdShRKXt2ITYuMTkuMlYoYyxRKX0pLjZ0KCIgIik6IiJ9LDJWOnUodCxjKXt0PXQuMTl8fHQ7Yz1jLjFSKC8oW1xcLlxcXFxcXCtcXCpcXD9cXFtcXF5cXF1cXCRcXChcXClcXHtcXH1cXD1cXCFcXDxcXD5cXHxcXDpdKS9nLCJcXFxcJDEiKTt2IHQmJjFwIDR2KCIoXnxcXFxccykiK2MrIihcXFxcc3wkKSIpLjFuKHQpfX0sNGQ6dShlLG8sZil7UChCIGkgMXggbyl7ZS4xcVsiMU4iK2ldPWUuMXFbaV07ZS4xcVtpXT1vW2ldfWYuMTQoZSxbXSk7UChCIGkgMXggbyllLjFxW2ldPWUuMXFbIjFOIitpXX0sMW06dShlLHApezcocD09IjI4Inx8cD09IjNWIil7QiAxTj17fSw0NiwzUCxkPVsiN2QiLCI4QyIsIjhEIiwiOEUiXTs2LksoZCx1KCl7MU5bIjhGIitxXT0wOzFOWyI4RyIrcSsiOEgiXT0wfSk7Ni40ZChlLDFOLHUoKXs3KDYuMW0oZSwiMWgiKSE9IjFaIil7NDY9ZS44STszUD1lLjhKfUp7ZT02KGUuM2woVSkpLjJvKCI6NGoiKS41bCgiMloiKS40ZygpLjFtKHs0bjoiMUciLDQ1OiI4SyIsMWg6IjJEIiw3SToiMCIsOE06IjAifSkuNXooZS4xMSlbMF07QiAzZD02LjFtKGUuMTEsIjQ1Iik7NygzZD09IiJ8fDNkPT0iNGIiKWUuMTEuMXEuNDU9IjZ4Ijs0Nj1lLjZ5OzNQPWUuNno7NygzZD09IiJ8fDNkPT0iNGIiKWUuMTEuMXEuNDU9IjRiIjtlLjExLjMzKGUpfX0pO3YgcD09IjI4Ij80NjozUH12IDYuMzAoZSxwKX0sMzA6dShELEgsNTMpe0IgTDs3KEg9PSIxZCImJjYuVy4xail2IDYuMUkoRC4xcSwiMWQiKTs3KEg9PSI0aCJ8fEg9PSIydiIpSD02LlcuMWo/IjNUIjoiMnYiOzcoITUzJiZELjFxW0hdKUw9RC4xcVtIXTtKIDcoMTcuNDQmJjE3LjQ0LjRXKXs3KEg9PSIydiJ8fEg9PSIzVCIpSD0iNGgiO0g9SC4xUigvKFtBLVpdKS9nLCItJDEiKS40bSgpO0IgUT0xNy40NC40VyhELDE2KTs3KFEpTD1RLjU1KEgpO0ogNyhIPT0iMWgiKUw9IjFaIjtKIDYuNGQoRCx7MWg6IjJEIn0sdSgpe0IgYz0xNy40NC40VyhxLCIiKTtMPWMmJmMuNTUoSCl8fCIifSl9SiA3KEQuNTEpe0IgNTY9SC4xUigvXFwtKFxcdykvZyx1KG0sYyl7diBjLjNLKCl9KTtMPUQuNTFbSF18fEQuNTFbNTZdfXYgTH0sM2s6dShhKXtCIHI9W107Ni5LKGEsdShpLDFyKXs3KCExcil2OzcoMXIuMWw9PTNRKTFyPTFyLjZDKCk7NygxQyAxcj09IjIzIil7QiBzPTYuMzUoMXIpLDFWPTE3LjZuKCIxViIpLDJpPVtdO0IgMks9IXMuMTgoIjwxdSIpJiZbMSwiPDQyPiIsIjwvNDI+Il18fCghcy4xOCgiPDZEIil8fCFzLjE4KCI8MjAiKXx8IXMuMTgoIjw2RSIpKSYmWzEsIjwxUD4iLCI8LzFQPiJdfHwhcy4xOCgiPDNtIikmJlsyLCI8MVA+PDIwPiIsIjwvMjA+PC8xUD4iXXx8KCFzLjE4KCI8NkYiKXx8IXMuMTgoIjw2RyIpKSYmWzMsIjwxUD48MjA+PDNtPiIsIjwvM20+PC8yMD48LzFQPiJdfHxbMCwiIiwiIl07MVYuMnQ9MktbMV0rcysyS1syXTsyMigyS1swXS0tKTFWPTFWLjFiOzcoNi5XLjFqKXs3KCFzLjE4KCI8MVAiKSYmcy4xOCgiPDIwIik8MCkyaT0xVi4xYiYmMVYuMWIuMkk7SiA3KDJLWzFdPT0iPDFQPiImJnMuMTgoIjwyMCIpPDApMmk9MVYuMkk7UChCIG49MmkuSS0xO24+PTA7LS1uKTcoNi4xZigyaVtuXSwiMjAiKSYmITJpW25dLjJJLkkpMmlbbl0uMTEuMzMoMmlbbl0pfTFyPVtdO1AoQiBpPTAsbD0xVi4ySS5JO2k8bDtpKyspMXIuMWcoMVYuMklbaV0pfTcoMXIuST09PTAmJiE2LjFmKDFyLCIzdyIpKXY7NygxclswXT09VHx8Ni4xZigxciwiM3ciKSlyLjFnKDFyKTtKIHI9Ni4yayhyLDFyKX0pO3Ygcn0sMUk6dShELFksTyl7QiAyaj02LjRCKEQpP3t9OnsiUCI6IjZKIiwiNkwiOiIxOSIsIjRoIjo2LlcuMWo/IjNUIjoiMnYiLDJ2OjYuVy4xaj8iM1QiOiIydiIsMnQ6IjJ0IiwxOToiMTkiLE86Ik8iLDJXOiIyVyIsMlo6IjJaIiw4OToiNk4iLDJZOiIyWSJ9OzcoWT09IjFkIiYmNi5XLjFqJiZPIT1UKXtELjU4PTE7diBELjFEPUQuMUQuMVIoLzRpXFwoW15cXCldKlxcKS82TywiIikrKE89PTE/IiI6IjRpKDFkPSIrTyo2ZysiKSIpfUogNyhZPT0iMWQiJiY2LlcuMWopdiBELjFEPzRUKEQuMUQuNlAoLzRpXFwoMWQ9KC4qKVxcKS8pWzFdKS82ZzoxOzcoWT09IjFkIiYmNi5XLjNoJiZPPT0xKU89MC42Ujs3KDJqW1ldKXs3KE8hPVQpRFsyaltZXV09Tzt2IERbMmpbWV1dfUogNyhPPT1UJiY2LlcuMWomJjYuMWYoRCwiM3ciKSYmKFk9PSI4MSJ8fFk9PSI4MCIpKXYgRC42VChZKS42MDtKIDcoRC42Nil7NyhPIT1UKUQuNlYoWSxPKTs3KDYuVy4xaiYmLzVFfDNlLy4xbihZKSYmITYuNEIoRCkpdiBELjM2KFksMik7diBELjM2KFkpfUp7WT1ZLjFSKC8tKFthLXpdKS82Vyx1KHosYil7diBiLjNLKCl9KTs3KE8hPVQpRFtZXT1PO3YgRFtZXX19LDM1OnUodCl7diB0LjFSKC9eXFxzK3xcXHMrJC9nLCIiKX0sM006dShhKXtCIHI9W107NyhhLjFsIT0yeSlQKEIgaT0wLDJSPWEuSTtpPDJSO2krKylyLjFnKGFbaV0pO0ogcj1hLjNOKDApO3Ygcn0sM3k6dShiLGEpe1AoQiBpPTAsMlI9YS5JO2k8MlI7aSsrKTcoYVtpXT09Yil2IGk7di0xfSwyazp1KDJ1LDNIKXtCIHI9W10uM04uM24oMnUsMCk7UChCIGk9MCw1Yj0zSC5JO2k8NWI7aSsrKTcoNi4zeSgzSFtpXSxyKT09LTEpMnUuMWcoM0hbaV0pO3YgMnV9LDJxOnUoMVUsRSw0ayl7NygxQyBFPT0iMjMiKUU9MXAgNHcoImEiLCJpIiwidiAiK0UpO0IgMWk9W107UChCIGk9MCwyej0xVS5JO2k8Mno7aSsrKTcoITRrJiZFKDFVW2ldLGkpfHw0ayYmIUUoMVVbaV0saSkpMWkuMWcoMVVbaV0pO3YgMWl9LDMxOnUoMVUsRSl7NygxQyBFPT0iMjMiKUU9MXAgNHcoImEiLCJ2ICIrRSk7QiAxaT1bXSxyPVtdO1AoQiBpPTAsMno9MVUuSTtpPDJ6O2krKyl7QiAxYT1FKDFVW2ldLGkpOzcoMWEhPT0xNiYmMWEhPVQpezcoMWEuMWwhPTJ5KTFhPVsxYV07MWk9MWkuNlooMWEpfX1CIHI9MWkuST9bMWlbMF1dOltdOzVmOlAoQiBpPTEsNWU9MWkuSTtpPDVlO2krKyl7UChCIGo9MDtqPGk7aisrKTcoMWlbaV09PXJbal0pNUYgNWY7ci4xZygxaVtpXSl9diByfX0pOzFwIHUoKXtCIGI9N0wuNzEuNG0oKTs2Llc9ezJOOi81RC8uMW4oYiksM2Y6LzNmLy4xbihiKSwxajovMWovLjFuKGIpJiYhLzNmLy4xbihiKSwzaDovM2gvLjFuKGIpJiYhLyg3Mnw1RCkvLjFuKGIpfTs2LjdIPSE2LlcuMWp8fDE3Ljc0PT0iNzUifTs2LksoezV1OiJhLjExIiw0ejoiNi40eihhKSIsNzY6IjYuMmEoYSwyLFwnMmVcJykiLDdEOiI2LjJhKGEsMixcJzVzXCcpIiw3ODoiNi4yQihhLjExLjFiLGEpIiw3OToiNi4yQihhLjFiKSJ9LHUoaSxuKXs2LkVbaV09dShhKXtCIEw9Ni4zMShxLG4pOzcoYSYmMUMgYT09IjIzIilMPTYuM3ooYSxMKTt2IHEuMnIoTCl9fSk7Ni5LKHs1ejoiM3IiLDdiOiI1aSIsMlg6IjVqIiw3ZToiNXQifSx1KGksbil7Ni5FW2ldPXUoKXtCIGE9MUE7diBxLksodSgpe1AoQiBqPTAsMlI9YS5JO2o8MlI7aisrKTYoYVtqXSlbbl0ocSl9KX19KTs2LksoezVsOnUoMVkpezYuMUkocSwxWSwiIik7cS43ZygxWSl9LDdoOnUoYyl7Ni4xOS4xTShxLGMpfSw3aTp1KGMpezYuMTkuMmYocSxjKX0sN2s6dShjKXs2LjE5WzYuMTkuMlYocSxjKT8iMmYiOiIxTSJdKHEsYyl9LDJmOnUoYSl7NyghYXx8Ni4xRChhLFtxXSkuci5JKXEuMTEuMzMocSl9LDN1OnUoKXsyMihxLjFiKXEuMzMocS4xYil9fSx1KGksbil7Ni5FW2ldPXUoKXt2IHEuSyhuLDFBKX19KTs2LksoWyI1cSIsIjVuIiwiNXAiLCI1diJdLHUoaSxuKXs2LkVbbl09dSgxVCxFKXt2IHEuMUQoIjoiK24rIigiKzFUKyIpIixFKX19KTs2LksoWyIyOCIsIjNWIl0sdShpLG4pezYuRVtuXT11KGgpe3YgaD09VD8ocS5JPzYuMW0ocVswXSxuKToxNik6cS4xbShuLGguMWw9PTN0P2g6aCsiNFMiKX19KTs2LjF6KHsxczp7IiI6Im1bMl09PVwnKlwnfHw2LjFmKGEsbVsyXSkiLCIjIjoiYS4zNihcJzJKXCcpPT1tWzJdIiwiOiI6ezVuOiJpPG1bM10tMCIsNXA6Imk+bVszXS0wIiwyYToibVszXS0wPT1pIiw1cToibVszXS0wPT1pIiwydToiaT09MCIsMlQ6Imk9PXIuSS0xIiw1UjoiaSUyPT0wIiw1UzoiaSUyIiwiMmEtM3MiOiI2LjJhKGEuMTEuMWIsbVszXSxcJzJlXCcsYSk9PWEiLCIydS0zcyI6IjYuMmEoYS4xMS4xYiwxLFwnMmVcJyk9PWEiLCIyVC0zcyI6IjYuMmEoYS4xMS43biwxLFwnNXNcJyk9PWEiLCI3cC0zcyI6IjYuMkIoYS4xMS4xYikuST09MSIsNXU6ImEuMWIiLDN1OiIhYS4xYiIsNXY6IjYuRS4yTC4xNChbYV0pLjE4KG1bM10pPj0wIiwzaTpcJ2EuQyE9IjFHIiYmNi4xbShhLCIxaCIpIT0iMVoiJiY2LjFtKGEsIjRuIikhPSIxRyJcJywxRzpcJ2EuQz09IjFHInx8Ni4xbShhLCIxaCIpPT0iMVoifHw2LjFtKGEsIjRuIik9PSIxRyJcJyw3djoiIWEuMlciLDJXOiJhLjJXIiwyWjoiYS4yWiIsMlk6ImEuMll8fDYuMUkoYSxcJzJZXCcpIiwyTDoiYS5DPT1cJzJMXCciLDRqOiJhLkM9PVwnNGpcJyIsNXg6ImEuQz09XCc1eFwnIiw0RzoiYS5DPT1cJzRHXCciLDV5OiJhLkM9PVwnNXlcJyIsNFI6ImEuQz09XCc0UlwnIiw1QToiYS5DPT1cJzVBXCciLDVCOiJhLkM9PVwnNUJcJyIsM3g6XCdhLkM9PSIzeCJ8fDYuMWYoYSwiM3giKVwnLDVDOiIvNUN8NDJ8N0F8M3gvaS4xbihhLjFmKSJ9LCIuIjoiNi4xOS4yVihhLG1bMl0pIiwiQCI6eyI9Ijoiej09bVs0XSIsIiE9IjoieiE9bVs0XSIsIl49IjoieiYmIXouMTgobVs0XSkiLCIkPSI6InomJnouMlUoei5JIC0gbVs0XS5JLG1bNF0uSSk9PW1bNF0iLCIqPSI6InomJnouMTgobVs0XSk+PTAiLCIiOiJ6Iiw0dTp1KG0pe3ZbIiIsbVsxXSxtWzNdLG1bMl0sbVs1XV19LDVQOiJ6PWFbbVszXV07Nyghenx8LzVFfDNlLy4xbihtWzNdKSl6PTYuMUkoYSxtWzNdKTsifSwiWyI6IjYuMm8obVsyXSxhKS5JIn0sNU06Wy9eXFxbICooQCkoW2EtMm0tM0MtXSopICooWyEqJF49XSopICooXCc/Ij8pKC4qPylcXDQgKlxcXS9pLC9eKFxcWylcXHMqKC4qPyhcXFsuKj9cXF0pP1teW10qPylcXHMqXFxdLywvXig6KShbYS0ybS0zQy1dKilcXCgiP1wnPyguKj8oXFwoLio/XFwpKT9bXihdKj8pIj9cJz9cXCkvaSwvXihbOi4jXSopKFthLTJtLTNDKi1dKikvaV0sMVE6Wy9eKFxcLz9cXC5cXC4pLywiYS4xMSIsL14oPnxcXC8pLywiNi4yQihhLjFiKSIsL14oXFwrKS8sIjYuMmEoYSwyLFwnMmVcJykiLC9eKH4pLyx1KGEpe0Igcz02LjJCKGEuMTEuMWIpO3Ygcy4zTig2LjN5KGEscykrMSl9XSwzejp1KDFzLDFVLDJnKXtCIDFOLFE9W107MjIoMXMmJjFzIT0xTil7MU49MXM7QiBmPTYuMUQoMXMsMVUsMmcpOzFzPWYudC4xUigvXlxccyosXFxzKi8sIiIpO1E9Mmc/MVU9Zi5yOjYuMmsoUSxmLnIpfXYgUX0sMm86dSh0LDFCKXs3KDFDIHQhPSIyMyIpdlt0XTs3KDFCJiYhMUIuMjQpMUI9MTY7MUI9MUJ8fDE3OzcoIXQuMTgoIi8vIikpezFCPTFCLjRIO3Q9dC4yVSgyLHQuSSl9SiA3KCF0LjE4KCIvIikpezFCPTFCLjRIO3Q9dC4yVSgxLHQuSSk7Nyh0LjE4KCIvIik+PTEpdD10LjJVKHQuMTgoIi8iKSx0LkkpfUIgTD1bMUJdLDJjPVtdLDJUPTE2OzIyKHQmJjJUIT10KXtCIHI9W107MlQ9dDt0PTYuMzUodCkuMVIoL15cXC9cXC8vaSwiIik7QiAzQj0xMjtCIDFKPS9eW1xcLz5dXFxzKihbYS0ybS05Ki1dKykvaTtCIG09MUouMlEodCk7NyhtKXs2LksoTCx1KCl7UChCIGM9cS4xYjtjO2M9Yy4yZSk3KGMuMjQ9PTEmJig2LjFmKGMsbVsxXSl8fG1bMV09PSIqIikpci4xZyhjKX0pO0w9cjt0PXQuMVIoMUosIiIpOzcodC4xOCgiICIpPT0wKTVGOzNCPVV9SntQKEIgaT0wO2k8Ni4xUS5JO2krPTIpe0IgMUo9Ni4xUVtpXTtCIG09MUouMlEodCk7NyhtKXtyPUw9Ni4zMShMLDYuMXQoNi4xUVtpKzFdKT82LjFRW2krMV06dShhKXt2IDQwKDYuMVFbaSsxXSl9KTt0PTYuMzUodC4xUigxSiwiIikpOzNCPVU7M099fX03KHQmJiEzQil7NyghdC4xOCgiLCIpKXs3KExbMF09PTFCKUwuNEwoKTs2LjJrKDJjLEwpO3I9TD1bMUJdO3Q9IiAiK3QuMlUoMSx0LkkpfUp7QiAzND0vXihbYS0ybS0zQy1dKykoIykoW2EtMm0tOVxcXFwqMlMtXSopL2k7QiBtPTM0LjJRKHQpOzcobSl7bT1bMCxtWzJdLG1bM10sbVsxXV19SnszND0vXihbIy5dPykoW2EtMm0tOVxcXFwqMlMtXSopL2k7bT0zNC4yUSh0KX03KG1bMV09PSIjIiYmTFtMLkktMV0uNFgpe0IgMmw9TFtMLkktMV0uNFgobVsyXSk7Nyg2LlcuMWomJjJsJiYybC4ySiE9bVsyXSkybD02KFwnW0AySj0iXCcrbVsyXStcJyJdXCcsTFtMLkktMV0pWzBdO0w9cj0ybCYmKCFtWzNdfHw2LjFmKDJsLG1bM10pKT9bMmxdOltdfUp7NyhtWzFdPT0iLiIpQiA0cj0xcCA0digiKF58XFxcXHMpIittWzJdKyIoXFxcXHN8JCkiKTs2LksoTCx1KCl7QiAzRT1tWzFdIT0iInx8bVswXT09IiI/IioiOm1bMl07Nyg2LjFmKHEsIjdKIikmJjNFPT0iKiIpM0U9IjNnIjs2LjJrKHIsbVsxXSE9IiImJkwuSSE9MT82LjR4KHEsW10sbVsxXSxtWzJdLDRyKTpxLjVKKDNFKSl9KTs3KG1bMV09PSIuIiYmTC5JPT0xKXI9Ni4ycShyLHUoZSl7diA0ci4xbihlLjE5KX0pOzcobVsxXT09IiMiJiZMLkk9PTEpe0IgNUs9cjtyPVtdOzYuSyg1Syx1KCl7NyhxLjM2KCIySiIpPT1tWzJdKXtyPVtxXTt2IDEyfX0pfUw9cn10PXQuMVIoMzQsIiIpfX03KHQpe0IgMWE9Ni4xRCh0LHIpO0w9cj0xYS5yO3Q9Ni4zNSgxYS50KX19NyhMJiZMWzBdPT0xQilMLjRMKCk7Ni4yaygyYyxMKTt2IDJjfSwxRDp1KHQsciwyZyl7MjIodCYmL15bYS16Wyh7PCo6LiNdL2kuMW4odCkpe0IgcD02LjVNLG07Ni5LKHAsdShpLDFKKXttPTFKLjJRKHQpOzcobSl7dD10LjdNKG1bMF0uSSk7Nyg2LjFzW21bMV1dLjR1KW09Ni4xc1ttWzFdXS40dShtKTt2IDEyfX0pOzcobVsxXT09IjoiJiZtWzJdPT0iMmciKXI9Ni4xRChtWzNdLHIsVSkucjtKIDcobVsxXT09Ii4iKXtCIDFKPTFwIDR2KCIoXnxcXFxccykiK21bMl0rIihcXFxcc3wkKSIpO3I9Ni4ycShyLHUoZSl7diAxSi4xbihlLjE5fHwiIil9LDJnKX1Ke0IgZj02LjFzW21bMV1dOzcoMUMgZiE9IjIzIilmPTYuMXNbbVsxXV1bbVsyXV07NDAoImYgPSB1KGEsaSl7IisoNi4xc1ttWzFdXS41UHx8IiIpKyJ2ICIrZisifSIpO3I9Ni4ycShyLGYsMmcpfX12e3I6cix0OnR9fSw0eDp1KG8sciwxUSxZLDFKKXtQKEIgcz1vLjFiO3M7cz1zLjJlKTcocy4yND09MSl7QiAxTT1VOzcoMVE9PSIuIikxTT1zLjE5JiYxSi4xbihzLjE5KTtKIDcoMVE9PSIjIikxTT1zLjM2KCIySiIpPT1ZOzcoMU0pci4xZyhzKTs3KDFRPT0iIyImJnIuSSkzTzs3KHMuMWIpNi40eChzLHIsMVEsWSwxSil9diByfSw0ejp1KEQpe0IgNEE9W107QiBRPUQuMTE7MjIoUSYmUSE9MTcpezRBLjFnKFEpO1E9US4xMX12IDRBfSwyYTp1KFEsMWksM1osRCl7MWk9MWl8fDE7QiAxVD0wO1AoO1E7UT1RWzNaXSl7NyhRLjI0PT0xKTFUKys7NygxVD09MWl8fDFpPT0iNVIiJiYxVCUyPT0wJiYxVD4xJiZRPT1EfHwxaT09IjVTIiYmMVQlMj09MSYmUT09RCl2IFF9fSwyQjp1KG4sRCl7QiByPVtdO1AoO247bj1uLjJlKXs3KG4uMjQ9PTEmJighRHx8biE9RCkpci4xZyhuKX12IHJ9fSk7Ni5HPXsxTTp1KFMsQywxbyxGKXs3KDYuVy4xaiYmUy4zTCE9VClTPTF3OzcoRikxby5GPUY7NyghMW8uMkEpMW8uMkE9cS4yQSsrOzcoIVMuJDFIKVMuJDFIPXt9O0IgMzg9Uy4kMUhbQ107NyghMzgpezM4PVMuJDFIW0NdPXt9OzcoU1siMzkiK0NdKTM4WzBdPVNbIjM5IitDXX0zOFsxby4yQV09MW87U1siMzkiK0NdPXEuNVk7NyghcS4xa1tDXSlxLjFrW0NdPVtdO3EuMWtbQ10uMWcoUyl9LDJBOjEsMWs6e30sMmY6dShTLEMsMW8pezcoUy4kMUgpe0IgaSxqLGs7NyhDJiZDLkMpezFvPUMuMW87Qz1DLkN9NyhDJiZTLiQxSFtDXSk3KDFvKTVVIFMuJDFIW0NdWzFvLjJBXTtKIFAoaSAxeCBTLiQxSFtDXSk1VSBTLiQxSFtDXVtpXTtKIFAoaiAxeCBTLiQxSClxLjJmKFMsaik7UChrIDF4IFMuJDFIW0NdKTcoayl7az1VOzNPfTcoIWspU1siMzkiK0NdPTE2fX0sMVM6dShDLEYsUyl7Rj02LjNNKEZ8fFtdKTs3KCFTKTYuSyhxLjFrW0NdfHxbXSx1KCl7Ni5HLjFTKEMsRixxKX0pO0p7QiAxbz1TWyIzOSIrQ10sMWEsRT02LjF0KFNbQ10pOzcoMW8pe0YuNjEocS4yaih7QzpDLDFPOlN9KSk7NygoMWE9MW8uMTQoUyxGKSkhPT0xMilxLjRGPVV9NyhFJiYxYSE9PTEyKVNbQ10oKTtxLjRGPTEyfX0sNVk6dShHKXs3KDFDIDY9PSJUInx8Ni5HLjRGKXY7Rz02LkcuMmooR3x8MXcuR3x8e30pO0IgM1I7QiBjPXEuJDFIW0cuQ107QiAxRT1bXS4zTi4zbigxQSwxKTsxRS42MShHKTtQKEIgaiAxeCBjKXsxRVswXS4xbz1jW2pdOzFFWzBdLkY9Y1tqXS5GOzcoY1tqXS4xNChxLDFFKT09PTEyKXtHLjJuKCk7Ry4ySCgpOzNSPTEyfX03KDYuVy4xailHLjFPPUcuMm49Ry4ySD1HLjFvPUcuRj0xNjt2IDNSfSwyajp1KEcpezcoIUcuMU8mJkcuNjMpRy4xTz1HLjYzOzcoRy42NT09VCYmRy42NyE9VCl7QiBlPTE3LjRILGI9MTcuNjQ7Ry42NT1HLjY3KyhlLjY4fHxiLjY4KTtHLjdZPUcuN1orKGUuNmN8fGIuNmMpfTcoNi5XLjJOJiZHLjFPLjI0PT0zKXtCIDNhPUc7Rz02LjF6KHt9LDNhKTtHLjFPPTNhLjFPLjExO0cuMm49dSgpe3YgM2EuMm4oKX07Ry4ySD11KCl7diAzYS4ySCgpfX03KCFHLjJuKUcuMm49dSgpe3EuM1I9MTJ9OzcoIUcuMkgpRy4ySD11KCl7cS44Mj1VfTt2IEd9fTs2LkUuMXooezNVOnUoQyxGLEUpe3YgcS5LKHUoKXs2LkcuMU0ocSxDLEV8fEYsRil9KX0sNnU6dShDLEYsRSl7diBxLksodSgpezYuRy4xTShxLEMsdShHKXs2KHEpLjZmKEcpO3YoRXx8RikuMTQocSwxQSl9LEYpfSl9LDZmOnUoQyxFKXt2IHEuSyh1KCl7Ni5HLjJmKHEsQyxFKX0pfSwxUzp1KEMsRil7diBxLksodSgpezYuRy4xUyhDLEYscSl9KX0sM1g6dSgpe0IgYT0xQTt2IHEuNmoodShlKXtxLjRNPXEuNE09PTA/MTowO2UuMm4oKTt2IGFbcS40TV0uMTQocSxbZV0pfHwxMn0pfSw4Mzp1KGYsZyl7dSA0TyhlKXtCIHA9KGUuQz09IjQxIj9lLjg0OmUuODUpfHxlLjg2OzIyKHAmJnAhPXEpMkd7cD1wLjExfTJ3KGUpe3A9cX07NyhwPT1xKXYgMTI7dihlLkM9PSI0MSI/ZjpnKS4xNChxLFtlXSl9diBxLjQxKDRPKS42ayg0Tyl9LDI3OnUoZil7Nyg2LjNXKWYuMTQoMTcsWzZdKTtKezYuM2MuMWcodSgpe3YgZi4xNChxLFs2XSl9KX12IHF9fSk7Ni4xeih7M1c6MTIsM2M6W10sMjc6dSgpezcoITYuM1cpezYuM1c9VTs3KDYuM2MpezYuSyg2LjNjLHUoKXtxLjE0KDE3KX0pOzYuM2M9MTZ9Nyg2LlcuM2h8fDYuVy4zZikxNy44NygiNm8iLDYuMjcsMTIpfX19KTsxcCB1KCl7Ni5LKCgiODgsOGEsMk8sOGIsOGQsNTIsNmosOGUsIisiOGYsOGcsOGgsNDEsNmssOGosNDIsIisiNFIsOGssOGwsOG0sMkMiKS4zbygiLCIpLHUoaSxvKXs2LkVbb109dShmKXt2IGY/cS4zVShvLGYpOnEuMVMobyl9fSk7Nyg2LlcuM2h8fDYuVy4zZikxNy44bigiNm8iLDYuMjcsMTIpO0ogNyg2LlcuMWopezE3LjhvKCI8OHIiKyI4cyAySj02MiA4dT1VICIrIjNlPS8vOj48XFwvMmQ+Iik7QiAyZD0xNy40WCgiNjIiKTs3KDJkKTJkLjM3PXUoKXs3KHEuM0QhPSIxWCIpdjtxLjExLjMzKHEpOzYuMjcoKX07MmQ9MTZ9SiA3KDYuVy4yTik2LjUwPTNMKHUoKXs3KDE3LjNEPT0iOHkifHwxNy4zRD09IjFYIil7NHAoNi41MCk7Ni41MD0xNjs2LjI3KCl9fSwxMCk7Ni5HLjFNKDF3LCIyTyIsNi4yNyl9OzcoNi5XLjFqKTYoMXcpLjZ1KCI1MiIsdSgpe0IgMWs9Ni5HLjFrO1AoQiBDIDF4IDFrKXtCIDRaPTFrW0NdLGk9NFouSTs3KGkmJkMhPVwnNTJcJyk2dyA2LkcuMmYoNFpbaS0xXSxDKTsyMigtLWkpfX0pOzYuRS4xeih7NkE6dShWLDIxLE0pe3EuMk8oViwyMSxNLDEpfSwyTzp1KFYsMjEsTSwxVyl7Nyg2LjF0KFYpKXYgcS4zVSgiMk8iLFYpO009TXx8dSgpe307QiBDPSI1ZCI7NygyMSk3KDYuMXQoMjEpKXtNPTIxOzIxPTE2fUp7MjE9Ni4zZygyMSk7Qz0iNVYifUIgNGU9cTs2LjN2KHtWOlYsQzpDLEY6MjEsMVc6MVcsMVg6dSgyUCwxNSl7NygxNT09IjJNInx8ITFXJiYxNT09IjVMIik0ZS4xSSgiMnQiLDJQLjNHKS40VigpLksoTSxbMlAuM0csMTUsMlBdKTtKIE0uMTQoNGUsWzJQLjNHLDE1LDJQXSl9fSk7diBxfSw2Qjp1KCl7diA2LjNnKHEpfSw0Vjp1KCl7diBxLjJvKCIyZCIpLksodSgpezcocS4zZSk2LjU5KHEuM2UpO0ogNi40YShxLjJMfHxxLjZIfHxxLjJ0fHwiIil9KS40ZygpfX0pOzcoITF3LjNwKTNwPXUoKXt2IDFwIDZJKCI2Sy42TSIpfTs2LksoIjVtLDVRLDVPLDVXLDVOLDVIIi4zbygiLCIpLHUoaSxvKXs2LkVbb109dShmKXt2IHEuM1UobyxmKX19KTs2LjF6KHsyYjp1KFYsRixNLEMsMVcpezcoNi4xdChGKSl7TT1GO0Y9MTZ9diA2LjN2KHtWOlYsRjpGLDJNOk0sNHQ6QywxVzoxV30pfSw2UTp1KFYsRixNLEMpe3YgNi4yYihWLEYsTSxDLDEpfSw1OTp1KFYsTSl7diA2LjJiKFYsMTYsTSwiMmQiKX0sNlM6dShWLEYsTSl7diA2LjJiKFYsRixNLCI2bSIpfSw2VTp1KFYsRixNLEMpezcoNi4xdChGKSl7TT1GO0Y9e319diA2LjN2KHtDOiI1ViIsVjpWLEY6RiwyTTpNLDR0OkN9KX0sNlg6dSgyOSl7Ni4zcS4yOT0yOX0sNlk6dSg1Yyl7Ni4xeig2LjNxLDVjKX0sM3E6ezFrOlUsQzoiNWQiLDI5OjAsNXI6IjcwL3gtNzMtM3ctNzciLDVoOlUsNDg6VSxGOjE2fSwzUzp7fSwzdjp1KHMpe3M9Ni4xeih7fSw2LjNxLHMpOzcocy5GKXs3KHMuNWgmJjFDIHMuRiE9IjIzIilzLkY9Ni4zZyhzLkYpOzcocy5DLjRtKCk9PSIyYiIpe3MuVis9KChzLlYuMTgoIj8iKT4tMSk/IiYiOiI/Iikrcy5GO3MuRj0xNn19NyhzLjFrJiYhNi40RSsrKTYuRy4xUygiNW0iKTtCIDR5PTEyO0IgTj0xcCAzcCgpO04uN2oocy5DLHMuVixzLjQ4KTs3KHMuRilOLjNBKCI3bC03bSIscy41cik7NyhzLjFXKU4uM0EoIjdvLTRLLTdxIiw2LjNTW3MuVl18fCI3cywgN3QgN3cgN3ggNG86NG86NG8gN3oiKTtOLjNBKCJYLTdCLTdDIiwiM3AiKTs3KE4uN0UpTi4zQSgiN0YiLCI3RyIpOzcocy41RylzLjVHKE4pOzcocy4xayk2LkcuMVMoIjVIIixbTixzXSk7QiAzNz11KDRzKXs3KE4mJihOLjNEPT00fHw0cz09IjI5IikpezR5PVU7NygzSSl7NHAoM0kpOzNJPTE2fUIgMTU7Mkd7MTU9Ni41WihOKSYmNHMhPSIyOSI/cy4xVyYmNi42OShOLHMuVik/IjVMIjoiMk0iOiIyQyI7NygxNSE9IjJDIil7QiAzRjsyR3szRj1OLjRQKCI2Yi00SyIpfTJ3KGUpe303KHMuMVcmJjNGKTYuM1Nbcy5WXT0zRjtCIEY9Ni42aShOLHMuNHQpOzcocy4yTSlzLjJNKEYsMTUpOzcocy4xayk2LkcuMVMoIjVOIixbTixzXSl9SiA2LjNKKHMsTiwxNSl9MncoZSl7MTU9IjJDIjs2LjNKKHMsTiwxNSxlKX03KHMuMWspNi5HLjFTKCI1TyIsW04sc10pOzcocy4xayYmIS0tNi40RSk2LkcuMVMoIjVRIik7NyhzLjFYKXMuMVgoTiwxNSk7NyhzLjQ4KU49MTZ9fTtCIDNJPTNMKDM3LDEzKTs3KHMuMjk+MCk1Nyh1KCl7NyhOKXtOLjdOKCk7NyghNHkpMzcoIjI5Iil9fSxzLjI5KTsyR3tOLjdRKHMuRil9MncoZSl7Ni4zSihzLE4sMTYsZSl9Nyghcy40OCkzNygpO3YgTn0sM0o6dShzLE4sMTUsZSl7NyhzLjJDKXMuMkMoTiwxNSxlKTs3KHMuMWspNi5HLjFTKCI1VyIsW04scyxlXSl9LDRFOjAsNVo6dShyKXsyR3t2IXIuMTUmJjdWLjdXPT0iNEc6Inx8KHIuMTU+PTVYJiZyLjE1PDdYKXx8ci4xNT09NmR8fDYuVy4yTiYmci4xNT09VH0ydyhlKXt9diAxMn0sNjk6dShOLFYpezJHe0IgNmU9Ti40UCgiNmItNEsiKTt2IE4uMTU9PTZkfHw2ZT09Ni4zU1tWXXx8Ni5XLjJOJiZOLjE1PT1UfTJ3KGUpe312IDEyfSw2aTp1KHIsQyl7QiA0UT1yLjRQKCI4Yy1DIik7QiBGPSFDJiY0USYmNFEuMTgoIk4iKT49MDtGPUM9PSJOInx8Rj9yLjhpOnIuM0c7NyhDPT0iMmQiKTYuNGEoRik7NyhDPT0iNm0iKTQwKCJGID0gIitGKTs3KEM9PSI0VSIpNigiPDFWPiIpLjRVKEYpLjRWKCk7diBGfSwzZzp1KGEpe0Igcz1bXTs3KGEuMWw9PTJ5fHxhLjNZKTYuSyhhLHUoKXtzLjFnKDJ4KHEuWSkrIj0iKzJ4KHEuTykpfSk7SiBQKEIgaiAxeCBhKTcoYVtqXSYmYVtqXS4xbD09MnkpNi5LKGFbal0sdSgpe3MuMWcoMngoaikrIj0iKzJ4KHEpKX0pO0ogcy4xZygyeChqKSsiPSIrMngoYVtqXSkpO3Ygcy42dCgiJiIpfSw0YTp1KEYpezcoMXcuNTQpMXcuNTQoRik7SiA3KDYuVy4yTikxdy41NyhGLDApO0ogNDAuM24oMXcsRil9fSk7Ni5FLjF6KHsxTDp1KFIsTSl7QiAxRz1xLjFEKCI6MUciKTtSPzFHLjI2KHsyODoiMUwiLDNWOiIxTCIsMWQ6IjFMIn0sUixNKToxRy5LKHUoKXtxLjFxLjFoPXEuMkU/cS4yRToiIjs3KDYuMW0ocSwiMWgiKT09IjFaIilxLjFxLjFoPSIyRCJ9KTt2IHF9LDFLOnUoUixNKXtCIDNpPXEuMUQoIjozaSIpO1I/M2kuMjYoezI4OiIxSyIsM1Y6IjFLIiwxZDoiMUsifSxSLE0pOjNpLksodSgpe3EuMkU9cS4yRXx8Ni4xbShxLCIxaCIpOzcocS4yRT09IjFaIilxLjJFPSIyRCI7cS4xcS4xaD0iMVoifSk7diBxfSw1Zzo2LkUuM1gsM1g6dShFLDRJKXtCIDFFPTFBO3YgNi4xdChFKSYmNi4xdCg0SSk/cS41ZyhFLDRJKTpxLksodSgpezYocSlbNihxKS40bCgiOjFHIik/IjFMIjoiMUsiXS4xNCg2KHEpLDFFKX0pfSw3YTp1KFIsTSl7diBxLjI2KHsyODoiMUwifSxSLE0pfSw3Yzp1KFIsTSl7diBxLjI2KHsyODoiMUsifSxSLE0pfSw3Zjp1KFIsTSl7diBxLksodSgpe0IgNWs9NihxKS40bCgiOjFHIik/IjFMIjoiMUsiOzYocSkuMjYoezI4OjVrfSxSLE0pfSl9LDdyOnUoUixNKXt2IHEuMjYoezFkOiIxTCJ9LFIsTSl9LDd1OnUoUixNKXt2IHEuMjYoezFkOiIxSyJ9LFIsTSl9LDd5OnUoUiw0MyxNKXt2IHEuMjYoezFkOjQzfSxSLE0pfSwyNjp1KEgsUiwxdixNKXt2IHEuMUYodSgpe3EuMkY9Ni4xeih7fSxIKTtCIDF1PTYuUihSLDF2LE0pO1AoQiBwIDF4IEgpe0IgZT0xcCA2LjNiKHEsMXUscCk7NyhIW3BdLjFsPT0zUSllLjJzKGUuUSgpLEhbcF0pO0ogZVtIW3BdXShIKX19KX0sMUY6dShDLEUpezcoIUUpe0U9QztDPSIzYiJ9diBxLksodSgpezcoIXEuMUYpcS4xRj17fTs3KCFxLjFGW0NdKXEuMUZbQ109W107cS4xRltDXS4xZyhFKTs3KHEuMUZbQ10uST09MSlFLjE0KHEpfSl9fSk7Ni4xeih7Ujp1KFIsMXYsRSl7QiAxdT1SJiZSLjFsPT03Sz9SOnsxWDpFfHwhRSYmMXZ8fDYuMXQoUikmJlIsMjU6UiwxdjpFJiYxdnx8MXYmJjF2LjFsIT00dyYmMXZ9OzF1LjI1PSgxdS4yNSYmMXUuMjUuMWw9PTNRPzF1LjI1Ons3Ujo3Uyw3VDo1WH1bMXUuMjVdKXx8N1U7MXUuMU49MXUuMVg7MXUuMVg9dSgpezYuNmEocSwiM2IiKTs3KDYuMXQoMXUuMU4pKTF1LjFOLjE0KHEpfTt2IDF1fSwxdjp7fSwxRjp7fSw2YTp1KEQsQyl7Qz1DfHwiM2IiOzcoRC4xRiYmRC4xRltDXSl7RC4xRltDXS40TCgpO0IgZj1ELjFGW0NdWzBdOzcoZilmLjE0KEQpfX0sM2I6dShELDFlLEgpe0Igej1xO0IgeT1ELjFxO0IgNEQ9Ni4xbShELCIxaCIpO3kuNVQ9IjFHIjt6LmE9dSgpezcoMWUuNDkpMWUuNDkuMTQoRCxbei4ycF0pOzcoSD09IjFkIik2LjFJKHksIjFkIix6LjJwKTtKIDcoNmwoei4ycCkpeVtIXT02bCh6LjJwKSsiNFMiO3kuMWg9IjJEIn07ei42dj11KCl7diA0VCg2LjFtKEQsSCkpfTt6LlE9dSgpe0Igcj00VCg2LjMwKEQsSCkpO3YgciYmcj4tOHo/cjp6LjZ2KCl9O3ouMnM9dSg0Ziw0Myl7ei40Sj0oMXAgNW8oKSkuNXcoKTt6LjJwPTRmO3ouYSgpO3ouNHE9M0wodSgpe3ouNDkoNGYsNDMpfSwxMyl9O3ouMUw9dSgpezcoIUQuMXkpRC4xeT17fTtELjF5W0hdPXEuUSgpOzFlLjFMPVU7ei4ycygwLEQuMXlbSF0pOzcoSCE9IjFkIil5W0hdPSI1YSJ9O3ouMUs9dSgpezcoIUQuMXkpRC4xeT17fTtELjF5W0hdPXEuUSgpOzFlLjFLPVU7ei4ycyhELjF5W0hdLDApfTt6LjNYPXUoKXs3KCFELjF5KUQuMXk9e307RC4xeVtIXT1xLlEoKTs3KDREPT0iMVoiKXsxZS4xTD1VOzcoSCE9IjFkIil5W0hdPSI1YSI7ei4ycygwLEQuMXlbSF0pfUp7MWUuMUs9VTt6LjJzKEQuMXlbSF0sMCl9fTt6LjQ5PXUoMzIsNDcpe0IgdD0oMXAgNW8oKSkuNXcoKTs3KHQ+MWUuMjUrei40Sil7NHAoei40cSk7ei40cT0xNjt6LjJwPTQ3O3ouYSgpOzcoRC4yRilELjJGW0hdPVU7QiAyYz1VO1AoQiBpIDF4IEQuMkYpNyhELjJGW2ldIT09VSkyYz0xMjs3KDJjKXt5LjVUPSIiO3kuMWg9NEQ7Nyg2LjFtKEQsIjFoIik9PSIxWiIpeS4xaD0iMkQiOzcoMWUuMUspeS4xaD0iMVoiOzcoMWUuMUt8fDFlLjFMKVAoQiBwIDF4IEQuMkYpNyhwPT0iMWQiKTYuMUkoeSxwLEQuMXlbcF0pO0ogeVtwXT0iIn03KDJjJiY2LjF0KDFlLjFYKSkxZS4xWC4xNChEKX1Ke0Igbj10LXEuNEo7QiBwPW4vMWUuMjU7ei4ycD0xZS4xdiYmNi4xdlsxZS4xdl0/Ni4xdlsxZS4xdl0ocCxuLDMyLCg0Ny0zMiksMWUuMjUpOigoLTZoLjdPKHAqNmguOEwpLzIpKzAuNSkqKDQ3LTMyKSszMjt6LmEoKX19fX0pfScsNjIsNTQ1LCd8fHx8fHxqUXVlcnl8aWZ8fHx8fHx8fHx8fHx8fHx8fHx8dGhpc3x8fHxmdW5jdGlvbnxyZXR1cm58fHx8fHx2YXJ8dHlwZXxlbGVtfGZufGRhdGF8ZXZlbnR8cHJvcHxsZW5ndGh8ZWxzZXxlYWNofHJldHxjYWxsYmFja3x4bWx8dmFsdWV8Zm9yfGN1cnxzcGVlZHxlbGVtZW50fHVuZGVmaW5lZHx0cnVlfHVybHxicm93c2VyfHxuYW1lfHx8cGFyZW50Tm9kZXxmYWxzZXx8YXBwbHl8c3RhdHVzfG51bGx8ZG9jdW1lbnR8aW5kZXhPZnxjbGFzc05hbWV8dmFsfGZpcnN0Q2hpbGR8b2JqfG9wYWNpdHl8b3B0aW9uc3xub2RlTmFtZXxwdXNofGRpc3BsYXl8cmVzdWx0fG1zaWV8Z2xvYmFsfGNvbnN0cnVjdG9yfGNzc3x0ZXN0fGhhbmRsZXJ8bmV3fHN0eWxlfGFyZ3xleHByfGlzRnVuY3Rpb258b3B0fGVhc2luZ3x3aW5kb3d8aW58b3JpZ3xleHRlbmR8YXJndW1lbnRzfGNvbnRleHR8dHlwZW9mfGZpbHRlcnxhcmdzfHF1ZXVlfGhpZGRlbnxldmVudHN8YXR0cnxyZXxoaWRlfHNob3d8YWRkfG9sZHx0YXJnZXR8dGFibGV8dG9rZW58cmVwbGFjZXx0cmlnZ2VyfG51bXxlbGVtc3xkaXZ8aWZNb2RpZmllZHxjb21wbGV0ZXxrZXl8bm9uZXx0Ym9keXxwYXJhbXN8d2hpbGV8c3RyaW5nfG5vZGVUeXBlfGR1cmF0aW9ufGFuaW1hdGV8cmVhZHl8aGVpZ2h0fHRpbWVvdXR8bnRofGdldHxkb25lfHNjcmlwdHxuZXh0U2libGluZ3xyZW1vdmV8bm90fGluZGV4fHRifGZpeHxtZXJnZXxvaWR8ejB8cHJldmVudERlZmF1bHR8ZmluZHxub3d8Z3JlcHxwdXNoU3RhY2t8Y3VzdG9tfGlubmVySFRNTHxmaXJzdHxjc3NGbG9hdHxjYXRjaHxlbmNvZGVVUklDb21wb25lbnR8QXJyYXl8ZWx8Z3VpZHxzaWJsaW5nfGVycm9yfGJsb2NrfG9sZGJsb2NrfGN1ckFuaW18dHJ5fHN0b3BQcm9wYWdhdGlvbnxjaGlsZE5vZGVzfGlkfHdyYXB8dGV4dHxzdWNjZXNzfHNhZmFyaXxsb2FkfHJlc3xleGVjfGFsfF98bGFzdHxzdWJzdHJ8aGFzfGRpc2FibGVkfGluc2VydEJlZm9yZXxzZWxlY3RlZHxjaGVja2VkfGN1ckNTU3xtYXB8Zmlyc3ROdW18cmVtb3ZlQ2hpbGR8cmUyfHRyaW18Z2V0QXR0cmlidXRlfG9ucmVhZHlzdGF0ZWNoYW5nZXxoYW5kbGVyc3xvbnxvcmlnaW5hbEV2ZW50fGZ4fHJlYWR5TGlzdHxwYXJQb3N8c3JjfG9wZXJhfHBhcmFtfG1vemlsbGF8dmlzaWJsZXxkb21NYW5pcHxjbGVhbnxjbG9uZU5vZGV8dHJ8Y2FsbHxzcGxpdHxYTUxIdHRwUmVxdWVzdHxhamF4U2V0dGluZ3N8YXBwZW5kfGNoaWxkfFN0cmluZ3xlbXB0eXxhamF4fGZvcm18YnV0dG9ufGluQXJyYXl8bXVsdGlGaWx0ZXJ8c2V0UmVxdWVzdEhlYWRlcnxmb3VuZFRva2VufDlffHJlYWR5U3RhdGV8dGFnfG1vZFJlc3xyZXNwb25zZVRleHR8c2Vjb25kfGl2YWx8aGFuZGxlRXJyb3J8dG9VcHBlckNhc2V8c2V0SW50ZXJ2YWx8bWFrZUFycmF5fHNsaWNlfGJyZWFrfG9XaWR0aHxOdW1iZXJ8cmV0dXJuVmFsdWV8bGFzdE1vZGlmaWVkfHN0eWxlRmxvYXR8YmluZHx3aWR0aHxpc1JlYWR5fHRvZ2dsZXxqcXVlcnl8ZGlyfGV2YWx8bW91c2VvdmVyfHNlbGVjdHx0b3xkZWZhdWx0Vmlld3xwb3NpdGlvbnxvSGVpZ2h0fGxhc3ROdW18YXN5bmN8c3RlcHxnbG9iYWxFdmFsfHN0YXRpY3xwb3N8c3dhcHxzZWxmfGZyb218ZW5kfGZsb2F0fGFscGhhfHJhZGlvfGludnxpc3x0b0xvd2VyQ2FzZXx2aXNpYmlsaXR5fDAwfGNsZWFySW50ZXJ2YWx8dGltZXJ8cmVjfGlzVGltZW91dHxkYXRhVHlwZXxfcmVzb3J0fFJlZ0V4cHxGdW5jdGlvbnxnZXRBbGx8cmVxdWVzdERvbmV8cGFyZW50c3xtYXRjaGVkfGlzWE1MRG9jfGFwcGVuZENoaWxkfG9sZERpc3BsYXl8YWN0aXZlfHRyaWdnZXJlZHxmaWxlfGRvY3VtZW50RWxlbWVudHxmbjJ8c3RhcnRUaW1lfE1vZGlmaWVkfHNoaWZ0fGxhc3RUb2dnbGV8ZGVlcHxoYW5kbGVIb3ZlcnxnZXRSZXNwb25zZUhlYWRlcnxjdHxzdWJtaXR8cHh8cGFyc2VGbG9hdHxodG1sfGV2YWxTY3JpcHRzfGdldENvbXB1dGVkU3R5bGV8Z2V0RWxlbWVudEJ5SWR8Y2xvbmV8ZWxzfHNhZmFyaVRpbWVyfGN1cnJlbnRTdHlsZXx1bmxvYWR8Zm9yY2V8ZXhlY1NjcmlwdHxnZXRQcm9wZXJ0eVZhbHVlfG5ld1Byb3B8c2V0VGltZW91dHx6b29tfGdldFNjcmlwdHwxcHh8c2x8c2V0dGluZ3N8R0VUfHJsfGNoZWNrfF90b2dnbGV8cHJvY2Vzc0RhdGF8cHJlcGVuZHxiZWZvcmV8c3RhdGV8cmVtb3ZlQXR0cnxhamF4U3RhcnR8bHR8RGF0ZXxndHxlcXxjb250ZW50VHlwZXxwcmV2aW91c1NpYmxpbmd8YWZ0ZXJ8cGFyZW50fGNvbnRhaW5zfGdldFRpbWV8Y2hlY2tib3h8cGFzc3dvcmR8YXBwZW5kVG98aW1hZ2V8cmVzZXR8aW5wdXR8d2Via2l0fGhyZWZ8Y29udGludWV8YmVmb3JlU2VuZHxhamF4U2VuZHxvd25lckRvY3VtZW50fGdldEVsZW1lbnRzQnlUYWdOYW1lfHRtcHxub3Rtb2RpZmllZHxwYXJzZXxhamF4U3VjY2Vzc3xhamF4Q29tcGxldGV8X3ByZWZpeHxhamF4U3RvcHxldmVufG9kZHxvdmVyZmxvd3xkZWxldGV8UE9TVHxhamF4RXJyb3J8MjAwfGhhbmRsZXxodHRwU3VjY2Vzc3xub2RlVmFsdWV8dW5zaGlmdHxfX2llX2luaXR8c3JjRWxlbWVudHxib2R5fHBhZ2VYfHRhZ05hbWV8Y2xpZW50WHxzY3JvbGxMZWZ0fGh0dHBOb3RNb2RpZmllZHxkZXF1ZXVlfExhc3R8c2Nyb2xsVG9wfDMwNHx4bWxSZXN8dW5iaW5kfDEwMHxNYXRofGh0dHBEYXRhfGNsaWNrfG1vdXNlb3V0fHBhcnNlSW50fGpzb258Y3JlYXRlRWxlbWVudHxET01Db250ZW50TG9hZGVkfHByZXZPYmplY3R8b2x8c2V0QXJyYXl8ZXhjbHVkZXxqb2lufG9uZXxtYXh8ZG98cmVsYXRpdmV8Y2xpZW50SGVpZ2h0fGNsaWVudFdpZHRofGxvYWRJZk1vZGlmaWVkfHNlcmlhbGl6ZXx0b1N0cmluZ3x0aGVhZHx0Zm9vdHx0ZHx0aHx0ZXh0Q29udGVudHxBY3RpdmVYT2JqZWN0fGh0bWxGb3J8TWljcm9zb2Z0fGNsYXNzfFhNTEhUVFB8cmVhZE9ubHl8Z2l8bWF0Y2h8Z2V0SWZNb2RpZmllZHw5OTk5fGdldEpTT058Z2V0QXR0cmlidXRlTm9kZXxwb3N0fHNldEF0dHJpYnV0ZXxpZ3xhamF4VGltZW91dHxhamF4U2V0dXB8Y29uY2F0fGFwcGxpY2F0aW9ufHVzZXJBZ2VudHxjb21wYXRpYmxlfHd3d3xjb21wYXRNb2RlfENTUzFDb21wYXR8bmV4dHx1cmxlbmNvZGVkfHNpYmxpbmdzfGNoaWxkcmVufHNsaWRlRG93bnxwcmVwZW5kVG98c2xpZGVVcHxUb3B8aW5zZXJ0QWZ0ZXJ8c2xpZGVUb2dnbGV8cmVtb3ZlQXR0cmlidXRlfGFkZENsYXNzfHJlbW92ZUNsYXNzfG9wZW58dG9nZ2xlQ2xhc3N8Q29udGVudHxUeXBlfGxhc3RDaGlsZHxJZnxvbmx5fFNpbmNlfGZhZGVJbnxUaHV8MDF8ZmFkZU91dHxlbmFibGVkfEphbnwxOTcwfGZhZGVUb3xHTVR8dGV4dGFyZWF8UmVxdWVzdGVkfFdpdGh8cHJldnxvdmVycmlkZU1pbWVUeXBlfENvbm5lY3Rpb258Y2xvc2V8Ym94TW9kZWx8cmlnaHR8b2JqZWN0fE9iamVjdHxuYXZpZ2F0b3J8c3Vic3RyaW5nfGFib3J0fGNvc3xmb250fHNlbmR8c2xvd3w2MDB8ZmFzdHw0MDB8bG9jYXRpb258cHJvdG9jb2x8MzAwfHBhZ2VZfGNsaWVudFl8bWV0aG9kfGFjdGlvbnxjYW5jZWxCdWJibGV8aG92ZXJ8ZnJvbUVsZW1lbnR8dG9FbGVtZW50fHJlbGF0ZWRUYXJnZXR8cmVtb3ZlRXZlbnRMaXN0ZW5lcnxibHVyfHJlYWRvbmx5fGZvY3VzfHJlc2l6ZXxjb250ZW50fHNjcm9sbHxkYmxjbGlja3xtb3VzZWRvd258bW91c2V1cHxtb3VzZW1vdmV8cmVzcG9uc2VYTUx8Y2hhbmdlfGtleWRvd258a2V5cHJlc3N8a2V5dXB8YWRkRXZlbnRMaXN0ZW5lcnx3cml0ZXxwcm90b3R5cGV8c2l6ZXxzY3J8aXB0fGNyZWF0ZVRleHROb2RlfGRlZmVyfEZPUk18cmV2ZXJzZXxub0NvbmZsaWN0fGxvYWRlZHwxMDAwMHx3ZWlnaHR8bGluZXxCb3R0b218UmlnaHR8TGVmdHxwYWRkaW5nfGJvcmRlcnxXaWR0aHxvZmZzZXRIZWlnaHR8b2Zmc2V0V2lkdGh8YWJzb2x1dGV8UEl8bGVmdCcuc3BsaXQoJ3wnKSwwLHt9KSk8P3BocA0KCQkJDQoJCX0NCgkJaWYoJGZpbGUgPT0gJ2Jhc19pbWdfc2VsX2pzJyl7DQoJCQloZWFkZXIoIkNvbnRlbnQtdHlwZTogdGV4dC9qYXZhc2NyaXB0Iik7DQoNCj8+DQokKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpeyBiYXNJbWdTZWxfaW5pKCk7fSk7DQp2YXIgYXR0cjsNCnZhciBiYXNfaW1nX3NlbCA9IA0KCXsNCgkNCgkJJ3VzZV90aHVtYic6ZmFsc2UNCgl9DQoNCmZ1bmN0aW9uIGJhc0ltZ1NlbF9pbmkoKXsNCgliYXNJbWdTZWxfSlNPTigpOw0KCWJhc19pbWdfc2VsLmltZ19kaXIgPSAkKCJbQG5hbWU9YmFzX2ltZ19zZWxfaW1nX2Rpcl0iKS52YWwoKTsgDQoJJCgiW0BuYW1lPWJhc19pbWdfc2VsX2NhdHNdIikuY2hhbmdlKCBmdW5jdGlvbigpe2Jhc0ltZ1NlbF9KU09OKCk7fSk7DQoJJCgiW0BuYW1lPWJhc19pbWdfc2VsX3NvcnRfYnldIikuY2hhbmdlKCBmdW5jdGlvbigpe2Jhc0ltZ1NlbF9KU09OKCk7fSk7DQoJDQoJJCgiW0BuYW1lPWJhc191c2VfdGh1bWJdW0B2YWx1ZT10cnVlXSIpLmNoZWNrZWQgPSB0cnVlOw0KCSQoIltAbmFtZT1iYXNfdXNlX3RodW1iXVtAdmFsdWU9ZmFsc2VdIikuY2hlY2tlZCA9IGZhbHNlOw0KCSQoJ1tAbmFtZT1iYXNfdXNlX3RodW1iXScpLmJpbmQoImNsaWNrIiwgZnVuY3Rpb24oKQ0KCXsNCgkJIGJhc19pbWdfc2VsLnVzZV90aHVtYiA9ICgkKCJbQG5hbWU9YmFzX3VzZV90aHVtYl1bQGNoZWNrZWRdIikudmFsKCk9PSd0cnVlJyk/dHJ1ZTpmYWxzZTsNCgkJIGJhc0ltZ1NlbF9wcmV2aWV3SW1nKCkNCgl9KTsNCgkkKCdbQG5hbWU9YmFzX2ltZ19zZWxfYWRkXScpLmJpbmQoImNsaWNrIiwgZnVuY3Rpb24oKQ0KCXsNCgkJdmFyIGlkID0gJCgiW0BuYW1lPWJhc19pbWdfc2VsX2ltZ10iKS52YWwoKTsNCgkJdmFyIGltZ19zcmMgPSAoYmFzX2ltZ19zZWwudXNlX3RodW1iID09IGZhbHNlKSA/IGlkIDogYmFzX2ltZ19zZWwuaW1nX2RpciArIGlkICsgJ3QnICsgYXR0cltpZF1bJ2V4dCddOw0KCQkkKCJbQG5hbWU9SW1hZ2VdIikudmFsKGltZ19zcmMpOw0KCQlpZihiYXNfaW1nX3NlbC51c2VfdGh1bWIgPT0gZmFsc2UpDQoJCQlpbWdfc3JjID0gIGJhc19pbWdfc2VsLmltZ19kaXIgKyBpbWdfc3JjICsgYXR0cltpZF1bJ2V4dCddOw0KCQkkKCcjYmFzX2ltZ19zZWxfYXJ0aWNsZV9pbWcnKS5odG1sKCc8aW1nIHNyYz0iJysgaW1nX3NyYyArJyIvPicpOw0KCQkkKCcjYmFzX2ltZ19zZWxfYXJ0aWNsZV9pbWcnKS5jc3Moe292ZXJmbG93OidoaWRkZW4nfSk7DQoNCgkJJCgncCNiYXNfaW1nX3NlbF9hcnRpY2xlX2ltZ1tpbWddJykuYmluZCgibW91c2VvdmVyIiwgZnVuY3Rpb24oKXsNCgkJCSQoJyNiYXNfaW1nX3NlbF9hcnRpY2xlX2ltZycpLmNzcyh7b3ZlcmZsb3c6J3Zpc2libGUnfSk7DQoJCX0pOyANCgkJJCgncCNiYXNfaW1nX3NlbF9hcnRpY2xlX2ltZ1tpbWddJykuYmluZCgibW91c2VvdXQiLCBmdW5jdGlvbigpew0KCQkJJCgnI2Jhc19pbWdfc2VsX2FydGljbGVfaW1nJykuY3NzKHtvdmVyZmxvdzonaGlkZGVuJ30pOw0KCQl9KTsgDQoJCQ0KCQkkKCIjYmFzX2ltZ19zZWxfYXJ0aWNsZV9pbWdoMyIpLmZhZGVJbigic2xvdyIpOw0KCQkgJCgiI2Jhc19pbWdfc2VsX2FydGljbGVfaW1nIikuZmFkZUluKCJzbG93Iik7DQoJCSAkKCIjYmFzX2ltZ19zZWxfYXJ0aWNsZV9pbWciKS5jc3Moe292ZXJmbG93OidoaWRkZW4nfSk7DQoJCSAkKCIjYmFzX2ltZ19zZWwiKS5mYWRlT3V0KCJzbG93Iik7DQoJfSk7DQoNCgkJJCgncCNiYXNfaW1nX3NlbF9hcnRpY2xlX2ltZ1tpbWddJykuYmluZCgibW91c2VvdmVyIiwgZnVuY3Rpb24oKXsNCgkJCSQoJyNiYXNfaW1nX3NlbF9hcnRpY2xlX2ltZycpLmNzcyh7b3ZlcmZsb3c6J3Zpc2libGUnfSk7DQoJCX0pOyANCgkJJCgncCNiYXNfaW1nX3NlbF9hcnRpY2xlX2ltZ1tpbWddJykuYmluZCgibW91c2VvdXQiLCBmdW5jdGlvbigpew0KCQkJJCgnI2Jhc19pbWdfc2VsX2FydGljbGVfaW1nJykuY3NzKHtvdmVyZmxvdzonaGlkZGVuJ30pOw0KCQl9KTsgDQoNCgkNCgkkKCcjYmFzX2ltZ19zZWxfdGFnX2J1aWxkZXInKS5iaW5kKCJjbGljayIsIGZ1bmN0aW9uKCl7DQoJCQ0KCQl2YXIgaW1nID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Jhc1ByZXZpZXcnKS5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaW1nJylbMF07DQoJCS8vdXNpbmcgdGhpcyB3aGlsZSB0aHVtYm5haWxzIGRpbWVzbnNpb25zIGFyZSBub3Qgc2F2ZWQgaW4gZGINCgkJdmFyIHdpZHRoID0gJyZ3PScgKyBpbWcud2lkdGg7DQoJCXZhciBoZWlnaHQgPSAnJmg9JyArIGltZy5oZWlnaHQ7DQoJCQkJDQoJCXZhciBocmVmID0gJy4vP2V2ZW50PXRhZyZ0YWdfbmFtZT1iYXNfaW1nX3NlbCc7DQoJCXZhciBpZCA9ICQoIltAbmFtZT1iYXNfaW1nX3NlbF9pbWddIikudmFsKCk7DQoJCXZhciBleHQgPSAnJmV4dD0nICsgYXR0cltpZF1bJ2V4dCddOw0KCQl2YXIgaWQgPSAnJmlkPScgKyBpZDsNCgkJdmFyIHRodW1iID0gJyZ0aHVtYj0nICsgYmFzX2ltZ19zZWwudXNlX3RodW1iOw0KCQl2YXIgdHlwZSA9ICcmdHlwZT0nICsgJ3hodG1sJw0KCQkNCgkJaHJlZiA9IGhyZWYgKyBpZCArIGV4dCArIHRodW1iICsgd2lkdGggKyBoZWlnaHQgKyB0eXBlOw0KDQoJCXBvcFdpbihocmVmKQ0KCQlyZXR1cm4gZmFsc2U7DQoJCQ0KCX0pOw0KCQ0KCQ0KCSAgDQp9DQoNCmZ1bmN0aW9uIGJhc0ltZ1NlbF9KU09OKCl7DQoJCSQoJyNiYXNfaW1nX3NlbF93cmFwX2ltZ3MnKS5mYWRlT3V0KCdzbG93Jyk7DQoJCWlmKCQoIltAbmFtZT1iYXNfaW1nX3NlbF9jYXRzXSIpLnZhbCgpICE9ICcnKXsNCgkJICAkLmdldEpTT04oIi4vP2V2ZW50PWJhc19pbWdfc2VsX291dCIsIA0KCQkgIAl7IA0KCQkJCWpzb246ICJiYXNfaW1nX3NlbCIsIA0KCQkJCXNvcnRfYnk6ICQoIltAbmFtZT1iYXNfaW1nX3NlbF9zb3J0X2J5XSIpLnZhbCgpLA0KCQkJCWNhdDogJCgiW0BuYW1lPWJhc19pbWdfc2VsX2NhdHNdIikudmFsKCkgDQoJCQl9LCANCgkJCWZ1bmN0aW9uKGpzb24pDQoJCQl7CWF0dHIgPSBqc29uLmF0dHINCgkJCQkkKCcjYmFzX2ltZ19zZWxfaW1nc19ob2xkZXInKS5odG1sKGpzb24uaHRtbCk7DQoJCQkJJCgnI2Jhc19pbWdfc2VsX3dyYXBfaW1ncycpLmZhZGVJbignc2xvdycpOw0KCQkJCSQoIltAbmFtZT1iYXNfaW1nX3NlbF9pbWddIikuY2hhbmdlKCBmdW5jdGlvbigpe2Jhc0ltZ1NlbF9wcmV2aWV3SW1nKCl9KTsNCgkJCX0pOw0KCQl9DQoNCn0NCg0KZnVuY3Rpb24gYmFzSW1nU2VsX3ByZXZpZXdJbWcoKXsNCgl2YXIgaWQgPSAkKCJbQG5hbWU9YmFzX2ltZ19zZWxfaW1nXSIpLnZhbCgpOw0KCQ0KCWlmKGF0dHJbaWRdWyd0aHVtYiddID09IHRydWUpDQoJCSQoJyNiYXNfaW1nX3NlbF93cmFwX3VzZV90aHVtYicpLmNzcyh7IGRpc3BsYXk6ICJibG9jayIgfSk7DQoJZWxzZXsNCgkJJCgnI2Jhc19pbWdfc2VsX3dyYXBfdXNlX3RodW1iJykuY3NzKHsgZGlzcGxheTogIm5vbmUiIH0pOw0KCQliYXNfaW1nX3NlbC51c2VfdGh1bWIgPSBmYWxzZTsNCgl9DQoJdmFyIGltZ19zcmMgPSAoYmFzX2ltZ19zZWwudXNlX3RodW1iID09IGZhbHNlKT9pZCArIGF0dHJbaWRdWydleHQnXTppZCArICd0JyArYXR0cltpZF1bJ2V4dCddDQoJJCgnI2Jhc1ByZXZpZXcnKS5odG1sKCc8aW1nIHNyYz0iJysgIGJhc19pbWdfc2VsLmltZ19kaXIgKyBpbWdfc3JjICsnIi8+Jyk7DQoJJCgncCNiYXNQcmV2aWV3W2ltZ10nKS5iaW5kKCJtb3VzZW92ZXIiLCBmdW5jdGlvbigpew0KCQkkKCcjYmFzUHJldmlldycpLmNzcyh7b3ZlcmZsb3c6J3Zpc2libGUnfSk7DQoJfSk7IA0KCSQoJ3AjYmFzUHJldmlld1tpbWddJykuYmluZCgibW91c2VvdXQiLCBmdW5jdGlvbigpew0KCQkkKCcjYmFzUHJldmlldycpLmNzcyh7b3ZlcmZsb3c6J2hpZGRlbid9KTsNCgl9KTsgDQoJDQoJDQoJJCgnI2Jhc1ByZXZpZXcnKS5jc3MoeyBkaXNwbGF5OiAiYmxvY2siIH0pOw0KCQ0KCSQoJyNiYXNfaW1nX3NlbF93cmFwX2J1dHRvbicpLmNzcyh7IGRpc3BsYXk6ICJibG9jayIgfSk7DQoJDQoJDQp9DQoNCg0KPD9waHANCg0KCQl9DQoJfQ0KDQovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoJZnVuY3Rpb24gYmFzX2ltZ19zZWxfanNvbigpew0KCQloZWFkZXIoIkNvbnRlbnQtdHlwZTogdGV4dC9qYXZhc2NyaXB0Iik7DQoJCSRjYXQgPSBncHMoJ2NhdCcpOw0KCQkkY2F0ID0gKCRjYXQgPT0gJ3Jvb3QnKT8nJzokY2F0Ow0KDQoJCSRzb3J0X2J5ID0gZ3BzKCdzb3J0X2J5Jyk7DQoJCSRzb3J0X2J5ID0gKGVtcHR5KCRzb3J0X2J5KSk/J09SREVSIEJZIGRhdGUgREVTQyc6JHNvcnRfYnk7DQoJCQ0KCQkkaW1ncyA9IHNhZmVfcm93cygnaWQsbmFtZSxleHQsdGh1bWJuYWlsJywndHhwX2ltYWdlJywiY2F0ZWdvcnk9JyRjYXQnICRzb3J0X2J5Iik7DQoJCWlmKGVtcHR5KCRpbWdzKSl7DQoJCQlyZXR1cm4gInsnaHRtbCc6JyIuZ1R4dCgnY2F0ZWdvcnknKS4iIDxzdHJvbmc+JGNhdDwvc3Ryb25nPiBpcyBlbXB0eSd9IjsgDQoJCX0NCgkJJGltZ19saXN0ID0gYXJyYXkoKTsNCgkJJGF0dHJzID0gYXJyYXkoKTsNCgkJZm9yZWFjaCgkaW1ncyBhcyAkaW1nKXsNCgkJCWV4dHJhY3QoJGltZyk7DQoJCQkkaW1nX2xpc3RbJGlkXSA9ICRuYW1lOw0KCQkJJHRodW1iID0gKCR0aHVtYm5haWwpPyd0cnVlJzonZmFsc2UnOw0KCQkJJGF0dHJbXSA9ICInJGlkJzp7J3RodW1iJzokdGh1bWIsJ2V4dCc6JyRleHQnfSI7DQoJCX0NCgkJDQoJCSRpbWdfbGlzdCA9IHNlbGVjdElucHV0KCdiYXNfaW1nX3NlbF9pbWcnLCAkaW1nX2xpc3QsJycsdHJ1ZSk7DQoJCSRpbWdfbGlzdCA9IHN0cl9yZXBsYWNlKG4sJycsJGltZ19saXN0KTsNCgkJJGF0dHIgPSAneycuam9pbignLCcsJGF0dHIpLid9JzsNCgkJDQoJCXJldHVybiAieydodG1sJzonJGltZ19saXN0JywnYXR0cic6JGF0dHJ9IjsgDQoJfQ0KDQovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQovLyAtLS0gVGhlIHBsdWdpbnMgYWR2YW5jZWQgaW5zdGFsbA0KLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KCWZ1bmN0aW9uIGJhc19pbWdfc2VsZWN0b3JfaW5zdGFsbCgpDQoJew0KCQlnbG9iYWwgJHByZWZzOw0KCQkJJGJhc19pbnN0YWxsID0gcHMoImJhc19pbnN0YWxsIik7DQoJCQlpZigkYmFzX2luc3RhbGwgPT0gJ2luc3RhbGwnKQ0KCQkJCSRtZXNzID0gYmFzX2ltZ19zZWxlY3Rvcl9kYignaW5zdGFsbCcpOw0KCQkJZWxzZWlmKCRiYXNfaW5zdGFsbCA9PSAndW5pbnN0YWxsJykNCgkJCQkkbWVzcyA9IGJhc19pbWdfc2VsZWN0b3JfZGIoJ3VuaW5zdGFsbCcpOw0KCQkJZWxzZQ0KCQkJCSRtZXNzID0nJzsNCgkJCSRjaGVja0luc3RhbGxlZCA9IGZldGNoKCdldmVudCcsJ3R4cF9wcmVmcycsJ25hbWUnLCdiYXNfaW1nX3NlbF9leHBhbmRfYXJ0aWNsZV9pbWcnKTsNCgkJCXBhZ2V0b3AoImJhcyBJbWFnZSBTZWxlY3RvciIsICRtZXNzKTsNCgkJCWVjaG8gIjxkaXYgc3R5bGU9XCJtYXJnaW46M2VtXCI+IjsNCgkJCWlmKGVtcHR5KCRjaGVja0luc3RhbGxlZCkpew0KCQkJCWVjaG8gZm9ybSgNCgkJCQkJdGFnKCJJbnN0YWxsIGFkdmFuY2VkIHByZWZzIGZvciBiYXMgSW1hZ2UgU2VsZWN0b3IiLCAiaDEiKS4NCgkJCQkJZ3JhZigiQ2xpY2sgdG8gPGI+YWRkPC9iPiB0aGUgPGI+YWR2YW5jZWQgcHJlZnM8L2I+IGZvciBiYXMgSW1hZ2UgU2VsZWN0b3IgIi4NCgkJCQkJCWZJbnB1dCgiaGlkZGVuIiwgImJhc19pbnN0YWxsIiwgJ2luc3RhbGwnKS4NCgkJCQkJCWZJbnB1dCgic3VibWl0IiwgImluc3RhbGwiLCAiQWRkIiwgInNtYWxsZXJib3giKS4NCgkJCQkJCWVJbnB1dCgiYmFzX2ltZ19zZWxlY3Rvcl9pbnN0YWxsIikuc0lucHV0KCJzdGVwX2EiKQ0KCQkJCQkpDQoJCQkJKTsNCgkJCX0NCgkJCWVsc2V7DQoJCQkJZWNobyBmb3JtKA0KCQkJCQl0YWcoIlJlbW92ZSBhZHZhbmNlZCBwcmVmcyBmb3IgYmFzIEltYWdlIFNlbGVjdG9yIiwgImgxIikuDQoJCQkJCWdyYWYoIkNsaWNrIHRvIDxiPnJlbW92ZTwvYj4gdGhlIDxiPmFkdmFuY2VkIHByZWZzPC9iPiBmb3IgYmFzIEltYWdlIFNlbGVjdG9yICIuDQoJCQkJCQlmSW5wdXQoImhpZGRlbiIsICJiYXNfaW5zdGFsbCIsICd1bmluc3RhbGwnKS4NCgkJCQkJCWZJbnB1dCgic3VibWl0IiwgImluc3RhbGwiLCAiUmVtb3ZlIiwgInNtYWxsZXJib3giKS4NCgkJCQkJCWVJbnB1dCgiYmFzX2ltZ19zZWxlY3Rvcl9pbnN0YWxsIikuc0lucHV0KCJzdGVwX2EiKQ0KCQkJCQkpDQoJCQkJKTsNCgkJCX0NCgkJCWVjaG8gJzxociAvPjxoMj5BZHZhbmNlZCBQcmVmZXJlbmNlczwvaDI+JzsNCgkJCWVjaG8gJzxwPlRoZSBwcmVmcyBmb3IgYmFzX2ltZyBzZWxlY3RvciB3aWxsIGJlIHNhdmVkIGludG8gdGhlIGRiIGFuZCBhcmUgdXNlZCBpbnN0ZWFkIG9mIHRoZSBkZWZhdWx0cy48L3A+JzsNCgkJCWVjaG8gJzxwPllvdSBjYW4gZWRpdCB0aGVzZSBQcmVmcyBpbiA8YSBocmVmPSIuL2luZGV4LnBocD9ldmVudD1wcmVmcyZzdGVwPWFkdmFuY2VkX3ByZWZzIj5BZHZhbmNlZCBwcmVmZXJlbmNlczwvYT4uPC9wPic7DQoJCQllY2hvICc8cD5Gb3Igbm93LCB0aGVzZSBhcmUgdGhlIG9wdGlvbnMgWzxlbT5kZWZhdWx0IHZhbHVlczwvZW0+XTo8L3A+JzsNCgkJCWVjaG8gJzx1bD48bGk+WW91IGNhbiBjaG9vc2UgdG8gc3RhcnQgdGhlIGltYWdlIHNlbGVjdG9yIGV4cGFuZGVkIG9yIG5vdC4gWzxlbT5zdGFydCBjbG9zZWQ8L2VtPl08L2xpPjxsaT5Zb3UgY2FuIGNob29zZSBhbiBpbWFnZSBjYXRlZ29yeSB0byBzdGFydCB3aXRoLiBbPGVtPnJvb3Q8L2VtPl08L2xpPjxsaT5DaG9vc2Ugd2hlcmUgdG8gYWRkIHRoZSBpbWFnZSwgdG8gYXJ0aWNsZSBpbWFnZSBmaWVsZCwgdG8gYm9keSBvciBleGNlcnB0LiBbPGVtPmltYWdlIGZpZWxkPC9lbT5dPC9saT48bGk+Q2hvb3NlIHRoZSB0YWcgZm9ybWF0LiBNYXkgYmVlIHR4cGBzIG93biB0YWcsIHRleHRpbGUgb3IgeGh0bWwuIFs8ZW0+dHhwPC9lbT5dPC9saT48L3VsPic7DQoJCQllY2hvICc8cD5SZWFkIG1vcmUgaW4gdGhlIDxhIGhyZWY9Ii4vaW5kZXgucGhwP2V2ZW50PXBsdWdpbiZzdGVwPXBsdWdpbl9oZWxwJm5hbWU9YmFzX2ltZ19zZWxlY3RvciNhZHZhbmNlZF9wcmVmcyI+aGVscDwvYT4uJzsNCgkJCWVjaG8gJzwvZGl2Pic7DQoJfQ0KDQovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQovLyAtLS0gVGhpcyBvbmUgaXMgZm9yIHVwZGF0aW5nIHRoZSBkYg0KLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KCWZ1bmN0aW9uIGJhc19pbWdfc2VsZWN0b3JfZGIoJHVuSW5zdGFsbCkNCgl7DQoJCWlmKCR1bkluc3RhbGwgPT0gJ2luc3RhbGwnKXsNCgkJCXNhZmVfaW5zZXJ0KCd0eHBfcHJlZnMnLCJwcmVmc19pZCA9ICcxJyxuYW1lID0gJ2Jhc19pbWdfc2VsX2V4cGFuZF9hcnRpY2xlX2ltZycsdmFsID0gJzAnLHR5cGUgPSAnMScsZXZlbnQgPSAnYmFzX2ltZ19zZWwnLGh0bWwgPSAneWVzbm9yYWRpbycscG9zaXRpb24gPSAnMTAnIik7DQoJCQlzYWZlX2luc2VydCgndHhwX3ByZWZzJywicHJlZnNfaWQgPSAnMScsbmFtZSA9ICdiYXNfaW1nX3NlbF9leHBhbmRfc2VsZWN0b3InLHZhbCA9ICcwJyx0eXBlID0gJzEnLGV2ZW50ID0gJ2Jhc19pbWdfc2VsJyxodG1sID0gJ3llc25vcmFkaW8nLHBvc2l0aW9uID0gJzIwJyIpOw0KCQkJc2FmZV9pbnNlcnQoJ3R4cF9wcmVmcycsInByZWZzX2lkID0gJzEnLG5hbWUgPSAnYmFzX2ltZ19zZWxfc3RhcnRfY2F0Jyx2YWwgPSAncm9vdCcsdHlwZSA9ICcxJyxldmVudCA9ICdiYXNfaW1nX3NlbCcsaHRtbCA9ICd0ZXh0X2lucHV0Jyxwb3NpdGlvbiA9ICczMCciKTsNCgkJCXNhZmVfaW5zZXJ0KCd0eHBfcHJlZnMnLCJwcmVmc19pZCA9ICcxJyxuYW1lID0gJ2Jhc19pbWdfc2VsX2FkZF9hcycsdmFsID0gJ3R4cCcsdHlwZSA9ICcxJyxldmVudCA9ICdiYXNfaW1nX3NlbCcsaHRtbCA9ICd0ZXh0X2lucHV0Jyxwb3NpdGlvbiA9ICc0MCciKTsNCgkJcmV0dXJuICdQcmVmcyBzYXZlZCB0byBkYic7DQoJCX0NCgkJaWYoJHVuSW5zdGFsbCA9PSAndW5pbnN0YWxsJyl7DQoJCQlzYWZlX2RlbGV0ZSgndHhwX3ByZWZzJywibmFtZSA9ICdiYXNfaW1nX3NlbF9leHBhbmRfYXJ0aWNsZV9pbWcnIik7DQoJCQlzYWZlX2RlbGV0ZSgndHhwX3ByZWZzJywibmFtZSA9ICdiYXNfaW1nX3NlbF9leHBhbmRfc2VsZWN0b3InIik7DQoJCQlzYWZlX2RlbGV0ZSgndHhwX3ByZWZzJywibmFtZSA9ICdiYXNfaW1nX3NlbF9zdGFydF9jYXQnIik7DQoJCQlzYWZlX2RlbGV0ZSgndHhwX3ByZWZzJywibmFtZSA9ICdiYXNfaW1nX3NlbF9hZGRfYXMnIik7DQoJCXJldHVybiAnUHJlZnMgcmVtb3ZlZCBmcm9tIGRiJzsNCgkJfQ0KCX0NCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi8vIC0tLSBUaGUgcGx1Z2lucyBwcmVmZXJlbmNlcw0KLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQoJZnVuY3Rpb24gYmFzX2ltZ19zZWxlY3Rvcl9wcmVmcygpew0KCQlnbG9iYWwgJHRleHRhcnJheTsNCgkJJHRleHRhcnJheVsnYmFzX2ltZ19zZWwnXSA9ICdiYXMgSW1hZ2UgU2VsZWN0b3InOw0KCQkkdGV4dGFycmF5WydiYXNfaW1nX3NlbF9leHBhbmRfYXJ0aWNsZV9pbWcnXSA9ICdFeHBhbmQgYXJ0aWNsZSBpbWFnZSBwcmV2aWV3JzsNCgkJJHRleHRhcnJheVsnYmFzX2ltZ19zZWxfZXhwYW5kX3NlbGVjdG9yJ10gPSAnRXhwYW5kIGRyb3AgZG93biBsaXN0JzsNCgkJJHRleHRhcnJheVsnYmFzX2ltZ19zZWxfc3RhcnRfY2F0J10gPSAnRGVmYXVsdCBjYXRlZ29yeSc7DQoJCSR0ZXh0YXJyYXlbJ2Jhc19pbWdfc2VsX2FkZF9hcyddID0gJ0RlZmF1bHQgdGFnJzsNCgkJDQoJCW9iX3N0YXJ0KCdiYXNfaW1nX3NlbF9wcmVmc19hZGRfbWFya3VwJyk7DQoNCgkJDQoJfQ0KCWZ1bmN0aW9uIGJhc19pbWdfc2VsZWN0b3JfcHJlZnNfZG9fbWFya3VwKCl7DQoJCWdsb2JhbCAkcHJlZnMsJHN0ZXAsJGJhc19pbWdfc2VsOw0KCQlpZihpc3NldCgkcHJlZnNbJ2Jhc19pbWdfc2VsX2V4cGFuZF9hcnRpY2xlX2ltZyddKSl7DQoJCQlpZigkc3RlcCA9PSAnYWR2YW5jZWRfcHJlZnNfc2F2ZScpew0KDQoJCQkJLy9tYXliZSBQT1NUIGFuZCBwcmVmIGRpZmZlciBhZnRlciBjaGFuZ2luZyBwcmVmcw0KCQkJCWlmKGlzc2V0KCRfUE9TVFsnYmFzX2ltZ19zZWxfZXhwYW5kX2FydGljbGVfaW1nJ10pKSRwcmVmc1snYmFzX2ltZ19zZWxfZXhwYW5kX2FydGljbGVfaW1nJ10gPSAkX1BPU1RbJ2Jhc19pbWdfc2VsX2V4cGFuZF9hcnRpY2xlX2ltZyddOw0KCQkJCWlmKGlzc2V0KCRfUE9TVFsnYmFzX2ltZ19zZWxfZXhwYW5kX3NlbGVjdG9yJ10pKSRwcmVmc1snYmFzX2ltZ19zZWxfZXhwYW5kX3NlbGVjdG9yJ10gPSAkX1BPU1RbJ2Jhc19pbWdfc2VsX2V4cGFuZF9zZWxlY3RvciddOw0KCQkJCWlmKGlzc2V0KCRfUE9TVFsnYmFzX2ltZ19zZWxfc3RhcnRfY2F0J10pKSRwcmVmc1snYmFzX2ltZ19zZWxfc3RhcnRfY2F0J10gPSAkX1BPU1RbJ2Jhc19pbWdfc2VsX3N0YXJ0X2NhdCddOw0KCQkJCWlmKGlzc2V0KCRfUE9TVFsnYmFzX2ltZ19zZWxfYWRkX2FzJ10pKSRwcmVmc1snYmFzX2ltZ19zZWxfYWRkX2FzJ10gPSAkX1BPU1RbJ2Jhc19pbWdfc2VsX2FkZF9hcyddOw0KCQkJCQ0KCQl9DQoJCSRpbWdfY2F0cyA9IHNhZmVfcm93cygnbmFtZSx0aXRsZScsJ3R4cF9jYXRlZ29yeScsJ3R5cGUgPSAiaW1hZ2UiJyk7DQoJCSRpbWdfc2VsZWN0ID0gYXJyYXkoKTsNCgkJZm9yZWFjaCgkaW1nX2NhdHMgYXMgJGNhdCl7DQoJCQlleHRyYWN0KCRjYXQpOw0KCQkJJGltZ19zZWxlY3RbJG5hbWVdID0gJHRpdGxlOw0KCQl9DQoJCSRiYXNfaW1nX3NlbFsnY2F0X2xpc3QnXSA9IHNlbGVjdElucHV0KCdiYXNfaW1nX3NlbF9zdGFydF9jYXQnLCAkaW1nX3NlbGVjdCwgJHByZWZzWydiYXNfaW1nX3NlbF9zdGFydF9jYXQnXSx0cnVlKTsNCgkJJGJhc19pbWdfc2VsWyd0YWdfbGlzdCddID0gc2VsZWN0SW5wdXQoJ2Jhc19pbWdfc2VsX2FkZF9hcycsIGFycmF5KCd0ZXh0cGF0dGVybicgPT4gJ1RYUCcsJ3hodG1sJyA9PiAnWEhUTUwnLCd0ZXh0aWxlJyA9PiAnVGV4dGlsZScpLCAkcHJlZnNbJ2Jhc19pbWdfc2VsX2FkZF9hcyddKTsNCgkJfQ0KDQoJfQ0KCWZ1bmN0aW9uIGJhc19pbWdfc2VsX3ByZWZzX2FkZF9tYXJrdXAoJGJ1ZmZlcil7DQoJCWdsb2JhbCAkYmFzX2ltZ19zZWw7DQoJDQoNCgkJCSRidWZmZXIgPSBwcmVnX3JlcGxhY2UoJyE8aW5wdXQoW14+XSo/KWJhc19pbWdfc2VsX3N0YXJ0X2NhdChbXj5dKj8pLz4hbXNpJywkYmFzX2ltZ19zZWxbJ2NhdF9saXN0J10sJGJ1ZmZlcik7DQoJCQkkYnVmZmVyID0gcHJlZ19yZXBsYWNlKCchPGlucHV0KFtePl0qPyliYXNfaW1nX3NlbF9hZGRfYXMoW14+XSo/KS8+IW1zaScsJGJhc19pbWdfc2VsWyd0YWdfbGlzdCddLCRidWZmZXIpOw0KCQkJcmV0dXJuICRidWZmZXI7DQoJCQ0KCX0NCgkNCiANCiI7czo0OiJ0eXBlIjtzOjE6IjEiO3M6MzoibWQ1IjtzOjMyOiI3NjQ0ZTJlOTRmOGI2NDdhYThkZmI2OWMwMmFjZTQ4MyI7fQ==