cG9zdE1lc3NhZ2UgYW5kIE1lc3NhZ2VDaGFubmVsPC9oMT48cCBjbGFzcz0icGFnZS1kZXNjcmlwdGlvbiI+PC9wPjx0YWJsZSBjbGFzcz0icHJvcGVydGllcyI+PHRib2R5Pjx0ciBjbGFzcz0icHJvcGVydHktcm93IHByb3BlcnR5LXJvdy1jcmVhdGVkX2J5Ij48dGg+PHNwYW4gY2xhc3M9Imljb24gcHJvcGVydHktaWNvbiI+PGRpdiBkYXRhLXRlc3RpZD0iL2ljb25zL3VzZXItY2lyY2xlX2dyYXkuc3ZnIiBzdHlsZT0id2lkdGg6MTRweDtoZWlnaHQ6MTRweDtmbGV4LXNocmluazowO3RyYW5zZm9ybTpzY2FsZSgxLjIpO21hc2s6dXJsKC9pY29ucy91c2VyLWNpcmNsZV9ncmF5LnN2Zz9tb2RlPWxpZ2h0KSBuby1yZXBlYXQgY2VudGVyOy13ZWJraXQtbWFzazp1cmwoL2ljb25zL3VzZXItY2lyY2xlX2dyYXkuc3ZnP21vZGU9bGlnaHQpIG5vLXJlcGVhdCBjZW50ZXI7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDcxLCA3MCwgNjgsIDAuNik7ZmlsbDpyZ2JhKDcxLCA3MCwgNjgsIDAuNikiPjwvZGl2Pjwvc3Bhbj5DcmVhdGVkIGJ5PC90aD48dGQ+PHNwYW4gY2xhc3M9InVzZXIiPjxpbWcgc3JjPSJCcm93c2VyJTIwV29ya2VycywlMjBwb3N0TWVzc2FnZSUyMGFuZCUyME1lc3NhZ2VDaGFubmVsJTIwMTQ5NmNkNTE5OTBkODA5MDk5MDllOWY3NmM0YTRkMmYvU2NyZWVuc2hvdF8yMDI1LTA4LTAyX2F0XzEwLjM4LjExX0FNLnBuZyIgY2xhc3M9Imljb24gdXNlci1pY29uIi8+SmlhTGluIEh1YW5nPC9zcGFuPjwvdGQ+PC90cj48dHIgY2xhc3M9InByb3BlcnR5LXJvdyBwcm9wZXJ0eS1yb3ctbGFzdF9lZGl0ZWRfdGltZSI+PHRoPjxzcGFuIGNsYXNzPSJpY29uIHByb3BlcnR5LWljb24iPjxkaXYgZGF0YS10ZXN0aWQ9Ii9pY29ucy9jbG9ja19ncmF5LnN2ZyIgc3R5bGU9IndpZHRoOjE0cHg7aGVpZ2h0OjE0cHg7ZmxleC1zaHJpbms6MDt0cmFuc2Zvcm06c2NhbGUoMS4yKTttYXNrOnVybCgvaWNvbnMvY2xvY2tfZ3JheS5zdmc/bW9kZT1saWdodCkgbm8tcmVwZWF0IGNlbnRlcjstd2Via2l0LW1hc2s6dXJsKC9pY29ucy9jbG9ja19ncmF5LnN2Zz9tb2RlPWxpZ2h0KSBuby1yZXBlYXQgY2VudGVyO2JhY2tncm91bmQtY29sb3I6cmdiYSg3MSwgNzAsIDY4LCAwLjYpO2ZpbGw6cmdiYSg3MSwgNzAsIDY4LCAwLjYpIj48L2Rpdj48L3NwYW4+TGFzdCBlZGl0ZWQ8L3RoPjx0ZD48dGltZT5AMjAyNeW5tDjmnIgy5pelIDExOjI5PC90aW1lPjwvdGQ+PC90cj48dHIgY2xhc3M9InByb3BlcnR5LXJvdyBwcm9wZXJ0eS1yb3ctbXVsdGlfc2VsZWN0Ij48dGg+PHNwYW4gY2xhc3M9Imljb24gcHJvcGVydHktaWNvbiI+PGRpdiBkYXRhLXRlc3RpZD0iL2ljb25zL2xpc3RfZ3JheS5zdmciIHN0eWxlPSJ3aWR0aDoxNHB4O2hlaWdodDoxNHB4O2ZsZXgtc2hyaW5rOjA7dHJhbnNmb3JtOnNjYWxlKDEuMik7bWFzazp1cmwoL2ljb25zL2xpc3RfZ3JheS5zdmc/bW9kZT1saWdodCkgbm8tcmVwZWF0IGNlbnRlcjstd2Via2l0LW1hc2s6dXJsKC9pY29ucy9saXN0X2dyYXkuc3ZnP21vZGU9bGlnaHQpIG5vLXJlcGVhdCBjZW50ZXI7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDcxLCA3MCwgNjgsIDAuNik7ZmlsbDpyZ2JhKDcxLCA3MCwgNjgsIDAuNikiPjwvZGl2Pjwvc3Bhbj5UYWdzPC90aD48dGQ+PHNwYW4gY2xhc3M9InNlbGVjdGVkLXZhbHVlIHNlbGVjdC12YWx1ZS1jb2xvci1wdXJwbGUiPlBvc3Q8L3NwYW4+PC90ZD48L3RyPjwvdGJvZHk+PC90YWJsZT48L2hlYWRlcj48ZGl2IGNsYXNzPSJwYWdlLWJvZHkiPjxoMSBjbGFzcz0iIj5UTDtEUjwvaDE+PHVsIGNsYXNzPSJidWxsZXRlZC1saXN0Ij48bGkgc3R5bGU9Imxpc3Qtc3R5bGUtdHlwZTpkaXNjIj5TdGFydCB3aXRoIHNpbXBsZSBXZWIgV29ya2VycyBpZiB5b3UganVzdCBuZWVkIGEgdGhyZWFkIHRvIGhlbHAgd2l0aCBjb21wdXRhdGlvbjwvbGk+PC91bD48dWwgY2xhc3M9ImJ1bGxldGVkLWxpc3QiPjxsaSBzdHlsZT0ibGlzdC1zdHlsZS10eXBlOmRpc2MiPkNvbnNpZGVyIFNoYXJlZCBXb3JrZXIgaWYgeW91IG5lZWQgY3Jvc3MtcGFnZSBzaGFyaW5nPC9saT48L3VsPjx1bCBjbGFzcz0iYnVsbGV0ZWQtbGlzdCI+PGxpIHN0eWxlPSJsaXN0LXN0eWxlLXR5cGU6ZGlzYyI+VXNlIFNlcnZpY2UgV29ya2VyIHdoZW4geW91IG5lZWQgb2ZmbGluZSBmdW5jdGlvbmFsaXR5LCBwdXNoIG5vdGlmaWNhdGlvbnMsIGNhY2hpbmcsIHByb3h5aW5nLCBldGMuIFNlcnZpY2UgV29ya2VycyBhcmUgY29tbW9ubHkgbWVudGlvbmVkIHdoZW4gdGFsa2luZyBhYm91dCBQV0E8L2xpPjwvdWw+PHAgY2xhc3M9IiI+CjwvcD48cCBjbGFzcz0iIj4KPC9wPjxoMSBjbGFzcz0iIj48Y29kZT5wb3N0TWVzc2FnZTwvY29kZT4gZm9yIHdvcmtlcnM8L2gxPjxwIGNsYXNzPSIiPgo8L3A+PGgzIGNsYXNzPSIiPndpbmRvdy5wb3N0TWVzc2FnZSA8L2gzPjxvbCB0eXBlPSIxIiBjbGFzcz0ibnVtYmVyZWQtbGlzdCIgc3RhcnQ9IjEiPjxsaT53aW5kb3cucG9zdE1lc3NhZ2UoKTwvbGk+PC9vbD48b2wgdHlwZT0iMSIgY2xhc3M9Im51bWJlcmVkLWxpc3QiIHN0YXJ0PSIyIj48bGk+VXNlZCBmb3IgY29tbXVuaWNhdGlvbiBiZXR3ZWVuIHdpbmRvd3MsIGNvbW1vbmx5IGZvciBpZnJhbWUgYW5kIHBhcmVudCB3aW5kb3cgY29tbXVuaWNhdGlvbjwvbGk+PC9vbD48c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvcHJpc20vMS4yOS4wL3ByaXNtLm1pbi5qcyIgaW50ZWdyaXR5PSJzaGE1MTItN1o5SjNsMStFWWZlYVBLY0dYdTNNUy83VCt3MTlXdEtRWS9uK3h6bXc0aFpoSjl0eVltY1VTKzRRcUFsemhpY0U1TEFmTVFTRjNpRlRLOWJRZFR4WGc9PSIgY3Jvc3NvcmlnaW49ImFub255bW91cyIgcmVmZXJyZXJQb2xpY3k9Im5vLXJlZmVycmVyIj48L3NjcmlwdD48bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vY2RuanMuY2xvdWRmbGFyZS5jb20vYWpheC9saWJzL3ByaXNtLzEuMjkuMC90aGVtZXMvcHJpc20ubWluLmNzcyIgaW50ZWdyaXR5PSJzaGE1MTItdE43RWM2ekFGYVZTRzNUcE5BS3RrNERPSE5wU3dLSHh4cnNpdzRHSEtFU0dQczVuam4vMHNNQ1VNbDJzdlY0d280QksvckNQN2p1WXorengrbDZvZVE9PSIgY3Jvc3NvcmlnaW49ImFub255bW91cyIgcmVmZXJyZXJQb2xpY3k9Im5vLXJlZmVycmVyIi8+PHByZSBjbGFzcz0iY29kZSBjb2RlLXdyYXAiPjxjb2RlIGNsYXNzPSJsYW5ndWFnZS1KYXZhU2NyaXB0IiBzdHlsZT0id2hpdGUtc3BhY2U6cHJlLXdyYXA7d29yZC1icmVhazpicmVhay1hbGwiPi8vIG1haW4gd2luZG93IHRvIHNwZWMgaWZyYW1lCmNvbnN0IGlmcmFtZTEgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgmI3gyNztpZnJhbWUxJiN4Mjc7KTsKaWZyYW1lMS5jb250ZW50V2luZG93LnBvc3RNZXNzYWdlKCZxdW90O2hlbGxvIHRvIGlmcmFtZTEmcXVvdDssICZxdW90O2h0dHBzOi8vdGFyZ2V0MS5jb20mcXVvdDspOwoKLy8gd2luZG93IGFuZCBpZnJhbWVzCi8vIHdpbmRvdwovLyAgIOKUlOKUgOKUgCBpZnJhbWVYCi8vICAgICAgICAgIOKUlOKUgOKUgCBpZnJhbWVZCi8vIGlmcmFtZSBZIHRvIGlmcmFtZSBYCndpbmRvdy5wYXJlbnQucG9zdE1lc3NhZ2UoJnF1b3Q7aGVsbG8mcXVvdDssICZxdW90O2h0dHBzOi8vcGFyZW50LmNvbSZxdW90Oyk7Ci8vIGlmcmFtZSBZIHRvIHJvb3QgCndpbmRvdy50b3AgfHwgd2luZG93LnBhcmVudC5wYXJlbnQKCgovLyB3aW5kb3cgdG8gcG9wdXAKcG9wdXAgPSB3aW5kb3cub3BlbigmcXVvdDtodHRwczovL3BvcHVwLmNvbSZxdW90Oyk7CnBvcHVwLnBvc3RNZXNzYWdlKCZxdW90O2hlbGxvJnF1b3Q7LCAmcXVvdDtodHRwczovL3BvcHVwLmNvbSZxdW90Oyk7CgovLyBwb3B1cCB0byB3aW5kb3cKd2luZG93Lm9wZW5lci5wb3N0TWVzc2FnZSgmcXVvdDtoZWxsbyZxdW90OywgJnF1b3Q7aHR0cHM6Ly9vcGVuZXIuY29tJnF1b3Q7KTs8L2NvZGU+PC9wcmU+PHAgY2xhc3M9IiI+CjwvcD48cCBjbGFzcz0iIj4KPC9wPjxwIGNsYXNzPSIiPgo8L3A+PHAgY2xhc3M9IiI+CjwvcD48cCBjbGFzcz0iIj4KPC9wPjxwIGNsYXNzPSIiPgo8L3A+PGgxIGNsYXNzPSIiPkJyb3dzZXIgV29ya2VyczwvaDE+PHVsIGNsYXNzPSJidWxsZXRlZC1saXN0Ij48bGkgc3R5bGU9Imxpc3Qtc3R5bGUtdHlwZTpkaXNjIj48c3Ryb25nPndlYiB3b3JrZXI8L3N0cm9uZz4gKGRlZGljYXRlZCB3b3JrZXIsIG9uZS10by1vbmUpPC9saT48L3VsPjx1bCBjbGFzcz0iYnVsbGV0ZWQtbGlzdCI+PGxpIHN0eWxlPSJsaXN0LXN0eWxlLXR5cGU6ZGlzYyI+PHN0cm9uZz5zZXJ2aWNlIHdvcmtlcjwvc3Ryb25nPiAoUFdBLCBhZmZlY3Rpbmcgd2luZG93cyBieSBzY29wZSk8L2xpPjwvdWw+PHVsIGNsYXNzPSJidWxsZXRlZC1saXN0Ij48bGkgc3R5bGU9Imxpc3Qtc3R5bGUtdHlwZTpkaXNjIj48c3Ryb25nPnNoYXJlZCB3b3JrZXI8L3N0cm9uZz4gKHNoYXJlZCBhbW9uZyB3aW5kb3dzKTwvbGk+PC91bD48aHIvPjx1bCBjbGFzcz0iYnVsbGV0ZWQtbGlzdCI+PGxpIHN0eWxlPSJsaXN0LXN0eWxlLXR5cGU6ZGlzYyI+PHN0cm9uZz5XZWIgV29ya2VyIGFuZCBTaGFyZWQgV29ya2VyIHdpbGwgY29udGludWUgcnVubmluZyBmb3IgYSB3aGlsZSBhZnRlciB0aGUgbGFzdCBwYWdlIG9yIHdpbmRvdyBpcyBjbG9zZWQsIGJlZm9yZSBldmVudHVhbGx5IHRlcm1pbmF0aW5nLjwvc3Ryb25nPjwvbGk+PC91bD48dWwgY2xhc3M9ImJ1bGxldGVkLWxpc3QiPjxsaSBzdHlsZT0ibGlzdC1zdHlsZS10eXBlOmRpc2MiPjxzdHJvbmc+U2VydmljZSBXb3JrZXIgd2lsbCBjb250aW51ZSBydW5uaW5nIGZvciBhIHdoaWxlIGFmdGVyIHRoZSBwYWdlIGlzIGNsb3NlZCBhbmQgd2lsbCB0ZXJtaW5hdGUgb25jZSB0aGU8L3N0cm9uZz48bWFyayBjbGFzcz0iaGlnaGxpZ2h0LXJlZCI+PHN0cm9uZz4gYnJvd3NlciBkZXRlcm1pbmVzPC9zdHJvbmc+PC9tYXJrPjxzdHJvbmc+IGl04oCZcyBubyBsb25nZXIgbmVlZGVkLjwvc3Ryb25nPjwvbGk+PC91bD48cCBjbGFzcz0iIj4KPC9wPjxwIGNsYXNzPSIiPgo8L3A+PGgxIGNsYXNzPSIiPldlYiBXb3JrZXIgIGZvciBoZWF2eSBjb21wdXRpbmcgPC9oMT48b2wgdHlwZT0iMSIgY2xhc3M9Im51bWJlcmVkLWxpc3QiIHN0YXJ0PSIxIj48bGk+b25lIHBhZ2UodGFiKSwgb25lIHdlYiB3b3JrZXI8L2xpPjwvb2w+PG9sIHR5cGU9IjEiIGNsYXNzPSJudW1iZXJlZC1saXN0IiBzdGFydD0iMiI+PGxpPkl0IGNhbuKAmXQgYmUgc2hhcmVkLiBDb25zaWRlciB1c2Ugc2hhcmVkIHdvcmtlci48L2xpPjwvb2w+PHNjcmlwdCBzcmM9Imh0dHBzOi8vY2RuanMuY2xvdWRmbGFyZS5jb20vYWpheC9saWJzL3ByaXNtLzEuMjkuMC9wcmlzbS5taW4uanMiIGludGVncml0eT0ic2hhNTEyLTdaOUozbDErRVlmZWFQS2NHWHUzTVMvN1QrdzE5V3RLUVkvbit4em13NGhaaEo5dHlZbWNVUys0UXFBbHpoaWNFNUxBZk1RU0YzaUZUSzliUWRUeFhnPT0iIGNyb3Nzb3JpZ2luPSJhbm9ueW1vdXMiIHJlZmVycmVyUG9saWN5PSJuby1yZWZlcnJlciI+PC9zY3JpcHQ+PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9wcmlzbS8xLjI5LjAvdGhlbWVzL3ByaXNtLm1pbi5jc3MiIGludGVncml0eT0ic2hhNTEyLXRON0VjNnpBRmFWU0czVHBOQUt0azRET0hOcFN3S0h4eHJzaXc0R0hLRVNHUHM1bmpuLzBzTUNVTWwyc3ZWNHdvNEJLL3JDUDdqdVl6K3p4K2w2b2VRPT0iIGNyb3Nzb3JpZ2luPSJhbm9ueW1vdXMiIHJlZmVycmVyUG9saWN5PSJuby1yZWZlcnJlciIvPjxwcmUgY2xhc3M9ImNvZGUgY29kZS13cmFwIj48Y29kZSBjbGFzcz0ibGFuZ3VhZ2UtSmF2YVNjcmlwdCIgc3R5bGU9IndoaXRlLXNwYWNlOnByZS13cmFwO3dvcmQtYnJlYWs6YnJlYWstYWxsIj4vLyBtYWluIHRocmVhZAoKLy8gZ2V0IHdlYiB3b3JrZXIKY29uc3Qgd29ya2VyID0gbmV3IFdvcmtlcigmI3gyNzt3b3JrZXIuanMmI3gyNzspOwoKLy8gbWFpbiB0aHJlYWQgc2VuZCBkYXRhIHRvIHdlYiB3b3JrZXIKd29ya2VyLnBvc3RNZXNzYWdlKHsgZGF0YTogJiN4Mjc7aGVhdnkgY29tcHV0YXRpb24mI3gyNzsgfSk7CgovLyByZWNlaXZlIGRhdGEgZnJvbSB3ZWIgd29ya2VyCndvcmtlci5vbm1lc3NhZ2UgPSAoZXZlbnQpID0mZ3Q7IHsKICBjb25zb2xlLmxvZygmI3gyNztGcm9tIFdvcmtlcjomI3gyNzssIGV2ZW50LmRhdGEpOwp9OzwvY29kZT48L3ByZT48c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvcHJpc20vMS4yOS4wL3ByaXNtLm1pbi5qcyIgaW50ZWdyaXR5PSJzaGE1MTItN1o5SjNsMStFWWZlYVBLY0dYdTNNUy83VCt3MTlXdEtRWS9uK3h6bXc0aFpoSjl0eVltY1VTKzRRcUFsemhpY0U1TEFmTVFTRjNpRlRLOWJRZFR4WGc9PSIgY3Jvc3NvcmlnaW49ImFub255bW91cyIgcmVmZXJyZXJQb2xpY3k9Im5vLXJlZmVycmVyIj48L3NjcmlwdD48bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vY2RuanMuY2xvdWRmbGFyZS5jb20vYWpheC9saWJzL3ByaXNtLzEuMjkuMC90aGVtZXMvcHJpc20ubWluLmNzcyIgaW50ZWdyaXR5PSJzaGE1MTItdE43RWM2ekFGYVZTRzNUcE5BS3RrNERPSE5wU3dLSHh4cnNpdzRHSEtFU0dQczVuam4vMHNNQ1VNbDJzdlY0d280QksvckNQN2p1WXorengrbDZvZVE9PSIgY3Jvc3NvcmlnaW49ImFub255bW91cyIgcmVmZXJyZXJQb2xpY3k9Im5vLXJlZmVycmVyIi8+PHByZSBjbGFzcz0iY29kZSBjb2RlLXdyYXAiPjxjb2RlIGNsYXNzPSJsYW5ndWFnZS1KYXZhU2NyaXB0IiBzdHlsZT0id2hpdGUtc3BhY2U6cHJlLXdyYXA7d29yZC1icmVhazpicmVhay1hbGwiPi8vIHdlYiB3b3JrZXIKCi8vIHJlY2VpdmUgZGF0YSBmcm9tIG1haW4gdGhyZWFkCnNlbGYuYWRkRXZlbnRMaXN0ZW5lcigmI3gyNzttZXNzYWdlJiN4Mjc7LCAoZXZlbnQpID0mZ3Q7IHsKICBjb25zb2xlLmxvZygmI3gyNztGcm9tIE1haW4gVGhyZWFkOiYjeDI3OywgZXZlbnQuZGF0YSk7CgogIC8vIGdpdmUgaXQgYmFjayB0byBtYWluIHRocmVhZAogIGNvbnN0IHJlc3VsdCA9IGBQcm9jZXNzZWQ6ICR7ZXZlbnQuZGF0YS5kYXRhfWA7CiAgc2VsZi5wb3N0TWVzc2FnZShyZXN1bHQpOwp9KTs8L2NvZGU+PC9wcmU+PGgxIGNsYXNzPSIiPnNlcnZpY2Ugd29ya2VyPC9oMT48dWwgY2xhc3M9ImJ1bGxldGVkLWxpc3QiPjxsaSBzdHlsZT0ibGlzdC1zdHlsZS10eXBlOmRpc2MiPk9uZSBzY29wZSAod2luZG93LCBwYWdlLCB0YWIsIGRlcGVuZHMgb24gc3cgc2V0dXApLCBvbmUgc2VydmljZSB3b3JrZXI8dWwgY2xhc3M9ImJ1bGxldGVkLWxpc3QiPjxsaSBzdHlsZT0ibGlzdC1zdHlsZS10eXBlOmNpcmNsZSI+PGNvZGU+L2FwcDwvY29kZT46IG1heSBoYXZlIGl0cyBvd24gc2VydmljZSB3b3JrZXI8L2xpPjwvdWw+PHVsIGNsYXNzPSJidWxsZXRlZC1saXN0Ij48bGkgc3R5bGU9Imxpc3Qtc3R5bGUtdHlwZTpjaXJjbGUiPjxjb2RlPi9hZG1pbjwvY29kZT46IG1heSBoYXZlIGl0cyBvd24gc3c8L2xpPjwvdWw+PHVsIGNsYXNzPSJidWxsZXRlZC1saXN0Ij48bGkgc3R5bGU9Imxpc3Qtc3R5bGUtdHlwZTpjaXJjbGUiPm9yIDxjb2RlPi9hcHA8L2NvZGU+IGFuZCA8Y29kZT4vYWRtaW48L2NvZGU+IG1heSBzaGFyZSB0aGUgc2FtZSBzY29wZSBpZiBzY29wZSBpcyBzZXQgdG8gPGNvZGU+LzwvY29kZT48L2xpPjwvdWw+PC9saT48L3VsPjx1bCBjbGFzcz0iYnVsbGV0ZWQtbGlzdCI+PGxpIHN0eWxlPSJsaXN0LXN0eWxlLXR5cGU6ZGlzYyI+SFRUUFMgb25seTwvbGk+PC91bD48dWwgY2xhc3M9ImJ1bGxldGVkLWxpc3QiPjxsaSBzdHlsZT0ibGlzdC1zdHlsZS10eXBlOmRpc2MiPjxtYXJrIGNsYXNzPSJoaWdobGlnaHQtcmVkIj48c3Ryb25nPkhpamFja3MgcmVxdWVzdHMsIGxpa2UgYSBtaWRkbGVtYW48L3N0cm9uZz48L21hcms+PC9saT48L3VsPjxzY3JpcHQgc3JjPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9wcmlzbS8xLjI5LjAvcHJpc20ubWluLmpzIiBpbnRlZ3JpdHk9InNoYTUxMi03WjlKM2wxK0VZZmVhUEtjR1h1M01TLzdUK3cxOVd0S1FZL24reHptdzRoWmhKOXR5WW1jVVMrNFFxQWx6aGljRTVMQWZNUVNGM2lGVEs5YlFkVHhYZz09IiBjcm9zc29yaWdpbj0iYW5vbnltb3VzIiByZWZlcnJlclBvbGljeT0ibm8tcmVmZXJyZXIiPjwvc2NyaXB0PjxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvcHJpc20vMS4yOS4wL3RoZW1lcy9wcmlzbS5taW4uY3NzIiBpbnRlZ3JpdHk9InNoYTUxMi10TjdFYzZ6QUZhVlNHM1RwTkFLdGs0RE9ITnBTd0tIeHhyc2l3NEdIS0VTR1BzNW5qbi8wc01DVU1sMnN2VjR3bzRCSy9yQ1A3anVZeit6eCtsNm9lUT09IiBjcm9zc29yaWdpbj0iYW5vbnltb3VzIiByZWZlcnJlclBvbGljeT0ibm8tcmVmZXJyZXIiLz48cHJlIGNsYXNzPSJjb2RlIGNvZGUtd3JhcCI+PGNvZGUgY2xhc3M9Imxhbmd1YWdlLUphdmFTY3JpcHQiIHN0eWxlPSJ3aGl0ZS1zcGFjZTpwcmUtd3JhcDt3b3JkLWJyZWFrOmJyZWFrLWFsbCI+Ly8gbWFpbiB0aHJlYWQKCi8vIHJlZ2lzdGVyCm5hdmlnYXRvci5zZXJ2aWNlV29ya2VyLnJlZ2lzdGVyKCYjeDI3Oy9zdy5qcyYjeDI3OykKICAudGhlbihyZWcgPSZndDsgY29uc29sZS5sb2coJiN4Mjc7U1cgcmVnaXN0ZXJlZCYjeDI3OykpCiAgLmNhdGNoKGVyciA9Jmd0OyBjb25zb2xlLmxvZygmI3gyNztTVyByZWdpc3RyYXRpb24gZmFpbGVkJiN4Mjc7KSk7CiAgCi8vIHNlbmQgbWVzc2FnZSB0byBzdwpuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWFkeS50aGVuKHJlZ2lzdHJhdGlvbiA9Jmd0OyB7CiAgcmVnaXN0cmF0aW9uLmFjdGl2ZS5wb3N0TWVzc2FnZSh7CiAgICBmcm9tOiAmI3gyNzttYWluJiN4Mjc7LAogICAgdHlwZTogJiN4Mjc7Z3JlZXRpbmcmI3gyNzssCiAgICBkYXRhOiAmI3gyNztIZWxsbyBmcm9tIE1haW4gVGhyZWFkJiN4Mjc7CiAgfSk7Cn0pOwoKLy8gcmVjZWl2ZSBkYXRhIGZyb20gc3cKbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIuYWRkRXZlbnRMaXN0ZW5lcigmI3gyNzttZXNzYWdlJiN4Mjc7LCBldmVudCA9Jmd0OyB7CiAgY29uc29sZS5sb2coJiN4Mjc7TWFpbiB0aHJlYWQgcmVjZWl2ZWQ6JiN4Mjc7LCBldmVudC5kYXRhKTsKfSk7PC9jb2RlPjwvcHJlPjxzY3JpcHQgc3JjPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9wcmlzbS8xLjI5LjAvcHJpc20ubWluLmpzIiBpbnRlZ3JpdHk9InNoYTUxMi03WjlKM2wxK0VZZmVhUEtjR1h1M01TLzdUK3cxOVd0S1FZL24reHptdzRoWmhKOXR5WW1jVVMrNFFxQWx6aGljRTVMQWZNUVNGM2lGVEs5YlFkVHhYZz09IiBjcm9zc29yaWdpbj0iYW5vbnltb3VzIiByZWZlcnJlclBvbGljeT0ibm8tcmVmZXJyZXIiPjwvc2NyaXB0PjxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvcHJpc20vMS4yOS4wL3RoZW1lcy9wcmlzbS5taW4uY3NzIiBpbnRlZ3JpdHk9InNoYTUxMi10TjdFYzZ6QUZhVlNHM1RwTkFLdGs0RE9ITnBTd0tIeHhyc2l3NEdIS0VTR1BzNW5qbi8wc01DVU1sMnN2VjR3bzRCSy9yQ1A3anVZeit6eCtsNm9lUT09IiBjcm9zc29yaWdpbj0iYW5vbnltb3VzIiByZWZlcnJlclBvbGljeT0ibm8tcmVmZXJyZXIiLz48cHJlIGNsYXNzPSJjb2RlIGNvZGUtd3JhcCI+PGNvZGUgY2xhc3M9Imxhbmd1YWdlLUphdmFTY3JpcHQiIHN0eWxlPSJ3aGl0ZS1zcGFjZTpwcmUtd3JhcDt3b3JkLWJyZWFrOmJyZWFrLWFsbCI+Ly8gc2VydmljZSB3b3JrZXIKCi8vIGluc3RhbGxlZCAKc2VsZi5hZGRFdmVudExpc3RlbmVyKCYjeDI3O2luc3RhbGwmI3gyNzssIChldmVudCkgPSZndDsgewogIGNvbnNvbGUubG9nKCYjeDI3O1NlcnZpY2UgV29ya2VyIGluc3RhbGxlZC4mI3gyNzspOwogIHNlbGYuc2tpcFdhaXRpbmcoKTsgLy8gc3RhcnRpbmcKfSk7CgovLyB0aGVuIGFjdGl2YXRlZCAoYWZ0ZXIgaW5zdGFsbGVkKQpzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJiN4Mjc7YWN0aXZhdGUmI3gyNzssIChldmVudCkgPSZndDsgewogIGNvbnNvbGUubG9nKCYjeDI3O1NlcnZpY2UgV29ya2VyIGFjdGl2YXRlZC4mI3gyNzspOwogIHJldHVybiBzZWxmLmNsaWVudHMuY2xhaW0oKTsKfSk7CgovLyByZWNlaXZlIGRhdGEgZnJvbSBtYWluIHRocmVhZApzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJiN4Mjc7bWVzc2FnZSYjeDI3OywgYXN5bmMgKGV2ZW50KSA9Jmd0OyB7CiAgY29uc29sZS5sb2coJiN4Mjc7U1cgcmVjZWl2ZWQ6JiN4Mjc7LCBldmVudC5kYXRhKTsKCiAgaWYgKGV2ZW50LmRhdGEgJmFtcDsmYW1wOyBldmVudC5kYXRhLmZyb20gPT09ICYjeDI3O21haW4mI3gyNzspIHsKICAgIC8vIGdpdmUgaXQgYmFjayB0byBtYWluIHRocmVhZAogICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0NsaWVudHMvbWF0Y2hBbGwKICAgIGNvbnN0IGNsaWVudHMgPSBhd2FpdCBzZWxmLmNsaWVudHMubWF0Y2hBbGwoeyB0eXBlOiAmI3gyNzt3aW5kb3cmI3gyNzsgfSk7CiAgICBmb3IgKGNvbnN0IGNsaWVudCBvZiBjbGllbnRzKSB7CiAgICAgIGNsaWVudC5wb3N0TWVzc2FnZSh7CiAgICAgICAgZnJvbTogJiN4Mjc7c3cmI3gyNzssCiAgICAgICAgdHlwZTogJiN4Mjc7cmVzcG9uc2UmI3gyNzssCiAgICAgICAgZGF0YTogJiN4Mjc7SGVsbG8gYmFjayBmcm9tIHN3JiN4Mjc7CiAgICAgIH0pOwogICAgfQogIH0KfSk7CgoKLy8gaGlqYWNrIHJlcXVlc3QKc2VsZi5hZGRFdmVudExpc3RlbmVyKCYjeDI3O2ZldGNoJiN4Mjc7LCBldmVudCA9Jmd0OyB7CiAgY29uc3QgdXJsID0gbmV3IFVSTChldmVudC5yZXF1ZXN0LnVybCk7CgogIGlmICh1cmwucGF0aG5hbWUgPT09ICYjeDI3Oy9hcGkvZGF0YSYjeDI3OykgewogICAgLy8gc3RvcCAvYXBpL2RhdGEgaGVyZS4KICAgIGNvbnN0IGZha2VSZXNwb25zZSA9IG5ldyBSZXNwb25zZShKU09OLnN0cmluZ2lmeSh7CiAgICAgIG1lc3NhZ2U6ICYjeDI3O3NlbGYtZGVmaW5lZCByZXNwb25zJiN4Mjc7LAogICAgICB0aW1lOiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCkKICAgIH0pLCB7CiAgICAgIGhlYWRlcnM6IHsgJiN4Mjc7Q29udGVudC1UeXBlJiN4Mjc7OiAmI3gyNzthcHBsaWNhdGlvbi9qc29uJiN4Mjc7IH0KICAgIH0pOwoKICAgIGV2ZW50LnJlc3BvbmRXaXRoKGZha2VSZXNwb25zZSk7CgogIH0gZWxzZSB7CiAgICAvLyBuZXh0KCkKICAgIGV2ZW50LnJlc3BvbmRXaXRoKGZldGNoKGV2ZW50LnJlcXVlc3QpKTsKICB9Cn0pOwo8L2NvZGU+PC9wcmU+PGgxIGNsYXNzPSIiPlNoYXJlZCBXb3JrZXI8L2gxPjxwIGNsYXNzPSIiPkNhbiYjeDI3O3QgdXNlIDxjb2RlPndvcmtlci5wb3N0TWVzc2FnZTwvY29kZT4sIG9ubHkgPGNvZGU+d29ya2VyLnBvcnQucG9zdE1lc3NhZ2UoKTwvY29kZT48L3A+PHNjcmlwdCBzcmM9Imh0dHBzOi8vY2RuanMuY2xvdWRmbGFyZS5jb20vYWpheC9saWJzL3ByaXNtLzEuMjkuMC9wcmlzbS5taW4uanMiIGludGVncml0eT0ic2hhNTEyLTdaOUozbDErRVlmZWFQS2NHWHUzTVMvN1QrdzE5V3RLUVkvbit4em13NGhaaEo5dHlZbWNVUys0UXFBbHpoaWNFNUxBZk1RU0YzaUZUSzliUWRUeFhnPT0iIGNyb3Nzb3JpZ2luPSJhbm9ueW1vdXMiIHJlZmVycmVyUG9saWN5PSJuby1yZWZlcnJlciI+PC9zY3JpcHQ+PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9wcmlzbS8xLjI5LjAvdGhlbWVzL3ByaXNtLm1pbi5jc3MiIGludGVncml0eT0ic2hhNTEyLXRON0VjNnpBRmFWU0czVHBOQUt0azRET0hOcFN3S0h4eHJzaXc0R0hLRVNHUHM1bmpuLzBzTUNVTWwyc3ZWNHdvNEJLL3JDUDdqdVl6K3p4K2w2b2VRPT0iIGNyb3Nzb3JpZ2luPSJhbm9ueW1vdXMiIHJlZmVycmVyUG9saWN5PSJuby1yZWZlcnJlciIvPjxwcmUgY2xhc3M9ImNvZGUgY29kZS13cmFwIj48Y29kZSBjbGFzcz0ibGFuZ3VhZ2UtSmF2YVNjcmlwdCIgc3R5bGU9IndoaXRlLXNwYWNlOnByZS13cmFwO3dvcmQtYnJlYWs6YnJlYWstYWxsIj4vLyBtYWluIHRocmVhZApjb25zdCB3b3JrZXIgPSBuZXcgU2hhcmVkV29ya2VyKCYjeDI3Oy9zaGFyZWQuanMmI3gyNzspOwoKLy8g6IiHIHdvcmtlciDnmoTpgKPnt5rmmK/pgI/pgY4gcG9ydAp3b3JrZXIucG9ydC5zdGFydCgpOwoKLy8gbWFpbiB0aHJlYWQgc2VuZAp3b3JrZXIucG9ydC5wb3N0TWVzc2FnZSh7IHR5cGU6ICYjeDI3O2hlbGxvJiN4Mjc7LCBmcm9tOiAmI3gyNzttYWluIHRocmVhZCYjeDI3OyB9KTsKCi8vIG1haW4gdGhyZWFkIHJlY2VpdmUKd29ya2VyLnBvcnQub25tZXNzYWdlID0gKGV2ZW50KSA9Jmd0OyB7CiAgY29uc29sZS5sb2coJiN4Mjc7RnJvbSBzaGFyZWQgd29ya2VyOiYjeDI3OywgZXZlbnQuZGF0YSk7Cn07CjwvY29kZT48L3ByZT48c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvcHJpc20vMS4yOS4wL3ByaXNtLm1pbi5qcyIgaW50ZWdyaXR5PSJzaGE1MTItN1o5SjNsMStFWWZlYVBLY0dYdTNNUy83VCt3MTlXdEtRWS9uK3h6bXc0aFpoSjl0eVltY1VTKzRRcUFsemhpY0U1TEFmTVFTRjNpRlRLOWJRZFR4WGc9PSIgY3Jvc3NvcmlnaW49ImFub255bW91cyIgcmVmZXJyZXJQb2xpY3k9Im5vLXJlZmVycmVyIj48L3NjcmlwdD48bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vY2RuanMuY2xvdWRmbGFyZS5jb20vYWpheC9saWJzL3ByaXNtLzEuMjkuMC90aGVtZXMvcHJpc20ubWluLmNzcyIgaW50ZWdyaXR5PSJzaGE1MTItdE43RWM2ekFGYVZTRzNUcE5BS3RrNERPSE5wU3dLSHh4cnNpdzRHSEtFU0dQczVuam4vMHNNQ1VNbDJzdlY0d280QksvckNQN2p1WXorengrbDZvZVE9PSIgY3Jvc3NvcmlnaW49ImFub255bW91cyIgcmVmZXJyZXJQb2xpY3k9Im5vLXJlZmVycmVyIi8+PHByZSBjbGFzcz0iY29kZSBjb2RlLXdyYXAiPjxjb2RlIGNsYXNzPSJsYW5ndWFnZS1KYXZhU2NyaXB0IiBzdHlsZT0id2hpdGUtc3BhY2U6cHJlLXdyYXA7d29yZC1icmVhazpicmVhay1hbGwiPi8vIHNoYXJlZCB3b3JrZXIgZm9yIG9ubHkgb25lIHdpbmRvdwoKCm9uY29ubmVjdCA9IGZ1bmN0aW9uKGUpIHsKICBjb25zdCBwb3J0ID0gZS5wb3J0c1swXTsKCiAgLy8gcmVjZWl2ZSBmcm9tIG1haW4gdGhyZWFkCiAgcG9ydC5vbm1lc3NhZ2UgPSBmdW5jdGlvbihldmVudCkgewogICAgY29uc29sZS5sb2coJiN4Mjc7UmVjZWl2ZWQgZnJvbSBtYWluOiYjeDI3OywgZXZlbnQuZGF0YSk7CgogICAgLy8gdG8gbWFpbiB0aHJlYWQKICAgIHBvcnQucG9zdE1lc3NhZ2UoeyBtc2c6ICYjeDI3O0hlbGxvIGJhY2sgZnJvbSBzaGFyZWQgd29ya2VyISYjeDI3OyB9KTsKICB9OwoKICBwb3J0LnN0YXJ0KCk7IC8vIOmWi+Wni+mAo+e3mgp9OzwvY29kZT48L3ByZT48cCBjbGFzcz0iIj4KPC9wPjxwIGNsYXNzPSIiPlNoYXJlZCB3b3JrZXIgZm9yIG11bHRpcGxlIHdpbmRvd3M6PC9wPjxzY3JpcHQgc3JjPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9wcmlzbS8xLjI5LjAvcHJpc20ubWluLmpzIiBpbnRlZ3JpdHk9InNoYTUxMi03WjlKM2wxK0VZZmVhUEtjR1h1M01TLzdUK3cxOVd0S1FZL24reHptdzRoWmhKOXR5WW1jVVMrNFFxQWx6aGljRTVMQWZNUVNGM2lGVEs5YlFkVHhYZz09IiBjcm9zc29yaWdpbj0iYW5vbnltb3VzIiByZWZlcnJlclBvbGljeT0ibm8tcmVmZXJyZXIiPjwvc2NyaXB0PjxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvcHJpc20vMS4yOS4wL3RoZW1lcy9wcmlzbS5taW4uY3NzIiBpbnRlZ3JpdHk9InNoYTUxMi10TjdFYzZ6QUZhVlNHM1RwTkFLdGs0RE9ITnBTd0tIeHhyc2l3NEdIS0VTR1BzNW5qbi8wc01DVU1sMnN2VjR3bzRCSy9yQ1A3anVZeit6eCtsNm9lUT09IiBjcm9zc29yaWdpbj0iYW5vbnltb3VzIiByZWZlcnJlclBvbGljeT0ibm8tcmVmZXJyZXIiLz48cHJlIGNsYXNzPSJjb2RlIGNvZGUtd3JhcCI+PGNvZGUgY2xhc3M9Imxhbmd1YWdlLUphdmFTY3JpcHQiIHN0eWxlPSJ3aGl0ZS1zcGFjZTpwcmUtd3JhcDt3b3JkLWJyZWFrOmJyZWFrLWFsbCI+Y29uc3QgY29ubmVjdGlvbnMgPSBuZXcgTWFwKCk7IC8vIHdpbmRvd0lkIC0mZ3Q7IHBvcnQKCm9uY29ubmVjdCA9IGZ1bmN0aW9uKGUpIHsKICBjb25zdCBwb3J0ID0gZS5wb3J0c1swXTsgLy8gVGhpcyBpcyBhIE5FVyBNZXNzYWdlUG9ydCBmb3IgdGhpcyBjb25uZWN0aW9uCiAgbGV0IHdpbmRvd0lkID0gbnVsbDsKICAKICBwb3J0Lm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2ZW50KSB7CgkgIC8vIHdpbmRvdyBzZW5kIG1lc3NhZ2U6CgkgIC8vIHdvcmtlci5wb3J0LnBvc3RNZXNzYWdlKHsKICAgIC8vICB0eXBlOiAmI3gyNztzZW5kVG8mI3gyNzssICAgICAgICAgICAvLyDihpAgc2VsZiBkZWZpbmUKICAgIC8vICBpZDogJiN4Mjc7d2luZG93QSYjeDI3OywgICAgICAgICAgICAvLyDihpAgc2VsZiBkZWZpbmUKICAgIC8vICB0YXJnZXRXaW5kb3c6ICYjeDI3O3dpbmRvd0QmI3gyNzssICAvLyDihpAgc2VsZiBkZWZpbmUKICAgIC8vICBtZXNzYWdlOiAmI3gyNztIZWxsbyBEISYjeDI3OyAgICAgICAvLyDihpAgc2VsZiBkZWZpbmUKICAgIC8vIH0pOwogICAgY29uc3QgeyB0eXBlLCBpZCwgdGFyZ2V0V2luZG93LCBtZXNzYWdlIH0gPSBldmVudC5kYXRhOwogICAgCiAgICBpZiAodHlwZSA9PT0gJiN4Mjc7cmVnaXN0ZXImI3gyNzspIHsKICAgICAgd2luZG93SWQgPSBpZDsgLy8gZS5nLiwgJiN4Mjc7d2luZG93QSYjeDI3OywgJiN4Mjc7d2luZG93QiYjeDI3OywgJiN4Mjc7Y2hhdC1yb29tLTEmI3gyNzsKICAgICAgY29ubmVjdGlvbnMuc2V0KHdpbmRvd0lkLCBwb3J0KTsKICAgICAgCiAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICYjeDI3O3NlbmRUbyYjeDI3OykgewogICAgICAvLyBTZW5kIHRvIHNwZWNpZmljIHdpbmRvdyBieSBJRCAobm90IGFycmF5IGluZGV4ISkKICAgICAgY29uc3QgdGFyZ2V0UG9ydCA9IGNvbm5lY3Rpb25zLmdldCh0YXJnZXRXaW5kb3cpOwogICAgICBpZiAodGFyZ2V0UG9ydCkgewogICAgICAgIHRhcmdldFBvcnQucG9zdE1lc3NhZ2UoeyBmcm9tOiB3aW5kb3dJZCwgbWVzc2FnZSB9KTsKICAgICAgfQogICAgICAKICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJiN4Mjc7YnJvYWRjYXN0JiN4Mjc7KSB7CiAgICAgIC8vIFNlbmQgdG8gYWxsIGNvbm5lY3RlZCB3aW5kb3dzCiAgICAgIGNvbm5lY3Rpb25zLmZvckVhY2goKHAsIGlkKSA9Jmd0OyB7CiAgICAgICAgaWYgKGlkICE9PSB3aW5kb3dJZCkgeyAvLyBkb24mI3gyNzt0IHNlbmQgdG8gc2VsZgogICAgICAgICAgcC5wb3N0TWVzc2FnZSh7IGZyb206IHdpbmRvd0lkLCBtZXNzYWdlIH0pOwogICAgICAgIH0KICAgICAgfSk7CiAgICB9CiAgfTsKICAKICBwb3J0LnN0YXJ0KCk7Cn07PC9jb2RlPjwvcHJlPjxwIGNsYXNzPSIiPgo8L3A+PHAgY2xhc3M9IiI+CjwvcD48cCBjbGFzcz0iIj4KPC9wPjxwIGNsYXNzPSIiPgo8L3A+PHAgY2xhc3M9IiI+CjwvcD48aDEgY2xhc3M9IiI+TWVzc2FnZUNoYW5uZWw8L2gxPjxwIGNsYXNzPSIiPk1vc3Qgd29ya2VycyB1c2UgPGNvZGU+cG9zdE1lc3NhZ2U8L2NvZGU+IHRvIHRhbGsuIDwvcD48cCBjbGFzcz0iIj5CdXQgc29tZXRpbWVzIHdlIG5lZWQgPGNvZGU+TWVzc2FnZUNoYW5uZWw8L2NvZGU+IHRvIG1ha2UgYSBwcml2YXRlIHR3by13YXkgY29ubmVjdGlvbiB0aGF0IGxhc3RzIGxvbmdlciwgc29tZXRoaW5nIHBvc3RNZXNzYWdlIGFsb25lIGNhbm5vdCBkby48L3A+PHAgY2xhc3M9IiI+PGNvZGU+TWVzc2FnZUNoYW5uZWw8L2NvZGU+IGlzIG1vcmUgdmFsdWFibGUgZm9yIHNoYXJlZCBhbmQgc2VydmljZSB3b3JrZXJzIHNpbmNlIHRoZXkgc2VydmUgbXVsdGlwbGUgcGFnZXMgYW5kIG5lZWQgcHJpdmF0ZSBjaGFubmVscy48L3A+PHAgY2xhc3M9IiI+PG1hcmsgY2xhc3M9ImhpZ2hsaWdodC1yZWQiPjxzdHJvbmc+Rm9yIGRlZGljYXRlZCB3b3JrZXJzICh3ZWIgd29ya2VycyksIDwvc3Ryb25nPjwvbWFyaz48bWFyayBjbGFzcz0iaGlnaGxpZ2h0LXJlZCI+PGNvZGU+PHN0cm9uZz5wb3N0TWVzc2FnZTwvc3Ryb25nPjwvY29kZT48L21hcms+PG1hcmsgY2xhc3M9ImhpZ2hsaWdodC1yZWQiPjxzdHJvbmc+IGlzIHN1ZmZpY2llbnQgaW4gOTklIG9mIGNhc2VzLjwvc3Ryb25nPjwvbWFyaz48L3A+PHAgY2xhc3M9IiI+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL01lc3NhZ2VDaGFubmVsIj5odHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvTWVzc2FnZUNoYW5uZWw8L2E+PC9wPjxwIGNsYXNzPSIiPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9XZWJfV29ya2Vyc19BUEkvVHJhbnNmZXJhYmxlX29iamVjdHMiPmh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9XZWJfV29ya2Vyc19BUEkvVHJhbnNmZXJhYmxlX29iamVjdHM8L2E+PC9wPjxwIGNsYXNzPSIiPgo8L3A+PHNjcmlwdCBzcmM9Imh0dHBzOi8vY2RuanMuY2xvdWRmbGFyZS5jb20vYWpheC9saWJzL3ByaXNtLzEuMjkuMC9wcmlzbS5taW4uanMiIGludGVncml0eT0ic2hhNTEyLTdaOUozbDErRVlmZWFQS2NHWHUzTVMvN1QrdzE5V3RLUVkvbit4em13NGhaaEo5dHlZbWNVUys0UXFBbHpoaWNFNUxBZk1RU0YzaUZUSzliUWRUeFhnPT0iIGNyb3Nzb3JpZ2luPSJhbm9ueW1vdXMiIHJlZmVycmVyUG9saWN5PSJuby1yZWZlcnJlciI+PC9zY3JpcHQ+PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9wcmlzbS8xLjI5LjAvdGhlbWVzL3ByaXNtLm1pbi5jc3MiIGludGVncml0eT0ic2hhNTEyLXRON0VjNnpBRmFWU0czVHBOQUt0azRET0hOcFN3S0h4eHJzaXc0R0hLRVNHUHM1bmpuLzBzTUNVTWwyc3ZWNHdvNEJLL3JDUDdqdVl6K3p4K2w2b2VRPT0iIGNyb3Nzb3JpZ2luPSJhbm9ueW1vdXMiIHJlZmVycmVyUG9saWN5PSJuby1yZWZlcnJlciIvPjxwcmUgY2xhc3M9ImNvZGUgY29kZS13cmFwIj48Y29kZSBjbGFzcz0ibGFuZ3VhZ2UtSmF2YVNjcmlwdCIgc3R5bGU9IndoaXRlLXNwYWNlOnByZS13cmFwO3dvcmQtYnJlYWs6YnJlYWstYWxsIj4vLyBub3JtYWwKaWZyYW1lLmNvbnRlbnRXaW5kb3cucG9zdE1lc3NhZ2UoJiN4Mjc7aGVsbG8mI3gyNzssICYjeDI3O2h0dHBzOi8vdHJ1c3RlZC1zaXRlLmNvbSYjeDI3Oyk7Ci8vIEFueSBzY3JpcHQgb24gdGhlIHNhbWUgb3JpZ2luIGNhbiByZWNlaXZlIHRoZSBtZXNzYWdlIAovLyBpZiBpdCBsaXN0ZW5zIHRvICYjeDI3O21lc3NhZ2UmI3gyNzsgZXZlbnRzLgoKCi8vIHdpdGggcG9ydCB0cmFuc2ZlcnJlZC4KY29uc3QgY2hhbm5lbCA9IG5ldyBNZXNzYWdlQ2hhbm5lbCgpOwppZnJhbWUuY29udGVudFdpbmRvdy5wb3N0TWVzc2FnZSgmI3gyNztoZWxsbyYjeDI3OywgJiN4Mjc7aHR0cHM6Ly90cnVzdGVkLXNpdGUuY29tJiN4Mjc7LCBbY2hhbm5lbC5wb3J0Ml0pOwovLyBFdmVuIHBhZ2VzL3NjcmlwdHMgb24gdGhlIHNhbWUgb3JpZ2luIGNhbiYjeDI3O3QgYWNjZXNzIHRoZSBtZXNzYWdlCi8vIHVubGVzcyB0aGV5IGhvbGQgdGhlIHRyYW5zZmVycmVkIHBvcnQgKGUuZy4sIHBvcnQyKS48L2NvZGU+PC9wcmU+PHAgY2xhc3M9IiI+CjwvcD48cCBjbGFzcz0iIj4KPC9wPjxoMSBjbGFzcz0iIj5TdW1tYXJ5PC9oMT48dWwgY2xhc3M9ImJ1bGxldGVkLWxpc3QiPjxsaSBzdHlsZT0ibGlzdC1zdHlsZS10eXBlOmRpc2MiPjxzdHJvbmc+V2ViPC9zdHJvbmc+OiBBIDxzdHJvbmc+YmFja2dyb3VuZDwvc3Ryb25nPiBoZWxwZXIgdGhhdCBkb2VzIGhlYXZ5IHRhc2tzIGFuZCBkb2VzbuKAmXQgY2FyZSBhYm91dCBuZXR3b3JrIHN0dWZmLjwvbGk+PC91bD48dWwgY2xhc3M9ImJ1bGxldGVkLWxpc3QiPjxsaSBzdHlsZT0ibGlzdC1zdHlsZS10eXBlOmRpc2MiPjxzdHJvbmc+U2hhcmVkPC9zdHJvbmc+OiBBIHdvcmtlciB0aGF0IGxldHMgZGlmZmVyZW50IHRhYnMgc2hhcmUgbWVzc2FnZXMuPC9saT48L3VsPjx1bCBjbGFzcz0iYnVsbGV0ZWQtbGlzdCI+PGxpIHN0eWxlPSJsaXN0LXN0eWxlLXR5cGU6ZGlzYyI+PHN0cm9uZz5TZXJ2aWNlPC9zdHJvbmc+OiBsaWtlIGEgZ2F0ZWtlZXBlciB0aGF0IGNvbnRyb2xzIGFsbCBuZXR3b3JrIHRyYWZmaWMgaW4gYW5kIG91dC48L2xpPjwvdWw+PHAgY2xhc3M9IiI+CjwvcD48L2Rpdj48L2FydGljbGU+PHNwYW4gY2xhc3M9InNhbnMiIHN0eWxlPSJmb250LXNpemU6MTRweDtwYWRkaW5nLXRvcDoyZW0iPjwvc3Bhbj48L2JvZHk+
~/
about
posts
frontbacknetworkoscloud
readings
css
bookmarks
archives
© 2024 jialin00.com Original content since 2022
And maybe its just slow involvement at first, but try to sort of creep your career in that direction, because if youre not being challenged, if youre not a little bit scared all the time, just a little bit, then youre not gonna improve. - The Myth of the Genius Programmer