fonchain-fiee/.idea/AugmentWebviewStateStore.xml
2025-05-09 16:52:42 +08:00

10 lines
72 KiB
XML

<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="AugmentWebviewStateStore">
<option name="stateMap">
<map>
<entry key="CHAT_STATE" value="eyJjdXJyZW50Q29udmVyc2F0aW9uSWQiOiI3MDcxNzhiNi01YjAyLTQ1YzgtOTZlMi0wNjE5OGY1OGEyOTQiLCJjb252ZXJzYXRpb25zIjp7ImQxMGI2N2NmLWNlMzctNDc4MC1hN2UwLTVlYjA0MmFlMjRjZCI6eyJpZCI6ImQxMGI2N2NmLWNlMzctNDc4MC1hN2UwLTVlYjA0MmFlMjRjZCIsImNyZWF0ZWRBdElzbyI6IjIwMjUtMDUtMDlUMDg6NDU6NTQuOTk5WiIsImxhc3RJbnRlcmFjdGVkQXRJc28iOiIyMDI1LTA1LTA5VDA4OjQ1OjU0Ljk5OVoiLCJjaGF0SGlzdG9yeSI6W10sImZlZWRiYWNrU3RhdGVzIjp7fSwidG9vbFVzZVN0YXRlcyI6e30sImRyYWZ0RXhjaGFuZ2UiOnsicmVxdWVzdF9tZXNzYWdlIjoiIiwicmljaF90ZXh0X2pzb25fcmVwciI6eyJ0eXBlIjoiZG9jIiwiY29udGVudCI6W3sidHlwZSI6InBhcmFncmFwaCJ9XX0sInN0YXR1cyI6ImRyYWZ0In0sInJlcXVlc3RJZHMiOltdLCJpc1Bpbm5lZCI6ZmFsc2UsImlzU2hhcmVhYmxlIjpmYWxzZSwiZXh0cmFEYXRhIjp7Imhhc0RpcnR5RWRpdHMiOmZhbHNlfSwicGVyc29uYVR5cGUiOjB9LCIwZjljZjVkNi0wYzZiLTQ0MzgtOTI3ZC02ZjVmN2NlOTA1OWMiOnsiaWQiOiIwZjljZjVkNi0wYzZiLTQ0MzgtOTI3ZC02ZjVmN2NlOTA1OWMiLCJjcmVhdGVkQXRJc28iOiIyMDI1LTA1LTA5VDA4OjQ1OjU1LjI4OVoiLCJsYXN0SW50ZXJhY3RlZEF0SXNvIjoiMjAyNS0wNS0wOVQwODo0NjoyMS43MjNaIiwiY2hhdEhpc3RvcnkiOlt7InN0YXR1cyI6InNlbnQiLCJyZXF1ZXN0X2lkIjoidGVtcC1mZS05MGJlMjY0Ny03N2E3LTRiNzYtYjBmNC1kYzFmNTExYzA4ZDgiLCJyZXF1ZXN0X21lc3NhZ2UiOiIyMDI1LzA1LzA5IDE2OjQ0OjQ1IFtbUmVjb3ZlcnkgZnJvbSBwYW5pY11dIGludGVyZmFjZSBjb252ZXJzaW9uOiBpbnRlcmZhY2Uge30gaXMgbmlsLCBub3Qgc3RyaW5nIFBPU1QgL2FwaS9idW5kbGUtb3JkZXIvd2ViL29yZGVyLWV4cG9ydCBIVFRQLzEuMFxyXG5Ib3N0OiAxMjEuMjI5LjQ1LjIxNDo5MDMxXHJcbkNvbm5lY3Rpb246IGNsb3NlXHJcbkFjY2VwdDogYXBwbGljYXRpb24vanNvbiwgdGV4dC9wbGFpbiwgKi8qXHJcbkFjY2VwdC1FbmNvZGluZzogZ3ppcCwgZGVmbGF0ZVxyXG5BY2NlcHQtTGFuZ3VhZ2U6IHpoLUNOXHJcbkF1dGhvcml6YXRpb246IGV5SmhiR2NpT2lKSVV6STFOaUlzSW5SNWNDSTZJa3BYVkNKOS5leUpwWkNJNk5qUXNJbUZqWTI5MWJuUWlPaUlpTENKa2IyMWhhVzRpT2lKbWIyNTBjbVZsSWl3aWJtbGphMDVoYldVaU9pSWlMQ0p3YUc5dVpTSTZJakU0TXpZeU5qWTJORFV4SWl3aVpYaHdJam94TnpRMk9ESXhNVFUxTENKcGMzTWlPaUp0WVd4c0luMC5lVGdpUXhyOGNaM1AwWDRSb2c1Vk05eXI2VlVrRndHbVlFWFRuMzYyOWZrXHJcbkNvbm5lY3Rpb246IGNsb3NlXHJcbkNvbnRlbnQtTGVuZ3RoOiAyNDlcclxuQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9VVRGLThcclxuQ29va2llOiB0b2tlbj1leUpoYkdjaU9pSklVekkxTmlJc0luUjVjQ0k2SWtwWFZDSjkuZXlKcFpDSTZOalFzSW1GalkyOTFiblFpT2lJaUxDSmtiMjFoYVc0aU9pSm1iMjUwY21WbElpd2libWxqYTA1aGJXVWlPaUlpTENKd2FHOXVaU0k2SWpFNE16WXlOalkyTkRVeElpd2laWGh3SWpveE56UTJPREl4TVRVMUxDSnBjM01pT2lKdFlXeHNJbjAuZVRnaVF4cjhjWjNQMFg0Um9nNVZNOXlyNlZVa0Z3R21ZRVhUbjM2Mjlma1xyXG5PcmlnaW46IGh0dHA6Ly8xOTIuMTY4Ljg4Ljc3OjMwNTJcclxuUmVmZXJlcjogaHR0cDovLzE5Mi4xNjguODguNzc6MzA1Mi90aGFsaV9pbmZvXG5cbuaAjuS5iOiOt+WPluaYryBodHRwIOi/mOaYryBodHRwcyBxaW5ncWl1ICIsInJpY2hfdGV4dF9qc29uX3JlcHIiOnsidHlwZSI6ImRvYyIsImNvbnRlbnQiOlt7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIyMDI1LzA1LzA5IDE2OjQ0OjQ1IFtbUmVjb3ZlcnkgZnJvbSBwYW5pY11dIGludGVyZmFjZSBjb252ZXJzaW9uOiBpbnRlcmZhY2Uge30gaXMgbmlsLCBub3Qgc3RyaW5nIFBPU1QgL2FwaS9idW5kbGUtb3JkZXIvd2ViL29yZGVyLWV4cG9ydCBIVFRQLzEuMFxyIn0seyJ0eXBlIjoiaGFyZEJyZWFrIn0seyJ0eXBlIjoidGV4dCIsInRleHQiOiJIb3N0OiAxMjEuMjI5LjQ1LjIxNDo5MDMxXHIifSx7InR5cGUiOiJoYXJkQnJlYWsifSx7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IkNvbm5lY3Rpb246IGNsb3NlXHIifSx7InR5cGUiOiJoYXJkQnJlYWsifSx7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IkFjY2VwdDogYXBwbGljYXRpb24vanNvbiwgdGV4dC9wbGFpbiwgKi8qXHIifSx7InR5cGUiOiJoYXJkQnJlYWsifSx7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IkFjY2VwdC1FbmNvZGluZzogZ3ppcCwgZGVmbGF0ZVxyIn0seyJ0eXBlIjoiaGFyZEJyZWFrIn0seyJ0eXBlIjoidGV4dCIsInRleHQiOiJBY2NlcHQtTGFuZ3VhZ2U6IHpoLUNOXHIifSx7InR5cGUiOiJoYXJkQnJlYWsifSx7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IkF1dGhvcml6YXRpb246IGV5SmhiR2NpT2lKSVV6STFOaUlzSW5SNWNDSTZJa3BYVkNKOS5leUpwWkNJNk5qUXNJbUZqWTI5MWJuUWlPaUlpTENKa2IyMWhhVzRpT2lKbWIyNTBjbVZsSWl3aWJtbGphMDVoYldVaU9pSWlMQ0p3YUc5dVpTSTZJakU0TXpZeU5qWTJORFV4SWl3aVpYaHdJam94TnpRMk9ESXhNVFUxTENKcGMzTWlPaUp0WVd4c0luMC5lVGdpUXhyOGNaM1AwWDRSb2c1Vk05eXI2VlVrRndHbVlFWFRuMzYyOWZrXHIifSx7InR5cGUiOiJoYXJkQnJlYWsifSx7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IkNvbm5lY3Rpb246IGNsb3NlXHIifSx7InR5cGUiOiJoYXJkQnJlYWsifSx7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IkNvbnRlbnQtTGVuZ3RoOiAyNDlcciJ9LHsidHlwZSI6ImhhcmRCcmVhayJ9LHsidHlwZSI6InRleHQiLCJ0ZXh0IjoiQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9VVRGLThcciJ9LHsidHlwZSI6ImhhcmRCcmVhayJ9LHsidHlwZSI6InRleHQiLCJ0ZXh0IjoiQ29va2llOiB0b2tlbj1leUpoYkdjaU9pSklVekkxTmlJc0luUjVjQ0k2SWtwWFZDSjkuZXlKcFpDSTZOalFzSW1GalkyOTFiblFpT2lJaUxDSmtiMjFoYVc0aU9pSm1iMjUwY21WbElpd2libWxqYTA1aGJXVWlPaUlpTENKd2FHOXVaU0k2SWpFNE16WXlOalkyTkRVeElpd2laWGh3SWpveE56UTJPREl4TVRVMUxDSnBjM01pT2lKdFlXeHNJbjAuZVRnaVF4cjhjWjNQMFg0Um9nNVZNOXlyNlZVa0Z3R21ZRVhUbjM2Mjlma1xyIn0seyJ0eXBlIjoiaGFyZEJyZWFrIn0seyJ0eXBlIjoidGV4dCIsInRleHQiOiJPcmlnaW46IGh0dHA6Ly8xOTIuMTY4Ljg4Ljc3OjMwNTJcciJ9LHsidHlwZSI6ImhhcmRCcmVhayJ9LHsidHlwZSI6InRleHQiLCJ0ZXh0IjoiUmVmZXJlcjogaHR0cDovLzE5Mi4xNjguODguNzc6MzA1Mi90aGFsaV9pbmZvIn0seyJ0eXBlIjoiaGFyZEJyZWFrIn0seyJ0eXBlIjoiaGFyZEJyZWFrIn0seyJ0eXBlIjoidGV4dCIsInRleHQiOiLmgI7kuYjojrflj5bmmK8gaHR0cCDov5jmmK8gaHR0cHMgcWluZ3FpdSAifV19XX0sIm1lbnRpb25lZF9pdGVtcyI6W10sInNlZW5fc3RhdGUiOiJ1bnNlZW4iLCJzdHJ1Y3R1cmVkX3JlcXVlc3Rfbm9kZXMiOlt7ImlkIjoxLCJ0eXBlIjowLCJ0ZXh0X25vZGUiOnsiY29udGVudCI6IjIwMjUvMDUvMDkgMTY6NDQ6NDUgW1tSZWNvdmVyeSBmcm9tIHBhbmljXV0gaW50ZXJmYWNlIGNvbnZlcnNpb246IGludGVyZmFjZSB7fSBpcyBuaWwsIG5vdCBzdHJpbmcgUE9TVCAvYXBpL2J1bmRsZS1vcmRlci93ZWIvb3JkZXItZXhwb3J0IEhUVFAvMS4wXHJcbkhvc3Q6IDEyMS4yMjkuNDUuMjE0OjkwMzFcclxuQ29ubmVjdGlvbjogY2xvc2VcclxuQWNjZXB0OiBhcHBsaWNhdGlvbi9qc29uLCB0ZXh0L3BsYWluLCAqLypcclxuQWNjZXB0LUVuY29kaW5nOiBnemlwLCBkZWZsYXRlXHJcbkFjY2VwdC1MYW5ndWFnZTogemgtQ05cclxuQXV0aG9yaXphdGlvbjogZXlKaGJHY2lPaUpJVXpJMU5pSXNJblI1Y0NJNklrcFhWQ0o5LmV5SnBaQ0k2TmpRc0ltRmpZMjkxYm5RaU9pSWlMQ0prYjIxaGFXNGlPaUptYjI1MGNtVmxJaXdpYm1samEwNWhiV1VpT2lJaUxDSndhRzl1WlNJNklqRTRNell5TmpZMk5EVXhJaXdpWlhod0lqb3hOelEyT0RJeE1UVTFMQ0pwYzNNaU9pSnRZV3hzSW4wLmVUZ2lReHI4Y1ozUDBYNFJvZzVWTTl5cjZWVWtGd0dtWUVYVG4zNjI5ZmtcclxuQ29ubmVjdGlvbjogY2xvc2VcclxuQ29udGVudC1MZW5ndGg6IDI0OVxyXG5Db250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL2pzb247Y2hhcnNldD1VVEYtOFxyXG5Db29raWU6IHRva2VuPWV5SmhiR2NpT2lKSVV6STFOaUlzSW5SNWNDSTZJa3BYVkNKOS5leUpwWkNJNk5qUXNJbUZqWTI5MWJuUWlPaUlpTENKa2IyMWhhVzRpT2lKbWIyNTBjbVZsSWl3aWJtbGphMDVoYldVaU9pSWlMQ0p3YUc5dVpTSTZJakU0TXpZeU5qWTJORFV4SWl3aVpYaHdJam94TnpRMk9ESXhNVFUxTENKcGMzTWlPaUp0WVd4c0luMC5lVGdpUXhyOGNaM1AwWDRSb2c1Vk05eXI2VlVrRndHbVlFWFRuMzYyOWZrXHJcbk9yaWdpbjogaHR0cDovLzE5Mi4xNjguODguNzc6MzA1MlxyXG5SZWZlcmVyOiBodHRwOi8vMTkyLjE2OC44OC43NzozMDUyL3RoYWxpX2luZm9cblxu5oCO5LmI6I635Y+W5pivIGh0dHAg6L+Y5pivIGh0dHBzIHFpbmdxaXUgIn19LHsiaWQiOjIsInR5cGUiOjQsImlkZV9zdGF0ZV9ub2RlIjp7IndvcmtzcGFjZUZvbGRlcnMiOlt7InJlcG9zaXRvcnlSb290IjoiQzovVXNlcnMvbGVub3ZvL0Rlc2t0b3AvZmllZS9mb25jaGFpbi1maWVlIiwiZm9sZGVyUm9vdCI6IkM6L1VzZXJzL2xlbm92by9EZXNrdG9wL2ZpZWUvZm9uY2hhaW4tZmllZSJ9XSwid29ya3NwYWNlRm9sZGVyc1VuY2hhbmdlZCI6ZmFsc2V9fV0sInRpbWVzdGFtcCI6IjIwMjUtMDUtMDlUMDg6NDY6MjEuNzI5WiJ9XSwiZmVlZGJhY2tTdGF0ZXMiOnsidGVtcC1mZS05MGJlMjY0Ny03N2E3LTRiNzYtYjBmNC1kYzFmNTExYzA4ZDgiOnsic2VsZWN0ZWRSYXRpbmciOjAsImZlZWRiYWNrTm90ZSI6IiJ9fSwidG9vbFVzZVN0YXRlcyI6e30sImRyYWZ0RXhjaGFuZ2UiOnsicmVxdWVzdF9tZXNzYWdlIjoiIiwicmljaF90ZXh0X2pzb25fcmVwciI6eyJ0eXBlIjoiZG9jIiwiY29udGVudCI6W3sidHlwZSI6InBhcmFncmFwaCJ9XX0sInN0YXR1cyI6ImRyYWZ0In0sImRyYWZ0QWN0aXZlQ29udGV4dElkcyI6WyJDOi9Vc2Vycy9sZW5vdm8vRGVza3RvcC9maWVlL2ZvbmNoYWluLWZpZWUvcGtnL3NlcnZpY2UvYnVuZGxlL2J1bmRsZU9yZGVyLmdvOkw0MDctNDE0IiwiQzovVXNlcnMvbGVub3ZvL0Rlc2t0b3AvZmllZS9mb25jaGFpbi1maWVlL3BrZy9zZXJ2aWNlL2J1bmRsZS9idW5kbGVPcmRlci5nbyIsIkM6L1VzZXJzL2xlbm92by9EZXNrdG9wL2ZpZWUvZm9uY2hhaW4tZmllZWZhbHNlZmFsc2UiLCJ1c2VyR3VpZGVsaW5lcyJdLCJyZXF1ZXN0SWRzIjpbXSwiaXNQaW5uZWQiOmZhbHNlLCJpc1NoYXJlYWJsZSI6ZmFsc2UsImV4dHJhRGF0YSI6eyJoYXNEaXJ0eUVkaXRzIjpmYWxzZX0sInBlcnNvbmFUeXBlIjowfSwiNzA3MTc4YjYtNWIwMi00NWM4LTk2ZTItMDYxOThmNThhMjk0Ijp7ImlkIjoiNzA3MTc4YjYtNWIwMi00NWM4LTk2ZTItMDYxOThmNThhMjk0IiwibmFtZSI6IldlbGNvbWUgdG8gdGhlIEF1Z21lbnQgQWdlbnQiLCJjcmVhdGVkQXRJc28iOiIyMDI1LTA1LTA5VDA4OjQ2OjIzLjc4NloiLCJsYXN0SW50ZXJhY3RlZEF0SXNvIjoiMjAyNS0wNS0wOVQwODo0NzowMC44NDRaIiwiY2hhdEhpc3RvcnkiOlt7InJlcXVlc3RfaWQiOiIyOThkM2FjNy1mZTUxLTQxYmUtOTMyNS1hZDM3YmU2NTlhMGUiLCJ1dWlkIjoiMzM4YTc5M2YtYjRjNi00MmI5LTg5ODktYTRlOTA3MDVlMDk4IiwiY2hhdEl0ZW1UeXBlIjoiYWdlbnRpYy1jaGVja3BvaW50LWRlbGltaXRlciIsInN0YXR1cyI6InN1Y2Nlc3MiLCJmcm9tVGltZXN0YW1wIjowLCJ0b1RpbWVzdGFtcCI6MTc0Njc4MDM4Mzc4OCwic2Vlbl9zdGF0ZSI6InNlZW4ifSx7InN0YXR1cyI6InN1Y2Nlc3MiLCJyZXF1ZXN0X2lkIjoiNWZmYzViY2UtYjViYy00ZTExLWFlYmQtOWFjNTAxYzUxNmRkIiwicmVxdWVzdF9tZXNzYWdlIjoiMjAyNS8wNS8wOSAxNjo0NDo0NSBbW1JlY292ZXJ5IGZyb20gcGFuaWNdXSBpbnRlcmZhY2UgY29udmVyc2lvbjogaW50ZXJmYWNlIHt9IGlzIG5pbCwgbm90IHN0cmluZyBQT1NUIC9hcGkvYnVuZGxlLW9yZGVyL3dlYi9vcmRlci1leHBvcnQgSFRUUC8xLjBcclxuSG9zdDogMTIxLjIyOS40NS4yMTQ6OTAzMVxyXG5Db25uZWN0aW9uOiBjbG9zZVxyXG5BY2NlcHQ6IGFwcGxpY2F0aW9uL2pzb24sIHRleHQvcGxhaW4sICovKlxyXG5BY2NlcHQtRW5jb2Rpbmc6IGd6aXAsIGRlZmxhdGVcclxuQWNjZXB0LUxhbmd1YWdlOiB6aC1DTlxyXG5BdXRob3JpemF0aW9uOiBleUpoYkdjaU9pSklVekkxTmlJc0luUjVjQ0k2SWtwWFZDSjkuZXlKcFpDSTZOalFzSW1GalkyOTFiblFpT2lJaUxDSmtiMjFoYVc0aU9pSm1iMjUwY21WbElpd2libWxqYTA1aGJXVWlPaUlpTENKd2FHOXVaU0k2SWpFNE16WXlOalkyTkRVeElpd2laWGh3SWpveE56UTJPREl4TVRVMUxDSnBjM01pT2lKdFlXeHNJbjAuZVRnaVF4cjhjWjNQMFg0Um9nNVZNOXlyNlZVa0Z3R21ZRVhUbjM2Mjlma1xyXG5Db25uZWN0aW9uOiBjbG9zZVxyXG5Db250ZW50LUxlbmd0aDogMjQ5XHJcbkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbjtjaGFyc2V0PVVURi04XHJcbkNvb2tpZTogdG9rZW49ZXlKaGJHY2lPaUpJVXpJMU5pSXNJblI1Y0NJNklrcFhWQ0o5LmV5SnBaQ0k2TmpRc0ltRmpZMjkxYm5RaU9pSWlMQ0prYjIxaGFXNGlPaUptYjI1MGNtVmxJaXdpYm1samEwNWhiV1VpT2lJaUxDSndhRzl1WlNJNklqRTRNell5TmpZMk5EVXhJaXdpWlhod0lqb3hOelEyT0RJeE1UVTFMQ0pwYzNNaU9pSnRZV3hzSW4wLmVUZ2lReHI4Y1ozUDBYNFJvZzVWTTl5cjZWVWtGd0dtWUVYVG4zNjI5ZmtcclxuT3JpZ2luOiBodHRwOi8vMTkyLjE2OC44OC43NzozMDUyXHJcblJlZmVyZXI6IGh0dHA6Ly8xOTIuMTY4Ljg4Ljc3OjMwNTIvdGhhbGlfaW5mb1xuIOaAjuS5iOiOt+WPliDmmK8gaHR0cCAg6L+Y5pivIGh0dHBzICDor7fmsYIiLCJyaWNoX3RleHRfanNvbl9yZXByIjp7InR5cGUiOiJkb2MiLCJjb250ZW50IjpbeyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiMjAyNS8wNS8wOSAxNjo0NDo0NSBbW1JlY292ZXJ5IGZyb20gcGFuaWNdXSBpbnRlcmZhY2UgY29udmVyc2lvbjogaW50ZXJmYWNlIHt9IGlzIG5pbCwgbm90IHN0cmluZyBQT1NUIC9hcGkvYnVuZGxlLW9yZGVyL3dlYi9vcmRlci1leHBvcnQgSFRUUC8xLjBcciJ9LHsidHlwZSI6ImhhcmRCcmVhayJ9LHsidHlwZSI6InRleHQiLCJ0ZXh0IjoiSG9zdDogMTIxLjIyOS40NS4yMTQ6OTAzMVxyIn0seyJ0eXBlIjoiaGFyZEJyZWFrIn0seyJ0eXBlIjoidGV4dCIsInRleHQiOiJDb25uZWN0aW9uOiBjbG9zZVxyIn0seyJ0eXBlIjoiaGFyZEJyZWFrIn0seyJ0eXBlIjoidGV4dCIsInRleHQiOiJBY2NlcHQ6IGFwcGxpY2F0aW9uL2pzb24sIHRleHQvcGxhaW4sICovKlxyIn0seyJ0eXBlIjoiaGFyZEJyZWFrIn0seyJ0eXBlIjoidGV4dCIsInRleHQiOiJBY2NlcHQtRW5jb2Rpbmc6IGd6aXAsIGRlZmxhdGVcciJ9LHsidHlwZSI6ImhhcmRCcmVhayJ9LHsidHlwZSI6InRleHQiLCJ0ZXh0IjoiQWNjZXB0LUxhbmd1YWdlOiB6aC1DTlxyIn0seyJ0eXBlIjoiaGFyZEJyZWFrIn0seyJ0eXBlIjoidGV4dCIsInRleHQiOiJBdXRob3JpemF0aW9uOiBleUpoYkdjaU9pSklVekkxTmlJc0luUjVjQ0k2SWtwWFZDSjkuZXlKcFpDSTZOalFzSW1GalkyOTFiblFpT2lJaUxDSmtiMjFoYVc0aU9pSm1iMjUwY21WbElpd2libWxqYTA1aGJXVWlPaUlpTENKd2FHOXVaU0k2SWpFNE16WXlOalkyTkRVeElpd2laWGh3SWpveE56UTJPREl4TVRVMUxDSnBjM01pT2lKdFlXeHNJbjAuZVRnaVF4cjhjWjNQMFg0Um9nNVZNOXlyNlZVa0Z3R21ZRVhUbjM2Mjlma1xyIn0seyJ0eXBlIjoiaGFyZEJyZWFrIn0seyJ0eXBlIjoidGV4dCIsInRleHQiOiJDb25uZWN0aW9uOiBjbG9zZVxyIn0seyJ0eXBlIjoiaGFyZEJyZWFrIn0seyJ0eXBlIjoidGV4dCIsInRleHQiOiJDb250ZW50LUxlbmd0aDogMjQ5XHIifSx7InR5cGUiOiJoYXJkQnJlYWsifSx7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbjtjaGFyc2V0PVVURi04XHIifSx7InR5cGUiOiJoYXJkQnJlYWsifSx7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IkNvb2tpZTogdG9rZW49ZXlKaGJHY2lPaUpJVXpJMU5pSXNJblI1Y0NJNklrcFhWQ0o5LmV5SnBaQ0k2TmpRc0ltRmpZMjkxYm5RaU9pSWlMQ0prYjIxaGFXNGlPaUptYjI1MGNtVmxJaXdpYm1samEwNWhiV1VpT2lJaUxDSndhRzl1WlNJNklqRTRNell5TmpZMk5EVXhJaXdpWlhod0lqb3hOelEyT0RJeE1UVTFMQ0pwYzNNaU9pSnRZV3hzSW4wLmVUZ2lReHI4Y1ozUDBYNFJvZzVWTTl5cjZWVWtGd0dtWUVYVG4zNjI5ZmtcciJ9LHsidHlwZSI6ImhhcmRCcmVhayJ9LHsidHlwZSI6InRleHQiLCJ0ZXh0IjoiT3JpZ2luOiBodHRwOi8vMTkyLjE2OC44OC43NzozMDUyXHIifSx7InR5cGUiOiJoYXJkQnJlYWsifSx7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IlJlZmVyZXI6IGh0dHA6Ly8xOTIuMTY4Ljg4Ljc3OjMwNTIvdGhhbGlfaW5mbyJ9LHsidHlwZSI6ImhhcmRCcmVhayJ9LHsidHlwZSI6InRleHQiLCJ0ZXh0IjoiIOaAjuS5iOiOt+WPliDmmK8gaHR0cCAg6L+Y5pivIGh0dHBzICDor7fmsYIifV19XX0sIm1lbnRpb25lZF9pdGVtcyI6W10sInN0cnVjdHVyZWRfb3V0cHV0X25vZGVzIjpbeyJpZCI6MSwidHlwZSI6NSwiY29udGVudCI6IiIsInRvb2xfdXNlIjp7InRvb2xfdXNlX2lkIjoidG9vbHVfdnJ0eF8wMVhmNTVmQzNNUXlFamR6VHhMVlJRbmoiLCJ0b29sX25hbWUiOiJzdHItcmVwbGFjZS1lZGl0b3IiLCJpbnB1dF9qc29uIjoie1wiY29tbWFuZFwiOiBcInZpZXdcIiwgXCJwYXRoXCI6IFwicGtnL3NlcnZpY2UvYnVuZGxlL2J1bmRsZU9yZGVyLmdvXCJ9IiwibWNwX3NlcnZlcl9uYW1lIjoiIiwibWNwX3Rvb2xfbmFtZSI6IiJ9fSx7ImlkIjowLCJ0eXBlIjowLCJjb250ZW50IjoiSSBzZWUgdGhhdCB5b3UncmUgZW5jb3VudGVyaW5nIGEgcGFuaWMgZXJyb3IgaW4geW91ciBjb2RlIHJlbGF0ZWQgdG8gaGFuZGxpbmcgSFRUUC9IVFRQUyByZXF1ZXN0IHR5cGVzLiBUaGUgZXJyb3Igb2NjdXJzIHdoZW4gdHJ5aW5nIHRvIGNvbnZlcnQgYGMuS2V5c1tcIk9yaWdpblwiXWAgdG8gYSBzdHJpbmcsIGJ1dCBpdCBzZWVtcyB0byBiZSBuaWwgaW4gc29tZSBjYXNlcy4gTGV0IG1lIGhlbHAgeW91IGZpeCB0aGlzIGlzc3VlLlxuXG5GaXJzdCwgbGV0J3MgZXhhbWluZSB0aGUgcmVsZXZhbnQgY29kZSBpbiB0aGUgZmlsZSB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0IGJldHRlci5cbiJ9LHsiaWQiOjIsInR5cGUiOjIsImNvbnRlbnQiOiIifSx7ImlkIjozLCJ0eXBlIjozLCJjb250ZW50IjoiIn1dLCJzZWVuX3N0YXRlIjoic2VlbiIsInN0cnVjdHVyZWRfcmVxdWVzdF9ub2RlcyI6W3siaWQiOjEsInR5cGUiOjAsInRleHRfbm9kZSI6eyJjb250ZW50IjoiMjAyNS8wNS8wOSAxNjo0NDo0NSBbW1JlY292ZXJ5IGZyb20gcGFuaWNdXSBpbnRlcmZhY2UgY29udmVyc2lvbjogaW50ZXJmYWNlIHt9IGlzIG5pbCwgbm90IHN0cmluZyBQT1NUIC9hcGkvYnVuZGxlLW9yZGVyL3dlYi9vcmRlci1leHBvcnQgSFRUUC8xLjBcclxuSG9zdDogMTIxLjIyOS40NS4yMTQ6OTAzMVxyXG5Db25uZWN0aW9uOiBjbG9zZVxyXG5BY2NlcHQ6IGFwcGxpY2F0aW9uL2pzb24sIHRleHQvcGxhaW4sICovKlxyXG5BY2NlcHQtRW5jb2Rpbmc6IGd6aXAsIGRlZmxhdGVcclxuQWNjZXB0LUxhbmd1YWdlOiB6aC1DTlxyXG5BdXRob3JpemF0aW9uOiBleUpoYkdjaU9pSklVekkxTmlJc0luUjVjQ0k2SWtwWFZDSjkuZXlKcFpDSTZOalFzSW1GalkyOTFiblFpT2lJaUxDSmtiMjFoYVc0aU9pSm1iMjUwY21WbElpd2libWxqYTA1aGJXVWlPaUlpTENKd2FHOXVaU0k2SWpFNE16WXlOalkyTkRVeElpd2laWGh3SWpveE56UTJPREl4TVRVMUxDSnBjM01pT2lKdFlXeHNJbjAuZVRnaVF4cjhjWjNQMFg0Um9nNVZNOXlyNlZVa0Z3R21ZRVhUbjM2Mjlma1xyXG5Db25uZWN0aW9uOiBjbG9zZVxyXG5Db250ZW50LUxlbmd0aDogMjQ5XHJcbkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbjtjaGFyc2V0PVVURi04XHJcbkNvb2tpZTogdG9rZW49ZXlKaGJHY2lPaUpJVXpJMU5pSXNJblI1Y0NJNklrcFhWQ0o5LmV5SnBaQ0k2TmpRc0ltRmpZMjkxYm5RaU9pSWlMQ0prYjIxaGFXNGlPaUptYjI1MGNtVmxJaXdpYm1samEwNWhiV1VpT2lJaUxDSndhRzl1WlNJNklqRTRNell5TmpZMk5EVXhJaXdpWlhod0lqb3hOelEyT0RJeE1UVTFMQ0pwYzNNaU9pSnRZV3hzSW4wLmVUZ2lReHI4Y1ozUDBYNFJvZzVWTTl5cjZWVWtGd0dtWUVYVG4zNjI5ZmtcclxuT3JpZ2luOiBodHRwOi8vMTkyLjE2OC44OC43NzozMDUyXHJcblJlZmVyZXI6IGh0dHA6Ly8xOTIuMTY4Ljg4Ljc3OjMwNTIvdGhhbGlfaW5mb1xuIOaAjuS5iOiOt+WPliDmmK8gaHR0cCAg6L+Y5pivIGh0dHBzICDor7fmsYIifX0seyJpZCI6MiwidHlwZSI6NCwiaWRlX3N0YXRlX25vZGUiOnsid29ya3NwYWNlRm9sZGVycyI6W3sicmVwb3NpdG9yeVJvb3QiOiJDOi9Vc2Vycy9sZW5vdm8vRGVza3RvcC9maWVlL2ZvbmNoYWluLWZpZWUiLCJmb2xkZXJSb290IjoiQzovVXNlcnMvbGVub3ZvL0Rlc2t0b3AvZmllZS9mb25jaGFpbi1maWVlIn1dLCJ3b3Jrc3BhY2VGb2xkZXJzVW5jaGFuZ2VkIjpmYWxzZX19XSwidGltZXN0YW1wIjoiMjAyNS0wNS0wOVQwODo0Njo0MS41MzNaIiwicmVzcG9uc2VfdGV4dCI6Ikkgc2VlIHRoYXQgeW91J3JlIGVuY291bnRlcmluZyBhIHBhbmljIGVycm9yIGluIHlvdXIgY29kZSByZWxhdGVkIHRvIGhhbmRsaW5nIEhUVFAvSFRUUFMgcmVxdWVzdCB0eXBlcy4gVGhlIGVycm9yIG9jY3VycyB3aGVuIHRyeWluZyB0byBjb252ZXJ0IGBjLktleXNbXCJPcmlnaW5cIl1gIHRvIGEgc3RyaW5nLCBidXQgaXQgc2VlbXMgdG8gYmUgbmlsIGluIHNvbWUgY2FzZXMuIExldCBtZSBoZWxwIHlvdSBmaXggdGhpcyBpc3N1ZS5cblxuRmlyc3QsIGxldCdzIGV4YW1pbmUgdGhlIHJlbGV2YW50IGNvZGUgaW4gdGhlIGZpbGUgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dCBiZXR0ZXIuXG4iLCJ3b3Jrc3BhY2VfZmlsZV9jaHVua3MiOltdfSx7InN0YXR1cyI6InN1Y2Nlc3MiLCJyZXF1ZXN0X2lkIjoiYWFjZGNhZjYtN2ZiZS00ODA5LThmZWUtNTFkM2YzOTMwOWMyIiwicmVxdWVzdF9tZXNzYWdlIjoiIiwic3RydWN0dXJlZF9vdXRwdXRfbm9kZXMiOlt7ImlkIjoxLCJ0eXBlIjo1LCJjb250ZW50IjoiIiwidG9vbF91c2UiOnsidG9vbF91c2VfaWQiOiJ0b29sdV92cnR4XzAxQ3NBZDdmQ0pFa0VoV1lxTlA5YlFyQiIsInRvb2xfbmFtZSI6InN0ci1yZXBsYWNlLWVkaXRvciIsImlucHV0X2pzb24iOiJ7XCJjb21tYW5kXCI6IFwic3RyX3JlcGxhY2VcIiwgXCJwYXRoXCI6IFwicGtnL3NlcnZpY2UvYnVuZGxlL2J1bmRsZU9yZGVyLmdvXCIsIFwic3RyX3JlcGxhY2VfZW50cmllc1wiOiBbe1wib2xkX3N0clwiOiBcIlxcdHZhciBodHRwVHlwZSBzdHJpbmdcXG5cXHRmbXQuUHJpbnRmKFxcXCJjLlJlcXVlc3QuUmVxdWVzdFVSSSAgJSt2XFxcXG5cXFwiLCBjLlJlcXVlc3QuUmVxdWVzdFVSSSlcXG5cXHRmbXQuUHJpbnRmKFxcXCJjLlJlcXVlc3QuVVJMICUrdlxcXFxuXFxcIiwgYy5SZXF1ZXN0LlVSTClcXG5cXHRmbXQuUHJpbnRmKFxcXCJjLlJlcXVlc3QuT3JpZ2luICUrdlxcXFxuXFxcIiwgYy5LZXlzW1xcXCJPcmlnaW5cXFwiXSlcXG5cXHRodHRwVHlwZSA9IHN0cmluZ3MuU3BsaXQoYy5LZXlzW1xcXCJPcmlnaW5cXFwiXS4oc3RyaW5nKSwgXFxcIjpcXFwiKVswXVwiLCBcIm5ld19zdHJcIjogXCJcXHR2YXIgaHR0cFR5cGUgc3RyaW5nID0gXFxcImh0dHBcXFwiIC8vIERlZmF1bHQgdG8gaHR0cFxcblxcdGZtdC5QcmludGYoXFxcImMuUmVxdWVzdC5SZXF1ZXN0VVJJICAlK3ZcXFxcblxcXCIsIGMuUmVxdWVzdC5SZXF1ZXN0VVJJKVxcblxcdGZtdC5QcmludGYoXFxcImMuUmVxdWVzdC5VUkwgJSt2XFxcXG5cXFwiLCBjLlJlcXVlc3QuVVJMKVxcblxcdFxcblxcdC8vIFNhZmVseSBjaGVjayBpZiBPcmlnaW4gZXhpc3RzIGluIGMuS2V5c1xcblxcdGlmIG9yaWdpbiwgZXhpc3RzIDo9IGMuS2V5c1tcXFwiT3JpZ2luXFxcIl07IGV4aXN0cyAmJiBvcmlnaW4gIT0gbmlsIHtcXG5cXHRcXHRvcmlnaW5TdHIsIG9rIDo9IG9yaWdpbi4oc3RyaW5nKVxcblxcdFxcdGlmIG9rICYmIG9yaWdpblN0ciAhPSBcXFwiXFxcIiB7XFxuXFx0XFx0XFx0Zm10LlByaW50ZihcXFwiYy5SZXF1ZXN0Lk9yaWdpbiAlK3ZcXFxcblxcXCIsIG9yaWdpblN0cilcXG5cXHRcXHRcXHRwYXJ0cyA6PSBzdHJpbmdzLlNwbGl0KG9yaWdpblN0ciwgXFxcIjpcXFwiKVxcblxcdFxcdFxcdGlmIGxlbihwYXJ0cykgPiAwIHtcXG5cXHRcXHRcXHRcXHRodHRwVHlwZSA9IHBhcnRzWzBdXFxuXFx0XFx0XFx0fVxcblxcdFxcdH1cXG5cXHR9IGVsc2Uge1xcblxcdFxcdC8vIEZhbGxiYWNrOiBDaGVjayBpZiB0aGUgcmVxdWVzdCB3YXMgbWFkZSBvdmVyIFRMU1xcblxcdFxcdGlmIGMuUmVxdWVzdC5UTFMgIT0gbmlsIHx8IGMuUmVxdWVzdC5IZWFkZXIuR2V0KFxcXCJYLUZvcndhcmRlZC1Qcm90b1xcXCIpID09IFxcXCJodHRwc1xcXCIge1xcblxcdFxcdFxcdGh0dHBUeXBlID0gXFxcImh0dHBzXFxcIlxcblxcdFxcdH1cXG5cXHR9XCIsIFwib2xkX3N0cl9zdGFydF9saW5lX251bWJlclwiOiA0MTEsIFwib2xkX3N0cl9lbmRfbGluZV9udW1iZXJcIjogNDE1fV19IiwibWNwX3NlcnZlcl9uYW1lIjoiIiwibWNwX3Rvb2xfbmFtZSI6IiJ9fSx7ImlkIjowLCJ0eXBlIjowLCJjb250ZW50IjoiTm93IEkgY2FuIHNlZSB0aGUgaXNzdWUuIEluIHRoZSBgRXhwb3J0T3JkZXJJbmZvYCBmdW5jdGlvbiAoYXJvdW5kIGxpbmUgNDExLTQxNSksIHlvdSdyZSB0cnlpbmcgdG8gZGV0ZXJtaW5lIGlmIHRoZSByZXF1ZXN0IGlzIEhUVFAgb3IgSFRUUFMgYnkgYWNjZXNzaW5nIGBjLktleXNbXCJPcmlnaW5cIl1gLCBidXQgdGhpcyB2YWx1ZSBjYW4gYmUgbmlsIGluIHNvbWUgY2FzZXMsIGNhdXNpbmcgdGhlIHBhbmljLlxuXG5MZXQncyBmaXggdGhpcyBieSBhZGRpbmcgYSBwcm9wZXIgY2hlY2sgYmVmb3JlIHRyeWluZyB0byBhY2Nlc3MgYW5kIGNvbnZlcnQgdGhlIE9yaWdpbiB2YWx1ZS4gSGVyZSdzIG15IHBsYW46XG5cbjEuIE1vZGlmeSB0aGUgY29kZSB0byBzYWZlbHkgY2hlY2sgaWYgYGMuS2V5c1tcIk9yaWdpblwiXWAgZXhpc3RzIGFuZCBpcyBub3QgbmlsIGJlZm9yZSB0cnlpbmcgdG8gdXNlIGl0XG4yLiBQcm92aWRlIGEgZmFsbGJhY2sgbWVjaGFuaXNtIHRvIGRldGVybWluZSB0aGUgSFRUUCB0eXBlIGlmIE9yaWdpbiBpcyBub3QgYXZhaWxhYmxlXG5cbkhlcmUncyB0aGUgaW1wbGVtZW50YXRpb246XG4ifSx7ImlkIjoyLCJ0eXBlIjoyLCJjb250ZW50IjoiIn0seyJpZCI6MywidHlwZSI6MywiY29udGVudCI6IiJ9XSwic2Vlbl9zdGF0ZSI6InNlZW4iLCJzdHJ1Y3R1cmVkX3JlcXVlc3Rfbm9kZXMiOlt7ImlkIjoxLCJ0eXBlIjoxLCJ0b29sX3Jlc3VsdF9ub2RlIjp7ImNvbnRlbnQiOiJIZXJlJ3MgdGhlIHJlc3VsdCBvZiBydW5uaW5nIGBjYXQgLW5gIG9uIHBrZy9zZXJ2aWNlL2J1bmRsZS9idW5kbGVPcmRlci5nbzpcbiAgICAgMVx0cGFja2FnZSBidW5kbGVcbiAgICAgMlx0XG4gICAgIDNcdGltcG9ydCAoXG4gICAgIDRcdFx0XCJjb250ZXh0XCJcbiAgICAgNVx0XHRcImVycm9yc1wiXG4gICAgIDZcdFx0XCJmbXRcIlxuICAgICA3XHRcdFwiZm9uY2hhaW4tZmllZS9hcGkvYWNjb3VudFwiXG4gICAgIDhcdFx0XCJmb25jaGFpbi1maWVlL2FwaS9idW5kbGVcIlxuICAgICA5XHRcdFwiZm9uY2hhaW4tZmllZS9hcGkvb3JkZXJcIlxuICAgIDEwXHRcdFwiZm9uY2hhaW4tZmllZS9wa2cvZVwiXG4gICAgMTFcdFx0XCJmb25jaGFpbi1maWVlL3BrZy9tb2RlbC9sb2dpblwiXG4gICAgMTJcdFx0XCJmb25jaGFpbi1maWVlL3BrZy9zZXJ2aWNlXCJcbiAgICAxM1x0XHRcImZvbmNoYWluLWZpZWUvcGtnL3NlcnZpY2UvYnVuZGxlL2NvbW1vblwiXG4gICAgMTRcdFx0XCJmb25jaGFpbi1maWVlL3BrZy9zZXJ2aWNlL2J1bmRsZS9sb2dpY1wiXG4gICAgMTVcdFx0YnVuZGxlTW9kZWwgXCJmb25jaGFpbi1maWVlL3BrZy9zZXJ2aWNlL2J1bmRsZS9tb2RlbFwiXG4gICAgMTZcdFx0XCJtYXRoL2JpZ1wiXG4gICAgMTdcdFx0XCJzdHJjb252XCJcbiAgICAxOFx0XHRcInN0cmluZ3NcIlxuICAgIDE5XHRcbiAgICAyMFx0XHRcImdpdGh1Yi5jb20vZ2luLWdvbmljL2dpblwiXG4gICAgMjFcdFx0XCJnaXRodWIuY29tL2dpbi1nb25pYy9naW4vYmluZGluZ1wiXG4gICAgMjJcdClcbiAgICAyM1x0XG4gICAgMjRcdGZ1bmMgQ3JlYXRlQnVuZGxlT3JkZXJTaWduYXR1cmUoYyAqZ2luLkNvbnRleHQpIHtcbiAgICAyNVx0XHR2YXIgcmVxIGJ1bmRsZS5PcmRlclJlY29yZFxuICAgIDI2XHRcbiAgICAyN1x0XHRpZiBlcnIgOj0gYy5TaG91bGRCaW5kQm9keVdpdGgoJnJlcSwgYmluZGluZy5KU09OKTsgZXJyICE9IG5pbCB7XG4gICAgMjhcdFx0XHRzZXJ2aWNlLkVycm9yKGMsIGVycilcbiAgICAyOVx0XHRcdHJldHVyblxuICAgIDMwXHRcdH1cbiAgICAzMVx0XG4gICAgMzJcdFx0aWYgcmVxLkJ1bmRsZVV1aWQgPT0gXCJcIiB7XG4gICAgMzNcdFx0XHRzZXJ2aWNlLkVycm9yKGMsIGVycm9ycy5OZXcoY29tbW9uLk1pc3NCdW5kbGVVVUlEKSlcbiAgICAzNFx0XHRcdHJldHVyblxuICAgIDM1XHRcdH1cbiAgICAzNlx0XG4gICAgMzdcdFx0Ly8g5LiN5Y675qCh6aqMIOetvuWQjVxuICAgIDM4XHRcdC8qaWYgcmVxLlNpZ25hdHVyZSA9PSBcIlwiIHtcbiAgICAzOVx0XHRcdHNlcnZpY2UuRXJyb3IoYywgZXJyb3JzLk5ldyhjb21tb24uTWlzc09yZGVyU2lnbmF0dXJlKSlcbiAgICA0MFx0XHRcdHJldHVyblxuICAgIDQxXHRcdH0qL1xuICAgIDQyXHRcbiAgICA0M1x0XHQvLyDojrflj5Yg55So5oi35L+h5oGvXG4gICAgNDRcdFx0dXNlckluZm8gOj0gbG9naW4uR2V0VXNlckluZm9Gcm9tQyhjKVxuICAgIDQ1XHRcbiAgICA0Nlx0XHQvLyDmoKHpqowg5b2T5YmN55So5oi35Y+q6IO95Lmw5LiA5qyh5aWX6aSQXG4gICAgNDdcdFx0b3JkZXJSZWNvcmRzTGlzdFJlcSA6PSBidW5kbGUuT3JkZXJSZWNvcmRzUmVxdWVzdHtcbiAgICA0OFx0XHRcdEN1c3RvbWVySUQ6IHN0cmNvbnYuRm9ybWF0VWludCh1c2VySW5mby5JRCwgMTApLFxuICAgIDQ5XHRcdH1cbiAgICA1MFx0XHRvcmRlclJlY29yZHNMaXN0LCBvcmRlclJlY29yZHNMaXN0RXJyIDo9IHNlcnZpY2UuQnVuZGxlUHJvdmlkZXIuT3JkZXJSZWNvcmRzTGlzdChjb250ZXh0LkJhY2tncm91bmQoKSwgJm9yZGVyUmVjb3Jkc0xpc3RSZXEpXG4gICAgNTFcdFx0aWYgb3JkZXJSZWNvcmRzTGlzdEVyciAhPSBuaWwge1xuICAgIDUyXHRcdFx0c2VydmljZS5FcnJvcihjLCBvcmRlclJlY29yZHNMaXN0RXJyKVxuICAgIDUzXHRcdFx0cmV0dXJuXG4gICAgNTRcdFx0fVxuICAgIDU1XHRcbiAgICA1Nlx0XHRpZiBvcmRlclJlY29yZHNMaXN0Lk9yZGVyUmVjb3JkcyAhPSBuaWwge1xuICAgIDU3XHRcdFx0Zm9yIF8sIG9yZGVyIDo9IHJhbmdlIG9yZGVyUmVjb3Jkc0xpc3QuT3JkZXJSZWNvcmRzIHtcbiAgICA1OFx0XHRcdFx0aWYgb3JkZXIuQ3VzdG9tZXJJRCA9PSBzdHJjb252LkZvcm1hdFVpbnQodXNlckluZm8uSUQsIDEwKSB7XG4gICAgNTlcdFx0XHRcdFx0c2VydmljZS5FcnJvcihjLCBlcnJvcnMuTmV3KGNvbW1vbi5IYWRPcmRlcikpXG4gICAgNjBcdFx0XHRcdFx0cmV0dXJuXG4gICAgNjFcdFx0XHRcdH1cbiAgICA2Mlx0XHRcdH1cbiAgICA2M1x0XHR9XG4gICAgNjRcdFxuICAgIDY1XHRcdC8vIOiOt+WPliDmnIDlkI7kuIDmrKHnmoQg5ZCI5ZCM57yW5Y+3XG4gICAgNjZcdFx0bGFzdE9yZGVyUmVjb3JkLCBsYXN0T3JkZXJSZWNvcmRFcnIgOj0gc2VydmljZS5CdW5kbGVQcm92aWRlci5PcmRlclJlY29yZHNMaXN0KGNvbnRleHQuQmFja2dyb3VuZCgpLCAmYnVuZGxlLk9yZGVyUmVjb3Jkc1JlcXVlc3R7XG4gICAgNjdcdFx0XHRQYWdlU2l6ZTogMSxcbiAgICA2OFx0XHRcdFBhZ2U6ICAgICAxLFxuICAgIDY5XHRcdH0pXG4gICAgNzBcdFxuICAgIDcxXHRcdGlmIGxhc3RPcmRlclJlY29yZEVyciAhPSBuaWwge1xuICAgIDcyXHRcdFx0c2VydmljZS5FcnJvcihjLCBsYXN0T3JkZXJSZWNvcmRFcnIpXG4gICAgNzNcdFx0XHRyZXR1cm5cbiAgICA3NFx0XHR9XG4gICAgNzVcdFxuICAgIDc2XHRcdGxhc3RDb250cmFjdE5vIDo9IFwiXCJcbiAgICA3N1x0XG4gICAgNzhcdFx0aWYgbGFzdE9yZGVyUmVjb3JkLk9yZGVyUmVjb3JkcyAhPSBuaWwge1xuICAgIDc5XHRcdFx0Zm9yIF8sIGxhc3RPcmRlciA6PSByYW5nZSBsYXN0T3JkZXJSZWNvcmQuT3JkZXJSZWNvcmRzIHtcbiAgICA4MFx0XHRcdFx0bGFzdENvbnRyYWN0Tm8gPSBsYXN0T3JkZXIuQ29udHJhY3ROb1xuICAgIDgxXHRcdFx0fVxuICAgIDgyXHRcdH1cbiAgICA4M1x0XG4gICAgODRcdFx0cmVxLkN1c3RvbWVyTnVtID0gdXNlckluZm8uU3ViTnVtXG4gICAgODVcdFx0cmVxLkN1c3RvbWVyTmFtZSA9IHVzZXJJbmZvLk5hbWVcbiAgICA4Nlx0XHRyZXEuQ3VzdG9tZXJJRCA9IHN0cmNvbnYuRm9ybWF0VWludCh1c2VySW5mby5JRCwgMTApXG4gICAgODdcdFxuICAgIDg4XHRcdC8vIOiOt+WPliDlpZfppJDkv6Hmga9cbiAgICA4OVx0XHRidW5kbGVEZXRhaWxSZXEgOj0gJmJ1bmRsZS5CdW5kbGVEZXRhaWxSZXF1ZXN0e1xuICAgIDkwXHRcdFx0VXVpZDogcmVxLkJ1bmRsZVV1aWQsXG4gICAgOTFcdFx0fVxuICAgIDkyXHRcdGJ1bmRsZURldGFpbCwgZGV0YWlsRXJyIDo9IHNlcnZpY2UuQnVuZGxlUHJvdmlkZXIuQnVuZGxlRGV0YWlsKGNvbnRleHQuQmFja2dyb3VuZCgpLCBidW5kbGVEZXRhaWxSZXEpXG4gICAgOTNcdFx0aWYgZGV0YWlsRXJyICE9IG5pbCB7XG4gICAgOTRcdFx0XHRzZXJ2aWNlLkVycm9yKGMsIGRldGFpbEVycilcbiAgICA5NVx0XHRcdHJldHVyblxuICAgIDk2XHRcdH1cbiAgICA5N1x0XG4gICAgOThcdFx0Ly/ojrflj5blop7lgLzlpZfppJDkv6Hmga9cbiAgICA5OVx0XHRpZiByZXEuVmFsdWVBZGRCdW5kbGVVdWlkICE9IFwiXCIge1xuICAgMTAwXHRcdFx0dmFsdWVBZGRCdW5kbGVEZXRhaWwsIGVyciA6PSBzZXJ2aWNlLkJ1bmRsZVByb3ZpZGVyLlZhbHVlQWRkQnVuZGxlRGV0YWlsKGNvbnRleHQuQmFja2dyb3VuZCgpLCAmYnVuZGxlLlZhbHVlQWRkQnVuZGxlRGV0YWlsUmVxdWVzdHtcbiAgIDEwMVx0XHRcdFx0VXVpZDogcmVxLlZhbHVlQWRkQnVuZGxlVXVpZCxcbiAgIDEwMlx0XHRcdH0pXG4gICAxMDNcdFx0XHRpZiBlcnIgIT0gbmlsIHtcbiAgIDEwNFx0XHRcdFx0c2VydmljZS5FcnJvcihjLCBlcnIpXG4gICAxMDVcdFx0XHRcdHJldHVyblxuICAgMTA2XHRcdFx0fVxuICAgMTA3XHRcbiAgIDEwOFx0XHRcdHJlcS5WYWx1ZUFkZEJ1bmRsZVV1aWQgPSB2YWx1ZUFkZEJ1bmRsZURldGFpbC5EYXRhLlV1aWRcbiAgIDEwOVx0XHRcdHJlcS5WYWx1ZUFkZE9yaWdpbmFsUHJpY2UgPSB2YWx1ZUFkZEJ1bmRsZURldGFpbC5EYXRhLk9yaWdpbmFsUHJpY2VcbiAgIDExMFx0XHRcdHJlcS5WYWx1ZUFkZERpc2NvdW50UHJpY2UgPSB2YWx1ZUFkZEJ1bmRsZURldGFpbC5EYXRhLkRpc2NvdW50UHJpY2VcbiAgIDExMVx0XHRcdHJlcS5BZGRCdW5kbGVDb21tb25VaWQgPSB2YWx1ZUFkZEJ1bmRsZURldGFpbC5EYXRhLkFkZEJ1bmRsZUNvbW1vblVpZFxuICAgMTEyXHRcbiAgIDExM1x0XHRcdGlmIHZhbHVlQWRkQnVuZGxlRGV0YWlsLkRhdGEuQ2hvb3NlIHsgLy8g5Y+v6YCJ5p2h5pWwXG4gICAxMTRcdFx0XHRcdHJlcS5WYWx1ZUFkZEJ1bmRsZUFtb3VudCA9IHZhbHVlQWRkQnVuZGxlRGV0YWlsLkRhdGEuRGlzY291bnRQcmljZSAqIGZsb2F0MzIocmVxLk51bSlcbiAgIDExNVx0XHRcdFx0ZGlzY291bnQsIF8gOj0gbmV3KGJpZy5GbG9hdCkuU3ViKGJpZy5OZXdGbG9hdChmbG9hdDY0KHZhbHVlQWRkQnVuZGxlRGV0YWlsLkRhdGEuT3JpZ2luYWxQcmljZSkpLCBiaWcuTmV3RmxvYXQoZmxvYXQ2NCh2YWx1ZUFkZEJ1bmRsZURldGFpbC5EYXRhLkRpc2NvdW50UHJpY2UpKSkuRmxvYXQzMigpXG4gICAxMTZcdFx0XHRcdHJlcS5WYWx1ZUFkZFNhdmVkQW1vdW50ID0gZGlzY291bnQgKiBmbG9hdDMyKHJlcS5OdW0pXG4gICAxMTdcdFx0XHR9IGVsc2UgeyAvLyDlm7rlrprmnaHmlbBcbiAgIDExOFx0XHRcdFx0cmVxLlZhbHVlQWRkQnVuZGxlQW1vdW50ID0gdmFsdWVBZGRCdW5kbGVEZXRhaWwuRGF0YS5Ub3RhbFByaWNlXG4gICAxMTlcdFx0XHRcdHJlcS5WYWx1ZUFkZFNhdmVkQW1vdW50ID0gdmFsdWVBZGRCdW5kbGVEZXRhaWwuRGF0YS5TYXZlZEFtb3VudFxuICAgMTIwXHRcdFx0fVxuICAgMTIxXHRcbiAgIDEyMlx0XHRcdHJlcS5Ub3RhbEFtb3VudCwgXyA9IG5ldyhiaWcuRmxvYXQpLkFkZChiaWcuTmV3RmxvYXQoZmxvYXQ2NChyZXEuVmFsdWVBZGRCdW5kbGVBbW91bnQpKSwgYmlnLk5ld0Zsb2F0KGZsb2F0NjQoYnVuZGxlRGV0YWlsLkJ1bmRsZS5QcmljZSkpKS5GbG9hdDMyKClcbiAgIDEyM1x0XHR9XG4gICAxMjRcdFxuICAgMTI1XHRcdHJlcS5CdW5kbGVOYW1lID0gYnVuZGxlRGV0YWlsLkJ1bmRsZS5OYW1lXG4gICAxMjZcdFx0cmVxLkFtb3VudCA9IGJ1bmRsZURldGFpbC5CdW5kbGUuUHJpY2VcbiAgIDEyN1x0XHRyZXEuQW1vdW50VHlwZSA9IGJ1bmRsZURldGFpbC5CdW5kbGUuUHJpY2VUeXBlXG4gICAxMjhcdFx0cmVxLkJ1bmRsZUNvbW1vblVpZCA9IGJ1bmRsZURldGFpbC5CdW5kbGUuQnVuZGxlQ29tbW9uVWlkXG4gICAxMjlcdFx0cmVxLlRvdGFsQW1vdW50ID0gcmVxLkFtb3VudCArIHJlcS5WYWx1ZUFkZEJ1bmRsZUFtb3VudFxuICAgMTMwXHRcdHJlcS5QYXlUeXBlID0gMSAvLyDpu5jorqQg5Lq65rCR5biBXG4gICAxMzFcdFxuICAgMTMyXHRcdHJlcS5Db250cmFjdE5vID0gY29tbW9uLkdlbmVyYXRlQ29udHJhY3RObyhsYXN0Q29udHJhY3RObylcbiAgIDEzM1x0XG4gICAxMzRcdFx0Ly8g5b2T5YmNIOacquWwhiDnrb7lkI0g5YaZ5YWl5ZCI5ZCM5LitXG4gICAxMzVcdFx0c2lnbkNvbnRyYWN0LCBzaWduQ29udHJhY3RFcnIgOj0gbG9naWMuU2lnbkNvbnRyYWN0VjIocmVxLkN1c3RvbWVyTnVtLCBidW5kbGVEZXRhaWwuQnVuZGxlLkNvbnRyYWN0LCByZXEuVG90YWxBbW91bnQsIGJ1bmRsZURldGFpbC5CdW5kbGUuQ29udHJhY3REdXJhdGlvbilcbiAgIDEzNlx0XHRpZiBzaWduQ29udHJhY3RFcnIgIT0gbmlsIHtcbiAgIDEzN1x0XHRcdHNlcnZpY2UuRXJyb3IoYywgc2lnbkNvbnRyYWN0RXJyKVxuICAgMTM4XHRcdFx0cmV0dXJuXG4gICAxMzlcdFx0fVxuICAgMTQwXHRcbiAgIDE0MVx0XHRyZXEuU2lnbkNvbnRyYWN0ID0gc2lnbkNvbnRyYWN0XG4gICAxNDJcdFxuICAgMTQzXHRcdHJlcS5TaWduZWRUaW1lID0gY29tbW9uLkdldEJlaWppbmdUaW1lKClcbiAgIDE0NFx0XG4gICAxNDVcdFx0cmVxLlN0YXR1cyA9IGJ1bmRsZU1vZGVsLk9yZGVyU2lnbmVkXG4gICAxNDZcdFxuICAgMTQ3XHRcdHJlcywgZXJyIDo9IHNlcnZpY2UuQnVuZGxlUHJvdmlkZXIuQ3JlYXRlT3JkZXJSZWNvcmQoY29udGV4dC5CYWNrZ3JvdW5kKCksICZyZXEpXG4gICAxNDhcdFx0aWYgZXJyICE9IG5pbCB7XG4gICAxNDlcdFx0XHRzZXJ2aWNlLkVycm9yKGMsIGVycilcbiAgIDE1MFx0XHRcdHJldHVyblxuICAgMTUxXHRcdH1cbiAgIDE1Mlx0XG4gICAxNTNcdFx0c2VydmljZS5TdWNjZXNzKGMsIHJlcylcbiAgIDE1NFx0fVxuICAgMTU1XHRcbiAgIDE1Nlx0ZnVuYyBVcGRhdGVCdW5kbGVPcmRlclN0YXR1c1BhaWQoYyAqZ2luLkNvbnRleHQpIHtcbiAgIDE1N1x0XHR2YXIgcmVxIGJ1bmRsZS5PcmRlclJlY29yZFxuICAgMTU4XHRcbiAgIDE1OVx0XHRpZiBlcnIgOj0gYy5TaG91bGRCaW5kQm9keVdpdGgoJnJlcSwgYmluZGluZy5KU09OKTsgZXJyICE9IG5pbCB7XG4gICAxNjBcdFx0XHRzZXJ2aWNlLkVycm9yKGMsIGVycilcbiAgIDE2MVx0XHRcdHJldHVyblxuICAgMTYyXHRcdH1cbiAgIDE2M1x0XG4gICAxNjRcdFx0Ly8g6I635Y+WIOeUqOaIt+S/oeaBr1xuICAgMTY1XHRcdHVzZXJJbmZvIDo9IGxvZ2luLkdldFVzZXJJbmZvRnJvbUMoYylcbiAgIDE2Nlx0XG4gICAxNjdcdFx0aWYgcmVxLlV1aWQgPT0gXCJcIiB7XG4gICAxNjhcdFx0XHRzZXJ2aWNlLkVycm9yKGMsIGVycm9ycy5OZXcoY29tbW9uLk1pc3NPcmRlclVVSUQpKVxuICAgMTY5XHRcdFx0cmV0dXJuXG4gICAxNzBcdFx0fVxuICAgMTcxXHRcbiAgIDE3Mlx0XHRkZXRhaWwsIGRldGFpbEVyciA6PSBzZXJ2aWNlLkJ1bmRsZVByb3ZpZGVyLk9yZGVyUmVjb3Jkc0RldGFpbChjb250ZXh0LkJhY2tncm91bmQoKSwgJmJ1bmRsZS5PcmRlclJlY29yZHNEZXRhaWxSZXF1ZXN0e1xuICAgMTczXHRcdFx0VXVpZDogcmVxLlV1aWQsXG4gICAxNzRcdFx0fSlcbiAgIDE3NVx0XG4gICAxNzZcdFx0aWYgZGV0YWlsRXJyICE9IG5pbCB7XG4gICAxNzdcdFx0XHRzZXJ2aWNlLkVycm9yKGMsIGRldGFpbEVycilcbiAgIDE3OFx0XHRcdHJldHVyblxuICAgMTc5XHRcdH1cbiAgIDE4MFx0XG4gICAxODFcdFx0Ly8g5Yik5patIOaYr+WQpuaYryDmnKzkurrmk43kvZxcbiAgIDE4Mlx0XHRpZiBzdHJjb252LkZvcm1hdFVpbnQodXNlckluZm8uSUQsIDEwKSAhPSBkZXRhaWwuT3JkZXJSZWNvcmQuQ3VzdG9tZXJJRCB7XG4gICAxODNcdFx0XHRzZXJ2aWNlLkVycm9yKGMsIGVycm9ycy5OZXcoY29tbW9uLk5vdE1hdGNoT3JkZXJJbmZvKSlcbiAgIDE4NFx0XHRcdHJldHVyblxuICAgMTg1XHRcdH1cbiAgIDE4Nlx0XG4gICAxODdcdFx0Ly8g5aaC5p6cIOW9k+WJjeiuouWNlSDmmK8g5bey562+5pyq5pSv5LuYICDkuJQg5a2Y5ZyoIGNoZWNrb3V0U2Vzc2lvbklkIOmcgOimgSDmn6Xor6Ig5pSv5LuY57uT5p6cXG4gICAxODhcdFx0aWYgZGV0YWlsLk9yZGVyUmVjb3JkLlN0YXR1cyA9PSBidW5kbGVNb2RlbC5PcmRlclNpZ25lZCAmJiBkZXRhaWwuT3JkZXJSZWNvcmQuQ2hlY2tvdXRTZXNzaW9uSWQgIT0gXCJcIiAmJiBkZXRhaWwuT3JkZXJSZWNvcmQuUGF5VGltZSA9PSBcIlwiIHtcbiAgIDE4OVx0XHRcdC8vIOafpeivouaUr+S7mOe7k+aenFxuICAgMTkwXHRcdFx0c3RyaXBlSW5mb3NSZXMsIHN0cmlwZUluZm9zRXJyIDo9IHNlcnZpY2UuT3JkZXJQcm92aWRlci5RdWVyeVN0cmlwZUluZm9CeUNoZWNrU2Vzc2lvbklkcyhjb250ZXh0LkJhY2tncm91bmQoKSwgJm9yZGVyLlF1ZXJ5U3RyaXBlSW5mb1JlcXVlc3R7XG4gICAxOTFcdFx0XHRcdENoZWNrb3V0U2Vzc2lvbklkczogW11zdHJpbmd7ZGV0YWlsLk9yZGVyUmVjb3JkLkNoZWNrb3V0U2Vzc2lvbklkfSxcbiAgIDE5Mlx0XHRcdH0pXG4gICAxOTNcdFxuICAgMTk0XHRcdFx0aWYgc3RyaXBlSW5mb3NFcnIgIT0gbmlsIHtcbiAgIDE5NVx0XHRcdFx0c2VydmljZS5FcnJvcihjLCBlcnJvcnMuTmV3KGNvbW1vbi5FcnJvclF1ZXJ5U3RyaXBlSW5mbykpXG4gICAxOTZcdFx0XHRcdHJldHVyblxuICAgMTk3XHRcdFx0fVxuICAgMTk4XHRcbiAgIDE5OVx0XHRcdHRvdGFsU3RyaXBlIDo9IDBcbiAgIDIwMFx0XG4gICAyMDFcdFx0XHRpZiBzdHJpcGVJbmZvc1JlcyAhPSBuaWwgJiYgbGVuKHN0cmlwZUluZm9zUmVzLlN0cmlwZUluZm9zKSA+IDAge1xuICAgMjAyXHRcdFx0XHR0b3RhbFN0cmlwZSA9IGxlbihzdHJpcGVJbmZvc1Jlcy5TdHJpcGVJbmZvcylcbiAgIDIwM1x0XHRcdFx0Zm9yIF8sIHN0cmlwZUluZm8gOj0gcmFuZ2Ugc3RyaXBlSW5mb3NSZXMuU3RyaXBlSW5mb3Mge1xuICAgMjA0XHRcdFx0XHRcdGlmIHN0cmlwZUluZm8uT3V0VHJhZGVObyA9PSBkZXRhaWwuT3JkZXJSZWNvcmQuT3JkZXJObyAmJiBzdHJpcGVJbmZvLlBheW1lbnRJbnRlbnRTdGF0dXMgPT0gXCJwYWlkXCIge1xuICAgMjA1XHRcdFx0XHRcdFx0XywgdXBkYXRlT3JkZXJSZWNvcmRFcnIgOj0gc2VydmljZS5CdW5kbGVQcm92aWRlci5VcGRhdGVPcmRlclJlY29yZChjb250ZXh0LkJhY2tncm91bmQoKSwgJmJ1bmRsZS5PcmRlclJlY29yZHtcbiAgIDIwNlx0XHRcdFx0XHRcdFx0VXVpZDogICAgZGV0YWlsLk9yZGVyUmVjb3JkLlV1aWQsXG4gICAyMDdcdFx0XHRcdFx0XHRcdFN0YXR1czogIGJ1bmRsZU1vZGVsLk9yZGVyUGFpZCxcbiAgIDIwOFx0XHRcdFx0XHRcdFx0UGF5VGltZTogY29tbW9uLkdldEJlaWppbmdUaW1lKCksXG4gICAyMDlcdFx0XHRcdFx0XHR9KVxuICAgMjEwXHRcdFx0XHRcdFx0aWYgdXBkYXRlT3JkZXJSZWNvcmRFcnIgIT0gbmlsIHtcbiAgIDIxMVx0XHRcdFx0XHRcdFx0c2VydmljZS5FcnJvcihjLCBkZXRhaWxFcnIpXG4gICAyMTJcdFx0XHRcdFx0XHRcdHJldHVyblxuICAgMjEzXHRcdFx0XHRcdFx0fVxuICAgMjE0XHRcdFx0XHRcdFx0dG90YWxTdHJpcGUtLVxuICAgMjE1XHRcdFx0XHRcdH1cbiAgIDIxNlx0XHRcdFx0fVxuICAgMjE3XHRcdFx0fVxuICAgMjE4XHRcbiAgIDIxOVx0XHRcdGlmIHRvdGFsU3RyaXBlICE9IDAgJiYgdG90YWxTdHJpcGUgPT0gbGVuKHN0cmlwZUluZm9zUmVzLlN0cmlwZUluZm9zKSB7XG4gICAyMjBcdFx0XHRcdF8sIHVwZGF0ZU9yZGVyUmVjb3JkRXJyIDo9IHNlcnZpY2UuQnVuZGxlUHJvdmlkZXIuVXBkYXRlT3JkZXJSZWNvcmQoY29udGV4dC5CYWNrZ3JvdW5kKCksICZidW5kbGUuT3JkZXJSZWNvcmR7XG4gICAyMjFcdFx0XHRcdFx0VXVpZDogICAgICAgICAgICAgICBkZXRhaWwuT3JkZXJSZWNvcmQuVXVpZCxcbiAgIDIyMlx0XHRcdFx0XHRDaGVja291dFNlc3Npb25JZDogIFwiXCIsXG4gICAyMjNcdFx0XHRcdFx0Q2hlY2tvdXRTZXNzaW9uVXJsOiBcIlwiLFxuICAgMjI0XHRcdFx0XHR9KVxuICAgMjI1XHRcdFx0XHRpZiB1cGRhdGVPcmRlclJlY29yZEVyciAhPSBuaWwge1xuICAgMjI2XHRcdFx0XHRcdHNlcnZpY2UuRXJyb3IoYywgZGV0YWlsRXJyKVxuICAgMjI3XHRcdFx0XHRcdHJldHVyblxuICAgMjI4XHRcdFx0XHR9XG4gICAyMjlcdFx0XHR9XG4gICAyMzBcdFx0fVxuICAgMjMxXHRcbiAgIDIzMlx0XHRzZXJ2aWNlLlN1Y2Nlc3MoYywgbmlsKVxuICAgMjMzXHR9XG4gICAyMzRcdFxuICAgMjM1XHRmdW5jIE9yZGVyUmVjb3Jkc0xpc3QoYyAqZ2luLkNvbnRleHQpIHtcbiAgIDIzNlx0XHR2YXIgcmVxIGJ1bmRsZS5PcmRlclJlY29yZHNSZXF1ZXN0XG4gICAyMzdcdFxuICAgMjM4XHRcdGlmIGVyciA6PSBjLlNob3VsZEJpbmRCb2R5V2l0aCgmcmVxLCBiaW5kaW5nLkpTT04pOyBlcnIgIT0gbmlsIHtcbiAgIDIzOVx0XHRcdHNlcnZpY2UuRXJyb3IoYywgZXJyKVxuICAgMjQwXHRcdFx0cmV0dXJuXG4gICAyNDFcdFx0fVxuICAgMjQyXHRcbiAgIDI0M1x0XHQvLyDojrflj5Yg55So5oi35L+h5oGvXG4gICAyNDRcdFx0Ly91c2VySW5mbyA6PSBsb2dpbi5HZXRVc2VySW5mb0Zyb21DKGMpXG4gICAyNDVcdFxuICAgMjQ2XHRcdC8vcmVxLkN1c3RvbWVySUQgPSBzdHJjb252LkZvcm1hdFVpbnQodXNlckluZm8uSUQsIDEwKVxuICAgMjQ3XHRcbiAgIDI0OFx0XHRyZXMsIGVyciA6PSBzZXJ2aWNlLkJ1bmRsZVByb3ZpZGVyLk9yZGVyUmVjb3Jkc0xpc3QoY29udGV4dC5CYWNrZ3JvdW5kKCksICZyZXEpXG4gICAyNDlcdFx0aWYgZXJyICE9IG5pbCB7XG4gICAyNTBcdFx0XHRzZXJ2aWNlLkVycm9yKGMsIGVycilcbiAgIDI1MVx0XHRcdHJldHVyblxuICAgMjUyXHRcdH1cbiAgIDI1M1x0XG4gICAyNTRcdFx0Zm9yIF8sIG9yZGVyUmVjb3JkIDo9IHJhbmdlIHJlcy5PcmRlclJlY29yZHMge1xuICAgMjU1XHRcdFx0aWYgb3JkZXJSZWNvcmQuQ3VzdG9tZXJJRCAhPSBcIlwiIHtcbiAgIDI1Nlx0XHRcdFx0dmFyIHVzZXJJRCB1aW50NjRcbiAgIDI1N1x0XHRcdFx0dXNlcklELCBlcnIgPSBzdHJjb252LlBhcnNlVWludChvcmRlclJlY29yZC5DdXN0b21lcklELCAxMCwgNjQpXG4gICAyNThcdFx0XHRcdGlmIGVyciAhPSBuaWwge1xuICAgMjU5XHRcdFx0XHRcdGVyciA9IG5pbFxuICAgMjYwXHRcdFx0XHRcdGNvbnRpbnVlXG4gICAyNjFcdFx0XHRcdH1cbiAgIDI2Mlx0XG4gICAyNjNcdFx0XHRcdHVzZXJJbmZvLCBfIDo9IHNlcnZpY2UuQWNjb3VudFByb3ZpZGVyLkluZm8oY29udGV4dC5CYWNrZ3JvdW5kKCksICZhY2NvdW50LkluZm9SZXF1ZXN0e1xuICAgMjY0XHRcdFx0XHRcdERvbWFpbjogXCJhcHBcIixcbiAgIDI2NVx0XHRcdFx0XHRJRDogICAgIHVzZXJJRCxcbiAgIDI2Nlx0XHRcdFx0fSlcbiAgIDI2N1x0XHRcdFx0aWYgdXNlckluZm8gIT0gbmlsIHtcbiAgIDI2OFx0XHRcdFx0XHRvcmRlclJlY29yZC5TZXggPSB1c2VySW5mby5TZXhcbiAgIDI2OVx0XHRcdFx0XHRvcmRlclJlY29yZC5OYXRpb25hbGl0eSA9IHVzZXJJbmZvLk5hdGlvbmFsaXR5XG4gICAyNzBcdFx0XHRcdFx0b3JkZXJSZWNvcmQuQ2VydGlmaWNhdGVQaWN0dXJlID0gdXNlckluZm8uQ2VydGlmaWNhdGVQaWN0dXJlXG4gICAyNzFcdFx0XHRcdFx0b3JkZXJSZWNvcmQuUGxhY2VPZlJlc2lkZW5jZSA9IHVzZXJJbmZvLlBsYWNlT2ZSZXNpZGVuY2VcbiAgIDI3Mlx0XHRcdFx0XHRvcmRlclJlY29yZC5Hcm91cFBob3RvID0gdXNlckluZm8uR3JvdXBQaG90b1xuICAgMjczXHRcdFx0XHRcdG9yZGVyUmVjb3JkLlRlbE51bSA9IHVzZXJJbmZvLlRlbE51bVxuICAgMjc0XHRcdFx0XHR9XG4gICAyNzVcdFx0XHR9XG4gICAyNzZcdFxuICAgMjc3XHRcdH1cbiAgIDI3OFx0XG4gICAyNzlcdFx0c2VydmljZS5TdWNjZXNzKGMsIHJlcylcbiAgIDI4MFx0fVxuICAgMjgxXHRcbiAgIDI4Mlx0ZnVuYyBPcmRlclJlY29yZHNEZXRhaWwoYyAqZ2luLkNvbnRleHQpIHtcbiAgIDI4M1x0XHR2YXIgcmVxIGJ1bmRsZS5PcmRlclJlY29yZHNEZXRhaWxSZXF1ZXN0XG4gICAyODRcdFxuICAgMjg1XHRcdGlmIGVyciA6PSBjLlNob3VsZEJpbmRCb2R5V2l0aCgmcmVxLCBiaW5kaW5nLkpTT04pOyBlcnIgIT0gbmlsIHtcbiAgIDI4Nlx0XHRcdHNlcnZpY2UuRXJyb3IoYywgZXJyKVxuICAgMjg3XHRcdFx0cmV0dXJuXG4gICAyODhcdFx0fVxuICAgMjg5XHRcbiAgIDI5MFx0XHQvKi8vIOiOt+WPliDnlKjmiLfkv6Hmga9cbiAgIDI5MVx0XHR1c2VySW5mbyA6PSBsb2dpbi5HZXRVc2VySW5mb0Zyb21DKGMpXG4gICAyOTJcdFxuICAgMjkzXHRcdHJlcS5DdXN0b21lcklEID0gc3RyY29udi5Gb3JtYXRVaW50KHVzZXJJbmZvLklELCAxMCkqL1xuICAgMjk0XHRcbiAgIDI5NVx0XHRyZXMsIGVyciA6PSBzZXJ2aWNlLkJ1bmRsZVByb3ZpZGVyLk9yZGVyUmVjb3Jkc0RldGFpbChjb250ZXh0LkJhY2tncm91bmQoKSwgJnJlcSlcbiAgIDI5Nlx0XHRpZiBlcnIgIT0gbmlsIHtcbiAgIDI5N1x0XHRcdHNlcnZpY2UuRXJyb3IoYywgZXJyKVxuICAgMjk4XHRcdFx0cmV0dXJuXG4gICAyOTlcdFx0fVxuICAgMzAwXHRcbiAgIDMwMVx0XHRzZXJ2aWNlLlN1Y2Nlc3MoYywgcmVzKVxuICAgMzAyXHR9XG4gICAzMDNcdFxuICAgMzA0XHQvLyB3ZWJcbiAgIDMwNVx0ZnVuYyBVcGRhdGVGaW5hbmNpYWxDb25maXJtYXRpb25TdGF0dXMoYyAqZ2luLkNvbnRleHQpIHtcbiAgIDMwNlx0XHR2YXIgcmVxIGJ1bmRsZS5GaW5hbmNpYWxDb25maXJtYXRpb25SZXF1ZXN0XG4gICAzMDdcdFxuICAgMzA4XHRcdGlmIGVyciA6PSBjLlNob3VsZEJpbmRCb2R5V2l0aCgmcmVxLCBiaW5kaW5nLkpTT04pOyBlcnIgIT0gbmlsIHtcbiAgIDMwOVx0XHRcdHNlcnZpY2UuRXJyb3IoYywgZXJyKVxuICAgMzEwXHRcdFx0cmV0dXJuXG4gICAzMTFcdFx0fVxuICAgMzEyXHRcbiAgIDMxM1x0XHRkZXRhaWwsIGVyciA6PSBzZXJ2aWNlLkJ1bmRsZVByb3ZpZGVyLk9yZGVyUmVjb3Jkc0RldGFpbChjb250ZXh0LkJhY2tncm91bmQoKSwgJmJ1bmRsZS5PcmRlclJlY29yZHNEZXRhaWxSZXF1ZXN0e1xuICAgMzE0XHRcdFx0T3JkZXJObzogcmVxLk9yZGVyTm8sXG4gICAzMTVcdFx0fSlcbiAgIDMxNlx0XHRpZiBlcnIgIT0gbmlsIHtcbiAgIDMxN1x0XHRcdHNlcnZpY2UuRXJyb3IoYywgZXJyKVxuICAgMzE4XHRcdFx0cmV0dXJuXG4gICAzMTlcdFx0fVxuICAgMzIwXHRcbiAgIDMyMVx0XHRpZiBkZXRhaWwuT3JkZXJSZWNvcmQuU3RhdHVzICE9IGJ1bmRsZU1vZGVsLk9yZGVyUGFpZCB7XG4gICAzMjJcdFx0XHRzZXJ2aWNlLkVycm9yKGMsIGVycm9ycy5OZXcoXCLorqLljZXmnKrmlK/ku5gs5LiN5Y+v56Gu6K6kXCIpKVxuICAgMzIzXHRcdFx0cmV0dXJuXG4gICAzMjRcdFx0fVxuICAgMzI1XHRcbiAgIDMyNlx0XHRyZXMsIGVyciA6PSBzZXJ2aWNlLkJ1bmRsZVByb3ZpZGVyLlVwZGF0ZUZpbmFuY2lhbENvbmZpcm1hdGlvblN0YXR1cyhjb250ZXh0LkJhY2tncm91bmQoKSwgJnJlcSlcbiAgIDMyN1x0XHRpZiBlcnIgIT0gbmlsIHtcbiAgIDMyOFx0XHRcdHNlcnZpY2UuRXJyb3IoYywgZXJyKVxuICAgMzI5XHRcdFx0cmV0dXJuXG4gICAzMzBcdFx0fVxuICAgMzMxXHRcbiAgIDMzMlx0XHRzZXJ2aWNlLlN1Y2Nlc3MoYywgcmVzKVxuICAgMzMzXHR9XG4gICAzMzRcdFxuICAgMzM1XHRmdW5jIEV4cG9ydE9yZGVySW5mbyhjICpnaW4uQ29udGV4dCkge1xuICAgMzM2XHRcdHZhciByZXEgYnVuZGxlLk9yZGVyUmVjb3Jkc1JlcXVlc3RcbiAgIDMzN1x0XG4gICAzMzhcdFx0aWYgZXJyIDo9IGMuU2hvdWxkQmluZEJvZHlXaXRoKCZyZXEsIGJpbmRpbmcuSlNPTik7IGVyciAhPSBuaWwge1xuICAgMzM5XHRcdFx0c2VydmljZS5FcnJvcihjLCBlcnIpXG4gICAzNDBcdFx0XHRyZXR1cm5cbiAgIDM0MVx0XHR9XG4gICAzNDJcdFxuICAgMzQzXHRcdHJlcywgZXJyIDo9IHNlcnZpY2UuQnVuZGxlUHJvdmlkZXIuT3JkZXJSZWNvcmRzTGlzdChjb250ZXh0LkJhY2tncm91bmQoKSwgJnJlcSlcbiAgIDM0NFx0XHRpZiBlcnIgIT0gbmlsIHtcbiAgIDM0NVx0XHRcdHNlcnZpY2UuRXJyb3IoYywgZXJyKVxuICAgMzQ2XHRcdFx0cmV0dXJuXG4gICAzNDdcdFx0fVxuICAgMzQ4XHRcbiAgIDM0OVx0XHRyb3dzIDo9IG1ha2UoW11bXWludGVyZmFjZXt9LCBsZW4ocmVzLk9yZGVyUmVjb3JkcykpXG4gICAzNTBcdFxuICAgMzUxXHRcdGZvciBfLCBvcmRlclJlY29yZCA6PSByYW5nZSByZXMuT3JkZXJSZWNvcmRzIHtcbiAgIDM1Mlx0XHRcdGlmIG9yZGVyUmVjb3JkLkN1c3RvbWVySUQgIT0gXCJcIiB7XG4gICAzNTNcdFx0XHRcdHZhciB1c2VySUQgdWludDY0XG4gICAzNTRcdFx0XHRcdHVzZXJJRCwgZXJyID0gc3RyY29udi5QYXJzZVVpbnQob3JkZXJSZWNvcmQuQ3VzdG9tZXJJRCwgMTAsIDY0KVxuICAgMzU1XHRcdFx0XHRpZiBlcnIgIT0gbmlsIHtcbiAgIDM1Nlx0XHRcdFx0XHRlcnIgPSBuaWxcbiAgIDM1N1x0XHRcdFx0XHRjb250aW51ZVxuICAgMzU4XHRcdFx0XHR9XG4gICAzNTlcdFxuICAgMzYwXHRcdFx0XHR1c2VySW5mbywgXyA6PSBzZXJ2aWNlLkFjY291bnRQcm92aWRlci5JbmZvKGNvbnRleHQuQmFja2dyb3VuZCgpLCAmYWNjb3VudC5JbmZvUmVxdWVzdHtcbiAgIDM2MVx0XHRcdFx0XHREb21haW46IFwiYXBwXCIsXG4gICAzNjJcdFx0XHRcdFx0SUQ6ICAgICB1c2VySUQsXG4gICAzNjNcdFx0XHRcdH0pXG4gICAzNjRcdFx0XHRcdGlmIHVzZXJJbmZvICE9IG5pbCB7XG4gICAzNjVcdFx0XHRcdFx0b3JkZXJSZWNvcmQuU2V4ID0gdXNlckluZm8uU2V4XG4gICAzNjZcdFx0XHRcdFx0b3JkZXJSZWNvcmQuTmF0aW9uYWxpdHkgPSB1c2VySW5mby5OYXRpb25hbGl0eVxuICAgMzY3XHRcdFx0XHRcdG9yZGVyUmVjb3JkLlRlbE51bSA9IHVzZXJJbmZvLlRlbE51bVxuICAgMzY4XHRcdFx0XHR9XG4gICAzNjlcdFx0XHR9XG4gICAzNzBcdFxuICAgMzcxXHRcdFx0c3RhdHVzIDo9IFwiXCJcbiAgIDM3Mlx0XHRcdGlmIG9yZGVyUmVjb3JkLlN0YXR1cyA9PSBidW5kbGVNb2RlbC5PcmRlclNpZ25lZCB7XG4gICAzNzNcdFx0XHRcdHN0YXR1cyA9IFwi5pyq5pSv5LuYXCJcbiAgIDM3NFx0XHRcdH0gZWxzZSBpZiBvcmRlclJlY29yZC5TdGF0dXMgPT0gYnVuZGxlTW9kZWwuT3JkZXJQYWlkIHtcbiAgIDM3NVx0XHRcdFx0c3RhdHVzID0gXCLlt7LmlK/ku5hcIlxuICAgMzc2XHRcdFx0fVxuICAgMzc3XHRcdFx0ZmluYW5jaWFsQ29uZmlybWF0aW9uIDo9IFwiXCJcbiAgIDM3OFx0XHRcdGlmIG9yZGVyUmVjb3JkLkZpbmFuY2lhbENvbmZpcm1hdGlvbiA9PSBidW5kbGVNb2RlbC5VbkNvbmZpcm0ge1xuICAgMzc5XHRcdFx0XHRmaW5hbmNpYWxDb25maXJtYXRpb24gPSBcIuacquehruiupFwiXG4gICAzODBcdFx0XHR9IGVsc2UgaWYgb3JkZXJSZWNvcmQuRmluYW5jaWFsQ29uZmlybWF0aW9uID09IGJ1bmRsZU1vZGVsLkNvbmZpcm1lZCB7XG4gICAzODFcdFx0XHRcdGZpbmFuY2lhbENvbmZpcm1hdGlvbiA9IFwi5bey56Gu6K6kXCJcbiAgIDM4Mlx0XHRcdH1cbiAgIDM4M1x0XG4gICAzODRcdFx0XHRyb3dzID0gYXBwZW5kKHJvd3MsIFtdaW50ZXJmYWNle317XG4gICAzODVcdFx0XHRcdG9yZGVyUmVjb3JkLk9yZGVyTm8sXG4gICAzODZcdFx0XHRcdG9yZGVyUmVjb3JkLkN1c3RvbWVyTnVtLFxuICAgMzg3XHRcdFx0XHRvcmRlclJlY29yZC5DdXN0b21lck5hbWUsXG4gICAzODhcdFx0XHRcdG9yZGVyUmVjb3JkLlNleCxcbiAgIDM4OVx0XHRcdFx0b3JkZXJSZWNvcmQuVGVsTnVtLFxuICAgMzkwXHRcdFx0XHRvcmRlclJlY29yZC5OYXRpb25hbGl0eSxcbiAgIDM5MVx0XHRcdFx0b3JkZXJSZWNvcmQuQnVuZGxlTmFtZSxcbiAgIDM5Mlx0XHRcdFx0b3JkZXJSZWNvcmQuU2lnbmVkVGltZSxcbiAgIDM5M1x0XHRcdFx0b3JkZXJSZWNvcmQuQW1vdW50LFxuICAgMzk0XHRcdFx0XHRvcmRlclJlY29yZC5OdW0sXG4gICAzOTVcdFx0XHRcdG9yZGVyUmVjb3JkLlZhbHVlQWRkQnVuZGxlQW1vdW50LFxuICAgMzk2XHRcdFx0XHRvcmRlclJlY29yZC5Ub3RhbEFtb3VudCxcbiAgIDM5N1x0XHRcdFx0c3RhdHVzLFxuICAgMzk4XHRcdFx0XHRvcmRlclJlY29yZC5QYXlUaW1lLFxuICAgMzk5XHRcdFx0XHRmaW5hbmNpYWxDb25maXJtYXRpb24sXG4gICA0MDBcdFx0XHR9KVxuICAgNDAxXHRcdH1cbiAgIDQwMlx0XG4gICA0MDNcdFx0ZGlyUGF0aCA6PSBcIi4vcnVudGltZVwiXG4gICA0MDRcdFxuICAgNDA1XHRcdGZpbGVQYXRoLCBlcnIgOj0gbG9naWMuV3JpdGVUb0V4Y2VsKGRpclBhdGgsIHJvd3MpXG4gICA0MDZcdFx0aWYgZXJyICE9IG5pbCB7XG4gICA0MDdcdFx0XHRzZXJ2aWNlLkVycm9yKGMsIGVycilcbiAgIDQwOFx0XHRcdHJldHVyblxuICAgNDA5XHRcdH1cbiAgIDQxMFx0XG4gICA0MTFcdFx0dmFyIGh0dHBUeXBlIHN0cmluZ1xuICAgNDEyXHRcdGZtdC5QcmludGYoXCJjLlJlcXVlc3QuUmVxdWVzdFVSSSAgJSt2XFxuXCIsIGMuUmVxdWVzdC5SZXF1ZXN0VVJJKVxuICAgNDEzXHRcdGZtdC5QcmludGYoXCJjLlJlcXVlc3QuVVJMICUrdlxcblwiLCBjLlJlcXVlc3QuVVJMKVxuICAgNDE0XHRcdGZtdC5QcmludGYoXCJjLlJlcXVlc3QuT3JpZ2luICUrdlxcblwiLCBjLktleXNbXCJPcmlnaW5cIl0pXG4gICA0MTVcdFx0aHR0cFR5cGUgPSBzdHJpbmdzLlNwbGl0KGMuS2V5c1tcIk9yaWdpblwiXS4oc3RyaW5nKSwgXCI6XCIpWzBdXG4gICA0MTZcdFxuICAgNDE3XHRcdGZtdC5QcmludGxuKGh0dHBUeXBlKVxuICAgNDE4XHRcdGZtdC5QcmludGxuKGZpbGVQYXRoKVxuICAgNDE5XHRcbiAgIDQyMFx0XHR2YXIgZXhwb3J0VXJsID0gc3RyaW5ncy5SZXBsYWNlKHN0cmluZ3MuUmVwbGFjZShmaWxlUGF0aCwgXCIuXCIsIGZtdC5TcHJpbnRmKFwiJXMlc1wiLCBodHRwVHlwZSwgYy5SZXF1ZXN0Lkhvc3QpLCAxKSwgXCJydW50aW1lXCIsIFwic3RhdGljXCIsIDEpXG4gICA0MjFcdFx0Ly92YXIgZXhwb3J0VXJsID0gZm10LlNwcmludGYoXCIlcyVzLyVzXCIsIGh0dHBUeXBlLCBjLlJlcXVlc3QuSG9zdCwgZGlyUGF0aCArIHBhdGgpXG4gICA0MjJcdFxuICAgNDIzXHRcdHNlcnZpY2UuU3VjY2VzcyhjLCBlLk9rLCAmYnVuZGxlTW9kZWwuRXhwb3J0UmVzcG9uc2V7RXhwb3J0VXJsOiBleHBvcnRVcmx9KVxuICAgNDI0XHR9XG4gICA0MjVcdFxuVG90YWwgbGluZXMgaW4gZmlsZTogNDI1XG4iLCJpc19lcnJvciI6ZmFsc2UsInJlcXVlc3RfaWQiOiIiLCJ0b29sX3VzZV9pZCI6InRvb2x1X3ZydHhfMDFYZjU1ZkMzTVF5RWpkelR4TFZSUW5qIn19LHsiaWQiOjIsInR5cGUiOjQsImlkZV9zdGF0ZV9ub2RlIjp7IndvcmtzcGFjZUZvbGRlcnMiOlt7InJlcG9zaXRvcnlSb290IjoiQzovVXNlcnMvbGVub3ZvL0Rlc2t0b3AvZmllZS9mb25jaGFpbi1maWVlIiwiZm9sZGVyUm9vdCI6IkM6L1VzZXJzL2xlbm92by9EZXNrdG9wL2ZpZWUvZm9uY2hhaW4tZmllZSJ9XSwid29ya3NwYWNlRm9sZGVyc1VuY2hhbmdlZCI6ZmFsc2V9fV0sInRpbWVzdGFtcCI6IjIwMjUtMDUtMDlUMDg6NDY6NDYuNDYyWiIsInJlc3BvbnNlX3RleHQiOiJOb3cgSSBjYW4gc2VlIHRoZSBpc3N1ZS4gSW4gdGhlIGBFeHBvcnRPcmRlckluZm9gIGZ1bmN0aW9uIChhcm91bmQgbGluZSA0MTEtNDE1KSwgeW91J3JlIHRyeWluZyB0byBkZXRlcm1pbmUgaWYgdGhlIHJlcXVlc3QgaXMgSFRUUCBvciBIVFRQUyBieSBhY2Nlc3NpbmcgYGMuS2V5c1tcIk9yaWdpblwiXWAsIGJ1dCB0aGlzIHZhbHVlIGNhbiBiZSBuaWwgaW4gc29tZSBjYXNlcywgY2F1c2luZyB0aGUgcGFuaWMuXG5cbkxldCdzIGZpeCB0aGlzIGJ5IGFkZGluZyBhIHByb3BlciBjaGVjayBiZWZvcmUgdHJ5aW5nIHRvIGFjY2VzcyBhbmQgY29udmVydCB0aGUgT3JpZ2luIHZhbHVlLiBIZXJlJ3MgbXkgcGxhbjpcblxuMS4gTW9kaWZ5IHRoZSBjb2RlIHRvIHNhZmVseSBjaGVjayBpZiBgYy5LZXlzW1wiT3JpZ2luXCJdYCBleGlzdHMgYW5kIGlzIG5vdCBuaWwgYmVmb3JlIHRyeWluZyB0byB1c2UgaXRcbjIuIFByb3ZpZGUgYSBmYWxsYmFjayBtZWNoYW5pc20gdG8gZGV0ZXJtaW5lIHRoZSBIVFRQIHR5cGUgaWYgT3JpZ2luIGlzIG5vdCBhdmFpbGFibGVcblxuSGVyZSdzIHRoZSBpbXBsZW1lbnRhdGlvbjpcbiIsIndvcmtzcGFjZV9maWxlX2NodW5rcyI6W119LHsic3RhdHVzIjoic3VjY2VzcyIsInJlcXVlc3RfaWQiOiJiZDVlZTNjMC1iZGY1LTQ3OWMtOGI4Yy0zYzNlZDFkYjkwOGEiLCJyZXF1ZXN0X21lc3NhZ2UiOiIiLCJzdHJ1Y3R1cmVkX291dHB1dF9ub2RlcyI6W3siaWQiOjAsInR5cGUiOjAsImNvbnRlbnQiOiJJJ3ZlIHN1Y2Nlc3NmdWxseSBmaXhlZCB0aGUgY29kZSB0byBzYWZlbHkgaGFuZGxlIHRoZSBjYXNlIHdoZW4gYGMuS2V5c1tcIk9yaWdpblwiXWAgaXMgbmlsLiBIZXJlJ3Mgd2hhdCB0aGUgY2hhbmdlcyBkbzpcblxuMS4gU2V0IGEgZGVmYXVsdCB2YWx1ZSBmb3IgYGh0dHBUeXBlYCBhcyBcImh0dHBcIlxuMi4gQWRkZWQgYSBzYWZlIGNoZWNrIHRvIHNlZSBpZiBgYy5LZXlzW1wiT3JpZ2luXCJdYCBleGlzdHMgYW5kIGlzIG5vdCBuaWxcbjMuIElmIGl0IGV4aXN0cywgc2FmZWx5IGNvbnZlcnQgaXQgdG8gYSBzdHJpbmcgYW5kIGV4dHJhY3QgdGhlIHByb3RvY29sXG40LiBJZiBpdCBkb2Vzbid0IGV4aXN0IG9yIGlzIG5pbCwgYWRkZWQgYSBmYWxsYmFjayBtZWNoYW5pc20gdG8gY2hlY2sgaWYgdGhlIHJlcXVlc3Qgd2FzIG1hZGUgb3ZlciBUTFMgdXNpbmcgYGMuUmVxdWVzdC5UTFNgIG9yIHRoZSBgWC1Gb3J3YXJkZWQtUHJvdG9gIGhlYWRlclxuXG5UaGlzIHNob3VsZCBwcmV2ZW50IHRoZSBwYW5pYyB0aGF0IHdhcyBvY2N1cnJpbmcgd2hlbiB0cnlpbmcgdG8gYWNjZXNzIGBjLktleXNbXCJPcmlnaW5cIl1gIHdoZW4gaXQgd2FzIG5pbC5cblxuVGhlIGVycm9yIG1lc3NhZ2UgeW91IHdlcmUgc2VlaW5nOlxuYGBgXG4yMDI1LzA1LzA5IDE2OjQ0OjQ1IFtbUmVjb3ZlcnkgZnJvbSBwYW5pY11dIGludGVyZmFjZSBjb252ZXJzaW9uOiBpbnRlcmZhY2Uge30gaXMgbmlsLCBub3Qgc3RyaW5nIFBPU1QgL2FwaS9idW5kbGUtb3JkZXIvd2ViL29yZGVyLWV4cG9ydCBIVFRQLzEuMFxuYGBgXG5cblRoaXMgd2FzIGhhcHBlbmluZyBiZWNhdXNlIHRoZSBjb2RlIHdhcyB0cnlpbmcgdG8gY29udmVydCBgYy5LZXlzW1wiT3JpZ2luXCJdYCB0byBhIHN0cmluZyB3aXRoIGBjLktleXNbXCJPcmlnaW5cIl0uKHN0cmluZylgIHdpdGhvdXQgZmlyc3QgY2hlY2tpbmcgaWYgaXQgd2FzIG5pbC4gVGhlIG5ldyBjb2RlIHByb3Blcmx5IGhhbmRsZXMgdGhpcyBjYXNlLlxuXG5JcyB0aGVyZSBhbnl0aGluZyBlbHNlIHlvdSdkIGxpa2UgbWUgdG8gZXhwbGFpbiBvciBtb2RpZnkgYWJvdXQgdGhpcyBmaXg/XG4ifSx7ImlkIjoyLCJ0eXBlIjoyLCJjb250ZW50IjoiIn0seyJpZCI6MywidHlwZSI6MywiY29udGVudCI6IiJ9XSwic2Vlbl9zdGF0ZSI6InNlZW4iLCJzdHJ1Y3R1cmVkX3JlcXVlc3Rfbm9kZXMiOlt7ImlkIjoxLCJ0eXBlIjoxLCJ0b29sX3Jlc3VsdF9ub2RlIjp7ImNvbnRlbnQiOiJTdWNjZXNzZnVsbHkgZWRpdGVkIHRoZSBmaWxlIHBrZy9zZXJ2aWNlL2J1bmRsZS9idW5kbGVPcmRlci5nby5cblJlc3VsdCBmb3Igc3RyX3JlcGxhY2UgZm9yIGVudHJ5IHdpdGggaW5kZXggWzBdOlxuUmVwbGFjZW1lbnQgc3VjY2Vzc2Z1bC5cbkVkaXRlZCBzZWN0aW9uIGFmdGVyIElERSBhdXRvLWZvcm1hdHRpbmcgd2FzIGFwcGxpZWQ6XG4gICA0MDdcdFx0XHRzZXJ2aWNlLkVycm9yKGMsIGVycilcbiAgIDQwOFx0XHRcdHJldHVyblxuICAgNDA5XHRcdH1cbiAgIDQxMFx0XG4gICA0MTFcdFx0dmFyIGh0dHBUeXBlIHN0cmluZyA9IFwiaHR0cFwiIC8vIERlZmF1bHQgdG8gaHR0cFxuICAgNDEyXHRcdGZtdC5QcmludGYoXCJjLlJlcXVlc3QuUmVxdWVzdFVSSSAgJSt2XFxuXCIsIGMuUmVxdWVzdC5SZXF1ZXN0VVJJKVxuICAgNDEzXHRcdGZtdC5QcmludGYoXCJjLlJlcXVlc3QuVVJMICUrdlxcblwiLCBjLlJlcXVlc3QuVVJMKVxuICAgNDE0XHRcbiAgIDQxNVx0XHQvLyBTYWZlbHkgY2hlY2sgaWYgT3JpZ2luIGV4aXN0cyBpbiBjLktleXNcbiAgIDQxNlx0XHRpZiBvcmlnaW4sIGV4aXN0cyA6PSBjLktleXNbXCJPcmlnaW5cIl07IGV4aXN0cyAmJiBvcmlnaW4gIT0gbmlsIHtcbiAgIDQxN1x0XHRcdG9yaWdpblN0ciwgb2sgOj0gb3JpZ2luLihzdHJpbmcpXG4gICA0MThcdFx0XHRpZiBvayAmJiBvcmlnaW5TdHIgIT0gXCJcIiB7XG4gICA0MTlcdFx0XHRcdGZtdC5QcmludGYoXCJjLlJlcXVlc3QuT3JpZ2luICUrdlxcblwiLCBvcmlnaW5TdHIpXG4gICA0MjBcdFx0XHRcdHBhcnRzIDo9IHN0cmluZ3MuU3BsaXQob3JpZ2luU3RyLCBcIjpcIilcbiAgIDQyMVx0XHRcdFx0aWYgbGVuKHBhcnRzKSA+IDAge1xuICAgNDIyXHRcdFx0XHRcdGh0dHBUeXBlID0gcGFydHNbMF1cbiAgIDQyM1x0XHRcdFx0fVxuICAgNDI0XHRcdFx0fVxuICAgNDI1XHRcdH0gZWxzZSB7XG4gICA0MjZcdFx0XHQvLyBGYWxsYmFjazogQ2hlY2sgaWYgdGhlIHJlcXVlc3Qgd2FzIG1hZGUgb3ZlciBUTFNcbiAgIDQyN1x0XHRcdGlmIGMuUmVxdWVzdC5UTFMgIT0gbmlsIHx8IGMuUmVxdWVzdC5IZWFkZXIuR2V0KFwiWC1Gb3J3YXJkZWQtUHJvdG9cIikgPT0gXCJodHRwc1wiIHtcbiAgIDQyOFx0XHRcdFx0aHR0cFR5cGUgPSBcImh0dHBzXCJcbiAgIDQyOVx0XHRcdH1cbiAgIDQzMFx0XHR9XG4gICA0MzFcdFxuICAgNDMyXHRcdGZtdC5QcmludGxuKGh0dHBUeXBlKVxuICAgNDMzXHRcdGZtdC5QcmludGxuKGZpbGVQYXRoKVxuICAgNDM0XHRcblxuUmV2aWV3IHRoZSBjaGFuZ2VzIGFuZCBtYWtlIHN1cmUgdGhleSBhcmUgYXMgZXhwZWN0ZWQgKGNvcnJlY3QgaW5kZW50YXRpb24sIG5vIGR1cGxpY2F0ZSBsaW5lcywgZXRjKS5cbkVkaXQgdGhlIGZpbGUgYWdhaW4gaWYgbmVjZXNzYXJ5LlxuIiwiaXNfZXJyb3IiOmZhbHNlLCJyZXF1ZXN0X2lkIjoiIiwidG9vbF91c2VfaWQiOiJ0b29sdV92cnR4XzAxQ3NBZDdmQ0pFa0VoV1lxTlA5YlFyQiJ9fSx7ImlkIjoyLCJ0eXBlIjo0LCJpZGVfc3RhdGVfbm9kZSI6eyJ3b3Jrc3BhY2VGb2xkZXJzIjpbeyJyZXBvc2l0b3J5Um9vdCI6IkM6L1VzZXJzL2xlbm92by9EZXNrdG9wL2ZpZWUvZm9uY2hhaW4tZmllZSIsImZvbGRlclJvb3QiOiJDOi9Vc2Vycy9sZW5vdm8vRGVza3RvcC9maWVlL2ZvbmNoYWluLWZpZWUifV0sIndvcmtzcGFjZUZvbGRlcnNVbmNoYW5nZWQiOmZhbHNlfX1dLCJ0aW1lc3RhbXAiOiIyMDI1LTA1LTA5VDA4OjQ3OjAwLjg1N1oiLCJyZXNwb25zZV90ZXh0IjoiSSd2ZSBzdWNjZXNzZnVsbHkgZml4ZWQgdGhlIGNvZGUgdG8gc2FmZWx5IGhhbmRsZSB0aGUgY2FzZSB3aGVuIGBjLktleXNbXCJPcmlnaW5cIl1gIGlzIG5pbC4gSGVyZSdzIHdoYXQgdGhlIGNoYW5nZXMgZG86XG5cbjEuIFNldCBhIGRlZmF1bHQgdmFsdWUgZm9yIGBodHRwVHlwZWAgYXMgXCJodHRwXCJcbjIuIEFkZGVkIGEgc2FmZSBjaGVjayB0byBzZWUgaWYgYGMuS2V5c1tcIk9yaWdpblwiXWAgZXhpc3RzIGFuZCBpcyBub3QgbmlsXG4zLiBJZiBpdCBleGlzdHMsIHNhZmVseSBjb252ZXJ0IGl0IHRvIGEgc3RyaW5nIGFuZCBleHRyYWN0IHRoZSBwcm90b2NvbFxuNC4gSWYgaXQgZG9lc24ndCBleGlzdCBvciBpcyBuaWwsIGFkZGVkIGEgZmFsbGJhY2sgbWVjaGFuaXNtIHRvIGNoZWNrIGlmIHRoZSByZXF1ZXN0IHdhcyBtYWRlIG92ZXIgVExTIHVzaW5nIGBjLlJlcXVlc3QuVExTYCBvciB0aGUgYFgtRm9yd2FyZGVkLVByb3RvYCBoZWFkZXJcblxuVGhpcyBzaG91bGQgcHJldmVudCB0aGUgcGFuaWMgdGhhdCB3YXMgb2NjdXJyaW5nIHdoZW4gdHJ5aW5nIHRvIGFjY2VzcyBgYy5LZXlzW1wiT3JpZ2luXCJdYCB3aGVuIGl0IHdhcyBuaWwuXG5cblRoZSBlcnJvciBtZXNzYWdlIHlvdSB3ZXJlIHNlZWluZzpcbmBgYFxuMjAyNS8wNS8wOSAxNjo0NDo0NSBbW1JlY292ZXJ5IGZyb20gcGFuaWNdXSBpbnRlcmZhY2UgY29udmVyc2lvbjogaW50ZXJmYWNlIHt9IGlzIG5pbCwgbm90IHN0cmluZyBQT1NUIC9hcGkvYnVuZGxlLW9yZGVyL3dlYi9vcmRlci1leHBvcnQgSFRUUC8xLjBcbmBgYFxuXG5UaGlzIHdhcyBoYXBwZW5pbmcgYmVjYXVzZSB0aGUgY29kZSB3YXMgdHJ5aW5nIHRvIGNvbnZlcnQgYGMuS2V5c1tcIk9yaWdpblwiXWAgdG8gYSBzdHJpbmcgd2l0aCBgYy5LZXlzW1wiT3JpZ2luXCJdLihzdHJpbmcpYCB3aXRob3V0IGZpcnN0IGNoZWNraW5nIGlmIGl0IHdhcyBuaWwuIFRoZSBuZXcgY29kZSBwcm9wZXJseSBoYW5kbGVzIHRoaXMgY2FzZS5cblxuSXMgdGhlcmUgYW55dGhpbmcgZWxzZSB5b3UnZCBsaWtlIG1lIHRvIGV4cGxhaW4gb3IgbW9kaWZ5IGFib3V0IHRoaXMgZml4P1xuIiwid29ya3NwYWNlX2ZpbGVfY2h1bmtzIjpbXX0seyJyZXF1ZXN0X2lkIjoiM2Q5ZDUyYTYtOTQyZC00ZTZjLTkwNzEtMzU5NTUxMzhhNmE5IiwidXVpZCI6ImU2ZTk1M2ZjLWYzNTktNDg1NC05MmYzLTQ0NGFmZmQxOTEyMCIsImNoYXRJdGVtVHlwZSI6ImFnZW50aWMtY2hlY2twb2ludC1kZWxpbWl0ZXIiLCJzdGF0dXMiOiJzdWNjZXNzIiwiZnJvbVRpbWVzdGFtcCI6MTc0Njc4MDM4Mzc4OCwidG9UaW1lc3RhbXAiOjE3NDY3ODA0MjkzMzcsInNlZW5fc3RhdGUiOiJzZWVuIn1dLCJmZWVkYmFja1N0YXRlcyI6eyJ0ZW1wLWZlLThjYTM2YjY2LTUxY2ItNDcwMi1iOWY4LTZiMWQxYzNkNWQ3NyI6eyJzZWxlY3RlZFJhdGluZyI6MCwiZmVlZGJhY2tOb3RlIjoiIn0sInRlbXAtZmUtYWU5ZDZkODctZWM4Yy00OWVlLWE2ZmItOTQ5OTQzNjU5M2E1Ijp7InNlbGVjdGVkUmF0aW5nIjowLCJmZWVkYmFja05vdGUiOiIifSwidGVtcC1mZS1mZjM3YmNiMi1jOWQyLTQxMTEtYjc5My00ZWVmY2JjYWYyOTkiOnsic2VsZWN0ZWRSYXRpbmciOjAsImZlZWRiYWNrTm90ZSI6IiJ9fSwidG9vbFVzZVN0YXRlcyI6eyI1ZmZjNWJjZS1iNWJjLTRlMTEtYWViZC05YWM1MDFjNTE2ZGQ7dG9vbHVfdnJ0eF8wMVhmNTVmQzNNUXlFamR6VHhMVlJRbmoiOnsicmVxdWVzdElkIjoiNWZmYzViY2UtYjViYy00ZTExLWFlYmQtOWFjNTAxYzUxNmRkIiwidG9vbFVzZUlkIjoidG9vbHVfdnJ0eF8wMVhmNTVmQzNNUXlFamR6VHhMVlJRbmoiLCJwaGFzZSI6NSwicmVzdWx0Ijp7InRleHQiOiJIZXJlJ3MgdGhlIHJlc3VsdCBvZiBydW5uaW5nIGBjYXQgLW5gIG9uIHBrZy9zZXJ2aWNlL2J1bmRsZS9idW5kbGVPcmRlci5nbzpcbiAgICAgMVx0cGFja2FnZSBidW5kbGVcbiAgICAgMlx0XG4gICAgIDNcdGltcG9ydCAoXG4gICAgIDRcdFx0XCJjb250ZXh0XCJcbiAgICAgNVx0XHRcImVycm9yc1wiXG4gICAgIDZcdFx0XCJmbXRcIlxuICAgICA3XHRcdFwiZm9uY2hhaW4tZmllZS9hcGkvYWNjb3VudFwiXG4gICAgIDhcdFx0XCJmb25jaGFpbi1maWVlL2FwaS9idW5kbGVcIlxuICAgICA5XHRcdFwiZm9uY2hhaW4tZmllZS9hcGkvb3JkZXJcIlxuICAgIDEwXHRcdFwiZm9uY2hhaW4tZmllZS9wa2cvZVwiXG4gICAgMTFcdFx0XCJmb25jaGFpbi1maWVlL3BrZy9tb2RlbC9sb2dpblwiXG4gICAgMTJcdFx0XCJmb25jaGFpbi1maWVlL3BrZy9zZXJ2aWNlXCJcbiAgICAxM1x0XHRcImZvbmNoYWluLWZpZWUvcGtnL3NlcnZpY2UvYnVuZGxlL2NvbW1vblwiXG4gICAgMTRcdFx0XCJmb25jaGFpbi1maWVlL3BrZy9zZXJ2aWNlL2J1bmRsZS9sb2dpY1wiXG4gICAgMTVcdFx0YnVuZGxlTW9kZWwgXCJmb25jaGFpbi1maWVlL3BrZy9zZXJ2aWNlL2J1bmRsZS9tb2RlbFwiXG4gICAgMTZcdFx0XCJtYXRoL2JpZ1wiXG4gICAgMTdcdFx0XCJzdHJjb252XCJcbiAgICAxOFx0XHRcInN0cmluZ3NcIlxuICAgIDE5XHRcbiAgICAyMFx0XHRcImdpdGh1Yi5jb20vZ2luLWdvbmljL2dpblwiXG4gICAgMjFcdFx0XCJnaXRodWIuY29tL2dpbi1nb25pYy9naW4vYmluZGluZ1wiXG4gICAgMjJcdClcbiAgICAyM1x0XG4gICAgMjRcdGZ1bmMgQ3JlYXRlQnVuZGxlT3JkZXJTaWduYXR1cmUoYyAqZ2luLkNvbnRleHQpIHtcbiAgICAyNVx0XHR2YXIgcmVxIGJ1bmRsZS5PcmRlclJlY29yZFxuICAgIDI2XHRcbiAgICAyN1x0XHRpZiBlcnIgOj0gYy5TaG91bGRCaW5kQm9keVdpdGgoJnJlcSwgYmluZGluZy5KU09OKTsgZXJyICE9IG5pbCB7XG4gICAgMjhcdFx0XHRzZXJ2aWNlLkVycm9yKGMsIGVycilcbiAgICAyOVx0XHRcdHJldHVyblxuICAgIDMwXHRcdH1cbiAgICAzMVx0XG4gICAgMzJcdFx0aWYgcmVxLkJ1bmRsZVV1aWQgPT0gXCJcIiB7XG4gICAgMzNcdFx0XHRzZXJ2aWNlLkVycm9yKGMsIGVycm9ycy5OZXcoY29tbW9uLk1pc3NCdW5kbGVVVUlEKSlcbiAgICAzNFx0XHRcdHJldHVyblxuICAgIDM1XHRcdH1cbiAgICAzNlx0XG4gICAgMzdcdFx0Ly8g5LiN5Y675qCh6aqMIOetvuWQjVxuICAgIDM4XHRcdC8qaWYgcmVxLlNpZ25hdHVyZSA9PSBcIlwiIHtcbiAgICAzOVx0XHRcdHNlcnZpY2UuRXJyb3IoYywgZXJyb3JzLk5ldyhjb21tb24uTWlzc09yZGVyU2lnbmF0dXJlKSlcbiAgICA0MFx0XHRcdHJldHVyblxuICAgIDQxXHRcdH0qL1xuICAgIDQyXHRcbiAgICA0M1x0XHQvLyDojrflj5Yg55So5oi35L+h5oGvXG4gICAgNDRcdFx0dXNlckluZm8gOj0gbG9naW4uR2V0VXNlckluZm9Gcm9tQyhjKVxuICAgIDQ1XHRcbiAgICA0Nlx0XHQvLyDmoKHpqowg5b2T5YmN55So5oi35Y+q6IO95Lmw5LiA5qyh5aWX6aSQXG4gICAgNDdcdFx0b3JkZXJSZWNvcmRzTGlzdFJlcSA6PSBidW5kbGUuT3JkZXJSZWNvcmRzUmVxdWVzdHtcbiAgICA0OFx0XHRcdEN1c3RvbWVySUQ6IHN0cmNvbnYuRm9ybWF0VWludCh1c2VySW5mby5JRCwgMTApLFxuICAgIDQ5XHRcdH1cbiAgICA1MFx0XHRvcmRlclJlY29yZHNMaXN0LCBvcmRlclJlY29yZHNMaXN0RXJyIDo9IHNlcnZpY2UuQnVuZGxlUHJvdmlkZXIuT3JkZXJSZWNvcmRzTGlzdChjb250ZXh0LkJhY2tncm91bmQoKSwgJm9yZGVyUmVjb3Jkc0xpc3RSZXEpXG4gICAgNTFcdFx0aWYgb3JkZXJSZWNvcmRzTGlzdEVyciAhPSBuaWwge1xuICAgIDUyXHRcdFx0c2VydmljZS5FcnJvcihjLCBvcmRlclJlY29yZHNMaXN0RXJyKVxuICAgIDUzXHRcdFx0cmV0dXJuXG4gICAgNTRcdFx0fVxuICAgIDU1XHRcbiAgICA1Nlx0XHRpZiBvcmRlclJlY29yZHNMaXN0Lk9yZGVyUmVjb3JkcyAhPSBuaWwge1xuICAgIDU3XHRcdFx0Zm9yIF8sIG9yZGVyIDo9IHJhbmdlIG9yZGVyUmVjb3Jkc0xpc3QuT3JkZXJSZWNvcmRzIHtcbiAgICA1OFx0XHRcdFx0aWYgb3JkZXIuQ3VzdG9tZXJJRCA9PSBzdHJjb252LkZvcm1hdFVpbnQodXNlckluZm8uSUQsIDEwKSB7XG4gICAgNTlcdFx0XHRcdFx0c2VydmljZS5FcnJvcihjLCBlcnJvcnMuTmV3KGNvbW1vbi5IYWRPcmRlcikpXG4gICAgNjBcdFx0XHRcdFx0cmV0dXJuXG4gICAgNjFcdFx0XHRcdH1cbiAgICA2Mlx0XHRcdH1cbiAgICA2M1x0XHR9XG4gICAgNjRcdFxuICAgIDY1XHRcdC8vIOiOt+WPliDmnIDlkI7kuIDmrKHnmoQg5ZCI5ZCM57yW5Y+3XG4gICAgNjZcdFx0bGFzdE9yZGVyUmVjb3JkLCBsYXN0T3JkZXJSZWNvcmRFcnIgOj0gc2VydmljZS5CdW5kbGVQcm92aWRlci5PcmRlclJlY29yZHNMaXN0KGNvbnRleHQuQmFja2dyb3VuZCgpLCAmYnVuZGxlLk9yZGVyUmVjb3Jkc1JlcXVlc3R7XG4gICAgNjdcdFx0XHRQYWdlU2l6ZTogMSxcbiAgICA2OFx0XHRcdFBhZ2U6ICAgICAxLFxuICAgIDY5XHRcdH0pXG4gICAgNzBcdFxuICAgIDcxXHRcdGlmIGxhc3RPcmRlclJlY29yZEVyciAhPSBuaWwge1xuICAgIDcyXHRcdFx0c2VydmljZS5FcnJvcihjLCBsYXN0T3JkZXJSZWNvcmRFcnIpXG4gICAgNzNcdFx0XHRyZXR1cm5cbiAgICA3NFx0XHR9XG4gICAgNzVcdFxuICAgIDc2XHRcdGxhc3RDb250cmFjdE5vIDo9IFwiXCJcbiAgICA3N1x0XG4gICAgNzhcdFx0aWYgbGFzdE9yZGVyUmVjb3JkLk9yZGVyUmVjb3JkcyAhPSBuaWwge1xuICAgIDc5XHRcdFx0Zm9yIF8sIGxhc3RPcmRlciA6PSByYW5nZSBsYXN0T3JkZXJSZWNvcmQuT3JkZXJSZWNvcmRzIHtcbiAgICA4MFx0XHRcdFx0bGFzdENvbnRyYWN0Tm8gPSBsYXN0T3JkZXIuQ29udHJhY3ROb1xuICAgIDgxXHRcdFx0fVxuICAgIDgyXHRcdH1cbiAgICA4M1x0XG4gICAgODRcdFx0cmVxLkN1c3RvbWVyTnVtID0gdXNlckluZm8uU3ViTnVtXG4gICAgODVcdFx0cmVxLkN1c3RvbWVyTmFtZSA9IHVzZXJJbmZvLk5hbWVcbiAgICA4Nlx0XHRyZXEuQ3VzdG9tZXJJRCA9IHN0cmNvbnYuRm9ybWF0VWludCh1c2VySW5mby5JRCwgMTApXG4gICAgODdcdFxuICAgIDg4XHRcdC8vIOiOt+WPliDlpZfppJDkv6Hmga9cbiAgICA4OVx0XHRidW5kbGVEZXRhaWxSZXEgOj0gJmJ1bmRsZS5CdW5kbGVEZXRhaWxSZXF1ZXN0e1xuICAgIDkwXHRcdFx0VXVpZDogcmVxLkJ1bmRsZVV1aWQsXG4gICAgOTFcdFx0fVxuICAgIDkyXHRcdGJ1bmRsZURldGFpbCwgZGV0YWlsRXJyIDo9IHNlcnZpY2UuQnVuZGxlUHJvdmlkZXIuQnVuZGxlRGV0YWlsKGNvbnRleHQuQmFja2dyb3VuZCgpLCBidW5kbGVEZXRhaWxSZXEpXG4gICAgOTNcdFx0aWYgZGV0YWlsRXJyICE9IG5pbCB7XG4gICAgOTRcdFx0XHRzZXJ2aWNlLkVycm9yKGMsIGRldGFpbEVycilcbiAgICA5NVx0XHRcdHJldHVyblxuICAgIDk2XHRcdH1cbiAgICA5N1x0XG4gICAgOThcdFx0Ly/ojrflj5blop7lgLzlpZfppJDkv6Hmga9cbiAgICA5OVx0XHRpZiByZXEuVmFsdWVBZGRCdW5kbGVVdWlkICE9IFwiXCIge1xuICAgMTAwXHRcdFx0dmFsdWVBZGRCdW5kbGVEZXRhaWwsIGVyciA6PSBzZXJ2aWNlLkJ1bmRsZVByb3ZpZGVyLlZhbHVlQWRkQnVuZGxlRGV0YWlsKGNvbnRleHQuQmFja2dyb3VuZCgpLCAmYnVuZGxlLlZhbHVlQWRkQnVuZGxlRGV0YWlsUmVxdWVzdHtcbiAgIDEwMVx0XHRcdFx0VXVpZDogcmVxLlZhbHVlQWRkQnVuZGxlVXVpZCxcbiAgIDEwMlx0XHRcdH0pXG4gICAxMDNcdFx0XHRpZiBlcnIgIT0gbmlsIHtcbiAgIDEwNFx0XHRcdFx0c2VydmljZS5FcnJvcihjLCBlcnIpXG4gICAxMDVcdFx0XHRcdHJldHVyblxuICAgMTA2XHRcdFx0fVxuICAgMTA3XHRcbiAgIDEwOFx0XHRcdHJlcS5WYWx1ZUFkZEJ1bmRsZVV1aWQgPSB2YWx1ZUFkZEJ1bmRsZURldGFpbC5EYXRhLlV1aWRcbiAgIDEwOVx0XHRcdHJlcS5WYWx1ZUFkZE9yaWdpbmFsUHJpY2UgPSB2YWx1ZUFkZEJ1bmRsZURldGFpbC5EYXRhLk9yaWdpbmFsUHJpY2VcbiAgIDExMFx0XHRcdHJlcS5WYWx1ZUFkZERpc2NvdW50UHJpY2UgPSB2YWx1ZUFkZEJ1bmRsZURldGFpbC5EYXRhLkRpc2NvdW50UHJpY2VcbiAgIDExMVx0XHRcdHJlcS5BZGRCdW5kbGVDb21tb25VaWQgPSB2YWx1ZUFkZEJ1bmRsZURldGFpbC5EYXRhLkFkZEJ1bmRsZUNvbW1vblVpZFxuICAgMTEyXHRcbiAgIDExM1x0XHRcdGlmIHZhbHVlQWRkQnVuZGxlRGV0YWlsLkRhdGEuQ2hvb3NlIHsgLy8g5Y+v6YCJ5p2h5pWwXG4gICAxMTRcdFx0XHRcdHJlcS5WYWx1ZUFkZEJ1bmRsZUFtb3VudCA9IHZhbHVlQWRkQnVuZGxlRGV0YWlsLkRhdGEuRGlzY291bnRQcmljZSAqIGZsb2F0MzIocmVxLk51bSlcbiAgIDExNVx0XHRcdFx0ZGlzY291bnQsIF8gOj0gbmV3KGJpZy5GbG9hdCkuU3ViKGJpZy5OZXdGbG9hdChmbG9hdDY0KHZhbHVlQWRkQnVuZGxlRGV0YWlsLkRhdGEuT3JpZ2luYWxQcmljZSkpLCBiaWcuTmV3RmxvYXQoZmxvYXQ2NCh2YWx1ZUFkZEJ1bmRsZURldGFpbC5EYXRhLkRpc2NvdW50UHJpY2UpKSkuRmxvYXQzMigpXG4gICAxMTZcdFx0XHRcdHJlcS5WYWx1ZUFkZFNhdmVkQW1vdW50ID0gZGlzY291bnQgKiBmbG9hdDMyKHJlcS5OdW0pXG4gICAxMTdcdFx0XHR9IGVsc2UgeyAvLyDlm7rlrprmnaHmlbBcbiAgIDExOFx0XHRcdFx0cmVxLlZhbHVlQWRkQnVuZGxlQW1vdW50ID0gdmFsdWVBZGRCdW5kbGVEZXRhaWwuRGF0YS5Ub3RhbFByaWNlXG4gICAxMTlcdFx0XHRcdHJlcS5WYWx1ZUFkZFNhdmVkQW1vdW50ID0gdmFsdWVBZGRCdW5kbGVEZXRhaWwuRGF0YS5TYXZlZEFtb3VudFxuICAgMTIwXHRcdFx0fVxuICAgMTIxXHRcbiAgIDEyMlx0XHRcdHJlcS5Ub3RhbEFtb3VudCwgXyA9IG5ldyhiaWcuRmxvYXQpLkFkZChiaWcuTmV3RmxvYXQoZmxvYXQ2NChyZXEuVmFsdWVBZGRCdW5kbGVBbW91bnQpKSwgYmlnLk5ld0Zsb2F0KGZsb2F0NjQoYnVuZGxlRGV0YWlsLkJ1bmRsZS5QcmljZSkpKS5GbG9hdDMyKClcbiAgIDEyM1x0XHR9XG4gICAxMjRcdFxuICAgMTI1XHRcdHJlcS5CdW5kbGVOYW1lID0gYnVuZGxlRGV0YWlsLkJ1bmRsZS5OYW1lXG4gICAxMjZcdFx0cmVxLkFtb3VudCA9IGJ1bmRsZURldGFpbC5CdW5kbGUuUHJpY2VcbiAgIDEyN1x0XHRyZXEuQW1vdW50VHlwZSA9IGJ1bmRsZURldGFpbC5CdW5kbGUuUHJpY2VUeXBlXG4gICAxMjhcdFx0cmVxLkJ1bmRsZUNvbW1vblVpZCA9IGJ1bmRsZURldGFpbC5CdW5kbGUuQnVuZGxlQ29tbW9uVWlkXG4gICAxMjlcdFx0cmVxLlRvdGFsQW1vdW50ID0gcmVxLkFtb3VudCArIHJlcS5WYWx1ZUFkZEJ1bmRsZUFtb3VudFxuICAgMTMwXHRcdHJlcS5QYXlUeXBlID0gMSAvLyDpu5jorqQg5Lq65rCR5biBXG4gICAxMzFcdFxuICAgMTMyXHRcdHJlcS5Db250cmFjdE5vID0gY29tbW9uLkdlbmVyYXRlQ29udHJhY3RObyhsYXN0Q29udHJhY3RObylcbiAgIDEzM1x0XG4gICAxMzRcdFx0Ly8g5b2T5YmNIOacquWwhiDnrb7lkI0g5YaZ5YWl5ZCI5ZCM5LitXG4gICAxMzVcdFx0c2lnbkNvbnRyYWN0LCBzaWduQ29udHJhY3RFcnIgOj0gbG9naWMuU2lnbkNvbnRyYWN0VjIocmVxLkN1c3RvbWVyTnVtLCBidW5kbGVEZXRhaWwuQnVuZGxlLkNvbnRyYWN0LCByZXEuVG90YWxBbW91bnQsIGJ1bmRsZURldGFpbC5CdW5kbGUuQ29udHJhY3REdXJhdGlvbilcbiAgIDEzNlx0XHRpZiBzaWduQ29udHJhY3RFcnIgIT0gbmlsIHtcbiAgIDEzN1x0XHRcdHNlcnZpY2UuRXJyb3IoYywgc2lnbkNvbnRyYWN0RXJyKVxuICAgMTM4XHRcdFx0cmV0dXJuXG4gICAxMzlcdFx0fVxuICAgMTQwXHRcbiAgIDE0MVx0XHRyZXEuU2lnbkNvbnRyYWN0ID0gc2lnbkNvbnRyYWN0XG4gICAxNDJcdFxuICAgMTQzXHRcdHJlcS5TaWduZWRUaW1lID0gY29tbW9uLkdldEJlaWppbmdUaW1lKClcbiAgIDE0NFx0XG4gICAxNDVcdFx0cmVxLlN0YXR1cyA9IGJ1bmRsZU1vZGVsLk9yZGVyU2lnbmVkXG4gICAxNDZcdFxuICAgMTQ3XHRcdHJlcywgZXJyIDo9IHNlcnZpY2UuQnVuZGxlUHJvdmlkZXIuQ3JlYXRlT3JkZXJSZWNvcmQoY29udGV4dC5CYWNrZ3JvdW5kKCksICZyZXEpXG4gICAxNDhcdFx0aWYgZXJyICE9IG5pbCB7XG4gICAxNDlcdFx0XHRzZXJ2aWNlLkVycm9yKGMsIGVycilcbiAgIDE1MFx0XHRcdHJldHVyblxuICAgMTUxXHRcdH1cbiAgIDE1Mlx0XG4gICAxNTNcdFx0c2VydmljZS5TdWNjZXNzKGMsIHJlcylcbiAgIDE1NFx0fVxuICAgMTU1XHRcbiAgIDE1Nlx0ZnVuYyBVcGRhdGVCdW5kbGVPcmRlclN0YXR1c1BhaWQoYyAqZ2luLkNvbnRleHQpIHtcbiAgIDE1N1x0XHR2YXIgcmVxIGJ1bmRsZS5PcmRlclJlY29yZFxuICAgMTU4XHRcbiAgIDE1OVx0XHRpZiBlcnIgOj0gYy5TaG91bGRCaW5kQm9keVdpdGgoJnJlcSwgYmluZGluZy5KU09OKTsgZXJyICE9IG5pbCB7XG4gICAxNjBcdFx0XHRzZXJ2aWNlLkVycm9yKGMsIGVycilcbiAgIDE2MVx0XHRcdHJldHVyblxuICAgMTYyXHRcdH1cbiAgIDE2M1x0XG4gICAxNjRcdFx0Ly8g6I635Y+WIOeUqOaIt+S/oeaBr1xuICAgMTY1XHRcdHVzZXJJbmZvIDo9IGxvZ2luLkdldFVzZXJJbmZvRnJvbUMoYylcbiAgIDE2Nlx0XG4gICAxNjdcdFx0aWYgcmVxLlV1aWQgPT0gXCJcIiB7XG4gICAxNjhcdFx0XHRzZXJ2aWNlLkVycm9yKGMsIGVycm9ycy5OZXcoY29tbW9uLk1pc3NPcmRlclVVSUQpKVxuICAgMTY5XHRcdFx0cmV0dXJuXG4gICAxNzBcdFx0fVxuICAgMTcxXHRcbiAgIDE3Mlx0XHRkZXRhaWwsIGRldGFpbEVyciA6PSBzZXJ2aWNlLkJ1bmRsZVByb3ZpZGVyLk9yZGVyUmVjb3Jkc0RldGFpbChjb250ZXh0LkJhY2tncm91bmQoKSwgJmJ1bmRsZS5PcmRlclJlY29yZHNEZXRhaWxSZXF1ZXN0e1xuICAgMTczXHRcdFx0VXVpZDogcmVxLlV1aWQsXG4gICAxNzRcdFx0fSlcbiAgIDE3NVx0XG4gICAxNzZcdFx0aWYgZGV0YWlsRXJyICE9IG5pbCB7XG4gICAxNzdcdFx0XHRzZXJ2aWNlLkVycm9yKGMsIGRldGFpbEVycilcbiAgIDE3OFx0XHRcdHJldHVyblxuICAgMTc5XHRcdH1cbiAgIDE4MFx0XG4gICAxODFcdFx0Ly8g5Yik5patIOaYr+WQpuaYryDmnKzkurrmk43kvZxcbiAgIDE4Mlx0XHRpZiBzdHJjb252LkZvcm1hdFVpbnQodXNlckluZm8uSUQsIDEwKSAhPSBkZXRhaWwuT3JkZXJSZWNvcmQuQ3VzdG9tZXJJRCB7XG4gICAxODNcdFx0XHRzZXJ2aWNlLkVycm9yKGMsIGVycm9ycy5OZXcoY29tbW9uLk5vdE1hdGNoT3JkZXJJbmZvKSlcbiAgIDE4NFx0XHRcdHJldHVyblxuICAgMTg1XHRcdH1cbiAgIDE4Nlx0XG4gICAxODdcdFx0Ly8g5aaC5p6cIOW9k+WJjeiuouWNlSDmmK8g5bey562+5pyq5pSv5LuYICDkuJQg5a2Y5ZyoIGNoZWNrb3V0U2Vzc2lvbklkIOmcgOimgSDmn6Xor6Ig5pSv5LuY57uT5p6cXG4gICAxODhcdFx0aWYgZGV0YWlsLk9yZGVyUmVjb3JkLlN0YXR1cyA9PSBidW5kbGVNb2RlbC5PcmRlclNpZ25lZCAmJiBkZXRhaWwuT3JkZXJSZWNvcmQuQ2hlY2tvdXRTZXNzaW9uSWQgIT0gXCJcIiAmJiBkZXRhaWwuT3JkZXJSZWNvcmQuUGF5VGltZSA9PSBcIlwiIHtcbiAgIDE4OVx0XHRcdC8vIOafpeivouaUr+S7mOe7k+aenFxuICAgMTkwXHRcdFx0c3RyaXBlSW5mb3NSZXMsIHN0cmlwZUluZm9zRXJyIDo9IHNlcnZpY2UuT3JkZXJQcm92aWRlci5RdWVyeVN0cmlwZUluZm9CeUNoZWNrU2Vzc2lvbklkcyhjb250ZXh0LkJhY2tncm91bmQoKSwgJm9yZGVyLlF1ZXJ5U3RyaXBlSW5mb1JlcXVlc3R7XG4gICAxOTFcdFx0XHRcdENoZWNrb3V0U2Vzc2lvbklkczogW11zdHJpbmd7ZGV0YWlsLk9yZGVyUmVjb3JkLkNoZWNrb3V0U2Vzc2lvbklkfSxcbiAgIDE5Mlx0XHRcdH0pXG4gICAxOTNcdFxuICAgMTk0XHRcdFx0aWYgc3RyaXBlSW5mb3NFcnIgIT0gbmlsIHtcbiAgIDE5NVx0XHRcdFx0c2VydmljZS5FcnJvcihjLCBlcnJvcnMuTmV3KGNvbW1vbi5FcnJvclF1ZXJ5U3RyaXBlSW5mbykpXG4gICAxOTZcdFx0XHRcdHJldHVyblxuICAgMTk3XHRcdFx0fVxuICAgMTk4XHRcbiAgIDE5OVx0XHRcdHRvdGFsU3RyaXBlIDo9IDBcbiAgIDIwMFx0XG4gICAyMDFcdFx0XHRpZiBzdHJpcGVJbmZvc1JlcyAhPSBuaWwgJiYgbGVuKHN0cmlwZUluZm9zUmVzLlN0cmlwZUluZm9zKSA+IDAge1xuICAgMjAyXHRcdFx0XHR0b3RhbFN0cmlwZSA9IGxlbihzdHJpcGVJbmZvc1Jlcy5TdHJpcGVJbmZvcylcbiAgIDIwM1x0XHRcdFx0Zm9yIF8sIHN0cmlwZUluZm8gOj0gcmFuZ2Ugc3RyaXBlSW5mb3NSZXMuU3RyaXBlSW5mb3Mge1xuICAgMjA0XHRcdFx0XHRcdGlmIHN0cmlwZUluZm8uT3V0VHJhZGVObyA9PSBkZXRhaWwuT3JkZXJSZWNvcmQuT3JkZXJObyAmJiBzdHJpcGVJbmZvLlBheW1lbnRJbnRlbnRTdGF0dXMgPT0gXCJwYWlkXCIge1xuICAgMjA1XHRcdFx0XHRcdFx0XywgdXBkYXRlT3JkZXJSZWNvcmRFcnIgOj0gc2VydmljZS5CdW5kbGVQcm92aWRlci5VcGRhdGVPcmRlclJlY29yZChjb250ZXh0LkJhY2tncm91bmQoKSwgJmJ1bmRsZS5PcmRlclJlY29yZHtcbiAgIDIwNlx0XHRcdFx0XHRcdFx0VXVpZDogICAgZGV0YWlsLk9yZGVyUmVjb3JkLlV1aWQsXG4gICAyMDdcdFx0XHRcdFx0XHRcdFN0YXR1czogIGJ1bmRsZU1vZGVsLk9yZGVyUGFpZCxcbiAgIDIwOFx0XHRcdFx0XHRcdFx0UGF5VGltZTogY29tbW9uLkdldEJlaWppbmdUaW1lKCksXG4gICAyMDlcdFx0XHRcdFx0XHR9KVxuICAgMjEwXHRcdFx0XHRcdFx0aWYgdXBkYXRlT3JkZXJSZWNvcmRFcnIgIT0gbmlsIHtcbiAgIDIxMVx0XHRcdFx0XHRcdFx0c2VydmljZS5FcnJvcihjLCBkZXRhaWxFcnIpXG4gICAyMTJcdFx0XHRcdFx0XHRcdHJldHVyblxuICAgMjEzXHRcdFx0XHRcdFx0fVxuICAgMjE0XHRcdFx0XHRcdFx0dG90YWxTdHJpcGUtLVxuICAgMjE1XHRcdFx0XHRcdH1cbiAgIDIxNlx0XHRcdFx0fVxuICAgMjE3XHRcdFx0fVxuICAgMjE4XHRcbiAgIDIxOVx0XHRcdGlmIHRvdGFsU3RyaXBlICE9IDAgJiYgdG90YWxTdHJpcGUgPT0gbGVuKHN0cmlwZUluZm9zUmVzLlN0cmlwZUluZm9zKSB7XG4gICAyMjBcdFx0XHRcdF8sIHVwZGF0ZU9yZGVyUmVjb3JkRXJyIDo9IHNlcnZpY2UuQnVuZGxlUHJvdmlkZXIuVXBkYXRlT3JkZXJSZWNvcmQoY29udGV4dC5CYWNrZ3JvdW5kKCksICZidW5kbGUuT3JkZXJSZWNvcmR7XG4gICAyMjFcdFx0XHRcdFx0VXVpZDogICAgICAgICAgICAgICBkZXRhaWwuT3JkZXJSZWNvcmQuVXVpZCxcbiAgIDIyMlx0XHRcdFx0XHRDaGVja291dFNlc3Npb25JZDogIFwiXCIsXG4gICAyMjNcdFx0XHRcdFx0Q2hlY2tvdXRTZXNzaW9uVXJsOiBcIlwiLFxuICAgMjI0XHRcdFx0XHR9KVxuICAgMjI1XHRcdFx0XHRpZiB1cGRhdGVPcmRlclJlY29yZEVyciAhPSBuaWwge1xuICAgMjI2XHRcdFx0XHRcdHNlcnZpY2UuRXJyb3IoYywgZGV0YWlsRXJyKVxuICAgMjI3XHRcdFx0XHRcdHJldHVyblxuICAgMjI4XHRcdFx0XHR9XG4gICAyMjlcdFx0XHR9XG4gICAyMzBcdFx0fVxuICAgMjMxXHRcbiAgIDIzMlx0XHRzZXJ2aWNlLlN1Y2Nlc3MoYywgbmlsKVxuICAgMjMzXHR9XG4gICAyMzRcdFxuICAgMjM1XHRmdW5jIE9yZGVyUmVjb3Jkc0xpc3QoYyAqZ2luLkNvbnRleHQpIHtcbiAgIDIzNlx0XHR2YXIgcmVxIGJ1bmRsZS5PcmRlclJlY29yZHNSZXF1ZXN0XG4gICAyMzdcdFxuICAgMjM4XHRcdGlmIGVyciA6PSBjLlNob3VsZEJpbmRCb2R5V2l0aCgmcmVxLCBiaW5kaW5nLkpTT04pOyBlcnIgIT0gbmlsIHtcbiAgIDIzOVx0XHRcdHNlcnZpY2UuRXJyb3IoYywgZXJyKVxuICAgMjQwXHRcdFx0cmV0dXJuXG4gICAyNDFcdFx0fVxuICAgMjQyXHRcbiAgIDI0M1x0XHQvLyDojrflj5Yg55So5oi35L+h5oGvXG4gICAyNDRcdFx0Ly91c2VySW5mbyA6PSBsb2dpbi5HZXRVc2VySW5mb0Zyb21DKGMpXG4gICAyNDVcdFxuICAgMjQ2XHRcdC8vcmVxLkN1c3RvbWVySUQgPSBzdHJjb252LkZvcm1hdFVpbnQodXNlckluZm8uSUQsIDEwKVxuICAgMjQ3XHRcbiAgIDI0OFx0XHRyZXMsIGVyciA6PSBzZXJ2aWNlLkJ1bmRsZVByb3ZpZGVyLk9yZGVyUmVjb3Jkc0xpc3QoY29udGV4dC5CYWNrZ3JvdW5kKCksICZyZXEpXG4gICAyNDlcdFx0aWYgZXJyICE9IG5pbCB7XG4gICAyNTBcdFx0XHRzZXJ2aWNlLkVycm9yKGMsIGVycilcbiAgIDI1MVx0XHRcdHJldHVyblxuICAgMjUyXHRcdH1cbiAgIDI1M1x0XG4gICAyNTRcdFx0Zm9yIF8sIG9yZGVyUmVjb3JkIDo9IHJhbmdlIHJlcy5PcmRlclJlY29yZHMge1xuICAgMjU1XHRcdFx0aWYgb3JkZXJSZWNvcmQuQ3VzdG9tZXJJRCAhPSBcIlwiIHtcbiAgIDI1Nlx0XHRcdFx0dmFyIHVzZXJJRCB1aW50NjRcbiAgIDI1N1x0XHRcdFx0dXNlcklELCBlcnIgPSBzdHJjb252LlBhcnNlVWludChvcmRlclJlY29yZC5DdXN0b21lcklELCAxMCwgNjQpXG4gICAyNThcdFx0XHRcdGlmIGVyciAhPSBuaWwge1xuICAgMjU5XHRcdFx0XHRcdGVyciA9IG5pbFxuICAgMjYwXHRcdFx0XHRcdGNvbnRpbnVlXG4gICAyNjFcdFx0XHRcdH1cbiAgIDI2Mlx0XG4gICAyNjNcdFx0XHRcdHVzZXJJbmZvLCBfIDo9IHNlcnZpY2UuQWNjb3VudFByb3ZpZGVyLkluZm8oY29udGV4dC5CYWNrZ3JvdW5kKCksICZhY2NvdW50LkluZm9SZXF1ZXN0e1xuICAgMjY0XHRcdFx0XHRcdERvbWFpbjogXCJhcHBcIixcbiAgIDI2NVx0XHRcdFx0XHRJRDogICAgIHVzZXJJRCxcbiAgIDI2Nlx0XHRcdFx0fSlcbiAgIDI2N1x0XHRcdFx0aWYgdXNlckluZm8gIT0gbmlsIHtcbiAgIDI2OFx0XHRcdFx0XHRvcmRlclJlY29yZC5TZXggPSB1c2VySW5mby5TZXhcbiAgIDI2OVx0XHRcdFx0XHRvcmRlclJlY29yZC5OYXRpb25hbGl0eSA9IHVzZXJJbmZvLk5hdGlvbmFsaXR5XG4gICAyNzBcdFx0XHRcdFx0b3JkZXJSZWNvcmQuQ2VydGlmaWNhdGVQaWN0dXJlID0gdXNlckluZm8uQ2VydGlmaWNhdGVQaWN0dXJlXG4gICAyNzFcdFx0XHRcdFx0b3JkZXJSZWNvcmQuUGxhY2VPZlJlc2lkZW5jZSA9IHVzZXJJbmZvLlBsYWNlT2ZSZXNpZGVuY2VcbiAgIDI3Mlx0XHRcdFx0XHRvcmRlclJlY29yZC5Hcm91cFBob3RvID0gdXNlckluZm8uR3JvdXBQaG90b1xuICAgMjczXHRcdFx0XHRcdG9yZGVyUmVjb3JkLlRlbE51bSA9IHVzZXJJbmZvLlRlbE51bVxuICAgMjc0XHRcdFx0XHR9XG4gICAyNzVcdFx0XHR9XG4gICAyNzZcdFxuICAgMjc3XHRcdH1cbiAgIDI3OFx0XG4gICAyNzlcdFx0c2VydmljZS5TdWNjZXNzKGMsIHJlcylcbiAgIDI4MFx0fVxuICAgMjgxXHRcbiAgIDI4Mlx0ZnVuYyBPcmRlclJlY29yZHNEZXRhaWwoYyAqZ2luLkNvbnRleHQpIHtcbiAgIDI4M1x0XHR2YXIgcmVxIGJ1bmRsZS5PcmRlclJlY29yZHNEZXRhaWxSZXF1ZXN0XG4gICAyODRcdFxuICAgMjg1XHRcdGlmIGVyciA6PSBjLlNob3VsZEJpbmRCb2R5V2l0aCgmcmVxLCBiaW5kaW5nLkpTT04pOyBlcnIgIT0gbmlsIHtcbiAgIDI4Nlx0XHRcdHNlcnZpY2UuRXJyb3IoYywgZXJyKVxuICAgMjg3XHRcdFx0cmV0dXJuXG4gICAyODhcdFx0fVxuICAgMjg5XHRcbiAgIDI5MFx0XHQvKi8vIOiOt+WPliDnlKjmiLfkv6Hmga9cbiAgIDI5MVx0XHR1c2VySW5mbyA6PSBsb2dpbi5HZXRVc2VySW5mb0Zyb21DKGMpXG4gICAyOTJcdFxuICAgMjkzXHRcdHJlcS5DdXN0b21lcklEID0gc3RyY29udi5Gb3JtYXRVaW50KHVzZXJJbmZvLklELCAxMCkqL1xuICAgMjk0XHRcbiAgIDI5NVx0XHRyZXMsIGVyciA6PSBzZXJ2aWNlLkJ1bmRsZVByb3ZpZGVyLk9yZGVyUmVjb3Jkc0RldGFpbChjb250ZXh0LkJhY2tncm91bmQoKSwgJnJlcSlcbiAgIDI5Nlx0XHRpZiBlcnIgIT0gbmlsIHtcbiAgIDI5N1x0XHRcdHNlcnZpY2UuRXJyb3IoYywgZXJyKVxuICAgMjk4XHRcdFx0cmV0dXJuXG4gICAyOTlcdFx0fVxuICAgMzAwXHRcbiAgIDMwMVx0XHRzZXJ2aWNlLlN1Y2Nlc3MoYywgcmVzKVxuICAgMzAyXHR9XG4gICAzMDNcdFxuICAgMzA0XHQvLyB3ZWJcbiAgIDMwNVx0ZnVuYyBVcGRhdGVGaW5hbmNpYWxDb25maXJtYXRpb25TdGF0dXMoYyAqZ2luLkNvbnRleHQpIHtcbiAgIDMwNlx0XHR2YXIgcmVxIGJ1bmRsZS5GaW5hbmNpYWxDb25maXJtYXRpb25SZXF1ZXN0XG4gICAzMDdcdFxuICAgMzA4XHRcdGlmIGVyciA6PSBjLlNob3VsZEJpbmRCb2R5V2l0aCgmcmVxLCBiaW5kaW5nLkpTT04pOyBlcnIgIT0gbmlsIHtcbiAgIDMwOVx0XHRcdHNlcnZpY2UuRXJyb3IoYywgZXJyKVxuICAgMzEwXHRcdFx0cmV0dXJuXG4gICAzMTFcdFx0fVxuICAgMzEyXHRcbiAgIDMxM1x0XHRkZXRhaWwsIGVyciA6PSBzZXJ2aWNlLkJ1bmRsZVByb3ZpZGVyLk9yZGVyUmVjb3Jkc0RldGFpbChjb250ZXh0LkJhY2tncm91bmQoKSwgJmJ1bmRsZS5PcmRlclJlY29yZHNEZXRhaWxSZXF1ZXN0e1xuICAgMzE0XHRcdFx0T3JkZXJObzogcmVxLk9yZGVyTm8sXG4gICAzMTVcdFx0fSlcbiAgIDMxNlx0XHRpZiBlcnIgIT0gbmlsIHtcbiAgIDMxN1x0XHRcdHNlcnZpY2UuRXJyb3IoYywgZXJyKVxuICAgMzE4XHRcdFx0cmV0dXJuXG4gICAzMTlcdFx0fVxuICAgMzIwXHRcbiAgIDMyMVx0XHRpZiBkZXRhaWwuT3JkZXJSZWNvcmQuU3RhdHVzICE9IGJ1bmRsZU1vZGVsLk9yZGVyUGFpZCB7XG4gICAzMjJcdFx0XHRzZXJ2aWNlLkVycm9yKGMsIGVycm9ycy5OZXcoXCLorqLljZXmnKrmlK/ku5gs5LiN5Y+v56Gu6K6kXCIpKVxuICAgMzIzXHRcdFx0cmV0dXJuXG4gICAzMjRcdFx0fVxuICAgMzI1XHRcbiAgIDMyNlx0XHRyZXMsIGVyciA6PSBzZXJ2aWNlLkJ1bmRsZVByb3ZpZGVyLlVwZGF0ZUZpbmFuY2lhbENvbmZpcm1hdGlvblN0YXR1cyhjb250ZXh0LkJhY2tncm91bmQoKSwgJnJlcSlcbiAgIDMyN1x0XHRpZiBlcnIgIT0gbmlsIHtcbiAgIDMyOFx0XHRcdHNlcnZpY2UuRXJyb3IoYywgZXJyKVxuICAgMzI5XHRcdFx0cmV0dXJuXG4gICAzMzBcdFx0fVxuICAgMzMxXHRcbiAgIDMzMlx0XHRzZXJ2aWNlLlN1Y2Nlc3MoYywgcmVzKVxuICAgMzMzXHR9XG4gICAzMzRcdFxuICAgMzM1XHRmdW5jIEV4cG9ydE9yZGVySW5mbyhjICpnaW4uQ29udGV4dCkge1xuICAgMzM2XHRcdHZhciByZXEgYnVuZGxlLk9yZGVyUmVjb3Jkc1JlcXVlc3RcbiAgIDMzN1x0XG4gICAzMzhcdFx0aWYgZXJyIDo9IGMuU2hvdWxkQmluZEJvZHlXaXRoKCZyZXEsIGJpbmRpbmcuSlNPTik7IGVyciAhPSBuaWwge1xuICAgMzM5XHRcdFx0c2VydmljZS5FcnJvcihjLCBlcnIpXG4gICAzNDBcdFx0XHRyZXR1cm5cbiAgIDM0MVx0XHR9XG4gICAzNDJcdFxuICAgMzQzXHRcdHJlcywgZXJyIDo9IHNlcnZpY2UuQnVuZGxlUHJvdmlkZXIuT3JkZXJSZWNvcmRzTGlzdChjb250ZXh0LkJhY2tncm91bmQoKSwgJnJlcSlcbiAgIDM0NFx0XHRpZiBlcnIgIT0gbmlsIHtcbiAgIDM0NVx0XHRcdHNlcnZpY2UuRXJyb3IoYywgZXJyKVxuICAgMzQ2XHRcdFx0cmV0dXJuXG4gICAzNDdcdFx0fVxuICAgMzQ4XHRcbiAgIDM0OVx0XHRyb3dzIDo9IG1ha2UoW11bXWludGVyZmFjZXt9LCBsZW4ocmVzLk9yZGVyUmVjb3JkcykpXG4gICAzNTBcdFxuICAgMzUxXHRcdGZvciBfLCBvcmRlclJlY29yZCA6PSByYW5nZSByZXMuT3JkZXJSZWNvcmRzIHtcbiAgIDM1Mlx0XHRcdGlmIG9yZGVyUmVjb3JkLkN1c3RvbWVySUQgIT0gXCJcIiB7XG4gICAzNTNcdFx0XHRcdHZhciB1c2VySUQgdWludDY0XG4gICAzNTRcdFx0XHRcdHVzZXJJRCwgZXJyID0gc3RyY29udi5QYXJzZVVpbnQob3JkZXJSZWNvcmQuQ3VzdG9tZXJJRCwgMTAsIDY0KVxuICAgMzU1XHRcdFx0XHRpZiBlcnIgIT0gbmlsIHtcbiAgIDM1Nlx0XHRcdFx0XHRlcnIgPSBuaWxcbiAgIDM1N1x0XHRcdFx0XHRjb250aW51ZVxuICAgMzU4XHRcdFx0XHR9XG4gICAzNTlcdFxuICAgMzYwXHRcdFx0XHR1c2VySW5mbywgXyA6PSBzZXJ2aWNlLkFjY291bnRQcm92aWRlci5JbmZvKGNvbnRleHQuQmFja2dyb3VuZCgpLCAmYWNjb3VudC5JbmZvUmVxdWVzdHtcbiAgIDM2MVx0XHRcdFx0XHREb21haW46IFwiYXBwXCIsXG4gICAzNjJcdFx0XHRcdFx0SUQ6ICAgICB1c2VySUQsXG4gICAzNjNcdFx0XHRcdH0pXG4gICAzNjRcdFx0XHRcdGlmIHVzZXJJbmZvICE9IG5pbCB7XG4gICAzNjVcdFx0XHRcdFx0b3JkZXJSZWNvcmQuU2V4ID0gdXNlckluZm8uU2V4XG4gICAzNjZcdFx0XHRcdFx0b3JkZXJSZWNvcmQuTmF0aW9uYWxpdHkgPSB1c2VySW5mby5OYXRpb25hbGl0eVxuICAgMzY3XHRcdFx0XHRcdG9yZGVyUmVjb3JkLlRlbE51bSA9IHVzZXJJbmZvLlRlbE51bVxuICAgMzY4XHRcdFx0XHR9XG4gICAzNjlcdFx0XHR9XG4gICAzNzBcdFxuICAgMzcxXHRcdFx0c3RhdHVzIDo9IFwiXCJcbiAgIDM3Mlx0XHRcdGlmIG9yZGVyUmVjb3JkLlN0YXR1cyA9PSBidW5kbGVNb2RlbC5PcmRlclNpZ25lZCB7XG4gICAzNzNcdFx0XHRcdHN0YXR1cyA9IFwi5pyq5pSv5LuYXCJcbiAgIDM3NFx0XHRcdH0gZWxzZSBpZiBvcmRlclJlY29yZC5TdGF0dXMgPT0gYnVuZGxlTW9kZWwuT3JkZXJQYWlkIHtcbiAgIDM3NVx0XHRcdFx0c3RhdHVzID0gXCLlt7LmlK/ku5hcIlxuICAgMzc2XHRcdFx0fVxuICAgMzc3XHRcdFx0ZmluYW5jaWFsQ29uZmlybWF0aW9uIDo9IFwiXCJcbiAgIDM3OFx0XHRcdGlmIG9yZGVyUmVjb3JkLkZpbmFuY2lhbENvbmZpcm1hdGlvbiA9PSBidW5kbGVNb2RlbC5VbkNvbmZpcm0ge1xuICAgMzc5XHRcdFx0XHRmaW5hbmNpYWxDb25maXJtYXRpb24gPSBcIuacquehruiupFwiXG4gICAzODBcdFx0XHR9IGVsc2UgaWYgb3JkZXJSZWNvcmQuRmluYW5jaWFsQ29uZmlybWF0aW9uID09IGJ1bmRsZU1vZGVsLkNvbmZpcm1lZCB7XG4gICAzODFcdFx0XHRcdGZpbmFuY2lhbENvbmZpcm1hdGlvbiA9IFwi5bey56Gu6K6kXCJcbiAgIDM4Mlx0XHRcdH1cbiAgIDM4M1x0XG4gICAzODRcdFx0XHRyb3dzID0gYXBwZW5kKHJvd3MsIFtdaW50ZXJmYWNle317XG4gICAzODVcdFx0XHRcdG9yZGVyUmVjb3JkLk9yZGVyTm8sXG4gICAzODZcdFx0XHRcdG9yZGVyUmVjb3JkLkN1c3RvbWVyTnVtLFxuICAgMzg3XHRcdFx0XHRvcmRlclJlY29yZC5DdXN0b21lck5hbWUsXG4gICAzODhcdFx0XHRcdG9yZGVyUmVjb3JkLlNleCxcbiAgIDM4OVx0XHRcdFx0b3JkZXJSZWNvcmQuVGVsTnVtLFxuICAgMzkwXHRcdFx0XHRvcmRlclJlY29yZC5OYXRpb25hbGl0eSxcbiAgIDM5MVx0XHRcdFx0b3JkZXJSZWNvcmQuQnVuZGxlTmFtZSxcbiAgIDM5Mlx0XHRcdFx0b3JkZXJSZWNvcmQuU2lnbmVkVGltZSxcbiAgIDM5M1x0XHRcdFx0b3JkZXJSZWNvcmQuQW1vdW50LFxuICAgMzk0XHRcdFx0XHRvcmRlclJlY29yZC5OdW0sXG4gICAzOTVcdFx0XHRcdG9yZGVyUmVjb3JkLlZhbHVlQWRkQnVuZGxlQW1vdW50LFxuICAgMzk2XHRcdFx0XHRvcmRlclJlY29yZC5Ub3RhbEFtb3VudCxcbiAgIDM5N1x0XHRcdFx0c3RhdHVzLFxuICAgMzk4XHRcdFx0XHRvcmRlclJlY29yZC5QYXlUaW1lLFxuICAgMzk5XHRcdFx0XHRmaW5hbmNpYWxDb25maXJtYXRpb24sXG4gICA0MDBcdFx0XHR9KVxuICAgNDAxXHRcdH1cbiAgIDQwMlx0XG4gICA0MDNcdFx0ZGlyUGF0aCA6PSBcIi4vcnVudGltZVwiXG4gICA0MDRcdFxuICAgNDA1XHRcdGZpbGVQYXRoLCBlcnIgOj0gbG9naWMuV3JpdGVUb0V4Y2VsKGRpclBhdGgsIHJvd3MpXG4gICA0MDZcdFx0aWYgZXJyICE9IG5pbCB7XG4gICA0MDdcdFx0XHRzZXJ2aWNlLkVycm9yKGMsIGVycilcbiAgIDQwOFx0XHRcdHJldHVyblxuICAgNDA5XHRcdH1cbiAgIDQxMFx0XG4gICA0MTFcdFx0dmFyIGh0dHBUeXBlIHN0cmluZ1xuICAgNDEyXHRcdGZtdC5QcmludGYoXCJjLlJlcXVlc3QuUmVxdWVzdFVSSSAgJSt2XFxuXCIsIGMuUmVxdWVzdC5SZXF1ZXN0VVJJKVxuICAgNDEzXHRcdGZtdC5QcmludGYoXCJjLlJlcXVlc3QuVVJMICUrdlxcblwiLCBjLlJlcXVlc3QuVVJMKVxuICAgNDE0XHRcdGZtdC5QcmludGYoXCJjLlJlcXVlc3QuT3JpZ2luICUrdlxcblwiLCBjLktleXNbXCJPcmlnaW5cIl0pXG4gICA0MTVcdFx0aHR0cFR5cGUgPSBzdHJpbmdzLlNwbGl0KGMuS2V5c1tcIk9yaWdpblwiXS4oc3RyaW5nKSwgXCI6XCIpWzBdXG4gICA0MTZcdFxuICAgNDE3XHRcdGZtdC5QcmludGxuKGh0dHBUeXBlKVxuICAgNDE4XHRcdGZtdC5QcmludGxuKGZpbGVQYXRoKVxuICAgNDE5XHRcbiAgIDQyMFx0XHR2YXIgZXhwb3J0VXJsID0gc3RyaW5ncy5SZXBsYWNlKHN0cmluZ3MuUmVwbGFjZShmaWxlUGF0aCwgXCIuXCIsIGZtdC5TcHJpbnRmKFwiJXMlc1wiLCBodHRwVHlwZSwgYy5SZXF1ZXN0Lkhvc3QpLCAxKSwgXCJydW50aW1lXCIsIFwic3RhdGljXCIsIDEpXG4gICA0MjFcdFx0Ly92YXIgZXhwb3J0VXJsID0gZm10LlNwcmludGYoXCIlcyVzLyVzXCIsIGh0dHBUeXBlLCBjLlJlcXVlc3QuSG9zdCwgZGlyUGF0aCArIHBhdGgpXG4gICA0MjJcdFxuICAgNDIzXHRcdHNlcnZpY2UuU3VjY2VzcyhjLCBlLk9rLCAmYnVuZGxlTW9kZWwuRXhwb3J0UmVzcG9uc2V7RXhwb3J0VXJsOiBleHBvcnRVcmx9KVxuICAgNDI0XHR9XG4gICA0MjVcdFxuVG90YWwgbGluZXMgaW4gZmlsZTogNDI1XG4iLCJpc0Vycm9yIjpmYWxzZSwicmVxdWVzdElkIjoiIn19LCJhYWNkY2FmNi03ZmJlLTQ4MDktOGZlZS01MWQzZjM5MzA5YzI7dG9vbHVfdnJ0eF8wMUNzQWQ3ZkNKRWtFaFdZcU5QOWJRckIiOnsicmVxdWVzdElkIjoiYWFjZGNhZjYtN2ZiZS00ODA5LThmZWUtNTFkM2YzOTMwOWMyIiwidG9vbFVzZUlkIjoidG9vbHVfdnJ0eF8wMUNzQWQ3ZkNKRWtFaFdZcU5QOWJRckIiLCJwaGFzZSI6NSwicmVzdWx0Ijp7InRleHQiOiJTdWNjZXNzZnVsbHkgZWRpdGVkIHRoZSBmaWxlIHBrZy9zZXJ2aWNlL2J1bmRsZS9idW5kbGVPcmRlci5nby5cblJlc3VsdCBmb3Igc3RyX3JlcGxhY2UgZm9yIGVudHJ5IHdpdGggaW5kZXggWzBdOlxuUmVwbGFjZW1lbnQgc3VjY2Vzc2Z1bC5cbkVkaXRlZCBzZWN0aW9uIGFmdGVyIElERSBhdXRvLWZvcm1hdHRpbmcgd2FzIGFwcGxpZWQ6XG4gICA0MDdcdFx0XHRzZXJ2aWNlLkVycm9yKGMsIGVycilcbiAgIDQwOFx0XHRcdHJldHVyblxuICAgNDA5XHRcdH1cbiAgIDQxMFx0XG4gICA0MTFcdFx0dmFyIGh0dHBUeXBlIHN0cmluZyA9IFwiaHR0cFwiIC8vIERlZmF1bHQgdG8gaHR0cFxuICAgNDEyXHRcdGZtdC5QcmludGYoXCJjLlJlcXVlc3QuUmVxdWVzdFVSSSAgJSt2XFxuXCIsIGMuUmVxdWVzdC5SZXF1ZXN0VVJJKVxuICAgNDEzXHRcdGZtdC5QcmludGYoXCJjLlJlcXVlc3QuVVJMICUrdlxcblwiLCBjLlJlcXVlc3QuVVJMKVxuICAgNDE0XHRcbiAgIDQxNVx0XHQvLyBTYWZlbHkgY2hlY2sgaWYgT3JpZ2luIGV4aXN0cyBpbiBjLktleXNcbiAgIDQxNlx0XHRpZiBvcmlnaW4sIGV4aXN0cyA6PSBjLktleXNbXCJPcmlnaW5cIl07IGV4aXN0cyAmJiBvcmlnaW4gIT0gbmlsIHtcbiAgIDQxN1x0XHRcdG9yaWdpblN0ciwgb2sgOj0gb3JpZ2luLihzdHJpbmcpXG4gICA0MThcdFx0XHRpZiBvayAmJiBvcmlnaW5TdHIgIT0gXCJcIiB7XG4gICA0MTlcdFx0XHRcdGZtdC5QcmludGYoXCJjLlJlcXVlc3QuT3JpZ2luICUrdlxcblwiLCBvcmlnaW5TdHIpXG4gICA0MjBcdFx0XHRcdHBhcnRzIDo9IHN0cmluZ3MuU3BsaXQob3JpZ2luU3RyLCBcIjpcIilcbiAgIDQyMVx0XHRcdFx0aWYgbGVuKHBhcnRzKSA+IDAge1xuICAgNDIyXHRcdFx0XHRcdGh0dHBUeXBlID0gcGFydHNbMF1cbiAgIDQyM1x0XHRcdFx0fVxuICAgNDI0XHRcdFx0fVxuICAgNDI1XHRcdH0gZWxzZSB7XG4gICA0MjZcdFx0XHQvLyBGYWxsYmFjazogQ2hlY2sgaWYgdGhlIHJlcXVlc3Qgd2FzIG1hZGUgb3ZlciBUTFNcbiAgIDQyN1x0XHRcdGlmIGMuUmVxdWVzdC5UTFMgIT0gbmlsIHx8IGMuUmVxdWVzdC5IZWFkZXIuR2V0KFwiWC1Gb3J3YXJkZWQtUHJvdG9cIikgPT0gXCJodHRwc1wiIHtcbiAgIDQyOFx0XHRcdFx0aHR0cFR5cGUgPSBcImh0dHBzXCJcbiAgIDQyOVx0XHRcdH1cbiAgIDQzMFx0XHR9XG4gICA0MzFcdFxuICAgNDMyXHRcdGZtdC5QcmludGxuKGh0dHBUeXBlKVxuICAgNDMzXHRcdGZtdC5QcmludGxuKGZpbGVQYXRoKVxuICAgNDM0XHRcblxuUmV2aWV3IHRoZSBjaGFuZ2VzIGFuZCBtYWtlIHN1cmUgdGhleSBhcmUgYXMgZXhwZWN0ZWQgKGNvcnJlY3QgaW5kZW50YXRpb24sIG5vIGR1cGxpY2F0ZSBsaW5lcywgZXRjKS5cbkVkaXQgdGhlIGZpbGUgYWdhaW4gaWYgbmVjZXNzYXJ5LlxuIiwiaXNFcnJvciI6ZmFsc2UsInJlcXVlc3RJZCI6IiJ9fX0sImRyYWZ0RXhjaGFuZ2UiOnsicmVxdWVzdF9tZXNzYWdlIjoiIiwicmljaF90ZXh0X2pzb25fcmVwciI6eyJ0eXBlIjoiZG9jIiwiY29udGVudCI6W3sidHlwZSI6InBhcmFncmFwaCJ9XX0sInN0YXR1cyI6ImRyYWZ0In0sInJlcXVlc3RJZHMiOltdLCJpc1Bpbm5lZCI6ZmFsc2UsImlzU2hhcmVhYmxlIjp0cnVlLCJleHRyYURhdGEiOnsiaXNBZ2VudENvbnZlcnNhdGlvbiI6dHJ1ZSwiaGFzQWdlbnRPbmJvYXJkZWQiOnRydWUsImhhc0RpcnR5RWRpdHMiOnRydWV9LCJwZXJzb25hVHlwZSI6MH19LCJhZ2VudEV4ZWN1dGlvbk1vZGUiOiJtYW51YWwiLCJpc0FnZW50RWRpdHNDb2xsYXBzZWQiOnRydWV9" />
</map>
</option>
</component>
</project>