{ "name": "ConfidentialAsset", "desc": "", "methods": [ { "name": "createApplication", "args": [ { "name": "assetId", "type": "uint64" } ], "returns": { "type": "void" }, "actions": { "create": [ "NoOp" ], "call": [] } }, { "name": "shield", "desc": "Shield — deposit public funds, create a Pedersen commitment.\nCommitment = amount * G + blinding * H (64-byte BN254 G1 point)", "args": [ { "name": "commitment", "type": "byte[]" }, { "name": "amount", "type": "uint64" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] } }, { "name": "confidentialTransfer", "desc": "Confidential transfer — transfer between shielded balances with hidden amount.\nRange proofs verified by LogicSig in atomic group.", "args": [ { "name": "recipient", "type": "address" }, { "name": "senderNewCommitment", "type": "byte[]" }, { "name": "recipientNewCommitment", "type": "byte[]" }, { "name": "transferCommitment", "type": "byte[]" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] } }, { "name": "unshield", "desc": "Unshield — withdraw from shielded balance to public.", "args": [ { "name": "amount", "type": "uint64" }, { "name": "newCommitment", "type": "byte[]" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] } }, { "name": "optInToAsset", "args": [], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] } } ], "arcs": [ 4, 56 ], "structs": {}, "state": { "schema": { "global": { "bytes": 0, "ints": 3 }, "local": { "bytes": 0, "ints": 0 } }, "keys": { "global": { "assetId": { "key": "YXNzZXRfaWQ=", "keyType": "AVMBytes", "valueType": "uint64" }, "totalDeposited": { "key": "dG90YWxfZGVw", "keyType": "AVMBytes", "valueType": "uint64" }, "totalWithdrawn": { "key": "dG90YWxfd2Q=", "keyType": "AVMBytes", "valueType": "uint64" } }, "local": {}, "box": {} }, "maps": { "global": {}, "local": {}, "box": { "balances": { "keyType": "address", "valueType": "AVMBytes", "prefix": "YmFs" } } } }, "bareActions": { "create": [], "call": [] }, "sourceInfo": { "approval": { "sourceInfo": [], "pcOffsetMethod": "none" }, "clear": { "sourceInfo": [], "pcOffsetMethod": "none" } }, "source": { "approval": "I3ByYWdtYSB2ZXJzaW9uIDEwCmludGNibG9jayAwIDEgNjQgNApieXRlY2Jsb2NrIDB4NjI2MTZjIDB4NjE3MzczNjU3NDVmNjk2NCAweCAweDc0NmY3NDYxNmM1ZjY0NjU3MCAweDc0NmY3NDYxNmM1Zjc3NjQKCi8vIFRoaXMgVEVBTCB3YXMgZ2VuZXJhdGVkIGJ5IFRFQUxTY3JpcHQgdjAuMTA3LjIKLy8gaHR0cHM6Ly9naXRodWIuY29tL2FsZ29yYW5kZm91bmRhdGlvbi9URUFMU2NyaXB0CgovLyBUaGlzIGNvbnRyYWN0IGlzIGNvbXBsaWFudCB3aXRoIGFuZC9vciBpbXBsZW1lbnRzIHRoZSBmb2xsb3dpbmcgQVJDczogWyBBUkM0IF0KCi8vIFRoZSBmb2xsb3dpbmcgdGVuIGxpbmVzIG9mIFRFQUwgaGFuZGxlIGluaXRpYWwgcHJvZ3JhbSBmbG93Ci8vIFRoaXMgcGF0dGVybiBpcyB1c2VkIHRvIG1ha2UgaXQgZWFzeSBmb3IgYW55b25lIHRvIHBhcnNlIHRoZSBzdGFydCBvZiB0aGUgcHJvZ3JhbSBhbmQgZGV0ZXJtaW5lIGlmIGEgc3BlY2lmaWMgYWN0aW9uIGlzIGFsbG93ZWQKLy8gSGVyZSwgYWN0aW9uIHJlZmVycyB0byB0aGUgT25Db21wbGV0ZSBpbiBjb21iaW5hdGlvbiB3aXRoIHdoZXRoZXIgdGhlIGFwcCBpcyBiZWluZyBjcmVhdGVkIG9yIGNhbGxlZAovLyBFdmVyeSBwb3NzaWJsZSBhY3Rpb24gZm9yIHRoaXMgY29udHJhY3QgaXMgcmVwcmVzZW50ZWQgaW4gdGhlIHN3aXRjaCBzdGF0ZW1lbnQKLy8gSWYgdGhlIGFjdGlvbiBpcyBub3QgaW1wbGVtZW50ZWQgaW4gdGhlIGNvbnRyYWN0LCBpdHMgcmVzcGVjdGl2ZSBicmFuY2ggd2lsbCBiZSAiKk5PVF9JTVBMRU1FTlRFRCIgd2hpY2gganVzdCBjb250YWlucyAiZXJyIgp0eG4gQXBwbGljYXRpb25JRAohCnB1c2hpbnQgNgoqCnR4biBPbkNvbXBsZXRpb24KKwpzd2l0Y2ggKmNhbGxfTm9PcCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKmNyZWF0ZV9Ob09wICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRAoKKk5PVF9JTVBMRU1FTlRFRDoKCS8vIFRoZSByZXF1ZXN0ZWQgYWN0aW9uIGlzIG5vdCBpbXBsZW1lbnRlZCBpbiB0aGlzIGNvbnRyYWN0LiBBcmUgeW91IHVzaW5nIHRoZSBjb3JyZWN0IE9uQ29tcGxldGU/IERpZCB5b3Ugc2V0IHlvdXIgYXBwIElEPwoJZXJyCgovLyBjcmVhdGVBcHBsaWNhdGlvbih1aW50NjQpdm9pZAoqYWJpX3JvdXRlX2NyZWF0ZUFwcGxpY2F0aW9uOgoJLy8gYXNzZXRJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBjcmVhdGVBcHBsaWNhdGlvbih1aW50NjQpdm9pZAoJY2FsbHN1YiBjcmVhdGVBcHBsaWNhdGlvbgoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gY3JlYXRlQXBwbGljYXRpb24oYXNzZXRJZDogdWludDY0KTogdm9pZApjcmVhdGVBcHBsaWNhdGlvbjoKCXByb3RvIDEgMAoKCS8vIGNvbnRyYWN0cy9jb25maWRlbnRpYWwtYXNzZXQuYWxnby50czoxMgoJLy8gdGhpcy5hc3NldElkLnZhbHVlID0gYXNzZXRJZAoJYnl0ZWMgMSAvLyAgImFzc2V0X2lkIgoJZnJhbWVfZGlnIC0xIC8vIGFzc2V0SWQ6IHVpbnQ2NAoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvY29uZmlkZW50aWFsLWFzc2V0LmFsZ28udHM6MTMKCS8vIHRoaXMudG90YWxEZXBvc2l0ZWQudmFsdWUgPSAwCglieXRlYyAzIC8vICAidG90YWxfZGVwIgoJaW50YyAwIC8vIDAKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL2NvbmZpZGVudGlhbC1hc3NldC5hbGdvLnRzOjE0CgkvLyB0aGlzLnRvdGFsV2l0aGRyYXduLnZhbHVlID0gMAoJYnl0ZWMgNCAvLyAgInRvdGFsX3dkIgoJaW50YyAwIC8vIDAKCWFwcF9nbG9iYWxfcHV0CglyZXRzdWIKCi8vIHNoaWVsZChieXRlW10sdWludDY0KXZvaWQKKmFiaV9yb3V0ZV9zaGllbGQ6CgkvLyBhbW91bnQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJYnRvaQoKCS8vIGNvbW1pdG1lbnQ6IGJ5dGVbXQoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJZXh0cmFjdCAyIDAKCgkvLyBleGVjdXRlIHNoaWVsZChieXRlW10sdWludDY0KXZvaWQKCWNhbGxzdWIgc2hpZWxkCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBzaGllbGQoY29tbWl0bWVudDogYnl0ZXMsIGFtb3VudDogdWludDY0KTogdm9pZAovLwovLyBTaGllbGQg4oCUIGRlcG9zaXQgcHVibGljIGZ1bmRzLCBjcmVhdGUgYSBQZWRlcnNlbiBjb21taXRtZW50LgovLyBDb21taXRtZW50ID0gYW1vdW50ICogRyArIGJsaW5kaW5nICogSCAoNjQtYnl0ZSBCTjI1NCBHMSBwb2ludCkKc2hpZWxkOgoJcHJvdG8gMiAwCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDIgLy8gMHgKCWR1cG4gMgoKCS8vIGNvbnRyYWN0cy9jb25maWRlbnRpYWwtYXNzZXQuYWxnby50czoyMgoJLy8gYXNzZXJ0KGxlbihjb21taXRtZW50KSA9PT0gNjQpCglmcmFtZV9kaWcgLTEgLy8gY29tbWl0bWVudDogYnl0ZXMKCWxlbgoJaW50YyAyIC8vIDY0Cgk9PQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL2NvbmZpZGVudGlhbC1hc3NldC5hbGdvLnRzOjI0CgkvLyBwYXlUeG4gPSB0aGlzLnR4bkdyb3VwW3RoaXMudHhuLmdyb3VwSW5kZXggLSAxXQoJdHhuIEdyb3VwSW5kZXgKCWludGMgMSAvLyAxCgktCglmcmFtZV9idXJ5IDAgLy8gcGF5VHhuOiB0eG4KCgkvLyAqaWYwX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL2NvbmZpZGVudGlhbC1hc3NldC5hbGdvLnRzOjI1CgkvLyB0aGlzLmFzc2V0SWQudmFsdWUgPT09IDAKCWJ5dGVjIDEgLy8gICJhc3NldF9pZCIKCWFwcF9nbG9iYWxfZ2V0CglpbnRjIDAgLy8gMAoJPT0KCWJ6ICppZjBfZWxzZQoKCS8vICppZjBfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL2NvbmZpZGVudGlhbC1hc3NldC5hbGdvLnRzOjI2CgkvLyB2ZXJpZnlQYXlUeG4ocGF5VHhuLCB7CgkvLyAgICAgICAgIHJlY2VpdmVyOiB0aGlzLmFwcC5hZGRyZXNzLAoJLy8gICAgICAgICBhbW91bnQ6IGFtb3VudCwKCS8vICAgICAgIH0pCgkvLyB2ZXJpZnkgcGF5CglmcmFtZV9kaWcgMCAvLyBwYXlUeG46IHR4bgoJZ3R4bnMgVHlwZUVudW0KCWludGMgMSAvLyAgcGF5Cgk9PQoKCS8vIHRyYW5zYWN0aW9uIHZlcmlmaWNhdGlvbiBmYWlsZWQ6IHsidHhuIjoicGF5VHhuIiwiZmllbGQiOiJ0eXBlRW51bSIsImV4cGVjdGVkIjoicGF5In0KCWFzc2VydAoKCS8vIHZlcmlmeSByZWNlaXZlcgoJZnJhbWVfZGlnIDAgLy8gcGF5VHhuOiB0eG4KCWd0eG5zIFJlY2VpdmVyCglnbG9iYWwgQ3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcwoJPT0KCgkvLyB0cmFuc2FjdGlvbiB2ZXJpZmljYXRpb24gZmFpbGVkOiB7InR4biI6InBheVR4biIsImZpZWxkIjoicmVjZWl2ZXIiLCJleHBlY3RlZCI6InRoaXMuYXBwLmFkZHJlc3MifQoJYXNzZXJ0CgoJLy8gdmVyaWZ5IGFtb3VudAoJZnJhbWVfZGlnIDAgLy8gcGF5VHhuOiB0eG4KCWd0eG5zIEFtb3VudAoJZnJhbWVfZGlnIC0yIC8vIGFtb3VudDogdWludDY0Cgk9PQoKCS8vIHRyYW5zYWN0aW9uIHZlcmlmaWNhdGlvbiBmYWlsZWQ6IHsidHhuIjoicGF5VHhuIiwiZmllbGQiOiJhbW91bnQiLCJleHBlY3RlZCI6ImFtb3VudCJ9Cglhc3NlcnQKCWIgKmlmMF9lbmQKCippZjBfZWxzZToKCS8vIGNvbnRyYWN0cy9jb25maWRlbnRpYWwtYXNzZXQuYWxnby50czozMQoJLy8gdmVyaWZ5QXNzZXRUcmFuc2ZlclR4bihwYXlUeG4sIHsKCS8vICAgICAgICAgYXNzZXRSZWNlaXZlcjogdGhpcy5hcHAuYWRkcmVzcywKCS8vICAgICAgICAgYXNzZXRBbW91bnQ6IGFtb3VudCwKCS8vICAgICAgICAgeGZlckFzc2V0OiBBc3NldElELmZyb21VaW50NjQodGhpcy5hc3NldElkLnZhbHVlKSwKCS8vICAgICAgIH0pCgkvLyB2ZXJpZnkgYXhmZXIKCWZyYW1lX2RpZyAwIC8vIHBheVR4bjogdHhuCglndHhucyBUeXBlRW51bQoJaW50YyAzIC8vICBheGZlcgoJPT0KCgkvLyB0cmFuc2FjdGlvbiB2ZXJpZmljYXRpb24gZmFpbGVkOiB7InR4biI6InBheVR4biIsImZpZWxkIjoidHlwZUVudW0iLCJleHBlY3RlZCI6ImF4ZmVyIn0KCWFzc2VydAoKCS8vIHZlcmlmeSBhc3NldFJlY2VpdmVyCglmcmFtZV9kaWcgMCAvLyBwYXlUeG46IHR4bgoJZ3R4bnMgQXNzZXRSZWNlaXZlcgoJZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKCT09CgoJLy8gdHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uIGZhaWxlZDogeyJ0eG4iOiJwYXlUeG4iLCJmaWVsZCI6ImFzc2V0UmVjZWl2ZXIiLCJleHBlY3RlZCI6InRoaXMuYXBwLmFkZHJlc3MifQoJYXNzZXJ0CgoJLy8gdmVyaWZ5IGFzc2V0QW1vdW50CglmcmFtZV9kaWcgMCAvLyBwYXlUeG46IHR4bgoJZ3R4bnMgQXNzZXRBbW91bnQKCWZyYW1lX2RpZyAtMiAvLyBhbW91bnQ6IHVpbnQ2NAoJPT0KCgkvLyB0cmFuc2FjdGlvbiB2ZXJpZmljYXRpb24gZmFpbGVkOiB7InR4biI6InBheVR4biIsImZpZWxkIjoiYXNzZXRBbW91bnQiLCJleHBlY3RlZCI6ImFtb3VudCJ9Cglhc3NlcnQKCgkvLyB2ZXJpZnkgeGZlckFzc2V0CglmcmFtZV9kaWcgMCAvLyBwYXlUeG46IHR4bgoJZ3R4bnMgWGZlckFzc2V0CglieXRlYyAxIC8vICAiYXNzZXRfaWQiCglhcHBfZ2xvYmFsX2dldAoJPT0KCgkvLyB0cmFuc2FjdGlvbiB2ZXJpZmljYXRpb24gZmFpbGVkOiB7InR4biI6InBheVR4biIsImZpZWxkIjoieGZlckFzc2V0IiwiZXhwZWN0ZWQiOiJBc3NldElELmZyb21VaW50NjQodGhpcy5hc3NldElkLnZhbHVlKSJ9Cglhc3NlcnQKCippZjBfZW5kOgoJLy8gKmlmMV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9jb25maWRlbnRpYWwtYXNzZXQuYWxnby50czozOAoJLy8gdGhpcy5iYWxhbmNlcyh0aGlzLnR4bi5zZW5kZXIpLmV4aXN0cwoJYnl0ZWMgMCAvLyAgImJhbCIKCXR4biBTZW5kZXIKCWNvbmNhdAoJYm94X2xlbgoJc3dhcAoJcG9wCglieiAqaWYxX2Vsc2UKCgkvLyAqaWYxX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9jb25maWRlbnRpYWwtYXNzZXQuYWxnby50czo0MAoJLy8gZXhpc3RpbmcgPSB0aGlzLmJhbGFuY2VzKHRoaXMudHhuLnNlbmRlcikudmFsdWUKCWJ5dGVjIDAgLy8gICJiYWwiCgl0eG4gU2VuZGVyCgljb25jYXQKCWJveF9nZXQKCgkvLyBib3ggdmFsdWUgZG9lcyBub3QgZXhpc3Q6IHRoaXMuYmFsYW5jZXModGhpcy50eG4uc2VuZGVyKS52YWx1ZQoJYXNzZXJ0CglmcmFtZV9idXJ5IDEgLy8gZXhpc3Rpbmc6IGJ5dGVbXQoKCS8vIGNvbnRyYWN0cy9jb25maWRlbnRpYWwtYXNzZXQuYWxnby50czo0MQoJLy8gbmV3Q29tbWl0bWVudCA9IGVjQWRkKCdCTjI1NGcxJywgZXhpc3RpbmcsIGNvbW1pdG1lbnQpCglmcmFtZV9kaWcgMSAvLyBleGlzdGluZzogYnl0ZVtdCglmcmFtZV9kaWcgLTEgLy8gY29tbWl0bWVudDogYnl0ZXMKCWVjX2FkZCBCTjI1NGcxCglmcmFtZV9idXJ5IDIgLy8gbmV3Q29tbWl0bWVudDogYnl0ZVtdCgoJLy8gY29udHJhY3RzL2NvbmZpZGVudGlhbC1hc3NldC5hbGdvLnRzOjQyCgkvLyB0aGlzLmJhbGFuY2VzKHRoaXMudHhuLnNlbmRlcikudmFsdWUgPSBuZXdDb21taXRtZW50CglieXRlYyAwIC8vICAiYmFsIgoJdHhuIFNlbmRlcgoJY29uY2F0CglkdXAKCWJveF9kZWwKCXBvcAoJZnJhbWVfZGlnIDIgLy8gbmV3Q29tbWl0bWVudDogYnl0ZVtdCglib3hfcHV0CgliICppZjFfZW5kCgoqaWYxX2Vsc2U6CgkvLyBjb250cmFjdHMvY29uZmlkZW50aWFsLWFzc2V0LmFsZ28udHM6NDQKCS8vIHRoaXMuYmFsYW5jZXModGhpcy50eG4uc2VuZGVyKS52YWx1ZSA9IGNvbW1pdG1lbnQKCWJ5dGVjIDAgLy8gICJiYWwiCgl0eG4gU2VuZGVyCgljb25jYXQKCWR1cAoJYm94X2RlbAoJcG9wCglmcmFtZV9kaWcgLTEgLy8gY29tbWl0bWVudDogYnl0ZXMKCWJveF9wdXQKCippZjFfZW5kOgoJLy8gY29udHJhY3RzL2NvbmZpZGVudGlhbC1hc3NldC5hbGdvLnRzOjQ3CgkvLyB0aGlzLnRvdGFsRGVwb3NpdGVkLnZhbHVlID0gdGhpcy50b3RhbERlcG9zaXRlZC52YWx1ZSArIGFtb3VudAoJYnl0ZWMgMyAvLyAgInRvdGFsX2RlcCIKCWR1cAoJYXBwX2dsb2JhbF9nZXQKCWZyYW1lX2RpZyAtMiAvLyBhbW91bnQ6IHVpbnQ2NAoJKwoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvY29uZmlkZW50aWFsLWFzc2V0LmFsZ28udHM6NDgKCS8vIGxvZyhjb25jYXQoaGV4KCc3MzY4Njk2NTZjNjQnKSwgY29tbWl0bWVudCkpCglwdXNoYnl0ZXMgMHg3MzY4Njk2NTZjNjQKCWZyYW1lX2RpZyAtMSAvLyBjb21taXRtZW50OiBieXRlcwoJY29uY2F0Cglsb2cKCXJldHN1YgoKLy8gY29uZmlkZW50aWFsVHJhbnNmZXIoYWRkcmVzcyxieXRlW10sYnl0ZVtdLGJ5dGVbXSl2b2lkCiphYmlfcm91dGVfY29uZmlkZW50aWFsVHJhbnNmZXI6CgkvLyB0cmFuc2ZlckNvbW1pdG1lbnQ6IGJ5dGVbXQoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNAoJZXh0cmFjdCAyIDAKCgkvLyByZWNpcGllbnROZXdDb21taXRtZW50OiBieXRlW10KCXR4bmEgQXBwbGljYXRpb25BcmdzIDMKCWV4dHJhY3QgMiAwCgoJLy8gc2VuZGVyTmV3Q29tbWl0bWVudDogYnl0ZVtdCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglleHRyYWN0IDIgMAoKCS8vIHJlY2lwaWVudDogYWRkcmVzcwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJZHVwCglsZW4KCXB1c2hpbnQgMzIKCT09CgoJLy8gYXJndW1lbnQgMyAocmVjaXBpZW50KSBmb3IgY29uZmlkZW50aWFsVHJhbnNmZXIgbXVzdCBiZSBhIGFkZHJlc3MKCWFzc2VydAoKCS8vIGV4ZWN1dGUgY29uZmlkZW50aWFsVHJhbnNmZXIoYWRkcmVzcyxieXRlW10sYnl0ZVtdLGJ5dGVbXSl2b2lkCgljYWxsc3ViIGNvbmZpZGVudGlhbFRyYW5zZmVyCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBjb25maWRlbnRpYWxUcmFuc2ZlcihyZWNpcGllbnQ6IEFkZHJlc3MsIHNlbmRlck5ld0NvbW1pdG1lbnQ6IGJ5dGVzLCByZWNpcGllbnROZXdDb21taXRtZW50OiBieXRlcywgdHJhbnNmZXJDb21taXRtZW50OiBieXRlcyk6IHZvaWQKLy8KLy8gQ29uZmlkZW50aWFsIHRyYW5zZmVyIOKAlCB0cmFuc2ZlciBiZXR3ZWVuIHNoaWVsZGVkIGJhbGFuY2VzIHdpdGggaGlkZGVuIGFtb3VudC4KLy8gUmFuZ2UgcHJvb2ZzIHZlcmlmaWVkIGJ5IExvZ2ljU2lnIGluIGF0b21pYyBncm91cC4KY29uZmlkZW50aWFsVHJhbnNmZXI6Cglwcm90byA0IDAKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMiAvLyAweAoJZHVwbiAzCgoJLy8gY29udHJhY3RzL2NvbmZpZGVudGlhbC1hc3NldC5hbGdvLnRzOjYxCgkvLyBhc3NlcnQobGVuKHNlbmRlck5ld0NvbW1pdG1lbnQpID09PSA2NCkKCWZyYW1lX2RpZyAtMiAvLyBzZW5kZXJOZXdDb21taXRtZW50OiBieXRlcwoJbGVuCglpbnRjIDIgLy8gNjQKCT09Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvY29uZmlkZW50aWFsLWFzc2V0LmFsZ28udHM6NjIKCS8vIGFzc2VydChsZW4ocmVjaXBpZW50TmV3Q29tbWl0bWVudCkgPT09IDY0KQoJZnJhbWVfZGlnIC0zIC8vIHJlY2lwaWVudE5ld0NvbW1pdG1lbnQ6IGJ5dGVzCglsZW4KCWludGMgMiAvLyA2NAoJPT0KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9jb25maWRlbnRpYWwtYXNzZXQuYWxnby50czo2MwoJLy8gYXNzZXJ0KGxlbih0cmFuc2ZlckNvbW1pdG1lbnQpID09PSA2NCkKCWZyYW1lX2RpZyAtNCAvLyB0cmFuc2ZlckNvbW1pdG1lbnQ6IGJ5dGVzCglsZW4KCWludGMgMiAvLyA2NAoJPT0KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9jb25maWRlbnRpYWwtYXNzZXQuYWxnby50czo2NgoJLy8gYXNzZXJ0KHRoaXMuYmFsYW5jZXModGhpcy50eG4uc2VuZGVyKS5leGlzdHMpCglieXRlYyAwIC8vICAiYmFsIgoJdHhuIFNlbmRlcgoJY29uY2F0Cglib3hfbGVuCglzd2FwCglwb3AKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9jb25maWRlbnRpYWwtYXNzZXQuYWxnby50czo3MAoJLy8gc2VuZGVyT2xkID0gdGhpcy5iYWxhbmNlcyh0aGlzLnR4bi5zZW5kZXIpLnZhbHVlCglieXRlYyAwIC8vICAiYmFsIgoJdHhuIFNlbmRlcgoJY29uY2F0Cglib3hfZ2V0CgoJLy8gYm94IHZhbHVlIGRvZXMgbm90IGV4aXN0OiB0aGlzLmJhbGFuY2VzKHRoaXMudHhuLnNlbmRlcikudmFsdWUKCWFzc2VydAoJZnJhbWVfYnVyeSAwIC8vIHNlbmRlck9sZDogYnl0ZVtdCgoJLy8gY29udHJhY3RzL2NvbmZpZGVudGlhbC1hc3NldC5hbGdvLnRzOjcxCgkvLyBjb21wdXRlZFNlbmRlck9sZCA9IGVjQWRkKCdCTjI1NGcxJywgc2VuZGVyTmV3Q29tbWl0bWVudCwgdHJhbnNmZXJDb21taXRtZW50KQoJZnJhbWVfZGlnIC0yIC8vIHNlbmRlck5ld0NvbW1pdG1lbnQ6IGJ5dGVzCglmcmFtZV9kaWcgLTQgLy8gdHJhbnNmZXJDb21taXRtZW50OiBieXRlcwoJZWNfYWRkIEJOMjU0ZzEKCWZyYW1lX2J1cnkgMSAvLyBjb21wdXRlZFNlbmRlck9sZDogYnl0ZVtdCgoJLy8gY29udHJhY3RzL2NvbmZpZGVudGlhbC1hc3NldC5hbGdvLnRzOjcyCgkvLyBhc3NlcnQoc2VuZGVyT2xkID09PSBjb21wdXRlZFNlbmRlck9sZCkKCWZyYW1lX2RpZyAwIC8vIHNlbmRlck9sZDogYnl0ZVtdCglmcmFtZV9kaWcgMSAvLyBjb21wdXRlZFNlbmRlck9sZDogYnl0ZVtdCgk9PQoJYXNzZXJ0CgoJLy8gKmlmMl9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9jb25maWRlbnRpYWwtYXNzZXQuYWxnby50czo3NQoJLy8gdGhpcy5iYWxhbmNlcyhyZWNpcGllbnQpLmV4aXN0cwoJYnl0ZWMgMCAvLyAgImJhbCIKCWZyYW1lX2RpZyAtMSAvLyByZWNpcGllbnQ6IEFkZHJlc3MKCWNvbmNhdAoJYm94X2xlbgoJc3dhcAoJcG9wCglieiAqaWYyX2VuZAoKCS8vICppZjJfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL2NvbmZpZGVudGlhbC1hc3NldC5hbGdvLnRzOjc2CgkvLyByZWNpcGllbnRPbGQgPSB0aGlzLmJhbGFuY2VzKHJlY2lwaWVudCkudmFsdWUKCWJ5dGVjIDAgLy8gICJiYWwiCglmcmFtZV9kaWcgLTEgLy8gcmVjaXBpZW50OiBBZGRyZXNzCgljb25jYXQKCWJveF9nZXQKCgkvLyBib3ggdmFsdWUgZG9lcyBub3QgZXhpc3Q6IHRoaXMuYmFsYW5jZXMocmVjaXBpZW50KS52YWx1ZQoJYXNzZXJ0CglmcmFtZV9idXJ5IDIgLy8gcmVjaXBpZW50T2xkOiBieXRlW10KCgkvLyBjb250cmFjdHMvY29uZmlkZW50aWFsLWFzc2V0LmFsZ28udHM6NzcKCS8vIGNvbXB1dGVkUmVjaXBpZW50TmV3ID0gZWNBZGQoJ0JOMjU0ZzEnLCByZWNpcGllbnRPbGQsIHRyYW5zZmVyQ29tbWl0bWVudCkKCWZyYW1lX2RpZyAyIC8vIHJlY2lwaWVudE9sZDogYnl0ZVtdCglmcmFtZV9kaWcgLTQgLy8gdHJhbnNmZXJDb21taXRtZW50OiBieXRlcwoJZWNfYWRkIEJOMjU0ZzEKCWZyYW1lX2J1cnkgMyAvLyBjb21wdXRlZFJlY2lwaWVudE5ldzogYnl0ZVtdCgoJLy8gY29udHJhY3RzL2NvbmZpZGVudGlhbC1hc3NldC5hbGdvLnRzOjc4CgkvLyBhc3NlcnQocmVjaXBpZW50TmV3Q29tbWl0bWVudCA9PT0gY29tcHV0ZWRSZWNpcGllbnROZXcpCglmcmFtZV9kaWcgLTMgLy8gcmVjaXBpZW50TmV3Q29tbWl0bWVudDogYnl0ZXMKCWZyYW1lX2RpZyAzIC8vIGNvbXB1dGVkUmVjaXBpZW50TmV3OiBieXRlW10KCT09Cglhc3NlcnQKCippZjJfZW5kOgoJLy8gY29udHJhY3RzL2NvbmZpZGVudGlhbC1hc3NldC5hbGdvLnRzOjgyCgkvLyBhc3NlcnQodGhpcy50eG4uZ3JvdXBJbmRleCA+IDApCgl0eG4gR3JvdXBJbmRleAoJaW50YyAwIC8vIDAKCT4KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9jb25maWRlbnRpYWwtYXNzZXQuYWxnby50czo4NAoJLy8gdGhpcy5iYWxhbmNlcyh0aGlzLnR4bi5zZW5kZXIpLnZhbHVlID0gc2VuZGVyTmV3Q29tbWl0bWVudAoJYnl0ZWMgMCAvLyAgImJhbCIKCXR4biBTZW5kZXIKCWNvbmNhdAoJZHVwCglib3hfZGVsCglwb3AKCWZyYW1lX2RpZyAtMiAvLyBzZW5kZXJOZXdDb21taXRtZW50OiBieXRlcwoJYm94X3B1dAoKCS8vIGNvbnRyYWN0cy9jb25maWRlbnRpYWwtYXNzZXQuYWxnby50czo4NQoJLy8gdGhpcy5iYWxhbmNlcyhyZWNpcGllbnQpLnZhbHVlID0gcmVjaXBpZW50TmV3Q29tbWl0bWVudAoJYnl0ZWMgMCAvLyAgImJhbCIKCWZyYW1lX2RpZyAtMSAvLyByZWNpcGllbnQ6IEFkZHJlc3MKCWNvbmNhdAoJZHVwCglib3hfZGVsCglwb3AKCWZyYW1lX2RpZyAtMyAvLyByZWNpcGllbnROZXdDb21taXRtZW50OiBieXRlcwoJYm94X3B1dAoKCS8vIGNvbnRyYWN0cy9jb25maWRlbnRpYWwtYXNzZXQuYWxnby50czo4NwoJLy8gbG9nKGhleCgnNzQ3MjYxNmU3MzY2NjU3MicpKQoJcHVzaGJ5dGVzIDB4NzQ3MjYxNmU3MzY2NjU3MgoJbG9nCglyZXRzdWIKCi8vIHVuc2hpZWxkKHVpbnQ2NCxieXRlW10pdm9pZAoqYWJpX3JvdXRlX3Vuc2hpZWxkOgoJLy8gbmV3Q29tbWl0bWVudDogYnl0ZVtdCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglleHRyYWN0IDIgMAoKCS8vIGFtb3VudDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSB1bnNoaWVsZCh1aW50NjQsYnl0ZVtdKXZvaWQKCWNhbGxzdWIgdW5zaGllbGQKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIHVuc2hpZWxkKGFtb3VudDogdWludDY0LCBuZXdDb21taXRtZW50OiBieXRlcyk6IHZvaWQKLy8KLy8gVW5zaGllbGQg4oCUIHdpdGhkcmF3IGZyb20gc2hpZWxkZWQgYmFsYW5jZSB0byBwdWJsaWMuCnVuc2hpZWxkOgoJcHJvdG8gMiAwCgoJLy8gY29udHJhY3RzL2NvbmZpZGVudGlhbC1hc3NldC5hbGdvLnRzOjk0CgkvLyBhc3NlcnQobGVuKG5ld0NvbW1pdG1lbnQpID09PSA2NCkKCWZyYW1lX2RpZyAtMiAvLyBuZXdDb21taXRtZW50OiBieXRlcwoJbGVuCglpbnRjIDIgLy8gNjQKCT09Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvY29uZmlkZW50aWFsLWFzc2V0LmFsZ28udHM6OTUKCS8vIGFzc2VydCh0aGlzLmJhbGFuY2VzKHRoaXMudHhuLnNlbmRlcikuZXhpc3RzKQoJYnl0ZWMgMCAvLyAgImJhbCIKCXR4biBTZW5kZXIKCWNvbmNhdAoJYm94X2xlbgoJc3dhcAoJcG9wCglhc3NlcnQKCgkvLyAqaWYzX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL2NvbmZpZGVudGlhbC1hc3NldC5hbGdvLnRzOjk4CgkvLyBuZXdDb21taXRtZW50ID09PSByYXdCeXRlcyhiemVybyg2NCkpCglmcmFtZV9kaWcgLTIgLy8gbmV3Q29tbWl0bWVudDogYnl0ZXMKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCgk9PQoJYnogKmlmM19lbHNlCgoJLy8gKmlmM19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvY29uZmlkZW50aWFsLWFzc2V0LmFsZ28udHM6OTkKCS8vIHRoaXMuYmFsYW5jZXModGhpcy50eG4uc2VuZGVyKS5kZWxldGUoKQoJYnl0ZWMgMCAvLyAgImJhbCIKCXR4biBTZW5kZXIKCWNvbmNhdAoJYm94X2RlbAoJYiAqaWYzX2VuZAoKKmlmM19lbHNlOgoJLy8gY29udHJhY3RzL2NvbmZpZGVudGlhbC1hc3NldC5hbGdvLnRzOjEwMQoJLy8gdGhpcy5iYWxhbmNlcyh0aGlzLnR4bi5zZW5kZXIpLnZhbHVlID0gbmV3Q29tbWl0bWVudAoJYnl0ZWMgMCAvLyAgImJhbCIKCXR4biBTZW5kZXIKCWNvbmNhdAoJZHVwCglib3hfZGVsCglwb3AKCWZyYW1lX2RpZyAtMiAvLyBuZXdDb21taXRtZW50OiBieXRlcwoJYm94X3B1dAoKKmlmM19lbmQ6CgkvLyAqaWY0X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL2NvbmZpZGVudGlhbC1hc3NldC5hbGdvLnRzOjEwNAoJLy8gdGhpcy5hc3NldElkLnZhbHVlID09PSAwCglieXRlYyAxIC8vICAiYXNzZXRfaWQiCglhcHBfZ2xvYmFsX2dldAoJaW50YyAwIC8vIDAKCT09CglieiAqaWY0X2Vsc2UKCgkvLyAqaWY0X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9jb25maWRlbnRpYWwtYXNzZXQuYWxnby50czoxMDUKCS8vIHNlbmRQYXltZW50KHsgcmVjZWl2ZXI6IHRoaXMudHhuLnNlbmRlciwgYW1vdW50OiBhbW91bnQsIGZlZTogMCB9KQoJaXR4bl9iZWdpbgoJaW50YyAxIC8vICBwYXkKCWl0eG5fZmllbGQgVHlwZUVudW0KCgkvLyBjb250cmFjdHMvY29uZmlkZW50aWFsLWFzc2V0LmFsZ28udHM6MTA1CgkvLyByZWNlaXZlcjogdGhpcy50eG4uc2VuZGVyCgl0eG4gU2VuZGVyCglpdHhuX2ZpZWxkIFJlY2VpdmVyCgoJLy8gY29udHJhY3RzL2NvbmZpZGVudGlhbC1hc3NldC5hbGdvLnRzOjEwNQoJLy8gYW1vdW50OiBhbW91bnQKCWZyYW1lX2RpZyAtMSAvLyBhbW91bnQ6IHVpbnQ2NAoJaXR4bl9maWVsZCBBbW91bnQKCgkvLyBjb250cmFjdHMvY29uZmlkZW50aWFsLWFzc2V0LmFsZ28udHM6MTA1CgkvLyBmZWU6IDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCWIgKmlmNF9lbmQKCippZjRfZWxzZToKCS8vIGNvbnRyYWN0cy9jb25maWRlbnRpYWwtYXNzZXQuYWxnby50czoxMDcKCS8vIHNlbmRBc3NldFRyYW5zZmVyKHsKCS8vICAgICAgICAgYXNzZXRSZWNlaXZlcjogdGhpcy50eG4uc2VuZGVyLAoJLy8gICAgICAgICBhc3NldEFtb3VudDogYW1vdW50LAoJLy8gICAgICAgICB4ZmVyQXNzZXQ6IEFzc2V0SUQuZnJvbVVpbnQ2NCh0aGlzLmFzc2V0SWQudmFsdWUpLAoJLy8gICAgICAgICBmZWU6IDAsCgkvLyAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyAzIC8vICBheGZlcgoJaXR4bl9maWVsZCBUeXBlRW51bQoKCS8vIGNvbnRyYWN0cy9jb25maWRlbnRpYWwtYXNzZXQuYWxnby50czoxMDgKCS8vIGFzc2V0UmVjZWl2ZXI6IHRoaXMudHhuLnNlbmRlcgoJdHhuIFNlbmRlcgoJaXR4bl9maWVsZCBBc3NldFJlY2VpdmVyCgoJLy8gY29udHJhY3RzL2NvbmZpZGVudGlhbC1hc3NldC5hbGdvLnRzOjEwOQoJLy8gYXNzZXRBbW91bnQ6IGFtb3VudAoJZnJhbWVfZGlnIC0xIC8vIGFtb3VudDogdWludDY0CglpdHhuX2ZpZWxkIEFzc2V0QW1vdW50CgoJLy8gY29udHJhY3RzL2NvbmZpZGVudGlhbC1hc3NldC5hbGdvLnRzOjExMAoJLy8geGZlckFzc2V0OiBBc3NldElELmZyb21VaW50NjQodGhpcy5hc3NldElkLnZhbHVlKQoJYnl0ZWMgMSAvLyAgImFzc2V0X2lkIgoJYXBwX2dsb2JhbF9nZXQKCWl0eG5fZmllbGQgWGZlckFzc2V0CgoJLy8gY29udHJhY3RzL2NvbmZpZGVudGlhbC1hc3NldC5hbGdvLnRzOjExMQoJLy8gZmVlOiAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CgoqaWY0X2VuZDoKCS8vIGNvbnRyYWN0cy9jb25maWRlbnRpYWwtYXNzZXQuYWxnby50czoxMTUKCS8vIHRoaXMudG90YWxXaXRoZHJhd24udmFsdWUgPSB0aGlzLnRvdGFsV2l0aGRyYXduLnZhbHVlICsgYW1vdW50CglieXRlYyA0IC8vICAidG90YWxfd2QiCglkdXAKCWFwcF9nbG9iYWxfZ2V0CglmcmFtZV9kaWcgLTEgLy8gYW1vdW50OiB1aW50NjQKCSsKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL2NvbmZpZGVudGlhbC1hc3NldC5hbGdvLnRzOjExNgoJLy8gbG9nKGNvbmNhdChoZXgoJzc1NmU3MzY4Njk2NTZjNjQnKSwgaXRvYihhbW91bnQpKSkKCXB1c2hieXRlcyAweDc1NmU3MzY4Njk2NTZjNjQKCWZyYW1lX2RpZyAtMSAvLyBhbW91bnQ6IHVpbnQ2NAoJaXRvYgoJY29uY2F0Cglsb2cKCXJldHN1YgoKLy8gb3B0SW5Ub0Fzc2V0KCl2b2lkCiphYmlfcm91dGVfb3B0SW5Ub0Fzc2V0OgoJLy8gZXhlY3V0ZSBvcHRJblRvQXNzZXQoKXZvaWQKCWNhbGxzdWIgb3B0SW5Ub0Fzc2V0CglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBvcHRJblRvQXNzZXQoKTogdm9pZApvcHRJblRvQXNzZXQ6Cglwcm90byAwIDAKCgkvLyBjb250cmFjdHMvY29uZmlkZW50aWFsLWFzc2V0LmFsZ28udHM6MTIwCgkvLyBhc3NlcnQodGhpcy5hc3NldElkLnZhbHVlICE9PSAwKQoJYnl0ZWMgMSAvLyAgImFzc2V0X2lkIgoJYXBwX2dsb2JhbF9nZXQKCWludGMgMCAvLyAwCgkhPQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL2NvbmZpZGVudGlhbC1hc3NldC5hbGdvLnRzOjEyMQoJLy8gc2VuZEFzc2V0VHJhbnNmZXIoewoJLy8gICAgICAgYXNzZXRSZWNlaXZlcjogdGhpcy5hcHAuYWRkcmVzcywKCS8vICAgICAgIGFzc2V0QW1vdW50OiAwLAoJLy8gICAgICAgeGZlckFzc2V0OiBBc3NldElELmZyb21VaW50NjQodGhpcy5hc3NldElkLnZhbHVlKSwKCS8vICAgICAgIGZlZTogMCwKCS8vICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyAzIC8vICBheGZlcgoJaXR4bl9maWVsZCBUeXBlRW51bQoKCS8vIGNvbnRyYWN0cy9jb25maWRlbnRpYWwtYXNzZXQuYWxnby50czoxMjIKCS8vIGFzc2V0UmVjZWl2ZXI6IHRoaXMuYXBwLmFkZHJlc3MKCWdsb2JhbCBDdXJyZW50QXBwbGljYXRpb25BZGRyZXNzCglpdHhuX2ZpZWxkIEFzc2V0UmVjZWl2ZXIKCgkvLyBjb250cmFjdHMvY29uZmlkZW50aWFsLWFzc2V0LmFsZ28udHM6MTIzCgkvLyBhc3NldEFtb3VudDogMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgQXNzZXRBbW91bnQKCgkvLyBjb250cmFjdHMvY29uZmlkZW50aWFsLWFzc2V0LmFsZ28udHM6MTI0CgkvLyB4ZmVyQXNzZXQ6IEFzc2V0SUQuZnJvbVVpbnQ2NCh0aGlzLmFzc2V0SWQudmFsdWUpCglieXRlYyAxIC8vICAiYXNzZXRfaWQiCglhcHBfZ2xvYmFsX2dldAoJaXR4bl9maWVsZCBYZmVyQXNzZXQKCgkvLyBjb250cmFjdHMvY29uZmlkZW50aWFsLWFzc2V0LmFsZ28udHM6MTI1CgkvLyBmZWU6IDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCXJldHN1YgoKKmNyZWF0ZV9Ob09wOgoJcHVzaGJ5dGVzIDB4OTczYjYxNmYgLy8gbWV0aG9kICJjcmVhdGVBcHBsaWNhdGlvbih1aW50NjQpdm9pZCIKCXR4bmEgQXBwbGljYXRpb25BcmdzIDAKCW1hdGNoICphYmlfcm91dGVfY3JlYXRlQXBwbGljYXRpb24KCgkvLyB0aGlzIGNvbnRyYWN0IGRvZXMgbm90IGltcGxlbWVudCB0aGUgZ2l2ZW4gQUJJIG1ldGhvZCBmb3IgY3JlYXRlIE5vT3AKCWVycgoKKmNhbGxfTm9PcDoKCXB1c2hieXRlcyAweDdhZGIxYjgwIC8vIG1ldGhvZCAic2hpZWxkKGJ5dGVbXSx1aW50NjQpdm9pZCIKCXB1c2hieXRlcyAweDRhNzI0NGM1IC8vIG1ldGhvZCAiY29uZmlkZW50aWFsVHJhbnNmZXIoYWRkcmVzcyxieXRlW10sYnl0ZVtdLGJ5dGVbXSl2b2lkIgoJcHVzaGJ5dGVzIDB4NDBiNzQ1ZmMgLy8gbWV0aG9kICJ1bnNoaWVsZCh1aW50NjQsYnl0ZVtdKXZvaWQiCglwdXNoYnl0ZXMgMHg5ZmZkM2U1MyAvLyBtZXRob2QgIm9wdEluVG9Bc3NldCgpdm9pZCIKCXR4bmEgQXBwbGljYXRpb25BcmdzIDAKCW1hdGNoICphYmlfcm91dGVfc2hpZWxkICphYmlfcm91dGVfY29uZmlkZW50aWFsVHJhbnNmZXIgKmFiaV9yb3V0ZV91bnNoaWVsZCAqYWJpX3JvdXRlX29wdEluVG9Bc3NldAoKCS8vIHRoaXMgY29udHJhY3QgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBnaXZlbiBBQkkgbWV0aG9kIGZvciBjYWxsIE5vT3AKCWVycg==", "clear": "I3ByYWdtYSB2ZXJzaW9uIDEw" } }