xiaomianao666

插件名:global_【看片小助手】全网VIP视频免费解析,视频自动跳过广告,高清电视

Dec 6th, 2022
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. 海阔视界规则分享,当前分享的是:网页插件¥js_url¥global_【看片小助手】全网VIP视频免费解析,视频自动跳过广告,高清电视@base64://Ly8gPT1Vc2VyU2NyaXB0PT0KLy8gQG5hbWUgICAgICAgICAgICAgIOOAkOeci+eJh+Wwj+WKqeaJi+OAkeWFqOe9kVZJUOinhumikeWFjei0ueino+aekO+8jOinhumikeiHquWKqOi3s+i/h+W5v+WRiu+8jOmrmOa4heeUteinhumikemBk+WFjei0ueeciwovLyBAbmFtZTp6aC1UVyAgICAgICAg44CQ55yL54mH5bCP5Yqp5omL44CR5YWo57ayVklQ6KaW6aC75YWN6LK76Kej5p6Q77yM6KaW6aC76Ieq5YuV6Lez6YGO5buj5ZGK77yM6auY5riF6Zu76KaW6aC76YGT5YWN6LK755yLCi8vIEBuYW1lc3BhY2UgICAgICAgICBodHRwczovL3d3dy5hemtvdS5jbgovLyBAdmVyc2lvbiAgICAgICAgICAgMS4zLjgKLy8gQGRlc2NyaXB0aW9uICAgICAgIOeIseWlh+iJuuOAgeiFvuiur+OAgeS8mOmFt+OAgeiKkuaenOetieWFqOe9kVZJUOinhumikeWFjei0ueegtOino+WOu+W5v+WRiu+8m0Lnq5nlpKfkvJrlkZjvvIznlarliafop6PplIE7QuermeOAgUHnq5nop4bpopHop6PmnpDkuIvovb3vvJvpq5jmuIXnlLXop4bpopHpgZPop4LnnIsoQ0NUVuOAgea5luWNl+WNq+inhuetiTEwMOWkmuS4quWPsCnvvJsKLy8gQGRlc2NyaXB0aW9uOnpoLVRXIOaEm+Wlh+iXneOAgemosOioiuOAgeWEqumFt+OAgeiKkuaenOetieWFqOe2slZJUOimlumgu+WFjeiyu+egtOino+WOu+W7o+WRiu+8m0Lnq5nlpKfmnIPlk6HvvIznlarliofop6PpjpbvvJtC56uZ44CBQeermeimlumgu+ino+aekOS4i+i8ie+8m+mrmOa4hembu+imlumgu+mBk+ingOeci++8iENDVFbjgIHmuZbljZfooZvoppbnrYkxMDDlpJrlgIvoh7rvvInvvJsKLy8gQGF1dGhvciAgICAgICAgICAgIGF6a291Ci8vIEBpbmNsdWRlICAgICAgICAgICAqOi8veGJlaWJlaXguY29tL2FwaS9iaWxpYmlsaS9iaWxpcGxheWVyLyoKLy8gQGluY2x1ZGUgICAgICAgICAgICo6Ly94YmVpYmVpeC5jb20vYXBpL2JpbGliaWxpLyoKLy8gQGluY2x1ZGUgICAgICAgICAgICo6Ly8qLnlvdWt1LmNvbS92XyoKLy8gQGluY2x1ZGUgICAgICAgICAgICo6Ly8qLmlxaXlpLmNvbS92XyoKLy8gQGluY2x1ZGUgICAgICAgICAgICo6Ly8qLmlxaXlpLmNvbS93XyoKLy8gQGluY2x1ZGUgICAgICAgICAgICo6Ly8qLmlxaXlpLmNvbS9hXyoKLy8gQGluY2x1ZGUgICAgICAgICAgICo6Ly8qLmlxLmNvbS9wbGF5KgovLyBAaW5jbHVkZSAgICAgICAgICAgKjovLyoubGUuY29tL3B0di92cGxheS8qCi8vIEBpbmNsdWRlICAgICAgICAgICAqOi8vdi5xcS5jb20veC9jb3Zlci8qCi8vIEBpbmNsdWRlICAgICAgICAgICAqOi8vdi5xcS5jb20veC9wYWdlLyoKLy8gQGluY2x1ZGUgICAgICAgICAgICo6Ly92LnFxLmNvbS90di8qCi8vIEBpbmNsdWRlICAgICAgICAgICAqOi8vKi50dWRvdS5jb20vbGlzdHBsYXkvKgovLyBAaW5jbHVkZSAgICAgICAgICAgKjovLyoudHVkb3UuY29tL2FsYnVtcGxheS8qCi8vIEBpbmNsdWRlICAgICAgICAgICAqOi8vKi50dWRvdS5jb20vcHJvZ3JhbXMvdmlldy8qCi8vIEBpbmNsdWRlICAgICAgICAgICAqOi8vKi5tZ3R2LmNvbS9iLyoKLy8gQGluY2x1ZGUgICAgICAgICAgICo6Ly9maWxtLnNvaHUuY29tL2FsYnVtLyoKLy8gQGluY2x1ZGUgICAgICAgICAgICo6Ly90di5zb2h1LmNvbS92LyoKLy8gQGluY2x1ZGUgICAgICAgICAgICo6Ly8qLmFjZnVuLmNuL3YvKgovLyBAaW5jbHVkZSAgICAgICAgICAgKjovLyouYmlsaWJpbGkuY29tL3ZpZGVvLyoKLy8gQGluY2x1ZGUgICAgICAgICAgICo6Ly8qLmJpbGliaWxpLmNvbS9iYW5ndW1pL3BsYXkvKgovLyBAaW5jbHVkZSAgICAgICAgICAgKjovLyouYmFvZmVuZy5jb20vcGxheS8qCi8vIEBpbmNsdWRlICAgICAgICAgICAqOi8vdmlwLnBwdHYuY29tL3Nob3cvKgovLyBAaW5jbHVkZSAgICAgICAgICAgKjovL3YucHB0di5jb20vc2hvdy8qCi8vIEBpbmNsdWRlICAgICAgICAgICAqOi8vd3d3LmxlLmNvbS9wdHYvdnBsYXkvKgovLyBAaW5jbHVkZSAgICAgICAgICAgKjovL3ZpcC4xOTA1LmNvbS9wbGF5LyoKLy8gQGluY2x1ZGUgICAgICAgICAgICo6Ly93d3cud2FzdS5jbi9QbGF5L3Nob3cvKgovLyBAaW5jbHVkZSAgICAgICAgICAgKjovL3d3dy5hY2Z1bi5jbi92LyoKLy8gQGluY2x1ZGUgICAgICAgICAgICo6Ly9tLnYucXEuY29tL3gvY292ZXIvKgovLyBAaW5jbHVkZSAgICAgICAgICAgKjovL20udi5xcS5jb20veC9wYWdlLyoKLy8gQGluY2x1ZGUgICAgICAgICAgICo6Ly9tLnYucXEuY29tLyoKLy8gQGluY2x1ZGUgICAgICAgICAgICo6Ly9tLmlxaXlpLmNvbS8qCi8vIEBpbmNsdWRlICAgICAgICAgICAqOi8vbS5pcWl5aS5jb20va3N6dC8qCi8vIEBpbmNsdWRlICAgICAgICAgICAqOi8vbS55b3VrdS5jb20vYWxpcGF5X3ZpZGVvLyoKLy8gQGluY2x1ZGUgICAgICAgICAgICo6Ly9tLm1ndHYuY29tL2IvKgovLyBAaW5jbHVkZSAgICAgICAgICAgKjovL20udHYuc29odS5jb20vdi8qCi8vIEBpbmNsdWRlICAgICAgICAgICAqOi8vbS5maWxtLnNvaHUuY29tL2FsYnVtLyoKLy8gQGluY2x1ZGUgICAgICAgICAgICo6Ly9tLmxlLmNvbS9wdHYvdnBsYXkvKgovLyBAaW5jbHVkZSAgICAgICAgICAgKjovL20ucHB0di5jb20vc2hvdy8qCi8vIEBpbmNsdWRlICAgICAgICAgICAqOi8vbS5hY2Z1bi5jbi92LyoKLy8gQGluY2x1ZGUgICAgICAgICAgICo6Ly9tLmJpbGliaWxpLmNvbS92aWRlby8qCi8vIEBpbmNsdWRlICAgICAgICAgICAqOi8vbS5iaWxpYmlsaS5jb20vYW5pbWUvKgovLyBAaW5jbHVkZSAgICAgICAgICAgKjovL20uYmlsaWJpbGkuY29tL2Jhbmd1bWkvcGxheS8qCi8vIEBpbmNsdWRlICAgICAgICAgICAqOi8vbS53YXN1LmNuL1BsYXkvc2hvdy8qCi8vIEBpbmNsdWRlICAgICAgICAqOi8vKi5qZC5jb20vKgovLyBAaW5jbHVkZSAgICAgICAgKjovLyouamQuaGsvKgovLyBAaW5jbHVkZSAgICAgICo6Ly8qLmprY3NqZC5jb20vKgovLyBAaW5jbHVkZSAgICAgICAgKjovLyoudGFvYmFvLmNvbS8qCi8vIEBpbmNsdWRlICAgICAgICAqOi8vKi50YW9iYW8uaGsvKgovLyBAaW5jbHVkZSAgICAgICAgKjovLyoudG1hbGwuY29tLyoKLy8gQGluY2x1ZGUgICAgICAgICo6Ly8qLnRtYWxsLmhrLyoKLy8gQGluY2x1ZGUgICAgICAgICAgICAgKjovL2NoYW9zaGkuZGV0YWlsLnRtYWxsLmNvbS8qCi8vIEBpbmNsdWRlICAgICAgICAgICAgICo6Ly8qLmxpYW5neGlueWFvLmNvbS8qCi8vIEBpbmNsdWRlICAgICAgICAgICAgICo6Ly8qLnlpeWFvamQuY29tLyoKLy8gQGV4Y2x1ZGUgICAgICAgKjovL2xvZ2luLnRhb2Jhby5jb20vKgovLyBAZXhjbHVkZSAgICAgICAqOi8vcGFnZXMudG1hbGwuY29tLyoKLy8gQGV4Y2x1ZGUgICAgICAgKjovL3VsYW5kLnRhb2Jhby5jb20vKgovLyBAcmVxdWlyZSAgICAgICAgICAgaHR0cHM6Ly9jZG4uc3RhdGljZmlsZS5vcmcvanF1ZXJ5LzEuMTIuNC9qcXVlcnkubWluLmpzCi8vIEByZXF1aXJlICAgICAgaHR0cHM6Ly9jZG4uYm9vdGNzcy5jb20vanF1ZXJ5LnFyY29kZS8xLjAvanF1ZXJ5LnFyY29kZS5taW4uanMKLy8gQHJlcXVpcmUgaHR0cHM6Ly9ncmVhc3lmb3JrLm9yZy9zY3JpcHRzLzQ1MTYwNi0lRTclQkElQTIlRTUlOEMlODUlRTUlQkElOTMvY29kZS8lRTclQkElQTIlRTUlOEMlODUlRTUlQkElOTMuanMKLy8gQGdyYW50ICAgICAgICAgICAgIHVuc2FmZVdpbmRvdwovLyBAZ3JhbnQgICAgICAgICAgICAgR01fb3BlbkluVGFiCi8vIEBncmFudCAgICAgICAgICAgICBHTS5vcGVuSW5UYWIKLy8gQGdyYW50ICAgICAgICAgICAgIEdNX2dldFZhbHVlCi8vIEBncmFudCAgICAgICAgICAgICBHTV9zZXRWYWx1ZQovLyBAZ3JhbnQgICAgICAgIEdNX2FkZFN0eWxlCi8vIEBncmFudCAgICAgICAgICAgICBHTS54bWxIdHRwUmVxdWVzdAovLyBAZ3JhbnQgICAgICAgICAgICAgR01fcmVnaXN0ZXJNZW51Q29tbWFuZAovLyBAbGljZW5zZSAgICAgICAgICAgR1BMIExpY2Vuc2UKLy8gPT0vVXNlclNjcmlwdD09CihmdW5jdGlvbigpIHsKCSd1c2Ugc3RyaWN0JzsKCS8vKioqKioqKioqKioqKioqKioqKuaPkOekuioqKioqKioqKioqKiovLwoJLy/lpoLpgYfliLDpl67popjmiJbogIXmnInku4DkuYjkvJjljJblu7rorq7or7fogZTns7vmiJEvLwoJLy/ov5nmoLfmiY3og73lpJ/mm7Tlpb3nmoTlrozlloTmlLnohJrmnKzvvIzorqnlpKflrrbkvb8vLwoJLy/nlKjotbfmnaXmm7Tmlrnkvr/vvIzosKLosKLlpKflrrbjgIIvLwoKCXZhciBpbmRleF9udW0gPSAwLGl0ZW0gPSBbXSx1cmxzID0gW10sCglwbGF5ZXJMaXN0PVsKCiAgICAgICAgICAgIHsibmFtZSI6ICJNM1U4VFYiLCAidHlwZSI6ICIxLTIiLCAidXJsIjogImh0dHBzOi8vangubTN1OC50di9qaWV4aS8/dXJsPSJ9LAogICAgICAgICAgIC8vIHsibmFtZSI6ICJtMTkwNyIsICJ0eXBlIjogIjEtMi0zIiwgInVybCI6ICJodHRwczovL3oxLm0xOTA3LmNuLz9qeD0ifSwKICAgICAgICAgICAgeyJuYW1lIjogIlBsYXllci1KWSIsICJ0eXBlIjogIjEtMi0zIiwgInVybCI6ICJodHRwczovL2p4LnBsYXllcmp5LmNvbS8/dXJsPSJ9LAogICAgICAgICAgICB7Im5hbWUiOiAi6Jm+57GzIiwgInR5cGUiOiAiMS0yIiwgInVybCI6ICJodHRwczovL2p4LnhtZmx2LmNvbS8/dXJsPSJ9LAogICAgICAgICAgICB7Im5hbWUiOiAiT0siLCAidHlwZSI6ICIzIiwgInVybCI6ICJodHRwczovL2FwaS5va2p4LmNjOjMzODkvangucGhwP3VybD0ifSwKICAgICAgICAgICAgeyJuYW1lIjogIk9LSlgiLCAidHlwZSI6ICIzIiwgInVybCI6ICJodHRwczovL29ranguY2MvP3VybD0ifSwKICAgICAgICAgICAgeyJuYW1lIjogIk1BTyIsICJ0eXBlIjogIjEiLCAidXJsIjogImh0dHBzOi8vd3d3Lm10b3N6LmNvbS9tM3U4LnBocD91cmw9In0sCiAgICAgICAgICAgIHsibmFtZSI6ICLniLHosYYiLCAidHlwZSI6ICIxLTItMyIsICJ1cmwiOiAiaHR0cHM6Ly9qeC5haWRvdWVyLm5ldC8/dXJsPSJ9LAogICAgICAgICAgICB7Im5hbWUiOiAi5aSc5bmVIiwgInR5cGUiOiAiMS0yLTMiLCAidXJsIjogImh0dHBzOi8vd3d3LnllbXUueHl6Lz91cmw9In0sCiAgICAgICAgICAgIHsibmFtZSI6ICI0a2R2IiwgInR5cGUiOiAiMS0yLTMiLCAidXJsIjogImh0dHBzOi8vanguNGtkdi5jb20vP3VybD0ifSwKICAgICAgICAgICAgeyJuYW1lIjogIjE3MTciLCAidHlwZSI6ICIxLTMiLCAidXJsIjogImh0dHBzOi8vY2ttb3YuY2N5ampkLmNvbS9ja21vdi8/dXJsPSJ9LAogICAgICAgICAgICB7Im5hbWUiOiAicWlhbnFpIiwgInR5cGUiOiAiMS0yLTMiLCAidXJsIjogImh0dHBzOi8vYXBpLnFpYW5xaS5uZXQvdmlwLz91cmw9In0sCiAgICAgICAgICAgIHsibmFtZSI6ICJsYW9iYW5kcSIsICJ0eXBlIjogIjEtMiIsICJ1cmwiOiAiaHR0cHM6Ly92aXAubGFvYmFuZHEuY29tL2ppZXhpLnBocD91cmw9In0sCiAgICAgICAgICAgIHsibmFtZSI6ICJDSyIsICJ0eXBlIjogIjEtMiIsICJ1cmwiOiAiaHR0cHM6Ly93d3cuY2twbGF5ZXIudmlwL2ppZXhpLz91cmw9In0sCiAgICAgICAgICAgIHsibmFtZSI6ICLnm5jlj6QiLCAidHlwZSI6ICIxLTIiLCAidXJsIjogImh0dHBzOi8vZ28ueWgwNTIzLmNuL3kuY3k/dXJsPSJ9LAogICAgICAgICAgICB7Im5hbWUiOiAi6Kej5p6QbGEiLCAidHlwZSI6ICIxLTItMyIsICJ1cmwiOiAiaHR0cHM6Ly9hcGkuamlleGkubGEvP3VybD0ifSwKICAgICAgICAgICAgeyJuYW1lIjogIkg4IiwgInR5cGUiOiAiMS0yIiwgInVybCI6ICJodHRwczovL3d3dy5oOGp4LmNvbS9qaWV4aS5waHA/dXJsPSJ9LAogICAgICAgICAgICB7Im5hbWUiOiAiMTfkupEiLCAidHlwZSI6ICIxLTIiLCAidXJsIjogImh0dHBzOi8vd3d3LjE3MTd5dW4uY29tL2p4L3R5LnBocD91cmw9In0sCgkJCXsibmFtZSI6ICJwYW5ndSIsICJ0eXBlIjogIjEtMiIsICJ1cmwiOiAiaHR0cHM6Ly93d3cucGFuZ3VqaWV4aS5jYy9qaWV4aS5waHA/dXJsPSJ9LAogICAgICAgICAgICB7Im5hbWUiOiAi5LiD5b2pIiwgInR5cGUiOiAiMS0yLTMiLCAidXJsIjogImh0dHBzOi8vd3d3Lnh5bWF2LmNvbS8/dXJsPSJ9LAoJCQl7Im5hbWUiOiLkuIPlk6UiLCAidHlwZSI6ICIxLTItMyIsInVybCI6Imh0dHBzOi8vangubW1rdi5jbi90di5waHA/dXJsPSJ9LAoJCQl7Im5hbWUiOiJja21vdiIsInR5cGUiOiAiMS0yIiwidXJsIjoiaHR0cHM6Ly93d3cuY2ttb3YudmlwL2FwaS5waHA/dXJsPSJ9LAoJCQl7Im5hbWUiOiJwbGF5ZXJqeS9C56uZIiwidHlwZSI6ICIxLTItMyIsInVybCI6Imh0dHBzOi8vangucGxheWVyankuY29tLz91cmw9In0sCgkJCXsibmFtZSI6IuivuuivuiIsInR5cGUiOiAiMS0yIiwidXJsIjoiaHR0cHM6Ly93d3cuY2ttb3YuY29tLz91cmw9In0sCgkJCXsibmFtZSI6IkJMIiwidHlwZSI6ICIxLTIiLCJ1cmwiOiJodHRwczovL3ZpcC5ibGppZXguY29tLz92PSJ9LAoJCQl7Im5hbWUiOiLnm5bkuJYiLCJ0eXBlIjogIjEtMi0zIiwidXJsIjoiaHR0cHM6Ly93d3cuZ2FpNC5jb20vP3VybD0ifSwKCQkJeyJuYW1lIjoiODA5MCIsInR5cGUiOiAiMS0yIiwidXJsIjoiaHR0cHM6Ly93d3cuODA5MGcuY24vP3VybD0ifSwKCQkJeyJuYW1lIjoi6K+66K6vIiwidHlwZSI6ICIxLTIiLCJ1cmwiOiJodHRwczovL3d3dy5ueGZsdi5jb20vP3VybD0ifSwKCQkJeyJuYW1lIjogIkJsYm8iLCAidHlwZSI6ICIxLTMiLCAidXJsIjogImh0dHBzOi8vanguYmxiby5jYzo0NDMzLz91cmw9In0sCiAgICAgICAgICAgIHsibmFtZSI6ICLml6DlkI3lsI/nq5kiLCAidHlwZSI6ICIxLTItMyIsICJ1cmwiOiAiaHR0cHM6Ly93d3cuYWRtaW5pc3RyYXRvcncuY29tL3ZpZGVvLnBocD91cmw9In0sCgkJCXsibmFtZSI6ICLnu7zlkIgvQuermSIsICJ0eXBlIjogIjEiLCAidXJsIjogImh0dHBzOi8vanguYm96cmMuY29tOjQ0MzMvcGxheWVyLz91cmw9In0sCgogICAgICAgIF0sCgkJbm9kZT1bCgkJCXsidXJsIjoidy5tZ3R2LmNvbSIsInR5cGUiOiAiMSIsIm5vZGUiOiIjbWd0di1wbGF5ZXItd3JhcCJ9LAoJCQl7InVybCI6Ind3dy5tZ3R2LmNvbSIsInR5cGUiOiAiMSIsIm5vZGUiOiIjbWd0di1wbGF5ZXItd3JhcCJ9LAoJCQl7InVybCI6Im0ubWd0di5jb20iLCJ0eXBlIjogIjIiLCJub2RlIjoiLm1nLXZpZGVvIn0sCgkJCXsidXJsIjogInd3dy5pcWl5aS5jb20iLCJ0eXBlIjogIjEiLCJub2RlIjogIiNmbGFzaGJveCJ9LAoJCQl7InVybCI6Ind3dy5pcS5jb20iLCJ0eXBlIjogIjEiLCJub2RlIjoiLmludGwtdmlkZW8td3JhcCJ9LAoJCQl7InVybCI6ICJtLmlxaXlpLmNvbSIsInR5cGUiOiAiMiIsIm5vZGUiOiAiLm0tdmlkZW8tcGxheWVyIn0sCgkJCXsidXJsIjoidi55b3VrdS5jb20iLCJ0eXBlIjogIjEiLCJub2RlIjoiI3BsYXllciJ9LAoJCQl7InVybCI6Im0ueW91a3UuY29tIiwidHlwZSI6ICIyIiwibm9kZSI6Ii55a3BsYXllciJ9LAoJCQl7InVybCI6InYtd2IueW91a3UuY29tIiwidHlwZSI6ICIxIiwibm9kZSI6IiNwbGF5ZXIifSwKCQkJeyJ1cmwiOiJ2a3UueW91a3UuY29tIiwidHlwZSI6ICIxIiwibm9kZSI6IiNwbGF5ZXIifSwKCQkJeyJ1cmwiOiJ2aWRlby50dWRvdS5jb20iLCJ0eXBlIjogIjEiLCJub2RlIjoiLnRkLXBsYXlib3gifSwKCQkJeyJ1cmwiOiJ2LnFxLmNvbSIsInR5cGUiOiAiMSIsIm5vZGUiIDoiI3BsYXllci1jb250YWluZXJ8I21vZF9wbGF5ZXJ8LmNvbnRhaW5lci1wbGF5ZXIifSwvLyJub2RlIjogIiNtb2RfcGxheWVyIgoJCQl7InVybCI6Im0udi5xcS5jb20iLCJ0eXBlIjogIjIiLCJub2RlIjogIiNwbGF5ZXIifSwKCQkJeyJ1cmwiOiIzZy52LnFxLmNvbSIsInR5cGUiOiAiMiIsIm5vZGUiOiAiI21vZF9wbGF5ZXIifSwKCQkJeyJ1cmwiOiJ0di5zb2h1LmNvbSIsInR5cGUiOiAiMSIsIm5vZGUiOiIjcGxheWVyIn0sCgkJCXsidXJsIjoicGFkLnR2LnNvaHUuY29tIiwidHlwZSI6ICIyIiwibm9kZSI6IiNwbGF5ZXIifSwKCQkJeyJ1cmwiOiJtLnR2LnNvaHUuY29tIiwidHlwZSI6ICIyIiwibm9kZSI6Ii54LXBsYXllciJ9LAoJCQl7InVybCI6ImZpbG0uc29odS5jb20iLCJ0eXBlIjogIjEiLCJub2RlIjoiI3BsYXllcldyYXAifSwKCQkJeyJ1cmwiOiJ3d3cuYWNmdW4uY24iLCJ0eXBlIjogIjEiLCJub2RlIjogIiNwbGF5ZXIifSwKCQkJeyJ1cmwiOiJtLmZ1bi50diIsInR5cGUiOiAiMiIsIm5vZGUiOiAiI2otcGxheWVyLWxheW91dCJ9LAoJCQl7InVybCI6ImZ1bi50diIsInR5cGUiOiAiMSIsIm5vZGUiOiAiI2h0bWwtdmlkZW8tcGxheWVyLWxheW91dCJ9LAoJCQl7InVybCI6Ind3dy5sZS5jb20iLCJ0eXBlIjogIjEiLCJub2RlIjoiI2xlX3BsYXlib3gifSwKCQkJeyJ1cmwiOiJtLmxlLmNvbSIsInR5cGUiOiAiMiIsIm5vZGUiOiIjai1wbGF5ZXIifSwKCQkJeyJ1cmwiOiJ2aXAuMTkwNS5jb20iLCJ0eXBlIjogIjEiLCJub2RlIjoiI3BsYXllciJ9LAoJCQl7InVybCI6InYucHB0di5jb20iLCJ0eXBlIjogIjEiLCJub2RlIjoiI3BwdHZfcGxheXBhZ2VfYm94In0sCgkJCXsidXJsIjoidmlwLnBwdHYuY29tIiwidHlwZSI6ICIxIiwibm9kZSI6Ii53LXZpZGVvIn0sCgkJCXsidXJsIjoibS5wcHR2LmNvbSIsInR5cGUiOiAiMiIsIm5vZGUiOiIucC12aWRlbyJ9LAoJCQl7InVybCI6Ind3dy53YXN1LmNuIiwidHlwZSI6ICIxIiwibm9kZSI6IiNmbGFzaENvbnRlbnQifSwKCQkJeyJ1cmwiOiJ3d3cuYmlsaWJpbGkuY29tIiwidHlwZSI6ICIxIiwibm9kZSI6IiNwbGF5ZXJfbW9kdWxlfCNiaWxpYmlsaVBsYXllciJ9LAoJCQl7InVybCI6Im0uYmlsaWJpbGkuY29tIiwidHlwZSI6ICIyIiwibm9kZSI6Ii5wbGF5ZXItd3JhcHBlciJ9LAoKCQldOwoJCgljb25zdCB0b29scz17CgkJc2xlZXA6KHRpbWUpPT57CgkJCXJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gc2V0VGltZW91dChyZXNvbHZlLCB0aW1lKSk7CgkJfSwKCQl0cmltOihzdHIpPT57CgkJCXJldHVybiBzdHIucmVwbGFjZSgvKF5ccyopfChccyokKS9nLCAiIik7CgkJfSwKCQlHZXRRdWVyeVN0cmluZzoobmFtZSk9PnsKCQkJbGV0IHJlZyA9IGV2YWwoIi8iICsgbmFtZSArICIvZyIpOwoJCQlsZXQgciA9IHdpbmRvdy5sb2NhdGlvbi5zZWFyY2guc3Vic3RyKDEpOwoJCQlsZXQgZmxhZyA9IHJlZy50ZXN0KHIpOwoJCQlpZiAoZmxhZykgewoJCQkJcmV0dXJuIHRydWU7CgkJCX0gZWxzZSB7CgkJCQlyZXR1cm4gZmFsc2U7CgkJCX0KCQl9Cgl9OwoJY29uc3QgdmlkZW89ewoJCWlzQXV0bzpmYWxzZSwKCQlpc0F1dG9QbGF5ZXI6JycsCiAgICAgICAgaXNNb2JpbGU6ZmFsc2UsCgkJYWRWaWRlb0xpc3Q6W10sCiAgICAgICAgdmlkZW9MaXN0OltdLAoJCXRtOm51bGwsCgkJYWR0bTpudWxsLAogICAgICAgIGZsYWc6ZmFsc2UsCgkJY3VyOnsKCQkJeDogMCwKCQkJeTogMAoJCX0sCgkJbng6MCwKICAgICAgICBueTowLAogICAgICAgIGR4OjAsCiAgICAgICAgZHk6MCwKICAgICAgICB4OjAsCiAgICAgICAgeTowLAogICAgICAgIGRpdjI6MCwKCQlwbGF5ZXJQYXJzZTokKCI8ZGl2IGlkPSdpZnJhbWUtcGxheS1kaXYnIHN0eWxlPSd3aWR0aDoxMDAlO2hlaWdodDoxMDAlO3otaW5kZXg6MTAwMDsnPjxpZnJhbWUgaWQ9J2lmcmFtZS1wbGF5ZXInIGZyYW1lYm9yZGVyPScwJyBhbGxvd2Z1bGxzY3JlZW49J3RydWUnIHdpZHRoPScxMDAlJyBoZWlnaHQ9JzEwMCUnPjwvaWZyYW1lPjwvZGl2PiIpLAoJCXBsYXllcjonJywKCQlob3N0OndpbmRvdy5sb2NhdGlvbi5ob3N0LAoJCWhyZWY6d2luZG93LmxvY2F0aW9uLmhyZWYsCgkJaXNWaXA6ZmFsc2UsCgkJY3VycmVudFZpZGVvOm51bGwsCgkJaW5pdENzczooKT0+ewoJCQlHTV9hZGRTdHlsZShgCgkJCSN2Ym94IHtjdXJzb3I6cG9pbnRlcjsgcG9zaXRpb246Zml4ZWQ7IHRvcDoxMHB4OyBsZWZ0OjVweDsgd2lkdGg6MHB4OyB6LWluZGV4OjIxNDc0ODM2NDc7IGZvbnQtc2l6ZToxNnB4OyB0ZXh0LWFsaWduOmxlZnQ7fQoJCQkjdmlwX21vdmllX2JveCAuaXRlbV90ZXh0IHt9CgkJCSN2Ym94IC5pdGVtX3RleHQgLmltZ19ib3h7d2lkdGg6MjZweDsgaGVpZ2h0OjM1cHg7bGluZS1oZWlnaHQ6MzVweDt0ZXh0LWFsaWduOmNlbnRlcjtiYWNrZ3JvdW5kLWNvbG9yOiNFNTIxMkU7fQoJCQkjdmJveCAuaXRlbV90ZXh0IC5pbWdfYm94ID5pbWcge3dpZHRoOjIwcHg7IGRpc3BsYXk6aW5saW5lLWJsb2NrOyB2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7fQoJCQkjdmJveCAudmlwX21vZF9ib3hfYWN0aW9uIHtkaXNwbGF5Om5vbmU7IHBvc2l0aW9uOmFic29sdXRlOyBsZWZ0OjI2cHg7IHRvcDowOyB0ZXh0LWFsaWduOmNlbnRlcjsgYmFja2dyb3VuZC1jb2xvcjojMjcyOTMwOyBib3JkZXI6MXB4IHNvbGlkIGdyYXk7fQoJCQkjdmJveCAudmlwX21vZF9ib3hfYWN0aW9uIGxpe2JvcmRlci1yYWRpdXM6MnB4OyBmb250LXNpemU6MTJweDsgY29sb3I6I0RDRENEQzsgdGV4dC1hbGlnbjpjZW50ZXI7IHdpZHRoOjU4cHg7IGxpbmUtaGVpZ2h0OjIxcHg7IGZsb2F0OmxlZnQ7IGJvcmRlcjoxcHggc29saWQgZ3JheTsgcGFkZGluZzowIDRweDsgbWFyZ2luOjRweCAycHg7b3ZlcmZsb3c6aGlkZGVuO3doaXRlLXNwYWNlOiBub3dyYXA7dGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7LW8tdGV4dC1vdmVyZmxvdzplbGxpcHNpczt9CgkJCSN2Ym94IC52aXBfbW9kX2JveF9hY3Rpb24gbGk6aG92ZXJ7Y29sb3I6I0U1MjEyRTsgYm9yZGVyOjFweCBzb2xpZCAjRTUyMTJFO30KCQkJI3Zib3ggbGkuc2VsZWN0ZWR7Y29sb3I6I0U1MjEyRTsgYm9yZGVyOjFweCBzb2xpZCAjRTUyMTJFO30KCQkJI3Zib3ggLnNlbGVjdGVkX3RleHQge21hcmdpbi10b3A6NXB4O30KCQkJI3Zib3ggLnNlbGVjdGVkX3RleHQgLmltZ19ib3h7d2lkdGg6MjZweDsgaGVpZ2h0OjM1cHg7bGluZS1oZWlnaHQ6MzVweDt0ZXh0LWFsaWduOmNlbnRlcjtiYWNrZ3JvdW5kLWNvbG9yOiNFNTIxMkU7fQoJCQkjdmJveCAuc2VsZWN0ZWRfdGV4dCAuaW1nX2JveCA+aW1nIHt3aWR0aDoyMHB4OyBoZWlnaHQ6MjBweDtkaXNwbGF5OmlubGluZS1ibG9jazsgdmVydGljYWwtYWxpZ246bWlkZGxlO30KCQkJI3Zib3ggLnZpcF9tb2RfYm94X3NlbGVjdGVkIHtkaXNwbGF5Om5vbmU7cG9zaXRpb246YWJzb2x1dGU7IGxlZnQ6MjZweDsgdG9wOjA7IHRleHQtYWxpZ246Y2VudGVyOyBiYWNrZ3JvdW5kLWNvbG9yOiNGNUY2Q0U7IGJvcmRlcjoxcHggc29saWQgZ3JheTt9CgkJCSN2Ym94IC52aXBfbW9kX2JveF9zZWxlY3RlZCB1bHtvdmVyZmxvdy15OiBhdXRvO30KCQkJI3Zib3ggLnZpcF9tb2RfYm94X3NlbGVjdGVkIGxpe2JvcmRlci1yYWRpdXM6MnB4OyBmb250LXNpemU6MTJweDsgY29sb3I6IzM5M0FFNjsgdGV4dC1hbGlnbjpjZW50ZXI7IHdpZHRoOjk1cHg7IGxpbmUtaGVpZ2h0OjI3cHg7IGZsb2F0OmxlZnQ7IGJvcmRlcjoxcHggZGFzaGVkIGdyYXk7IHBhZGRpbmc6MCA0cHg7IG1hcmdpbjo0cHggMnB4O2Rpc3BsYXk6YmxvY2s7d2hpdGUtc3BhY2U6IG5vd3JhcDtvdmVyZmxvdzogaGlkZGVuO3RleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO30KCQkJI3Zib3ggLnZpcF9tb2RfYm94X3NlbGVjdGVkIGxpOmhvdmVye2NvbG9yOiNFNTIxMkU7IGJvcmRlcjoxcHggc29saWQgI0U1MjEyRTt9CgkJCSN2Ym94IC5kZWZhdWx0LXNjcm9sbGJhci01NTY3ODo6LXdlYmtpdC1zY3JvbGxiYXJ7d2lkdGg6NXB4OyBoZWlnaHQ6MXB4O30KCQkJI3Zib3ggLmRlZmF1bHQtc2Nyb2xsYmFyLTU1Njc4Ojotd2Via2l0LXNjcm9sbGJhci10aHVtYntib3gtc2hhZG93Omluc2V0IDAgMCA1cHggcmdiYSgwLCAwLCAwLCAwLjIpOyBiYWNrZ3JvdW5kOiNBOEE4QTg7fQoJCQkjdmJveCAuZGVmYXVsdC1zY3JvbGxiYXItNTU2Nzg6Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNre2JveC1zaGFkb3c6aW5zZXQgMCAwIDVweCByZ2JhKDAsIDAsIDAsIDAuMik7IGJhY2tncm91bmQ6I0YxRjFGMTt9CiAgICAgICAgICAgIC5jbG9zZSB7IG9wYWNpdHk6IDAuMzt9CiAgICAgICAgICAgIC5jbG9zZTpob3ZlciB7b3BhY2l0eTogMTt9CiAgICAgICAgICAgIC5jbG9zZTpiZWZvcmUsIC5jbG9zZTphZnRlciB7ZmxvYXQ6IHJpZ2h0O3Bvc2l0aW9uOiByZWxhdGl2ZTtyaWdodDogOCU7dG9wOiA1cHg7Y29udGVudDogJyAnO2hlaWdodDogMjBweDt3aWR0aDogMXB4O2JhY2tncm91bmQtY29sb3I6IHdoaXRlO30KICAgICAgICAgICAgLmNsb3NlOmJlZm9yZSB7dHJhbnNmb3JtOiByb3RhdGUoNDVkZWcpO30KICAgICAgICAgICAgLmNsb3NlOmFmdGVyIHt0cmFuc2Zvcm06IHJvdGF0ZSgtNDVkZWcpO30KCQkJYCk7CgkJfSwKICAgICAgICBtdkRvd246KCk9PnsKICAgICAgICAgICAgdmlkZW8uZmxhZyA9IHRydWU7CiAgICAgICAgICAgIHZhciB0b3VjaDsKICAgICAgICAgICAgaWYgKGV2ZW50LnRvdWNoZXMpIHsKICAgICAgICAgICAgICAgIHRvdWNoID0gZXZlbnQudG91Y2hlc1swXTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIHRvdWNoID0gZXZlbnQ7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdmlkZW8uY3VyLnggPSB0b3VjaC5jbGllbnRYOwogICAgICAgICAgICB2aWRlby5jdXIueSA9IHRvdWNoLmNsaWVudFk7CiAgICAgICAgICAgIHZpZGVvLmR4ID0gdmlkZW8uZGl2Mi5vZmZzZXRMZWZ0OwogICAgICAgICAgICB2aWRlby5keSA9IHZpZGVvLmRpdjIub2Zmc2V0VG9wOwogICAgICAgIH0sCiAgICAgICAgbXZNb3ZlOigpPT57CiAgICAgICAgICAgIGlmICh2aWRlby5mbGFnKSB7CiAgICAgICAgICAgICAgICB2YXIgdG91Y2g7CiAgICAgICAgICAgICAgICBpZiAoZXZlbnQudG91Y2hlcykgewogICAgICAgICAgICAgICAgICAgIHRvdWNoID0gZXZlbnQudG91Y2hlc1swXTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgdG91Y2ggPSBldmVudDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHZpZGVvLm54ID0gdG91Y2guY2xpZW50WCAtIHZpZGVvLmN1ci54OwogICAgICAgICAgICAgICAgdmlkZW8ubnkgPSB0b3VjaC5jbGllbnRZIC0gdmlkZW8uY3VyLnk7CiAgICAgICAgICAgICAgICB2aWRlby54ID0gdmlkZW8uZHggKyB2aWRlby5ueDsKICAgICAgICAgICAgICAgIHZpZGVvLnkgPSB2aWRlby5keSArIHZpZGVvLm55OwogICAgICAgICAgICAgICAgdmlkZW8uZGl2Mi5zdHlsZS5sZWZ0ID0gdmlkZW8ueCArICJweCI7CiAgICAgICAgICAgICAgICB2aWRlby5kaXYyLnN0eWxlLnRvcCA9IHZpZGVvLnkgKyAicHgiOwogICAgICAgICAgICAgICAgR01fc2V0VmFsdWUoJ0dNX0lYJywgdmlkZW8ueCk7CiAgICAgICAgICAgICAgICBHTV9zZXRWYWx1ZSgnR01fSVknLCB2aWRlby55KTsKICAgICAgICAgICAgICAgIC8v6Zi75q2i6aG16Z2i55qE5ruR5Yqo6buY6K6k5LqL5Lu2CiAgICAgICAgICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJ0b3VjaG1vdmUiLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICAgICAgICAgfSwgZmFsc2UpOwogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICBtdkVuZDooKT0+ewogICAgICAgICAgIHZpZGVvLmZsYWcgPSBmYWxzZTsKICAgICAgICB9LAoJCXJ2VmlkZW9BRDooKT0+ewoJCQlsZXQgaT0wLHNldFRtPXNldEludGVydmFsKCgpPT57aT41MDA/Y2xlYXJJbnRlcnZhbChzZXRUbSk6dmlkZW8uYWRWaWRlb0xpc3QuZm9yRWFjaCgoZSx0KT0+e2UuZHVyYXRpb24hPWUuY3VycmVudFRpbWUmJmUuc2V0QXR0cmlidXRlKCJzcmMiLCIiKX0pfSwxMDApOwoJCX0sCiAgICAgICAgcm1WaWRlbzooKT0+ewogICAgICAgICAgIHRyeXtsZXQgdD0wLGU9c2V0SW50ZXJ2YWwoKCk9Pnt0PjUwMD9jbGVhckludGVydmFsKGUpOnZpZGVvLnZpZGVvTGlzdC5mb3JFYWNoKCh0LGUpPT57dC5zZXRBdHRyaWJ1dGUoInNyYyIsIiIpLHQucGF1c2UoKX0pfSwxMDApfWNhdGNoKHQpe30KCiAgICAgICAgfSwKCQlhdXRvU2VsZWN0OigpPT57CgkJCXNldEludGVydmFsKCgpPT57dHJ5eyQoIi5wYW5lbC1vdmVybGF5IikuaGlkZSgpfWNhdGNoKGUpe31sZXQgZT1sb2NhdGlvbi5ocmVmO2lmKGUhPXZpZGVvLmhyZWYpe3ZpZGVvLmhyZWY9ZTtsZXQgcj12aWRlby5pc0F1dG9QbGF5ZXIrdmlkZW8uaHJlZjtudWxsPT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaWZyYW1lLXBsYXllciIpP3dpbmRvdy5sb2NhdGlvbi5ocmVmPXZpZGVvLmhyZWY6KHZpZGVvLnJ2VmlkZW9BRCgpLHZpZGVvLnJtVmlkZW8oKSwkKCIjaWZyYW1lLXBsYXllciIpLmF0dHIoInNyYyIsIiIpLHZpZGVvLnBsYXllci5lbXB0eSgpLHZpZGVvLnBsYXllci5hcHBlbmQodmlkZW8ucGxheWVyUGFyc2UpLCQoIiNpZnJhbWUtcGxheWVyIikuYXR0cigic3JjIixyKSxjbGVhckludGVydmFsKHZpZGVvLmFkdG0pKX19LDFlMyk7CgkJfSwKCQlhdXRvUGxheWVyOigpPT57CgkJCTE9PXZpZGVvLmlzQXV0byYmIiIhPXZpZGVvLmlzQXV0b1BsYXllciYmbnVsbCE9dmlkZW8uaXNBdXRvUGxheWVyJiYoc2V0VGltZW91dCgoKT0+e2ZvcihsZXQgZSBvZiBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidmlkZW8iKSl2aWRlby52aWRlb0xpc3QucHVzaChlKX0sMTIwMCksdmlkZW8ucnZWaWRlb0FEKCksdmlkZW8ucm1WaWRlbygpLHNldFRpbWVvdXQoKCk9PntsZXQgZT12aWRlby5pc0F1dG9QbGF5ZXIrdmlkZW8uaHJlZjtudWxsPT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaWZyYW1lLXBsYXllciIpJiYodmlkZW8ucnZWaWRlb0FEKCksdmlkZW8ucGxheWVyLmVtcHR5KCksdmlkZW8ucGxheWVyLmFwcGVuZCh2aWRlby5wbGF5ZXJQYXJzZSkpLCQoIiNpZnJhbWUtcGxheWVyIikuYXR0cigic3JjIixlKSxjbGVhckludGVydmFsKHZpZGVvLmFkdG0pfSwxODAwKSk7CgkJCgoJCX0sCgkJaW5pdEh0bWw6KCk9PnsKCQkJbGV0IGltZyA9CQkJYGRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBREFBQUFBd0NBWUFBQUJYQXZtSEFBQUM5a2xFUVZSb1ErMlpQV2dWUVJESC83L0NXcU9JWU9GSEZiUlNqSmhHTUdEcEJ5b0lhZ283MGNxdlV0UWdkaXBXRnFhd01XZ2hHSWlkaGNIS1FBSnFFVVJCUmZFRDFDQ0NqYzNJUHU0ZW0zMTc3NUo3ZDNtOGNBdFgzTzdzelA3blB6c3p4NkVlSC9UNCtWVUQ2RGFEVFFiTWJFKzNEN01ZKzhDa2t3OEJQRnVNa2k3S0R0VUF1dWg5WjNvWk10QmxqeFkyWDllQndxNHJhV1BOUUVtT0xLeG0rVEJnWnFza25RMWRBVnpOY28rWmhXc202WmFrSFpMQzFtUXlyWjVPWDJSdnpNeG5TYThselFKL1l3THpHREN6ZTVKT2VvSS9nYlZ0QU14SjZ2UFc3d0tua3I0cWJFdWF4Y2NEY0dXQnNmTlYwbWpNbVNHQWc1TEdBNlhiZ0ZlaElUUGJMZWw1TU44NFpBVUFVak1QZ1dPK3paWTdZR2J2SlcwT3ZSb0I4RWpTRVc5K0JoaEl2T3ZDcDB3R2ZQUGJnWmZwUkF6QVRVbm41NkdFbUp5TGQzOWNCTnhlRjk5RkFEVGE0MkJza3VRZWY0d0RoOW9CMkNYcFJiRHBNUEE0blRPejA1THVCRExyZ1crZEFBQ0dJa3hma0hURG0vOERyTXdFa0J4Z09za2txZHdFY01BRDRHTGYzWUYwUEFDT2UrdUZHTWdBNEJqNEVBQWJBR2JjWExRT21Oa2xTZGVDVFJ1QlQyYldMK2xOc0xZZmVGSVJnSDJTSmdKN0d3Q1hZak1CckpiMEs5alVpSEV6RzVGMDJWdWJBOWI0c2tYdlFNaUFtVzJWZEZTU24yNC9BczBrazFtSnpleXBwTDNld2FhQm5XWTJLMm1MTno4UzV1ZUNBTUx3ejNxL0RaeHJld2VTZTNCQzB2MUFpN3RrWVhyc0I5Nld3TUJDQWZRQnYzTUJKQ0QrU1ZyaGFYYVo1NHozUGdVTWhwWXJaS0NGN2JiTm5KazVCaHdUNmZnaHlXOHRob0d4aWdFNG15NnRYd2VtUWx0NUFHSTFvYW1EU0lGTG1DdVVSaVc1Qk9HUEw4QzdkckdWMjA2YjJYZEo2eUpLeG9EaG1QS0NJZVM2MVpaQ2xuY3hGZ0xBdGN5eHJuRXdSbWtuREZRRklGWVRXbkovQ1Ztb0dnWVNqN1o4MU9SODZMZzdzT2dQbW5ZNnMwSXBONFR5WXJEYjZ6V0Ftb0VPUFZDSFVJY083SGg3L1llbVl4Y1dVN0FNZjNCa05HREYvRlA5cmt3R3FqZGRrb1dXdjVRbDZWMXlOWFVkV0hLWEJ3Wjdub0gvZFArSFFOcWhlVG9BQUFBQVNVVk9SSzVDWUlJPWA7CgkJCWxldCBodG1sMT0iIiwgaHRtbDIgPSAiIixvcHRpb249IiIsY2hlY2tib3g9IiIsc2VsZWN0b3B0aW9uPSIiOwoJCQlsZXQgZ21pc2F1dG89R01fZ2V0VmFsdWUoJ0lTQVVUTycpOwoJCQlsZXQgZ21pc2F1dG9wbGF5ZXI9R01fZ2V0VmFsdWUoJ0lTQVVUT1BMQVlFUicpOwoJCQlpZihnbWlzYXV0bz09MSAmJiBnbWlzYXV0byAhPXVuZGVmaW5lZCl7CgkJCQljaGVja2JveD0iY2hlY2tlZCI7CgkJCQl2aWRlby5pc0F1dG89dHJ1ZTsKCQkJfQoJCQlpZihnbWlzYXV0b3BsYXllciAmJiBnbWlzYXV0b3BsYXllciAhPXVuZGVmaW5lZCl7CgkJCQlzZWxlY3RvcHRpb249InNlbGVjdGVkIjsKCQkJCXZpZGVvLmlzQXV0b1BsYXllcj1nbWlzYXV0b3BsYXllcjsKCQkJfQoKCgkJCXBsYXllckxpc3QuZm9yRWFjaCgodiwgaykgPT4gewoJCQkJbGV0IHR5cGVfYXJyPXYudHlwZS5zcGxpdCgnLScpOwoJCQkJdHlwZV9hcnIuZm9yRWFjaCgoZCxpKT0+ewoJCQkJCWlmKHZpZGVvLmlzTW9iaWxlKXsKCQkJCQkJaWYoZD09Myl7CgkJCQkJCQlodG1sMSArPSAiPGxpIHRpdGxlPSciICsgdi5uYW1lICsgIicgZGF0YS1rPSciICsgayArICInIGRhdGEtdD0nMSc+IiArIHYubmFtZSArICI8L2xpPiI7CgkJCQkJCQlpZih2LnVybD09Z21pc2F1dG9wbGF5ZXIpewoJCQkJCQkJCW9wdGlvbis9IjxvcHRpb24gdmFsdWUgPSciK3YudXJsKyInICIrc2VsZWN0b3B0aW9uKyI+Iit2Lm5hbWUrIjwvb3B0aW9uPiIKCQkJCQkJCX1lbHNlewoJCQkJCQkJCW9wdGlvbis9IjxvcHRpb24gdmFsdWUgPSciK3YudXJsKyInID4iK3YubmFtZSsiPC9vcHRpb24+IgoJCQkJCQkJfQoJCQkJCQl9CgkJCQkJfWVsc2V7CgkJCQkJCWlmKGQ9PTEpewoJCQkJCQkJaHRtbDEgKz0gIjxsaSB0aXRsZT0nIiArIHYubmFtZSArICInIGRhdGEtaz0nIiArIGsgKyAiJyBkYXRhLXQ9JzEnPiIgKyB2Lm5hbWUgKyAiPC9saT4iOwoJCQkJCQkJaWYodi51cmw9PWdtaXNhdXRvcGxheWVyKXsKCQkJCQkJCQlvcHRpb24rPSI8b3B0aW9uIHZhbHVlID0nIit2LnVybCsiJyAiK3NlbGVjdG9wdGlvbisiPiIrdi5uYW1lKyI8L29wdGlvbj4iCgkJCQkJCQl9ZWxzZXsKCQkJCQkJCQlvcHRpb24rPSI8b3B0aW9uIHZhbHVlID0nIit2LnVybCsiJyA+Iit2Lm5hbWUrIjwvb3B0aW9uPiIKCQkJCQkJCX0KCQkJCQkJfQoJCQkJCQlpZihkPT0yKXsKCQkJCQkJCWh0bWwyICs9ICI8bGkgdGl0bGU9JyIgKyB2Lm5hbWUgKyAiJyBkYXRhLWs9JyIgKyBrICsgIicgZGF0YS10PScyJz4iICsgdi5uYW1lICsgIjwvbGk+IjsKCQkJCQkJfQoJCQkJCX0KCgoKCgkJCQl9KQoKCQkJfSk7CiAgICAgICAgICAgIGxldCBpWCA9IEdNX2dldFZhbHVlKCdHTV9JWCcpID8gR01fZ2V0VmFsdWUoJ0dNX0lYJykgOiAodmlkZW8uaXNNb2JpbGUgPyAzNSA6IDEwKTsKICAgICAgICAgICAgbGV0IGlZID0gR01fZ2V0VmFsdWUoJ0dNX0lZJykgPyBHTV9nZXRWYWx1ZSgnR01fSVknKSA6ICh2aWRlby5pc01vYmlsZSA/IDcwIDogMzIwKTsKICAgICAgICAgICAvLyBsZXQgaVcgPSB0ID09IDEgPyAxNTAgOiAzMDA7CgoJCQlsZXQgaHRtbCA9IGA8ZGl2IGlkPSd2Ym94JyAgc3R5bGU9InRvcDpgICsgaVkgKyBgcHg7IGxlZnQ6YCArIGlYICsgYHB4OyI+CgkJCQkJCQkJCTxkaXYgY2xhc3M9J2l0ZW1fdGV4dCc+CgkJCQkJCQkJCQk8ZGl2IGNsYXNzPSJpbWdfYm94IiBpZD0iaW1nX2JveF82NjY3ODk3aWlvIj48aW1nIHNyYz0nYCArIGltZyArIGAnIHRpdGxlPSfngrnlh7vot7PovazliLDnu7zlkIjop6PmnpDpobXpnaLvvIznur/ot6/pmo/mhI/pgInvvIEnLz48L2Rpdj4KCQkJCQkJCQkJCQk8ZGl2IGNsYXNzPSd2aXBfbW9kX2JveF9hY3Rpb24nID4KCQkJCQkJCQkJCQkJPGRpdiBzdHlsZT0nZGlzcGxheTpmbGV4Oyc+CgkJCQkJCQkJCQkJCQk8ZGl2IHN0eWxlPSdwYWRkaW5nOjEwcHggMHB4OyBtaW4td2lkdGg6MzIwcHg7IG1heC1oZWlnaHQ6NTUwcHg7IG92ZXJmbG93LXk6YXV0bzsnICBjbGFzcz0iZGVmYXVsdC1zY3JvbGxiYXItNTU2NzgiPgoJCQkJCQkJCQkJCQkJCTxkaXY+CgkJCQkJCQkJCQkJCQkJCTxkaXYgc3R5bGU9J2ZvbnQtc2l6ZToxNnB4OyB0ZXh0LWFsaWduOmNlbnRlcjsgY29sb3I6I0U1MjEyRTsgcGFkZGluZzo1cHggMHB4Oyc+PGI+6KeG6aKR6Kej5p6QW+WGheW1jOaSreaUvl08L2I+PGEgaHJlZj0iIyIgY2xhc3M9ImNsb3NlIi8+PC9kaXY+CgkJCQkJCQkJCQkJCQkJCTx1bD4KCQkJCQkJCQkJCQkJCQkJCWAgKyBodG1sMSArIGAKCQkJCQkJCQkJCQkJCQkJCTxkaXYgc3R5bGU9J2NsZWFyOmJvdGg7Jz48L2Rpdj4KCQkJCQkJCQkJCQkJCQkJPC91bD4KCQkJCQkJCQkJCQkJCQk8L2Rpdj4KCQkJCQkJCQkJCQkJCQk8ZGl2PgoJCQkJCQkJCQkJCQkJCQk8ZGl2IHN0eWxlPSdmb250LXNpemU6MTZweDsgdGV4dC1hbGlnbjpjZW50ZXI7IGNvbG9yOiNFNTIxMkU7IHBhZGRpbmc6NXB4IDBweDsnPjxiPuinhumikeino+aekFvlvLnnqpfmkq3mlL5dPC9iPjwvZGl2PgoJCQkJCQkJCQkJCQkJCQk8dWw+CgkJCQkJCQkJCQkJCQkJCWAgKyBodG1sMiArIGAKCQkJCQkJCQkJCQkJCQkJPGRpdiBzdHlsZT0nY2xlYXI6Ym90aDsnPjwvZGl2PgoJCQkJCQkJCQkJCQkJCQk8L3VsPgoJCQkJCQkJCQkJCQkJCTwvZGl2PgoJCQkJCQkJCQkJCQkJCTxkaXY+CgkJCQkJCQkJCQkJCQkJCTxkaXYgc3R5bGU9J2ZvbnQtc2l6ZToxNnB4OyB0ZXh0LWFsaWduOmNlbnRlcjsgY29sb3I6I0U1MjEyRTsgcGFkZGluZzo1cHggMHB4Oyc+PGI+6Kej5p6Q6YWN572uPC9iPjwvZGl2PgoJCQkJCQkJCQkJCQkJCQk8ZGl2ID48c3BhbiBzdHlsZT0nY29sb3I6d2hpdGUnID7oh6rliqjop6PmnpDvvJo8L3NwYW4+PGlucHV0IGlkPSdJc2F1dG8nIHR5cGU9J2NoZWNrYm94JyBgICsgY2hlY2tib3ggKyBgIHN0eWxlPSdib3JkZXI6IDFweCBzb2xpZCAjY2NjO3dpZHRoOiAxNXB4O2hlaWdodDogMTVweDstd2Via2l0LWFwcGVhcmFuY2U6YXV0bycvPjwvZGl2PgoJCQkJCQkJCQkJCQkJCQk8ZGl2PjxzcGFuIHN0eWxlPSdjb2xvcjp3aGl0ZScgPumAieaLqeino+aekOWcsOWdgO+8mjwvc3Bhbj48c2VsZWN0IGlkPSdJc2F1dG9wbGF5ZXInIHN0eWxlPScgY29sb3I6IHdoaXRlO2JvcmRlcjoxcHggc29saWQgI2NjYztiYWNrZ3JvdW5kOiNjY2MnPgoJCQkJCQkJCQkJCQkJCQkJCSBgICsgb3B0aW9uICsgYAoJCQkJCQkJCQkJCQkJCQkJCTwvc2VsZWN0PgoJCQkJCQkJCQkJCQkJCQkJCTwvZGl2PgoJCQkJCQkJCQkJCQkJCQk8L3VsPgoJCQkJCQkJCQkJCQkJCTwvZGl2PgoJCQkJCQkJCQkJCQkJPC9kaXY+CgkJCQkJCQkJCQkJCTxkaXY+CgkJCQkJCQkJCQkJPC9kaXY+CgkJCQkJCQkJCQk8L2Rpdj4KCQkJCQkJCQkJPC9kaXY+CgkJCQkJCQkJPC9kaXY+CgkJCQkJCQkJYDsKCgoJCQkkKCJib2R5IikuYXBwZW5kKGh0bWwpOwogICAgICAgICAgICB2aWRlby5kaXYyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInZib3giKTsKCQl9LAoJCWNsb3NlQUQ6KCk9PnsKICAgICAgICAgICAgY29uc29sZS5sb2codmlkZW8uYWRWaWRlb0xpc3QpOwoJCQlpZiAodmlkZW8uaG9zdCA9PSAndi5xcS5jb20nKSB7CgkJCQl2aWRlby5hZHRtPXNldEludGVydmFsKCgpID0+IHsKCQkJCQl0cnkgewoJCQkJCQlsZXQgYWR2cyA9ICQoJy50eHBfYWQnKS5maW5kKCd0eHBkaXYnKS5maW5kKCd2aWRlbycpOwoJCQkJCQlhZHZzLmVhY2goZnVuY3Rpb24oaW5kZXgsIHZvYmopIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZGVvLmFkVmlkZW9MaXN0LnB1c2godm9iaik7CgkJCQkJCQlpZiAodm9iai5kdXJhdGlvbiAhPT0gdm9iai5jdXJyZW50VGltZSkgewoJCQkJCQkJCXZvYmouc2V0QXR0cmlidXRlKCdzcmMnLCAnJyk7CgkJCQkJCQl9CgkJCQkJCX0pCgkJCQkJfSBjYXRjaCAoZSkge30KCQkJCX0sIDEwKTsKCgkJCX0gZWxzZSBpZiAodmlkZW8uaG9zdCA9PSAnbS52LnFxLmNvbScgfHwgdmlkZW8uaG9zdD09JzNnLnYucXEuY29tJykgewoJCQkJdmlkZW8uYWR0bT1zZXRJbnRlcnZhbCgoKSA9PiB7CgkJCQkJdHJ5IHsKCQkJCQkJJCgiI3ZpcFBvc3RlckNvbnRlbnQiKS5yZW1vdmUoKTsvL+enu+mZpFZJUOeUteW9seaUtui0ueW8ueeqlwoJCQkJCQlpZigkKCcudHhwX2FkJylbMF0gJiYgISQoJy50eHBfYWQnKS5oYXNDbGFzcygidHhwX25vbmUiKSl7CgkJCQkJCQkgJCgndmlkZW8nKS5lYWNoKGZ1bmN0aW9uIChpLHZvYmopIHsKCQkJCQkJCSAgIHZvYmouc2V0QXR0cmlidXRlKCdzcmMnLCBudWxsKQoJCQkJCQkJIH0pOwoKCQkJCQkgICB9CgkJCQkJICAgaHJlZiA9IHdpbmRvdy5sb2NhdGlvbi5ocmVmCgkJCQkJfSBjYXRjaCAoZSkge30KCQkJCX0sIDE1MCk7CgkJCX0gZWxzZSBpZiAodmlkZW8uaG9zdCA9PSAnd3d3LmlxaXlpLmNvbScpIHsKCQkJCXRyeSB7CgkJCQkJdW5zYWZlV2luZG93LnJhdGUgPSAwOwoJCQkJCXVuc2FmZVdpbmRvdy5EYXRlLm5vdyA9ICgpID0+IHsKCQkJCQkJcmV0dXJuIG5ldyB1bnNhZmVXaW5kb3cuRGF0ZSgpLmdldFRpbWUoKSArICh1bnNhZmVXaW5kb3cucmF0ZSArPSAxMDAwKTsKCQkJCQl9CgkJCQkJc2V0SW50ZXJ2YWwoKCkgPT4gewoJCQkJCQl1bnNhZmVXaW5kb3cucmF0ZSA9IDA7CgkJCQkJfSwgNjAwMDAwKTsKCQkJCX0gY2F0Y2ggKGUpIHt9CgkJCQl2aWRlby5hZHRtPXNldEludGVydmFsKCgpID0+IHsKCQkJCQl0cnkgewoJCQkJCQlpZiAoZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgiY3VwaWQtcHVibGljLXRpbWUiKVswXSAhPSBudWxsKSB7CgkJCQkJCQkkKCIuc2tpcHBhYmxlLWFmdGVyIikuY3NzKCJkaXNwbGF5IiwgImJsb2NrIik7CgkJCQkJCQlkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCJza2lwcGFibGUtYWZ0ZXIiKVswXS5jbGljaygpOwoJCQkJCQl9CgkJCQkJCSQoIi5xeS1wbGF5ZXItdmlwcGF5LXBvcHVwIikuY3NzKCJkaXNwbGF5IiwgIm5vbmUiKTsKCQkJCQkJJCgiLmJsYWNrLXNjcmVlbiIpLmNzcygiZGlzcGxheSIsICJub25lIik7CgkJCQkJfSBjYXRjaCAoZSkge30KCQkJCX0sIDUwMCk7CgoKCQkJfWVsc2UgaWYgKHZpZGVvLmhvc3QgPT0gJ20uaXFpeWkuY29tJykgewoJCQkJCXZpZGVvLmFkdG09c2V0SW50ZXJ2YWwoKCkgPT4gewoJCQkJCXRyeSB7CgkJCQkJCWlmKCEkKCcubm9ybWFsLXB1YmxpYy10aW1lJykuaXMoIjpoaWRkZW4iKSl7CgkJCQkJCQkgJCgndmlkZW8nKS5lYWNoKGZ1bmN0aW9uIChpLHZvYmopIHsKCQkJCQkJCQkgdm9iai5jdXJyZW50VGltZT04ODg7CgkJCQkJCQkgfSk7CgkJCQkJICAgfQoJCQkJCSAgIGhyZWYgPSB3aW5kb3cubG9jYXRpb24uaHJlZgoJCQkJCX0gY2F0Y2ggKGUpIHt9CgkJCQl9LCAxMDApOwoKCQkJfSBlbHNlIGlmICh2aWRlby5ob3N0ID09ICd2LnlvdWt1LmNvbScgfHwgdmlkZW8uaG9zdCA9PSAndi13Yi55b3VrdS5jb20nIHx8IHZpZGVvLmhvc3Q9PSd2a3UueW91a3UuY29tJykgewoJCQkJd2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uKCkgewoJCQkJCXRyeSB7CgkJCQkJCWlmICghZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgndmlkZW8nKVswXSkgewoJCQkJCQkJc2V0SW50ZXJ2YWwoZnVuY3Rpb24oKSB7CgkJCQkJCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgndmlkZW8nKVsxXS5wbGF5YmFja1JhdGUgPSAxNjsKCQkJCQkJCX0sIDEwMCkKCQkJCQkJfQoJCQkJCX0gY2F0Y2ggKGUpIHt9CgkJCQl9CgkJCQl2aWRlby5hZHRtPXNldEludGVydmFsKCgpID0+IHsKCQkJCQl0cnkgewoJCQkJCQl2YXIgSDUgPSAkKCIuaDUtZXh0LWxheWVyIikuZmluZCgiZGl2IikKCQkJCQkJaWYgKEg1Lmxlbmd0aCAhPSAwKSB7CgkJCQkJCQkkKCIuaDUtZXh0LWxheWVyIGRpdiIpLnJlbW92ZSgpOwoJCQkJCQkJdmFyIGJ0biA9ICQoIi5jb250cm9sLWxlZnQtZ3JpZCAuY29udHJvbC1wbGF5LWljb24iKTsKCQkJCQkJCWlmIChidG4uYXR0cigiZGF0YS10aXAiKSA9PT0gIuaSreaUviIpIHsKCQkJCQkJCQkkKCIuaDVwbGF5ZXItZGFzaGJvYXJkIikuY3NzKCJkaXNwbGF5IiwgImJsb2NrIik7CgkJCQkJCQkJYnRuLmNsaWNrKCk7CgkJCQkJCQkJJCgiLmg1cGxheWVyLWRhc2hib2FyZCIpLmNzcygiZGlzcGxheSIsICJub25lIik7CgkJCQkJCQl9CgkJCQkJCX0KCQkJCQkJdmFyIGFkdj0kKCcuYWR2ZXJ0aXNlLWxheWVyJykuZmluZCgnZGl2JykuZmluZCgndmlkZW8nKTsKCQkJCQkJaWYoYWR2Lmxlbmd0aD4wKXsKCQkJCQkJCWFkdi5lYWNoKGZ1bmN0aW9uKGluZGV4LHZvYmopewoJCQkJCQkJCWlmICh2b2JqLmR1cmF0aW9uICE9PSB2b2JqLmN1cnJlbnRUaW1lKSB7CgkJCQkJCQkJCXZvYmouY3VycmVudFRpbWUgPSA1MDA7CgkJCQkJCQkJfQoJCQkJCQkJfSkKCQkJCQkJfQoKCQkJCQkJaWYgKCQoIi5rdWktYWJvcnRsYXllci1wbGF5LWJ0biIpLmh0bWwoKSA9PT0gIuaSrSDmlL4iKSB7CgkJCQkJCQkkKCIua3VpLWFib3J0bGF5ZXItcGxheS1idG4iKS5jbGljaygpOwoJCQkJCQl9CgkJCQkJCSQoIi5pbmZvcm1hdGlvbi10aXBzIikuY3NzKCJkaXNwbGF5IiwgIm5vbmUiKTsKCQkJCQl9IGNhdGNoIChlKSB7fQoJCQkJfSwgNTApOwoKCQkJfWVsc2UgaWYodmlkZW8uaG9zdD09J20ueW91a3UuY29tJyl7CgkJCQl2aWRlby5hZHRtPXNldEludGVydmFsKCgpID0+IHsKCQkJCQl0cnkgewoJCQkJCQkgaWYoISQoJy54LWFkdmVydCcpLmlzKCI6aGlkZGVuIikpewoJCQkJCQkJJCgndmlkZW8nKS5lYWNoKGZ1bmN0aW9uIChpLHZvYmopIHsKCQkJCQkJCQkgdm9iai5zZXRBdHRyaWJ1dGUoJ3NyYycsIG51bGwpCgkJCQkJCQkgfSk7CgkJCQkJCX0KCQkJCQkJJCgiLngtbm90aWNlc2hvdyIpLnJlbW92ZSgpOwoJCQkJCX0gY2F0Y2ggKGUpIHt9CgkJCQl9LCA1NTApOwoJCQl9ZWxzZSBpZiAodmlkZW8uaG9zdCA9PSAndHYuc29odS5jb20nKSB7CgkJCQl2aWRlby5hZHRtPXNldEludGVydmFsKCgpID0+IHsKCQkJCQl0cnkgewoJCQkJCQlsZXQgdm9iamVjdD0kKCIueC12aWRlby1hZHYiKS5maW5kKCd2aWRlbycpOwoJCQkJCQl2b2JqZWN0LmVhY2goZnVuY3Rpb24oaW5kZXgsdm9iail7CgkJCQkJCQkgaWYgKHZvYmouZHVyYXRpb24gIT12b2JqLmN1cnJlbnRUaW1lKSB7CgkJCQkJCQkJIHZvYmouY3VycmVudFRpbWUgPSA1MDA7CgkJCQkJCQkgfQoJCQkJCQl9KQoJCQkJCQkkKCIueC12aWRlby1hZHYiKS5jc3MoImRpc3BsYXkiLCAibm9uZSIpOwoJCQkJCQkkKCIueC1wbGF5ZXItbWFzayIpLmNzcygiZGlzcGxheSIsICJub25lIik7CgkJCQkJCSQoIiNwbGF5ZXJfdmlwVGlwcyIpLmNzcygiZGlzcGxheSIsICJub25lIik7CgkJCQkJfSBjYXRjaCAoZSkge30KCQkJCX0sIDU1MCk7CgkJCX1lbHNlIGlmICh2aWRlby5ob3N0ID09ICdtLnR2LnNvaHUuY29tJyB8fCB2aWRlby5ob3N0PT0ncGFkLnR2LnNvaHUuY29tJykgewoJCQkJdmlkZW8uYWR0bT1zZXRJbnRlcnZhbCgoKSA9PiB7CgkJCQkJdHJ5IHsKCQkJCQkJaWYoISQoJy54LWFkLXBhbmVsJykuaXMoIjpoaWRkZW4iKSl7CgkJCQkJCQkgJCgndmlkZW8nKS5lYWNoKGZ1bmN0aW9uIChpLHZvYmopIHsKCQkJCQkJCQkgdm9iai5wbGF5YmFja1JhdGU9NS41CgkJCQkJCQkgfSk7CgoJCQkJCSAgIH0KCQkJCQl9IGNhdGNoIChlKSB7fQoJCQkJfSw1NTApOwoJCQkJdmlkZW8uYWR0bT1zZXRJbnRlcnZhbChmdW5jdGlvbigpIHsKCQkJCQkkKGRvY3VtZW50KS5vbignY2xpY2snLCAnLmxpc3RfanVqaSBsaSBhJywgZnVuY3Rpb24oZSkgewoJCQkJCQllLnByZXZlbnREZWZhdWx0KCkKCQkJCQkJd2luZG93LmxvY2F0aW9uLmhyZWYgPSAkKHRoaXMpLmF0dHIoJ2hyZWYnKTsKCQkJCQl9KQoJCQkJfSwgMTAwMCkKCQkJfWVsc2UgaWYodmlkZW8uaG9zdD09J3d3dy5tZ3R2LmNvbScgfHwgdmlkZW8uaG9zdD09J3cubWd0di5jb20nKXsKCQkJCXZpZGVvLmFkdG09c2V0SW50ZXJ2YWwoKCkgPT4gewoJCQkJCXRyeSB7CgkJCQkJCWlmKCQoJy5hc19maWxsX3BsYXllcicpWzBdKXsKCgkJCQkJCQkJCQkJCSAgICQoJ3ZpZGVvJykuZWFjaChmdW5jdGlvbiAoaSx2b2JqKSB7CgkJCQkJCQkJCQkJCQkgICB2b2JqLmN1cnJlbnRUaW1lID0gMTAwMDsKCQkJCQkJCQkJCQkJICAgfSk7CgkJCQkJCQkJCQkJICAgfQoJCQkJCQkgJCgnLmFzLXBhdXNlX2NvbnRhaW5lcicpLmNzcygnZGlzcGxheScsICdub25lJyk7CgkJCQkJCQkJCQkJJCgnLmFzX3N0YWdlcy13cmFwcGVyJykuY3NzKCdkaXNwbGF5JywgJ25vbmUnKTsKCQkJCQkJCQkJCQkkKCcubS1hZ3JlZW1lbnQnKS5yZW1vdmUoKTsKCQkJCQl9IGNhdGNoIChlKSB7fQoJCQkJfSwgNTUwKTsKCQkJfWVsc2UgaWYodmlkZW8uaG9zdD09J20ubWd0di5jb20nKXsKCQkJCXZpZGVvLmFkdG09c2V0SW50ZXJ2YWwoKCkgPT4gewoJCQkJCXRyeSB7CgkJCQkJCWlmKCEkKCcuYWQtdGltZS1hcmVhMicpLmlzKCI6aGlkZGVuIikpewoJCQkJCQkJICQoJ3ZpZGVvJykuZWFjaChmdW5jdGlvbiAoaSx2b2JqKSB7CgkJCQkJCQkJIHZvYmouc2V0QXR0cmlidXRlKCdzcmMnLCBudWxsKQoJCQkJCQkJIH0pOwoKCQkJCQkgICB9CgkJCQkJfSBjYXRjaCAoZSkge30KCQkJCX0sIDU1MCk7CgkJCX1lbHNlIGlmKHZpZGVvLmhvc3Q9PSd3d3cubGUuY29tJyl7CgkJCQl2aWRlby5hZHRtPXNldEludGVydmFsKCgpID0+IHsKCQkJCQl0cnkgewoJCQkJCQlpZigkKCIudmRvX3Bvc3RfdGltZSIpWzBdKXsKCQkJCQkJCSAkKCd2aWRlbycpLmVhY2goZnVuY3Rpb24gKGksdm9iaikgewoJCQkJCQkJCSB2b2JqLnNldEF0dHJpYnV0ZSgnc3JjJywgbnVsbCkKCQkJCQkJCSB9KTsKCQkJCQkJfQoJCQkJCX0gY2F0Y2ggKGUpIHt9CgkJCQl9LCA1NTApOwoJCQl9ZWxzZSBpZih2aWRlby5ob3N0PT0nd3d3LmJpbGliaWxpLmNvbScpewoKICAgICAgICAgICAgfQoJCX0sCgkJaW5pdEV2ZW50OigpPT57CiAgICAgICAgICAgIHZpZGVvLmRpdjIuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIiwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2aWRlby5tdkRvd24oKTsKCiAgICAgICAgICAgIH0sIGZhbHNlKTsKICAgICAgICAgICAgdmlkZW8uZGl2Mi5hZGRFdmVudExpc3RlbmVyKCJ0b3VjaHN0YXJ0IiwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2aWRlby5tdkRvd24oKTsKICAgICAgICAgICAgfSwgZmFsc2UpCiAgICAgICAgICAgIHZpZGVvLmRpdjIuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vtb3ZlIiwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2aWRlby5tdk1vdmUoKTsKICAgICAgICAgICAgfSwgZmFsc2UpOwogICAgICAgICAgICB2aWRlby5kaXYyLmFkZEV2ZW50TGlzdGVuZXIoInRvdWNobW92ZSIsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICB2aWRlby5tdk1vdmUoKTsKICAgICAgICAgICAgfSwgZmFsc2UpCiAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYWRkRXZlbnRMaXN0ZW5lcigibW91c2V1cCIsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICB2aWRlby5tdkVuZCgpOwogICAgICAgICAgICB9LCBmYWxzZSk7CiAgICAgICAgICAgIHZpZGVvLmRpdjIuYWRkRXZlbnRMaXN0ZW5lcigidG91Y2hlbmQiLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZpZGVvLm12RW5kKCk7CiAgICAgICAgICAgIH0sIGZhbHNlKTsKCQkJJCgiLml0ZW1fdGV4dCIpLm9uKCJtb3VzZW92ZXIiLCAoKSA9PiB7CgkJCQkkKCIudmlwX21vZF9ib3hfYWN0aW9uIikuc2hvdygpOwoJCQl9KTsKCQkJJCgiLml0ZW1fdGV4dCIpLm9uKCJtb3VzZW91dCIsICgpID0+IHsKCQkJCSQoIi52aXBfbW9kX2JveF9hY3Rpb24iKS5oaWRlKCk7CgkJCX0pOwoKCiAgICAgICAgICAgICQoIi5jbG9zZSIpLm9uKCJjbGljayIsKCk9PnsKICAgICAgICAgICAgICAgICQoIi52aXBfbW9kX2JveF9hY3Rpb24iKS5oaWRlKCk7CiAgICAgICAgICAgIH0pCgkJCSQoIiNJc2F1dG8iKS5jaGFuZ2UoZnVuY3Rpb24oKXsKCQkJCWlmKCQodGhpcykuaXMoIjpjaGVja2VkIikpIHsKCQkJCQlHTV9zZXRWYWx1ZSgnSVNBVVRPJywxKTsKCQkJCQl2aWRlby5pc0F1dG89dHJ1ZTsKCQkJCX1lbHNlewoJCQkJCUdNX3NldFZhbHVlKCdJU0FVVE8nLDIpOwoJCQkJCXZpZGVvLmlzQXV0bz1mYWxzZTsKCQkJCX0KCQkJfSk7CgkJCSQoIiNJc2F1dG9wbGF5ZXIiKS5jaGFuZ2UoZnVuY3Rpb24oKXsKCQkJCSBHTV9zZXRWYWx1ZSgiSVNBVVRPUExBWUVSIiwkKHRoaXMpLnZhbCgpKTsKCQkJCSB2aWRlby5pc0F1dG9QbGF5ZXI9JCh0aGlzKS52YWwoKTsKICAgICAgICAgICAgICAgIGlmKHZpZGVvLmlzQXV0byl7CiAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24ucmVsb2FkKCk7CiAgICAgICAgICAgICAgICAgICAgICB9LDIwMCkKCiAgICAgICAgICAgICAgICB9CgkJCX0pOwoJCQkkKCIudmlwX21vZF9ib3hfYWN0aW9uIGxpIikuY2xpY2soZnVuY3Rpb24oKXsKCQkJCWxldCBrPSQodGhpcykuYXR0cignZGF0YS1rJyk7CgkJCQlsZXQgdHlwZT0kKHRoaXMpLmF0dHIoJ2RhdGEtdCcpOwoJCQkJbGV0IGxpbms9cGxheWVyTGlzdFtrXS51cmwgKyB2aWRlby5ocmVmOwoJCQkJaWYodHlwZT09MSl7CgkJCQkJaWYgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJpZnJhbWUtcGxheWVyIikgPT0gbnVsbCkgewoJCQkJCQl2aWRlby5wbGF5ZXIuZW1wdHkoKTsKCQkJCQkJdmlkZW8ucGxheWVyLmFwcGVuZCh2aWRlby5wbGF5ZXJQYXJzZSk7CgkJCQkJfQoJCQkJCSQoIiNpZnJhbWUtcGxheWVyIikuYXR0cigic3JjIiwgbGluayk7CgkJCQl9ZWxzZXsKCQkJCQlHTV9vcGVuSW5UYWIobGluaywgZmFsc2UpOwoJCQkJfQoKCQkJfSkKCQl9LAoKCQlpbml0RW52OigpPT57CgkJCW5vZGUuZm9yRWFjaCgoZSx2KT0+ewoJCQkJaWYgKGUudXJsID09dmlkZW8uaG9zdCkgewogICAgICAgICAgICAgICAgICAgIGlmKGUudHlwZT09Mil7CiAgICAgICAgICAgICAgICAgICAgICAgIHZpZGVvLmlzTW9iaWxlPXRydWU7CiAgICAgICAgICAgICAgICAgICAgfQoJCQkJCWxldCBub2RlX2Fycj1lLm5vZGUuc3BsaXQoJ3wnKTsKCQkJCQlmb3IobGV0IGk9MDtpPG5vZGVfYXJyLmxlbmd0aDtpKyspewoJCQkJCQlpZigkKG5vZGVfYXJyW2ldKS5sZW5ndGgpewoJCQkJCQkJdmlkZW8ucGxheWVyPSQobm9kZV9hcnJbaV0pOwoJCQkJCQkJYnJlYWs7CgkJCQkJCX0KCgkJCQkJfQoJCQkJCXZpZGVvLmluaXRIdG1sKCk7CgkJCQkJdmlkZW8uaW5pdEV2ZW50KCk7CgkJCQl9CgkJCX0pCgkJfSwKCX07CgoJaWYoY291cG9uLmlzUnVuKCkpewoJCWNvdXBvbi5zaG93KCk7CgoJfWVsc2V7CgoJCXRvb2xzLnNsZWVwKDIwMCkudGhlbigoKSA9PiB7CgkJCXZpZGVvLmluaXRDc3MoKTsKCQkJdmlkZW8uaW5pdEVudigpOwoJCQl2aWRlby5jbG9zZUFEKCk7CgkJCXZpZGVvLmF1dG9QbGF5ZXIoKTsKCQkJdmlkZW8uYXV0b1NlbGVjdCgpOyAKCgoJCX0pCgl9Cgp9KSgpOw==
Add Comment
Please, Sign In to add comment