1778692587
441d63ebbc39eba359c9061ece8482bd-phpdoc%3A0ff7bee132f10441669f131ee87c632b-df77bef29c105d263caf78496d26be52
s:9860:"TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlIjoxNDp7czozOToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBuYW1lIjtzOjI3OiJOdW1iZXJGb290bm90ZXNMaXN0ZW5lci5waHAiO3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAbmFtZXNwYWNlcyI7YToxOntzOjQzOiJcTGVhZ3VlXENvbW1vbk1hcmtcRXh0ZW5zaW9uXEZvb3Rub3RlXEV2ZW50IjtPOjMwOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4iOjI6e3M6Mzc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AZnFzZW4iO3M6NDM6IlxMZWFndWVcQ29tbW9uTWFya1xFeHRlbnNpb25cRm9vdG5vdGVcRXZlbnQiO3M6MzY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AbmFtZSI7czo1OiJFdmVudCI7fX1zOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlAGluY2x1ZGVzIjthOjA6e31zOjQ0OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlAGZ1bmN0aW9ucyI7YTowOnt9czo0NDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBjb25zdGFudHMiO2E6MDp7fXM6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAY2xhc3NlcyI7YToxOntzOjY3OiJcTGVhZ3VlXENvbW1vbk1hcmtcRXh0ZW5zaW9uXEZvb3Rub3RlXEV2ZW50XE51bWJlckZvb3Rub3Rlc0xpc3RlbmVyIjtPOjM1OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENsYXNzXyI6MTU6e3M6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENsYXNzXwBpbXBsZW1lbnRzIjthOjA6e31zOjQ2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDbGFzc18AY29uc3RhbnRzIjthOjA6e31zOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDbGFzc18AcHJvcGVydGllcyI7YTowOnt9czo0NDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQ2xhc3NfAG1ldGhvZHMiO2E6MTp7czo4NzoiXExlYWd1ZVxDb21tb25NYXJrXEV4dGVuc2lvblxGb290bm90ZVxFdmVudFxOdW1iZXJGb290bm90ZXNMaXN0ZW5lcjo6b25Eb2N1bWVudFBhcnNlZCgpIjtPOjM1OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZCI6MTM6e3M6NDY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABhcmd1bWVudHMiO2E6MTp7aTowO086Mzc6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQiOjU6e3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AHR5cGUiO086Mzg6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xPYmplY3RfIjoxOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE9iamVjdF8AZnFzZW4iO086MzA6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbiI6Mjp7czozNzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBmcXNlbiI7czo0NDoiXExlYWd1ZVxDb21tb25NYXJrXEV2ZW50XERvY3VtZW50UGFyc2VkRXZlbnQiO3M6MzY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AbmFtZSI7czoxOToiRG9jdW1lbnRQYXJzZWRFdmVudCI7fX1zOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABuYW1lIjtzOjU6ImV2ZW50IjtzOjQ2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABkZWZhdWx0IjtOO3M6NTA6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGJ5UmVmZXJlbmNlIjtiOjA7czo0OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAaXNWYXJpYWRpYyI7YjowO319czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGxvY2F0aW9uIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24iOjI6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AbGluZU51bWJlciI7aToyMztzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGNvbHVtbk51bWJlciI7aTo1NTc7fXM6NDg6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABlbmRMb2NhdGlvbiI7TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uIjoyOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGxpbmVOdW1iZXIiO2k6NzQ7czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBjb2x1bW5OdW1iZXIiO2k6MjMzODt9czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAHJldHVyblR5cGUiO086MzY6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xWb2lkXyI6MDp7fXM6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABmcXNlbiI7TzozMDoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuIjoyOntzOjM3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAGZxc2VuIjtzOjg3OiJcTGVhZ3VlXENvbW1vbk1hcmtcRXh0ZW5zaW9uXEZvb3Rub3RlXEV2ZW50XE51bWJlckZvb3Rub3Rlc0xpc3RlbmVyOjpvbkRvY3VtZW50UGFyc2VkKCkiO3M6MzY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AbmFtZSI7czoxNjoib25Eb2N1bWVudFBhcnNlZCI7fXM6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZAB2aXNpYmlsaXR5IjtPOjM5OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFZpc2liaWxpdHkiOjE6e3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFZpc2liaWxpdHkAdmlzaWJpbGl0eSI7czo2OiJwdWJsaWMiO31zOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAZG9jQmxvY2siO047czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGFic3RyYWN0IjtiOjA7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAHN0YXRpYyI7YjowO3M6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABmaW5hbCI7YjowO3M6NTc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABoYXNSZXR1cm5CeVJlZmVyZW5jZSI7YjowO3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABtZXRhZGF0YSI7YTowOnt9czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGF0dHJpYnV0ZXMiO2E6MDp7fX19czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQ2xhc3NfAHVzZWRUcmFpdHMiO2E6MDp7fXM6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENsYXNzXwBsb2NhdGlvbiI7TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uIjoyOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGxpbmVOdW1iZXIiO2k6MjE7czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBjb2x1bW5OdW1iZXIiO2k6MDt9czo0ODoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQ2xhc3NfAGVuZExvY2F0aW9uIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24iOjI6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AbGluZU51bWJlciI7aTo3NTtzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGNvbHVtbk51bWJlciI7aTowO31zOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDbGFzc18AZnFzZW4iO086MzA6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbiI6Mjp7czozNzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBmcXNlbiI7czo2NzoiXExlYWd1ZVxDb21tb25NYXJrXEV4dGVuc2lvblxGb290bm90ZVxFdmVudFxOdW1iZXJGb290bm90ZXNMaXN0ZW5lciI7czozNjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBuYW1lIjtzOjIzOiJOdW1iZXJGb290bm90ZXNMaXN0ZW5lciI7fXM6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENsYXNzXwBkb2NCbG9jayI7TjtzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDbGFzc18AcGFyZW50IjtOO3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENsYXNzXwBhYnN0cmFjdCI7YjowO3M6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENsYXNzXwBmaW5hbCI7YjoxO3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENsYXNzXwByZWFkT25seSI7YjowO3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENsYXNzXwBtZXRhZGF0YSI7YTowOnt9czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQ2xhc3NfAGF0dHJpYnV0ZXMiO2E6MDp7fX19czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBpbnRlcmZhY2VzIjthOjA6e31zOjQxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlAHRyYWl0cyI7YTowOnt9czo0MDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBlbnVtcyI7YTowOnt9czozOToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBoYXNoIjtzOjMyOiJkZjc3YmVmMjljMTA1ZDI2M2NhZjc4NDk2ZDI2YmU1MiI7czozOToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBwYXRoIjtzOjgxOiJ2ZW5kb3IvbGVhZ3VlL2NvbW1vbm1hcmsvc3JjL0V4dGVuc2lvbi9Gb290bm90ZS9FdmVudC9OdW1iZXJGb290bm90ZXNMaXN0ZW5lci5waHAiO3M6NDE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAc291cmNlIjtzOjIzNDI6Ijw/cGhwCgovKgogKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgbGVhZ3VlL2NvbW1vbm1hcmsgcGFja2FnZS4KICoKICogKGMpIENvbGluIE8nRGVsbCA8Y29saW5vZGVsbEBnbWFpbC5jb20+CiAqIChjKSBSZXpvIFplcm8gLyBBbWJyb2lzZSBNYXVwYXRlCiAqCiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFCiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLgogKi8KCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIExlYWd1ZVxDb21tb25NYXJrXEV4dGVuc2lvblxGb290bm90ZVxFdmVudDsKCnVzZSBMZWFndWVcQ29tbW9uTWFya1xFdmVudFxEb2N1bWVudFBhcnNlZEV2ZW50Owp1c2UgTGVhZ3VlXENvbW1vbk1hcmtcRXh0ZW5zaW9uXEZvb3Rub3RlXE5vZGVcRm9vdG5vdGVSZWY7CnVzZSBMZWFndWVcQ29tbW9uTWFya1xSZWZlcmVuY2VcUmVmZXJlbmNlOwoKZmluYWwgY2xhc3MgTnVtYmVyRm9vdG5vdGVzTGlzdGVuZXIKewogICAgcHVibGljIGZ1bmN0aW9uIG9uRG9jdW1lbnRQYXJzZWQoRG9jdW1lbnRQYXJzZWRFdmVudCAkZXZlbnQpOiB2b2lkCiAgICB7CiAgICAgICAgJGRvY3VtZW50ICAgICA9ICRldmVudC0+Z2V0RG9jdW1lbnQoKTsKICAgICAgICAkbmV4dENvdW50ZXIgID0gMTsKICAgICAgICAkdXNlZExhYmVscyAgID0gW107CiAgICAgICAgJHVzZWRDb3VudGVycyA9IFtdOwoKICAgICAgICBmb3JlYWNoICgkZG9jdW1lbnQtPml0ZXJhdG9yKCkgYXMgJG5vZGUpIHsKICAgICAgICAgICAgaWYgKCEgJG5vZGUgaW5zdGFuY2VvZiBGb290bm90ZVJlZikgewogICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRleGlzdGluZ1JlZmVyZW5jZSAgID0gJG5vZGUtPmdldFJlZmVyZW5jZSgpOwogICAgICAgICAgICAkbGFiZWwgICAgICAgICAgICAgICA9ICRleGlzdGluZ1JlZmVyZW5jZS0+Z2V0TGFiZWwoKTsKICAgICAgICAgICAgJGNvdW50ZXIgICAgICAgICAgICAgPSAkbmV4dENvdW50ZXI7CiAgICAgICAgICAgICRjYW5JbmNyZW1lbnRDb3VudGVyID0gdHJ1ZTsKCiAgICAgICAgICAgIGlmIChcYXJyYXlfa2V5X2V4aXN0cygkbGFiZWwsICR1c2VkTGFiZWxzKSkgewogICAgICAgICAgICAgICAgLyoKICAgICAgICAgICAgICAgICAqIFJlZmVyZW5jZSBpcyB1c2VkIGFnYWluLCB3ZSBuZWVkIHRvIHBvaW50CiAgICAgICAgICAgICAgICAgKiB0byB0aGUgc2FtZSBmb290bm90ZS4gQnV0IHdpdGggYSBkaWZmZXJlbnQgSUQKICAgICAgICAgICAgICAgICAqLwogICAgICAgICAgICAgICAgJGNvdW50ZXIgICAgICAgICAgICAgPSAkdXNlZENvdW50ZXJzWyRsYWJlbF07CiAgICAgICAgICAgICAgICAkbGFiZWwgICAgICAgICAgICAgIC49ICdfXycgLiArKyR1c2VkTGFiZWxzWyRsYWJlbF07CiAgICAgICAgICAgICAgICAkY2FuSW5jcmVtZW50Q291bnRlciA9IGZhbHNlOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyByZXdyaXRlIHJlZmVyZW5jZSB0aXRsZSB0byB1c2UgYSBudW1lcmljIGxpbmsKICAgICAgICAgICAgJG5ld1JlZmVyZW5jZSA9IG5ldyBSZWZlcmVuY2UoCiAgICAgICAgICAgICAgICAkbGFiZWwsCiAgICAgICAgICAgICAgICAkZXhpc3RpbmdSZWZlcmVuY2UtPmdldERlc3RpbmF0aW9uKCksCiAgICAgICAgICAgICAgICAoc3RyaW5nKSAkY291bnRlcgogICAgICAgICAgICApOwoKICAgICAgICAgICAgLy8gT3ZlcnJpZGUgcmVmZXJlbmNlIHdpdGggbnVtZXJpYyBsaW5rCiAgICAgICAgICAgICRub2RlLT5zZXRSZWZlcmVuY2UoJG5ld1JlZmVyZW5jZSk7CiAgICAgICAgICAgICRkb2N1bWVudC0+Z2V0UmVmZXJlbmNlTWFwKCktPmFkZCgkbmV3UmVmZXJlbmNlKTsKCiAgICAgICAgICAgIC8qCiAgICAgICAgICAgICAqIFN0b3JlIGNyZWF0ZWQgcmVmZXJlbmNlcyBpbiBkb2N1bWVudCBmb3IKICAgICAgICAgICAgICogY3JlYXRpbmcgRm9vdG5vdGVCYWNrcmVmcwogICAgICAgICAgICAgKi8KICAgICAgICAgICAgJGRvY3VtZW50LT5kYXRhLT5hcHBlbmQoJGV4aXN0aW5nUmVmZXJlbmNlLT5nZXREZXN0aW5hdGlvbigpLCAkbmV3UmVmZXJlbmNlKTsKCiAgICAgICAgICAgICR1c2VkTGFiZWxzWyRsYWJlbF0gICA9IDE7CiAgICAgICAgICAgICR1c2VkQ291bnRlcnNbJGxhYmVsXSA9ICRuZXh0Q291bnRlcjsKCiAgICAgICAgICAgIGlmICgkY2FuSW5jcmVtZW50Q291bnRlcikgewogICAgICAgICAgICAgICAgJG5leHRDb3VudGVyKys7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9Cn0KIjtzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlAGRvY0Jsb2NrIjtOO3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAbWV0YWRhdGEiO2E6MDp7fX0=";