1789595936
c05b9b66eacc8e11cfd97f370d355f8b-phpdoc%3A5e7e6bd823ed970cc32a6d2fdc042f29-3fee53a527cd403f0a65607a6e4eed11
s:9524:"TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlIjoxNDp7czozOToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBuYW1lIjtzOjE0OiJwYW5lbEFkbWluLnBocCI7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBuYW1lc3BhY2VzIjthOjA6e31zOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlAGluY2x1ZGVzIjthOjA6e31zOjQ0OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlAGZ1bmN0aW9ucyI7YTowOnt9czo0NDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBjb25zdGFudHMiO2E6MDp7fXM6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAY2xhc3NlcyI7YTowOnt9czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBpbnRlcmZhY2VzIjthOjA6e31zOjQxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlAHRyYWl0cyI7YTowOnt9czo0MDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBlbnVtcyI7YTowOnt9czozOToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBoYXNoIjtzOjMyOiIzZmVlNTNhNTI3Y2Q0MDNmMGE2NTYwN2E2ZTRlZWQxMSI7czozOToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBwYXRoIjtzOjM5OiJiYWNrZW5kL2FwaS92MnBnZ3AvcnV0YXMvcGFuZWxBZG1pbi5waHAiO3M6NDE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAc291cmNlIjtzOjQ3NzE6Ijw/cGhwCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoqCiAqIFJ1dGFzIGRlbCBQQU5FTCBBRE1JTiDigJQgZ2VzdGnDs24gZGUgdXN1YXJpb3MgeSBkZSBzdXMgcGVybWlzb3MuCiAqCiAqIFRvZGFzIGV4aWdlbiBBRE1JTi4gRW4gbGEgdjEgbmluZ3VuYSBjb21wcm9iYWJhIGVsIHJvbCBlbiBhcGkucGhwIHkKICogdmFyaWFzIHRhbXBvY28gZW4gZWwgY29udHJvbGFkb3IgKGxvYWRfdXNlcnMsIGdldF91c2VyX21vZGFsX2RhdGEsCiAqIGxpc3RfYWRtaW5fY2VudHJvcywgbGlzdF9jYXRhbG9nb19wYWdpbmFzKSwgcXVlZGFuZG8gYWNjZXNpYmxlcyBhCiAqIGN1YWxxdWllciB1c3VhcmlvIGF1dGVudGljYWRvLgogKgogKiBAcGFja2FnZSB0cmFja2luZ1xiYWNrZW5kXGFwaVx2MlxydXRhcwogKi8KCnJldHVybiBbCgogICAgLy8g4pSA4pSAIExFQ1RVUkEg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSACgogICAgJ2xvYWRfdXNlcnMnID0+IG5ldyBSdXRhKAogICAgICAgIGFjY2VzbzogIEFjY2Vzbzo6QURNSU4sCiAgICAgICAgYW1iaXRvOiAgQW1iaXRvOjpUUkFDS0lOR1dFQiwKICAgICAgICBoYW5kbGVyOiBzdGF0aWMgZnVuY3Rpb24gKENvbnRleHRvICRjdHgpOiBuZXZlciB7CiAgICAgICAgICAgIC8vJHVzdWFyaW9zID0gb250cm9sYWRvclBlcm1pc29zOjpnZXRVc3Vhcmlvc0VuQW1iaXRvKCRjdHgtPnVzZXJJZCwgJGN0eC0+cm9sKUM7CiAgICAgICAgICAgIC8vUmVzcHVlc3RhOjpqc29uKFsnb2snID0+IHRydWUsICdzdGF0dXMnID0+IDIwMCwgJ2RhdGEnID0+ICR1c3Vhcmlvc10pOwogICAgICAgICAgICBSZXNwdWVzdGE6Om9rKENvbnRyb2xhZG9yUGVybWlzb3M6OmdldFVzdWFyaW9zRW5BbWJpdG8oJGN0eC0+dXNlcklkLCAkY3R4LT5yb2wpKTsKICAgICAgICB9CiAgICApLAoKICAgICdnZXRfdXNlcl9tb2RhbF9kYXRhJyA9PiBuZXcgUnV0YSgKICAgICAgICBhY2Nlc286ICBBY2Nlc286OkFETUlOLAogICAgICAgIGFtYml0bzogIEFtYml0bzo6VFJBQ0tJTkdXRUIsCiAgICAgICAgaGFuZGxlcjogc3RhdGljIGZ1bmN0aW9uIChDb250ZXh0byAkY3R4KTogbmV2ZXIgewogICAgICAgICAgICAkdGFyZ2V0SWQgPSAoaW50KSgkX1BPU1RbJ2lkJ10gPz8gMCk7CiAgICAgICAgICAgIGlmICgkdGFyZ2V0SWQgPD0gMCkgewogICAgICAgICAgICAgICAgUmVzcHVlc3RhOjplcnJvcignRmFsdGEgaWQuJywgNDAwKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkZGF0b3MgPSBDb250cm9sYWRvclBlcm1pc29zOjpnZXREYXRvc01vZGFsVXN1YXJpbygkY3R4LT51c2VySWQsICRjdHgtPnJvbCwgJHRhcmdldElkKTsKICAgICAgICAgICAgUmVzcHVlc3RhOjpqc29uKFsnb2snID0+IHRydWUsICdkYXRhJyA9PiAkZGF0b3NdKTsKICAgICAgICB9CiAgICApLAoKICAgICdsaXN0X2FkbWluX2NlbnRyb3MnID0+IG5ldyBSdXRhKAogICAgICAgIGFjY2VzbzogIEFjY2Vzbzo6QURNSU4sCiAgICAgICAgYW1iaXRvOiAgQW1iaXRvOjpUUkFDS0lOR1dFQiwKICAgICAgICBoYW5kbGVyOiBzdGF0aWMgZnVuY3Rpb24gKENvbnRleHRvICRjdHgpOiBuZXZlciB7CiAgICAgICAgICAgICRjZW50cm9zID0gQ29udHJvbGFkb3JQZXJtaXNvczo6Z2V0Q2VudHJvc0VkaXRhYmxlc0RlbEFkbWluKCRjdHgtPnVzZXJJZCwgJGN0eC0+cm9sKTsKICAgICAgICAgICAgUmVzcHVlc3RhOjpqc29uKFsnb2snID0+IHRydWUsICdkYXRhJyA9PiAkY2VudHJvc10pOwogICAgICAgIH0KICAgICksCgogICAgJ2xpc3RfY2F0YWxvZ29fcGFnaW5hcycgPT4gbmV3IFJ1dGEoCiAgICAgICAgYWNjZXNvOiAgQWNjZXNvOjpBRE1JTiwKICAgICAgICBhbWJpdG86ICBBbWJpdG86OlRSQUNLSU5HV0VCLAogICAgICAgIGhhbmRsZXI6IHN0YXRpYyBmdW5jdGlvbiAoQ29udGV4dG8gJGN0eCk6IG5ldmVyIHsKICAgICAgICAgICAgUmVzcHVlc3RhOjpqc29uKFsnb2snID0+IHRydWUsICdkYXRhJyA9PiBQZXJtaXNvc0Rhbzo6Z2V0Q2F0YWxvZ29QYWdpbmFzKCldKTsKICAgICAgICB9CiAgICApLAoKICAgIC8vIOKUgOKUgCBFU0NSSVRVUkEg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSACgogICAgJ2NyZWF0ZV91c2VyJyA9PiBuZXcgUnV0YSgKICAgICAgICBhY2Nlc286ICBBY2Nlc286OkFETUlOLAogICAgICAgIGFtYml0bzogIEFtYml0bzo6VFJBQ0tJTkdXRUIsCiAgICAgICAgaGFuZGxlcjogc3RhdGljIGZ1bmN0aW9uIChDb250ZXh0byAkY3R4KTogbmV2ZXIgewogICAgICAgICAgICAvLyBDb24gcGVybWlzb3Mg4oaSIGNyZWF0ZVVzdWFyaW9Db25QZXJtaXNvcywgcXVlIGFwbGljYSBsYXMgcmVnbGFzCiAgICAgICAgICAgIC8vIGRlIHJvbCAobm8gY3JlYXIgcG9yIGVuY2ltYSBkZSB1bm8gbWlzbW8sIEFkbWluQ3JlYUFkbWluKS4KICAgICAgICAgICAgLy8gU2luIHBlcm1pc29zIOKGkiBjcmVhdGVVc3VhcmlvV2ViLCBxdWUgTk8gbGFzIGFwbGljYTogdmVyIG5vdGEKICAgICAgICAgICAgLy8gZW4gbGEgcmVzcHVlc3RhIGRlIGVudHJlZ2EuCiAgICAgICAgICAgICRyZXN1bHRhZG8gPSBpc3NldCgkX1BPU1RbJ3Blcm1pc29zJ10pCiAgICAgICAgICAgICAgICA/IENvbnRyb2xhZG9yVXNlcnM6OmNyZWF0ZVVzdWFyaW9Db25QZXJtaXNvcygkX1BPU1RbJ2RhdGEnXSwgJF9QT1NUWydwZXJtaXNvcyddKQogICAgICAgICAgICAgICAgOiBDb250cm9sYWRvclVzZXJzOjpjcmVhdGVVc3VhcmlvV2ViKCRfUE9TVFsnZGF0YSddKTsKCiAgICAgICAgICAgIFJlc3B1ZXN0YTo6ZGVsQ29udHJvbGFkb3IoJHJlc3VsdGFkbyk7CiAgICAgICAgfQogICAgKSwKCiAgICAndXBkYXRlX3VzZXInID0+IG5ldyBSdXRhKAogICAgICAgIGFjY2VzbzogIEFjY2Vzbzo6QURNSU4sCiAgICAgICAgYW1iaXRvOiAgQW1iaXRvOjpUUkFDS0lOR1dFQiwKICAgICAgICBoYW5kbGVyOiBzdGF0aWMgZnVuY3Rpb24gKENvbnRleHRvICRjdHgpOiBuZXZlciB7CiAgICAgICAgICAgIFJlc3B1ZXN0YTo6ZGVsQ29udHJvbGFkb3IoQ29udHJvbGFkb3JVc2Vyczo6dXBkYXRlVXNlcigkX1BPU1RbJ2RhdGEnXSA/PyAne30nKSk7CiAgICAgICAgfQogICAgKSwKCiAgICAndXBkYXRlX3VzZXJfcGFzc3dvcmQnID0+IG5ldyBSdXRhKAogICAgICAgIGFjY2VzbzogIEFjY2Vzbzo6QURNSU4sCiAgICAgICAgYW1iaXRvOiAgQW1iaXRvOjpUUkFDS0lOR1dFQiwKICAgICAgICBoYW5kbGVyOiBzdGF0aWMgZnVuY3Rpb24gKENvbnRleHRvICRjdHgpOiBuZXZlciB7CiAgICAgICAgICAgIFJlc3B1ZXN0YTo6ZGVsQ29udHJvbGFkb3IoCiAgICAgICAgICAgICAgICBDb250cm9sYWRvclVzZXJzOjp1cGRhdGVVc2VyUGFzc3dvcmQoJF9QT1NUWydkYXRhJ10gPz8gJ3t9JykKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICApLAoKICAgICd1cGRhdGVfdXNlcl9wZXJtaXNvcycgPT4gbmV3IFJ1dGEoCiAgICAgICAgYWNjZXNvOiAgQWNjZXNvOjpBRE1JTiwKICAgICAgICBhbWJpdG86ICBBbWJpdG86OlRSQUNLSU5HV0VCLAogICAgICAgIGhhbmRsZXI6IHN0YXRpYyBmdW5jdGlvbiAoQ29udGV4dG8gJGN0eCk6IG5ldmVyIHsKICAgICAgICAgICAgJHRhcmdldElkID0gKGludCkoJF9QT1NUWydpZCddID8/IDApOwogICAgICAgICAgICBpZiAoJHRhcmdldElkIDw9IDApIHsKICAgICAgICAgICAgICAgIFJlc3B1ZXN0YTo6ZXJyb3IoJ0ZhbHRhIGlkLicsIDQwMCk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRudWV2b3MgPSBqc29uX2RlY29kZSgoc3RyaW5nKSgkX1BPU1RbJ3Blcm1pc29zJ10gPz8gJ3t9JyksIHRydWUpOwoKICAgICAgICAgICAgUmVzcHVlc3RhOjpkZWxDb250cm9sYWRvcihDb250cm9sYWRvclBlcm1pc29zOjpndWFyZGFyUGVybWlzb3NVc3VhcmlvKAogICAgICAgICAgICAgICAgJGN0eC0+dXNlcklkLCAkY3R4LT5yb2wsICR0YXJnZXRJZCwgaXNfYXJyYXkoJG51ZXZvcykgPyAkbnVldm9zIDogW10KICAgICAgICAgICAgKSk7CiAgICAgICAgfQogICAgKSwKCiAgICAnZGVsZXRlX3VzZXInID0+IG5ldyBSdXRhKAogICAgICAgIGFjY2VzbzogIEFjY2Vzbzo6QURNSU4sCiAgICAgICAgYW1iaXRvOiAgQW1iaXRvOjpUUkFDS0lOR1dFQiwKICAgICAgICBoYW5kbGVyOiBzdGF0aWMgZnVuY3Rpb24gKENvbnRleHRvICRjdHgpOiBuZXZlciB7CiAgICAgICAgICAgICRoYXJkID0gKCRfUE9TVFsnaGFyZCddID8/ICcnKSA9PT0gJ2hhcmQnOwoKICAgICAgICAgICAgJHJlc3VsdGFkbyA9ICRoYXJkCiAgICAgICAgICAgICAgICA/IENvbnRyb2xhZG9yVXNlcnM6OmRlbGV0ZVVzZXIoJF9QT1NUWydkYXRhJ10gPz8gJ3t9JykKICAgICAgICAgICAgICAgIDogQ29udHJvbGFkb3JVc2Vyczo6ZGVsZXRlTG9naWNVc3VhcmlvKCRfUE9TVFsnZGF0YSddID8/ICd7fScpOwoKICAgICAgICAgICAgUmVzcHVlc3RhOjpkZWxDb250cm9sYWRvcigkcmVzdWx0YWRvKTsKICAgICAgICB9CiAgICApLApdOwoiO3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAZG9jQmxvY2siO086MzM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jayI6Nzp7czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBzdW1tYXJ5IjtzOjY1OiJSdXRhcyBkZWwgUEFORUwgQURNSU4g4oCUIGdlc3Rpw7NuIGRlIHVzdWFyaW9zIHkgZGUgc3VzIHBlcm1pc29zLiI7czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBkZXNjcmlwdGlvbiI7Tzo0NToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uIjoyOntzOjU5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAGJvZHlUZW1wbGF0ZSI7czoyMzE6IlRvZGFzIGV4aWdlbiBBRE1JTi4gRW4gbGEgdjEgbmluZ3VuYSBjb21wcm9iYWJhIGVsIHJvbCBlbiBhcGkucGhwIHkKdmFyaWFzIHRhbXBvY28gZW4gZWwgY29udHJvbGFkb3IgKGxvYWRfdXNlcnMsIGdldF91c2VyX21vZGFsX2RhdGEsCmxpc3RfYWRtaW5fY2VudHJvcywgbGlzdF9jYXRhbG9nb19wYWdpbmFzKSwgcXVlZGFuZG8gYWNjZXNpYmxlcyBhCmN1YWxxdWllciB1c3VhcmlvIGF1dGVudGljYWRvLiI7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgB0YWdzIjthOjA6e319czozOToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawB0YWdzIjthOjE6e2k6MDtPOjQ2OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xHZW5lcmljIjoyOntzOjc6IgAqAG5hbWUiO3M6NzoicGFja2FnZSI7czoxNDoiACoAZGVzY3JpcHRpb24iO086NDU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbiI6Mjp7czo1OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgBib2R5VGVtcGxhdGUiO3M6Mjk6InRyYWNraW5nXGJhY2tlbmRcYXBpXHYyXHJ1dGFzIjtzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAHRhZ3MiO2E6MDp7fX19fXM6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAY29udGV4dCI7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXENvbnRleHQiOjI6e3M6NDk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcQ29udGV4dABuYW1lc3BhY2UiO3M6MDoiIjtzOjU2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXENvbnRleHQAbmFtZXNwYWNlQWxpYXNlcyI7YTowOnt9fXM6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAbG9jYXRpb24iO047czo1MDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBpc1RlbXBsYXRlU3RhcnQiO2I6MDtzOjQ4OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGlzVGVtcGxhdGVFbmQiO2I6MDt9czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBtZXRhZGF0YSI7YTowOnt9fQ==";