MjAwNy0wNy0xOSAgUmVsZWFzZSBNYW5hZ2VyCgoJKiBHQ0MgNC4yLjEgcmVsZWFzZWQuCgoyMDA3LTA1LTEzICBSZWxlYXNlIE1hbmFnZXIKCgkqIEdDQyA0LjIuMCByZWxlYXNlZC4KCjIwMDctMDEtMjMgIEFuZHJldyBQaW5za2kgIDxwaW5za2lhQGdtYWlsLmNvbT4KCglQUiBvYmpjLzI3NDM4CgkqIG9iamMtYWN0LmMgKG9iamNfYWRkX3N0YXRpY19pbnN0YW5jZSk6IE1hcmsgdGhlIGRlY2wgYXMKCVRSRUVfVVNFRC4KCjIwMDctMDEtMjAgIEFuZHJldyBQaW5za2kgIDxwaW5za2lhQGdtYWlsLmNvbT4KCglQUiBvYmpjLzMwNDc5CgkqIG9iamMtYWN0LmMgKGhhc2hfaW50ZXJmYWNlKTogVXNlIElERU5USUZJRVJfSEFTSF9WQUxVRSBpbnN0ZWFkCglvZiBodGFiX2hhc2hfcG9pbnRlci4KCShsb29rdXBfaW50ZXJmYWNlKTogTGlrZXdpc2UuCgkoYWRkX2NsYXNzKTogTGlrZXdpc2UuCgoyMDA2LTEwLTEwICBCcm9va3MgTW9zZXMgIDxibW9zZXNAc3RhbmZvcmQuZWR1PgoKCSogTWFrZS1sYW5nLmluOiBBZGRlZCBlbXB0eSAib2JqYy5wZGYiIHRhcmdldC4KCjIwMDYtMDktMjYgIEFuZHJldyBQaW5za2kgIDxwaW5za2lhQHBoeXNpY3MudWMuZWR1PgoKCVBSIG9iamMvMjkxOTUKCSogb2JqYy1hY3QuYyAob2JqY19wdXNoX3Bhcm0pOiBJZiB3ZSBjaGFuZ2UgdGhlIHR5cGUgb2YgdGhlCglkZWNsLCByZWxheW91dCB0aGUgZGVjbC4KCjIwMDYtMDktMTkgIEVyaWMgQ2hyaXN0b3BoZXIgIDxlY2hyaXN0b0BhcHBsZS5jb20+CgoJKiBvYmpjLWFjdC5jIChKQkxFTik6IFJlbmFtZSB0byBPQkpDX0pCTEVOLAoJZGVmYXVsdCB0byBzb21ldGhpbmcgaW5ub2N1b3VzLgoJKGJ1aWxkX25leHRfb2JqY19leGNlcHRpb25fc3R1ZmYpOiBSZW5hbWUgSkJMRU4uCgoyMDA2LTA3LTI4ICBWb2xrZXIgUmVpY2hlbHQgIDxyZWljaGVsdEBpZ3BtLnJ3dGgtYWFjaGVuLmRlPgoKCSogTWFrZS1sYW5nLmluOiBVc2UgJChIRUFERVJfSCkgaW5zdGVhZCBvZiBoZWFkZXIuaCBpbiBkZXBlbmRlbmNpZXMuCgoyMDA2LTA3LTE5ICBWb2xrZXIgUmVpY2hlbHQgIDxyZWljaGVsdEBpZ3BtLnJ3dGgtYWFjaGVuLmRlPgoKCVBSIG9iai1jKysvMjg0MzQKCSogb2JqYy1hY3QuYyAobG9va3VwX2FuZF9pbnN0YWxsX3Byb3RvY29scyk6IFNraXAgZXJyb3JfbWFya19ub2Rlcy4KCjIwMDYtMDYtMDYgIE1pa2UgU3R1bXAgIDxtcnNAYXBwbGUuY29tPgoKCSogb2JqYy1hY3QuYzogUmVtb3ZlIHByb3RvdHlwZSBmb3Igb2JqY19idWlsZF92b2xhdGlsaXplZF90eXBlLgoKMjAwNi0wNS0yNCAgTWlrZSBTdHVtcCAgPG1yc0BhcHBsZS5jb20+CgoJKiBvYmpjLWFjdC5jIChidWlsZF9uZXh0X29iamNfZXhjZXB0aW9uX3N0dWZmKTogVXNlIEpCTEVOIGluc3RlYWQgb2YgX0pCTEVOLgoKMjAwNi0wNS0wNSAgVm9sa2VyIFJlaWNoZWx0ICA8cmVpY2hlbHRAaWdwbS5yd3RoLWFhY2hlbi5kZT4KCglQUiBvYmpjLzI3MjQwCgkqIG9iamMtYWN0LmMgKG9iamNfaXNfcHVibGljKTogUmV0dXJuIGVhcmx5IG9uIGludmFsaWQgdHlwZS4KCjIwMDYtMDMtMDIgRmFyaWJvcnogSmFoYW5pYW4gPGZqYWhhbmlhbkBhcHBsZS5jb20+CgoJKiBvYmpjLWFjdC5jIChpbml0X21vZHVsZV9kZXNjcmlwdG9yKTogUmVtb3ZlIGZpbGUgbmFtZSBmcm9tCgltb2R1bGUgZGVzY3JpcHRvci4KCShnZW5fdHlwZV9uYW1lXzApOiBGaXggSUNFIHdoZW4gaXNzdWluZyB3YXJuaW5nLgoKMjAwNi0wMi0yMCBSYWZhZWwgwXZpbGEgZGUgRXNw7W5kb2xhIDxyYWZhZWwuZXNwaW5kb2xhQGdtYWlsLmNvbT4KCSogTWFrZS1sYW5nLmluIChPQkpDKTogUmVtb3ZlCgkoT0JKRUNUSVZFLUMpOiBSZW1vdmUKCShvYmplY3RpdmUtYyk6IFJlbW92ZQoJKC5QSE9OWSk6IFJlbW92ZSBvYmplY3RpdmUtYyBhbmQgT2JqQwoKMjAwNS0xMi0xNCAgQW5kcmV3IFBpbnNraSAgPHBpbnNraWFAcGh5c2ljcy51Yy5lZHU+CgoJUFIgb2JqYy8yNTM2MAoJKiBvYmpjL29iamMtYWN0LmMgKGVuY29kZV90eXBlKTogRW5jb2RlIENvbXBsZXggdHlwZXMgYXMgJ2onIGZvbGxvd2VkCglieSB0aGUgaW5uZXIgdHlwZS4KCjIwMDUtMTItMTIgIEFuZHJldyBQaW5za2kgIDxwaW5za2lhQHBoeXNpY3MudWMuZWR1PgoKCVBSIG9iamMvMjUzNDgKCSogb2JqYy1hY3QuYyAoZW5jb2RlX2FycmF5KTogSGFuZGxlIGFycmF5cyB0byB6ZXJvIHNpemVkIHR5cGVzLgoKMjAwNS0xMi0wNyAgUmFmYWVsIMF2aWxhIGRlIEVzcO1uZG9sYSAgPHJhZmFlbC5lc3BpbmRvbGFAZ21haWwuY29tPgoKCSogTWFrZS1sYW5nLmluIChvYmpjLmFsbC5idWlsZCwgb2JqYy5pbnN0YWxsLW5vcm1hbCk6IFJlbW92ZS4KCjIwMDUtMTItMDcgIFJhZmFlbCDBdmlsYSBkZSBFc3DtbmRvbGEgIDxyYWZhZWwuZXNwaW5kb2xhQGdtYWlsLmNvbT4KCgkqIE1ha2UtbGFuZy5pbjogUmVtb3ZlIGFsbCBkZXBlbmRlbmNpZXMgb24gcy1ndHlwZS4KCjIwMDUtMTItMDIgIFJpY2hhcmQgR3VlbnRoZXIgIDxyZ3VlbnRoZXJAc3VzZS5kZT4KCgkqIG9iamMtYWN0LmMgKG9iamNfYnVpbGRfZXhjX3B0ciwgbmV4dF9zamxqX2J1aWxkX2VudGVyX2FuZF9zZXRqbXAKCW5leHRfc2psal9idWlsZF9leGNfZXh0cmFjdCwgbmV4dF9zamxqX2J1aWxkX2NhdGNoX2xpc3QsCgluZXh0X3NqbGpfYnVpbGRfdHJ5X2NhdGNoX2ZpbmFsbHksIG9iamNfYmVnaW5fY2F0Y2hfY2xhdXNlLAoJYnVpbGRfb2JqY19tZXRob2RfY2FsbCwgb2JqY19yZXdyaXRlX2Z1bmN0aW9uX2NhbGwpOiBVc2UgYnVpbGROCglpbnN0ZWFkIG9mIGJ1aWxkLgoKMjAwNS0xMC0yMCAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0BhcHBsZS5jb20+CgoJKiBvYmpjLWFjdC5jIChzeW50aF9tb2R1bGVfcHJvbG9ndWUpOiBDbGVhciBUUkVFX05PVEhST1cKCW9uIG9iamNfbXNnU2VuZCBhbmQgbGlrZSBidWlsdGluIGZ1bmN0aW9ucy4KCjIwMDUtMTAtMTcgIEFuZHJlYXMgS3JlYmJlbCAgPGtyZWJiZWwxQGRlLmlibS5jb20+CgoJKiBvYmpjLWFjdC5jIChvYmpjX2J1aWxkX2NvbXBvbmVudF9yZWYpOiBBZGp1c3QgY2FsbCB0bwoJZmluaXNoX2NsYXNzX21lbWJlcl9hY2Nlc3NfZXhwciBkdWUgdG8gYSBjaGFuZ2VkIHByb3RvdHlwZS4KCjIwMDUtMDgtMzEgIEFuZHJldyBQaW5za2kgIDxwaW5za2lhQHBoeXNpY3MudWMuZWR1PgoKCVBSIG9iamMvMjMzMDYKCSogb2JqYy1hY3QuYyAoZ2VuZXJhdGVfc3RyaW5ncyk6IFJlbW92ZSBhbmQgbW92ZSBjb2RlIHRvCglmaW5pc2ggZGVjbCB0byAuLi4KCShhZGRfb2JqY19zdHJpbmcpOiBoZXJlIHdoZW4gY3JlYXRpbmcgYSBuZXcgc3RyaW5nIGRlY2wuCgkoZmluaXNoX29iamMpOiBEb24ndCBjYWxsIGdlbmVyYXRlX3N0cmluZ3MuCgoyMDA1LTA4LTMxICBBbmRyZXcgUGluc2tpICA8cGluc2tpYUBwaHlzaWNzLnVjLmVkdT4KCglQUiBvYmpjLzIzMzgxCgkqIG9iamMtYWN0LmMgKG5leHRfc2psal9idWlsZF90cnlfY2F0Y2hfZmluYWxseSk6IFNldAoJVFJFRV9TSURFX0VGRkVDVFMgb24gY2F0Y2hfc2VxIGFmdGVyIGJ1aWxkaW5nIGl0LgoKMjAwNS0wOC0wOSAgQW5kcmV3IFBpbnNraSAgPHBpbnNraWFAcGh5c2ljcy51Yy5lZHU+CgoJcGFydCBvZiBQUiBvYmpjLzIxOTkyCgkqIG9iamMtYWN0LmMgKGhhbmRsZV9jbGFzc19yZWYpOiBUaGUgcmVmIGRlY2wgaXMgYWx3YXlzIHJlZmVyZW5jZWQuCgoyMDA1LTA3LTIwICBHaW92YW5uaSBCYWpvICA8Z2lvdmFubmliYWpvQGxpYmVyby5pdD4KCglNYWtlIENPTlNUUlVDVE9SIHVzZSBWRUMgdG8gc3RvcmUgaW5pdGlhbGl6ZXJzLgoJKiBvYmpjLWFjdC5jIChvYmpjX2J1aWxkX2NvbnN0cnVjdG9yKTogVXNlIGJ1aWxkX2NvbnN0cnVjdG9yX2Zyb21fbGlzdAoJaW5zdGVhZCBvZiBidWlsZF9jb25zdHJ1Y3Rvci4KCjIwMDUtMDctMDggIERhbmllbCBCZXJsaW4gIDxkYmVybGluQGRiZXJsaW4ub3JnPgoKCSogb2JqYy1hY3QuYyAob2JqY19wdXNoX3Bhcm0pOiBERUNMX0FSR19UWVBFX0FTX1dSSVRURU4gaXMKCXJlbW92ZWQuCgkqIG9iamMtYWN0LmggKEtFWVdPUkRfQVJHX05BTUUpOiBVc2UgZGVjbF9ub25fY29tbW9uLgoJKEtFWVdPUkRfS0VZX05BTUUpOiBVc2UgZGVjbF9taW5pbWFsLgoJKE1FVEhPRF9TRUxfTkFNRSk6IERpdHRvLi4KCShNRVRIT0RfU0VMX0FSR1MpOiBVc2UgZGVjbF9ub25fY29tbW9uLgoJKE1FVEhPRF9BRERfQVJHUyk6IERpdHRvLgoJKE1FVEhPRF9BRERfQVJHU19FTExJUFNJU19QKTogVXNlIGRlY2xfY29tbW9uLgoJKE1FVEhPRF9ERUZJTklUSU9OKTogRGl0dG8uCgkoTUVUSE9EX0VOQ09ESU5HKTogRGl0dG8uCgkqIG9iamMtbGFuZy5jOiAob2JqY19pbml0X3RzKTogTmV3IGZ1bmN0aW9uLgoKMjAwNS0wNy0wNyAgWmllbW93aXQgTGFza2kgIDx6bGFza2lAYXBwbGUuY29tPgoKCSogb2JqYy1hY3QuYyAob2JqY19idWlsZF9zdHJ1Y3QpOiBQYXNzIGluIGFuIGFjdHVhbCBAaW50ZXJmYWNlCglpbnN0ZWFkIG9mIGl0cyBuYW1lLCBhbmQgYW5ub3RhdGUgdGhlIHN0cnVjdCBjcmVhdGVkIChhbmQgYWxsCglleGlzdGluZyB2YXJpYW50cyB0aGVyZW9mKSB3aXRoIHRoZSBAaW50ZXJmYWNlLgoJKG9iamNfY29tcGFyZV90eXBlcyk6IFRyZWF0IGZvcndhcmQtZGVjbGFyZWQgT2JqQyBjbGFzc2VzCglhcyBzdGFuZC1hbG9uZSAocm9vdCkgY2xhc3NlcyBmb3IgcHVycG9zZXMgb2YgdHlwZSBjb21wYXJpc29ucy4KCShidWlsZF9wcml2YXRlX3RlbXBsYXRlKTogTW92ZSBzb21lIGNvZGUgdG8gb2JqY19idWlsZF9zdHJ1Y3QoKS4KCjIwMDUtMDctMDcgIFppZW1vd2l0IExhc2tpICA8emxhc2tpQGFwcGxlLmNvbT4KCglQUiBvYmpjLzIyMjc0CgkqIG9iamMtYWN0LmMgKG9iamNfYnVpbGRfc3RyaW5nX29iamVjdCk6IEZvciBHTlUtc3R5bGUgY29uc3RhbnRzLAoJdXNlIHRoZSBAaW50ZXJmYWNlIHR5cGUgcmF0aGVyIHRoYW4gdGhlIGJ1aWx0LWluIHR5cGUuCgoyMDA1LTA3LTAzICBLYXp1IEhpcmF0YSAgPGthenVAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIE1ha2UtbGFuZy5pbiAoY2MxcGx1cy1jaGVja3N1bS5jKTogVXNlCglidWlsZC9nZW5jaGVja3N1bSQoYnVpbGRfZXhlZXh0KSwgbm90IGJ1aWxkL2dlbmNoZWNrc3VtJChleGVleHQpLgoKMjAwNS0wNy0wMiAgSm9zZXBoIFMuIE15ZXJzICA8am9zZXBoQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBvYmpjLWFjdC5jOiBVc2UgJXEgdG8gcXVvdGUgaW4gZGlhZ25vc3RpY3MuCgoyMDA1LTA3LTAyICBKb3NlcGggUy4gTXllcnMgIDxqb3NlcGhAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIG9iamMtYWN0LmM6IFVzZSAnKycgZmxhZyBpbnN0ZWFkIG9mICVKLiAgVXNlICdxJyBmbGFnIGZvcgoJcXVvdGluZy4KCjIwMDUtMDYtMzAgIFppZW1vd2l0IExhc2tpICA8emxhc2tpQGFwcGxlLmNvbT4KCgkqIG9iamMtYWN0LmMgKG9iamNfYnVpbGRfdm9sYXRpbGl6ZWRfdHlwZSk6IE5ldyBmdW5jdGlvbi4KCShvYmpjX3ZvbGF0aWxpemVfZGVjbCk6IENhbGwgb2JqY19idWlsZF92b2xhdGlsaXplZF90eXBlKCkKCWluc3RlYWQgb2YgYnVpbGRfcXVhbGlmaWVkX3R5cGUoKS4KCjIwMDUtMDYtMjkgIFppZW1vd2l0IExhc2tpICA8emxhc2tpQGFwcGxlLmNvbT4KCgkqIG9iamMtYWN0LmMgKG9iamNfYnVpbGRfaW50ZXJuYWxfY29uc3Rfc3RyX3R5cGUpOiBOZXcgZnVuY3Rpb24uCgkoY2hlY2tfc3RyaW5nX2NsYXNzX3RlbXBsYXRlKTogVXNlIG9iamNfZ2V0X2NsYXNzX2l2YXJzKCkgaW5zdGVhZAoJb2YgVFlQRV9GSUVMRFMoKSB0byByZXRyaWV2ZSBpdmFyIGxpc3QuCgkoQVRfTEVBU1RfQVNfTEFSR0VfQVMpOiBDaGVjayB0aGUgc2l6ZSBvZiBlYWNoIGZpZWxkJ3MgdHlwZSByYXRoZXIKCXRoYW4gdGhlIGZpZWxkIGl0c2VsZi4KCShvYmpjX2J1aWxkX3N0cmluZ19vYmplY3QpOiBTeW50aGVzaXplIGEgIl9fYnVpbHRpbl9PYmpDU3RyaW5nIgoJdHlwZSBhbmQgdXNlIGl0IHRvIGxheSBvdXQgY29tcGlsZS10aW1lIHN0cmluZyBvYmplY3RzLgoJKiBvYmpjLWFjdC5oIChPQ1RJX0lOVEVSTkFMX0NOU1RfU1RSX1RZUEUsIGludGVybmFsX2NvbnN0X3N0cl90eXBlKToKCU5ldy4KCjIwMDUtMDYtMjggIFBhdWwgQnJvb2sgIDxwYXVsQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBvYmpjLWFjdC5jIChvYmpjX2luaXRfZXhjZXB0aW9ucyk6IENhbGwKCWRlZmF1bHRfaW5pdF91bndpbmRfcmVzdW1lX2xpYmZ1bmMuCgoyMDA1LTA2LTI3ICBaaWVtb3dpdCBMYXNraSAgPHpsYXNraUBhcHBsZS5jb20+CgoJKiBvYmpjLWFjdC5jIChvYmpjX2J1aWxkX3N0cnVjdCk6IFNhdmUgdGhlIFRZUEVfT0JKQ19JTkZPCglwb3J0aW9uIG9mIFRZUEVfTEFOR19TUEVDSUZJQyBpbmZvIGZvciBhbGwgdmFyaWFudHMgb2YKCWEgY2xhc3MgYmVmb3JlIGNhbGxpbmcgZmluaXNoX3N0cnVjdCgpLCBhbmQgcmVzdG9yZQoJc2FtZSBUWVBFX09CSkNfSU5GTyBhZnRlcndhcmRzLgoKMjAwNS0wNi0yNSAgS2VsbGV5IENvb2sgIDxrY29va0BnY2MuZ251Lm9yZz4KCgkqIGFsbCBmaWxlczogVXBkYXRlIEZTRiBhZGRyZXNzIGluIGNvcHlyaWdodCBoZWFkZXJzLgoKMjAwNS0wNi0xNSAgSm9zZXBoIFMuIE15ZXJzICA8am9zZXBoQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBvYmpjLWFjdC5jIChteV9idWlsZF9zdHJpbmdfcG9pbnRlcik6IE5ldy4KCShvYmpjX2dldF9jbGFzc19yZWZlcmVuY2UsIGdldF9zdXBlcl9yZWNlaXZlcik6IENhbGwKCW15X2J1aWxkX3N0cmluZ19wb2ludGVyIGluc3RlYWQgb2YgbXlfYnVpbGRfc3RyaW5nIHdoZW4gYnVpbGRpbmcKCWZ1bmN0aW9uIGFyZ3VtZW50cy4KCjIwMDUtMDUtMjUgIE1pa2UgU3R1bXAgIDxtcnNAbXJzLmtpdGhydXAuY29tPgoKCSogb2JqYy1hY3QuYyAodm9sYXRpbGl6ZWRfaGFzaCk6IEF2b2lkIHdhcm5pbmdzIG9uIDY0LWJpdAoJbWFjaGluZXMuCgoyMDA1LTA1LTI0ICBaaWVtb3dpdCBMYXNraSAgPHpsYXNraUBhcHBsZS5jb20+CgoJKiBvYmpjLWFjdC5jIChvYmpjX2J1aWxkX3N0cnVjdCk6IE5ldyBmdW5jdGlvbi4KCShvYmpjX2Rlcml2ZWRfZnJvbV9wKTogTGlrZXdpc2UuCgkob2JqY19idWlsZF9jb21wb25lbnRfcmVmKTogTGlrZXdpc2UuCgkob2JqY19jb3B5X2JpbmZvKTogTGlrZXdpc2UuCgkob2JqY194cmVmX2Jhc2V0eXBlcyk6IExpa2V3aXNlLgoJKG9iamNfbG9va3VwX3Byb3RvY29sKTogTGlrZXdpc2UuCgkob2JqY19jb21wYXJlX3Byb3RvY29scyk6IExpa2V3aXNlLgoJKG9iamNfdm9sYXRpbGl6ZV9kZWNsKTogTGlrZXdpc2UuCgkoZW5jb2RlX2FnZ3JlZ2F0ZV9maWVsZHMpOiBMaWtld2lzZS4KCSh2b2xhdGlsaXplZF9oYXNoKTogTGlrZXdpc2UuCgkodm9sYXRpbGl6ZWRfZXEpOiBMaWtld2lzZS4KCShvYmpjX2NvbXBhcmVfdHlwZXMpOiBMaWtld2lzZS4KCShvYmpjX3R5cGVfcXVhbHNfbWF0Y2gpOiBMaWtld2lzZS4KCShERVJJVkVEX0ZST01fUCk6IE5ldyBPYmpDIG1hY3JvLCBjb3JyZXNwb25kaW5nIHRvIEMrKyBtYWNybwoJb2Ygc2FtZSBuYW1lLgoJKGdldF9jbGFzc19pdmFycyk6IEFkZCBzZWNvbmQgcGFyYW1ldGVyIGluZGljYXRpbmcgaWYgZW50aXJlCgloaWVyYXJjaHkgaXMgZGVzaXJlZC4KCShzdHJ1Y3Qgdm9sYXRpbGl6ZWRfdHlwZSk6IE5ldyB0eXBlLgoJKHZvbGF0aWxpemVkX2h0YWIpOiBOZXcgaGFzaCB0YWJsZS4KCShvYmpjX3R5cGVzX2NvbXBhdGlibGVfcCwgb2JqY19jb21wdHlwZXMpOiBSZW1vdmUgZnVuY3Rpb25zLgoJKHN5bnRoX21vZHVsZV9wcm9sb2d1ZSk6IERvIG5vdCBpbml0aWFsaXplICd1bnVzZWRfbGlzdCcuCgkob2JqY19nZXRfY2xhc3NfcmVmZXJlbmNlKTogRml4IE9iakMrKyBpbXBlZGFuY2UgbWlzbWF0Y2hlcy4KCShvYmpjX2RlY2xhcmVfYWxpYXMpOiBJbXBsZW1lbnQgYXMgYSB0eXBlZGVmLgoJKG9iamNfc3Vic3RpdHV0ZV9kZWNsLCBvYmpjX2dpbXBsaWZ5X2V4cHIpOiBSZWZvcm1hdC4KCShvYmpjX2dldF9jbGFzc19pdmFycyk6IEFkanVzdCBjYWxsIHRvIGdldF9jbGFzc19pdmFycygpLgoJKG5leHRfc2psal9idWlsZF9lbnRlcl9hbmRfc2V0am1wLCBzeW50aF9mb3J3YXJkX2RlY2xhcmF0aW9ucywKCWJ1aWxkX2l2YXJfcmVmZXJlbmNlLCBnZXRfc3VwZXJfcmVjZWl2ZXIpOiBDYWxsCglvYmpjX2J1aWxkX2NvbXBvbmVudF9yZWYoKSBpbnN0ZWFkIG9mIGJ1aWxkX2NvbXBvbmVudF9yZWYoKS4KCShvYmpjX2JlZ2luX2NhdGNoX2NsYXVzZSk6IFVzZSBERVJJVkVEX0ZST01fUCgpIGluc3RlYWQgb2YKCW9iamNfY29tcHR5cGVzKCkuCgkoYnVpbGRfcHJpdmF0ZV90ZW1wbGF0ZSk6IENhbGwgb2JqY19idWlsZF9zdHJ1Y3QoKSBpbnN0ZWFkIG9mCglzdGFydF9zdHJ1Y3QoKSBhbmQgZmluaXNoX3N0cnVjdCgpLgoJKGhhc2hfaW5pdCk6IEluaXRpYWxpemUgdm9sYXRpbGl6ZWRfaHRhYi4KCShvYmpjX2lzX3B1YmxpYyk6IEFkanVzdCBjYWxscyB0byBvYmpjX2dldF9pdmFycygpOyBhZGp1c3QKCU9iakMrKyBpbXBlZGFuY2UgbWlzbWF0Y2hlcy4KCShlbmNvZGVfYWdncmVnYXRlX3dpdGhpbik6IFN0cmVhbWxpbmUgYnkgY2FsbGluZwoJZW5jb2RlX2FnZ3JlZ2F0ZV9maWVsZHMoKS4KCSogb2JqYy1hY3QuaCAob2JqY190eXBlc19jb21wYXRpYmxlX3ApOiBSZW1vdmUgcHJvdG90eXBlLgoJKE9DVElfVU5VU0VEX0xJU1QsIHVudXNlZF9saXN0KTogUmVtb3ZlIHNsb3QuCgkqIG9iamMtbGFuZy5jIChMQU5HX0hPT0tTX1RZUEVTX0NPTVBBVElCTEVfUCk6IFJlbW92ZS4KCjIwMDUtMDUtMTggIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAYXBwbGUuY29tPgoKCSogTWFrZS1sYW5nLmluIChjYzFvYmotZHVtbXkpOiBOZXcuCgkoY2Mxb2JqLWNoZWNrc3VtLmMpOiBOZXcuCgkoY2Mxb2JqLWNoZWNrc3VtLm8pOiBOZXcuCgkoY2Mxb2JqKTogQWRkIGNjMW9iai1jaGVja3N1bS5vLgoKMjAwNS0wNS0xOCAgTWlrZSBTdHVtcCAgPG1yc0BhcHBsZS5jb20+CgoJUFIgb2JqYy8yMTY0MQoJKiBvYmpjLWFjdC5jIChzdHJ1Y3QgaW50ZXJmYWNlX3R1cGxlKTogTWFyayBpdCB1cCBmb3IgR0MuCgkoaW50ZXJmYWNlX2h0YWIpOiBJdCBpcyByZWFsbHkgYSBzdHJ1Y3QgaW50ZXJmYWNlX3R1cGxlLgoKMjAwNS0wNS0xNyAgWmllbW93aXQgTGFza2kgIDx6bGFza2lAYXBwbGUuY29tPgoJICAgIE1pa2UgU3R1bXAgIDxtcnNAYXBwbGUuY29tPgoKCVlldCBtb3JlIE9iamVjdGl2ZS1DKysuLi4KCgkqIG9iamMtYWN0LmMgKG9iamNfZmluaXNoX3RyeV9zdG10KTogQWRkIHJldHVybiB2YWx1ZS4KCShvYmpjX2J1aWxkX3N5bmNocm9uaXplZCk6IExpa2V3aXNlLgoKCSogb2JqYy1hY3QuYyAob2JqY19pc19nY2FibGVfdHlwZSk6IEFkZC4KCShvYmpjX3N1YnN0aXR1dGVfZGVjbCk6IEFkZC4KCShvYmpjX2J1aWxkX2l2YXJfYXNzaWdubWVudCk6IEFkZC4KCShvYmpjX2J1aWxkX2dsb2JhbF9hc3NpZ25tZW50KTogQWRkLgoJKG9iamNfYnVpbGRfc3Ryb25nX2Nhc3RfYXNzaWdubWVudCk6IEFkZC4KCShvYmpjX2lzX2l2YXJfcmVmZXJlbmNlX3ApOiBBZGQuCgkob2JqY19pc19nbG9iYWxfcmVmZXJlbmNlX3ApOiBBZGQuCgkob2JqY19nZW5lcmF0ZV93cml0ZV9iYXJyaWVyKTogQWRkLgoJKG9iamNfcmV3cml0ZV9mdW5jdGlvbl9jYWxsKTogQWRkLgoJKG9iamNfZ2ltcGxpZnlfZXhwcik6IEFkZCBPYmplY3RpdmUtQysrIHN1cHBvcnQuCgkqIG9iamMtYWN0LmggKEFMTE9DX09CSkNfVFlQRV9MQU5HX1NQRUNJRklDKTogTGlrZXdpc2UuCgkoU0laRU9GX09CSkNfVFlQRV9MQU5HX1NQRUNJRklDKTogQWRkLgoJKElOSVRfVFlQRV9PQkpDX0lORk8pOiBBZGQgT2JqZWN0aXZlLUMrKyBzdXBwb3J0LgoJKERVUF9UWVBFX09CSkNfSU5GTyk6IExpa2V3aXNlLgoJKHN0cnVjdCBpbXBfZW50cnkpOiBBZGQgZmllbGQgaGFzX2N4eF9jZHRvcnMuCgkoc3RydWN0IGltcF9lbnRyeSAqaW1wX2xpc3QpOiBBZGQgT0NUSV9VTVNHX0ZBU1RfREVDTCwKCU9DVElfTUVUSF9MSVNUX1RFTVBMLCBPQ1RJX01FVEhfUFJPVE9fTElTVF9URU1QTCwKCU9DVElfSVZBUl9MSVNUX1RFTVBMLCBPQ1RJX0FTU0lHTl9JVkFSX0RFQ0wsCglPQ1RJX0FTU0lHTl9JVkFSX0ZBU1RfREVDTCwgT0NUSV9BU1NJR05fR0xPQkFMX0RFQ0wsCglPQ1RJX0FTU0lHTl9TVFJPTkdDQVNUX0RFQ0wuCgkodW1zZ19mYXN0X2RlY2wpOiBBZGQuCgkob2JqY19hc3NpZ25faXZhcl9kZWNsKTogQWRkLgoJKG9iamNfYXNzaWduX2l2YXJfZmFzdF9kZWNsKTogQWRkLgoJKG9iamNfYXNzaWduX2dsb2JhbF9kZWNsKTogQWRkLgoJKG9iamNfYXNzaWduX3N0cm9uZ19jYXN0X2RlY2wpOiBBZGQuCgkob2JqY19tZXRob2RfbGlzdF9wdHIpOiBBZGQuCgkob2JqY19tZXRob2RfcHJvdG9fbGlzdF9wdHIpOiBBZGQuCgkob2JqY19pdmFyX2xpc3RfcHRyKTogQWRkLgoKCSogb2JqYy1hY3QuYyAoc2hvdWxkX2NhbGxfc3VwZXJfZGVhbGxvYyk6IEFkZC4KCShPQkpDX1ZFUlNJT04pOiBCdW1wIHRvIDYuCgkob2JqY19pc19nY2FibGVfdHlwZSk6IEFkZC4KCShvYmpjX3N1YnN0aXR1dGVfZGVjbCk6IEFkZC4KCShvYmpjX2J1aWxkX2l2YXJfYXNzaWdubWVudCk6IEFkZC4KCShvYmpjX2J1aWxkX2dsb2JhbF9hc3NpZ25tZW50KTogQWRkLgoJKG9iamNfYnVpbGRfc3Ryb25nX2Nhc3RfYXNzaWdubWVudCk6IEFkZC4KCShvYmpjX2lzX2djYWJsZV9wKTogQWRkLgoJKG9iamNfaXNfaXZhcl9yZWZlcmVuY2VfcCk6IEFkZC4KCShvYmpjX2lzX2dsb2JhbF9yZWZlcmVuY2VfcCk6IEFkZC4KCShnZW5lcmF0ZV9zaGFyZWRfc3RydWN0dXJlcyk6IEFkZCBmbGFncyBwYXJhbWV0ZXIuCgkob2JqY19nZW5lcmF0ZV9jeHhfY3Rvcl9vcl9kdG9yKTogQWRkLgoJKG9iamNfZ2VuZXJhdGVfY3h4X2NkdG9ycyk6IEFkZC4KCShhZGRfY2xhc3MpOiBBZGQgbmFtZSBwYXJhbWV0ZXIuCgkob2JqY190eXBlc19zaGFyZV9zaXplX2FuZF9hbGlnbm1lbnQpOiBBZGQuCgkoY29tcF9wcm90b193aXRoX3Byb3RvKTogQWRkIHN0cmljdCBwYXJhbWV0ZXIuCgkoQ0xTX0hBU19DWFhfU1RSVUNUT1JTKTogQWRkLgoJKFRBR19BU1NJR05JVkFSKTogQWRkLgoJKFRBR19BU1NJR05HTE9CQUwpOiBBZGQuCgkoVEFHX0FTU0lHTlNUUk9OR0NBU1QpOiBBZGQuCgkoVEFHX01TR1NFTkRfRkFTVCk6IEFkZC4KCShUQUdfQVNTSUdOSVZBUl9GQVNUKTogQWRkLgoJKFRBR19DWFhfQ09OU1RSVUNUKTogQWRkLgoJKFRBR19DWFhfREVTVFJVQ1QpOiBBZGQuCgkoT0JKQ19MT09LVVBfQ0xBU1MpOiBBZGQuCgkoT0JKQ19MT09LVVBfTk9fU1VQRVIpOiBBZGQuCgkob2JqY19maW5pc2hfZmlsZSk6IEFkZCBwY2ggc3VwcG9ydC4KCShvYmpjX2ZpbmlzaF9pbXBsZW1lbnRhdGlvbik6IEFkZCBPYmplY3RpdmUtQysrIHN1cHBvcnQuCgkoc3ludGhfbW9kdWxlX3Byb2xvZ3VlKTogTGlrZXdpc2UuCgkoc3ludGhfbW9kdWxlX3Byb2xvZ3VlKTogQWRkIGZhc3QgZGlzcGF0Y2hpbmcuCgkob2JqY19nZXRfY2xhc3NfcmVmZXJlbmNlKTogQWRkIE9iamVjdGl2ZS1DKysgc3VwcG9ydC4KCShvYmpjX2dlbmVyYXRlX3dyaXRlX2JhcnJpZXIpOiBMaWtld2lzZS4KCShuZXh0X3NqbGpfYnVpbGRfZW50ZXJfYW5kX3NldGptcCk6IExpa2V3aXNlLgoJKG9iamNfYmVnaW5fdHJ5X3N0bXQpOiBMaWtld2lzZS4KCShidWlsZF9uZXh0X29iamNfZXhjZXB0aW9uX3N0dWZmKTogQWRkIGZhc3QgaXZhciBzdXBwb3J0LgoJKGJ1aWxkX3ByaXZhdGVfdGVtcGxhdGUpOiBNYXJrIHRoZSByZWNvcmQgYXMgdXNlZCBzbyBkZWJ1ZwoJaW5mb3JtYXRpb24gaXMgZ2VuZXJhdGVkLgoJKGJ1aWxkX3Byb3RvY29sX3RlbXBsYXRlKTogQWRkIE9iamVjdGl2ZS1DKysgc3VwcG9ydC4KCShvYmpjX21ldGhvZF9wYXJtX3R5cGUpIExpa2V3aXNlLgoJKG9iamNfZ2VuZXJhdGVfY3h4X2N0b3Jfb3JfZHRvcik6IExpa2V3aXNlLgoJKG9iamNfZ2VuZXJhdGVfY3h4X2NkdG9ycyk6IExpa2V3aXNlLgoJKGJ1aWxkX3Byb3RvY29sX2luaXRpYWxpemVyKTogTGlrZXdpc2UuCgkoYnVpbGRfY2F0ZWdvcnlfdGVtcGxhdGUpOiBMaWtld2lzZS4KCShidWlsZF9jbGFzc190ZW1wbGF0ZSk6IExpa2V3aXNlLgoJKGJ1aWxkX21ldGhvZF9saXN0X3RlbXBsYXRlKTogTGlrZXdpc2UuCgkoYnVpbGRfY2F0ZWdvcnlfaW5pdGlhbGl6ZXIpOiBMaWtld2lzZS4KCShidWlsZF9zaGFyZWRfc3RydWN0dXJlX2luaXRpYWxpemVyKTogTGlrZXdpc2UuCgkob2JqY19maW5pc2hfbWVzc2FnZV9leHByKTogTGlrZXdpc2UuCgkoYnVpbGRfb2JqY19tZXRob2RfY2FsbCk6IEFkZCBmYXN0IGRpc3BhdGNoIHN1cHBvcnQuCgkobG9va3VwX21ldGhvZF9zdGF0aWMpOiBBZGQgc3VwcG9ydCB0byBlbmQgc2VhcmNoIGF0IHN1cGVyY2xhc3Nlcy4KCShhZGRfbWV0aG9kX3RvX2hhc2hfbGlzdCk6IEFkZCBzdHJpY3QgcGFyYW1ldGVyIHRvCgljb21wX3Byb3RvX3dpdGhfcHJvdG8uCgkob2JqY19hZGRfbWV0aG9kKTogTGlrZXdpc2UuCgkob2JqY19hZGRfbWV0aG9kKTogQWxzbyBzZXQgdGhlIGludGVyZmFjZV92YWx1ZS4KCShhZGRfaW5zdGFuY2VfdmFyaWFibGUpOiBBZGQgT2JqZWN0aXZlLUMrKyBzdXBwb3J0LgoJKG9iamNfaXNfcHVibGljKTogTGlrZXdpc2UuCgkoc3RhcnRfY2xhc3MpOiBMaWtld2lzZS4KCShjb250aW51ZV9jbGFzcyk6IExpa2V3aXNlLgoJKGVuY29kZV9hZ2dyZWdhdGVfd2l0aGluKTogTGlrZXdpc2UuCgkoc3RhcnRfbWV0aG9kX2RlZik6IExpa2V3aXNlLgoJKG9iamNfc3RhcnRfZnVuY3Rpb24pOiBDbGVhciBjdXJyZW50X2Z1bmN0aW9uX3JldHVybnNfdmFsdWUKCWFuZCBjdXJyZW50X2Z1bmN0aW9uX3JldHVybnNfbnVsbC4KCShyZWFsbHlfc3RhcnRfbWV0aG9kKTogQWRkIE9iamVjdGl2ZS1DKysgc3VwcG9ydC4KCShvYmpjX2ZpbmlzaF9tZXRob2RfZGVmaW5pdGlvbik6IEFkZCB3YXJuaW5nIGZvciBtaXNzaW5nCglbc3VwZXIgZGVhbGxvY10uCgkoZmluaXNoX29iamMpOiBBZGQgT2JqZWN0aXZlLUMrKyBzdXBwb3J0LgoJKGdlbmVyYXRlX29iamNfaW1hZ2VfaW5mbyk6IExpa2V3aXNlLgoJKG9iamNfbG9va3VwX2l2YXIpOiBMaWtld2lzZS4KCSogb2JqYy1hY3QuaCAoVFlQRV9IQVNfT0JKQ19JTkZPKTogTGlrZXdpc2UuCgkoSU5JVF9UWVBFX09CSkNfSU5GTyk6IExpa2V3aXNlLgoJKERVUF9UWVBFX09CSkNfSU5GTyk6IExpa2V3aXNlLgoKMjAwNS0wNC0yMyAgREogRGVsb3JpZSAgPGRqQHJlZGhhdC5jb20+CgoJKiBvYmpjLWFjdC5jOiBBZGp1c3Qgd2FybmluZygpIGNhbGxlcnMuCgoyMDA1LTA0LTIxICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIG9iamMtYWN0LmggKE1FVEhPRF9BRERfQVJHU19FTExJUFNJU19QKTogTmV3IG1hY3JvIGZvciBhY2Nlc3NpbmcKCXRoaXMgZmllbGQgb2YgYW4gb2JqYyBtZXRob2QgZGVjbC4KCSogb2JqYy1hY3QuYyAoYnVpbGRfbWV0aG9kX2RlY2wpOiBUYWtlIGFuIGFkZGl0aW9uYWwgImVsbGlwc2lzIgoJYXJndW1lbnQsIGFuZCBzZXQgTUVUSE9EX0FERF9BUkdTX0VMTElQU0lTX1AgYXMgYXBwcm9wcmlhdGUuCgkob2JqY19idWlsZF9tZXRob2Rfc2lnbmF0dXJlKTogQWNjZXB0IGFkZGl0aW9uYWwgImVsbGlwc2lzIgoJYXJndW1lbnQgYW5kIHBhc3MgaXQgdG8gYnVpbGRfbWV0aG9kX2RlY2wuCgkoZ2V0X2FyZ190eXBlX2xpc3QsIHN0YXJ0X21ldGhvZF9kZWYsIGdlbl9tZXRob2RfZGVjbCk6IFVzZQoJdGhlIG5ldyBNRVRIT0RfQUREX0FSR1NfRUxMSVBTSVNfUCBpbnN0ZWFkIG9mIGV4YW1pbmluZyB0aGUKCVRSRUVfT1ZFUkZMT1cgZmllbGQgb2YgYSBUUkVFX0xJU1Qgbm9kZS4KCjIwMDUtMDQtMjAgIEpvc2VwaCBTLiBNeWVycyAgPGpvc2VwaEBjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMvMTI5MTMKCSogb2JqYy1hY3QuYyAob2JqY19zdGFydF9mdW5jdGlvbik6IENyZWF0ZSBzdGFjayBsZXZlbCBmb3IgY29udGV4dAoJb2YgaWRlbnRpZmllcnMgd2l0aCB2YXJpYWJseSBtb2RpZmllZCB0eXBlLgoKMjAwNS0wMy0zMCAgSm9zZXBoIFMuIE15ZXJzICA8am9zZXBoQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYy83NzIKCVBSIGMvMTc5MTMKCSogb2JqYy1hY3QuYyAob2JqY19zdGFydF9mdW5jdGlvbik6IFB1c2ggY29udGV4dCBvbgoJbGFiZWxfY29udGV4dF9zdGFjay4KCjIwMDUtMDMtMjMgIEpvc2VwaCBTLiBNeWVycyAgPGpvc2VwaEBjb2Rlc291cmNlcnkuY29tPgoKCSogb2JqYy1hY3QuYyAobmV4dF9zamxqX2J1aWxkX2VudGVyX2FuZF9zZXRqbXAsCgluZXh0X3NqbGpfYnVpbGRfY2F0Y2hfbGlzdCwgbmV4dF9zamxqX2J1aWxkX3RyeV9jYXRjaF9maW5hbGx5KToKCUNhbGwgY19jb21tb25fdHJ1dGh2YWx1ZV9jb252ZXJzaW9uLgoKMjAwNS0wMi0yNSAgSm9zZXBoIFMuIE15ZXJzICA8am9zZXBoQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBNYWtlLWxhbmcuaW4gKG9iamMvb2JqYy1wYXJzZS5vLXdhcm4sIG9iamMvb2JqYy1wYXJzZS5vLAoJb2JqYy9vYmpjLXBhcnNlLmMsIG9iamMvb2JqYy1wYXJzZS55KTogUmVtb3ZlCgkoT0JKQ19PQkpTLCBvYmpjLnNyY2V4dHJhLCBvYmpjLnRhZ3MsIG9iamMubW9zdGx5Y2xlYW4sCglvYmpjLmRpc3RjbGVhbiwgb2JqYy5tYWludGFpbmVyLWNsZWFuKTogVXBkYXRlIGZvciBuZXcgcGFyc2VyLgoJKiBjb25maWctbGFuZy5pbiAoZ3RmaWxlcyk6IFVwZGF0ZSBmb3IgbmV3IHBhcnNlci4KCjIwMDUtMDEtMjkgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBsYW5nLXNwZWNzLmgsIG9iamMtYWN0LmMsIG9iamMtYWN0LmgsIG9iamMtbGFuZy5jOiBVcGRhdGUKCWNvcHlyaWdodC4KCjIwMDUtMDEtMjcgIE1hdHQgQXVzdGVybiAgPGF1c3Rlcm5AYXBwbGUuY29tPgoKCSogb2JqYy1hY3QuYyAob2JqY19maW5pc2hfZmlsZSk6IEluIE9iakMrKyBtb2RlLCBzZXQgYXRfZW9mIGJlZm9yZQoJY2FsbGluZyBpbnN0YW50aWF0ZV9wZW5kaW5nX3RlbXBsYXRlcy4KCjIwMDUtMDEtMjYgIEFsZXhhbmRlciBNYWxtYmVyZyAgPGFsZXhhbmRlckBtYWxtYmVyZy5vcmc+CgoJUFIgb2JqYy8xODg2MgoJKiBvYmpjLWFjdC5jIChidWlsZF9zZWxlY3Rvcl90cmFuc2xhdGlvbl90YWJsZSk6IFVzZQoJaW5wdXRfbG9jYXRpb24gaW4gdGhlIGRpYWdub3N0aWMgZm9yIHRoZSBHTlUgcnVudGltZSBvciBpZgoJVFJFRV9QVVJQT1NFIChjaGFpbikgaXMgTlVMTC4KCjIwMDUtMDEtMjUgIEFsZXhhbmRlciBNYWxtYmVyZyAgPGFsZXhhbmRlckBtYWxtYmVyZy5vcmc+CgoJUFIgb2JqYy8xODQwOAoJKiBvYmpjLWFjdC5jIChvYmpjX3R5cGVzX2NvbXBhdGlibGVfcCk6IE5ldyBmdW5jdGlvbi4KCSogb2JqYy1hY3QuaCAob2JqY190eXBlc19jb21wYXRpYmxlX3ApOiBEZWNsYXJlLgoJKiBvYmpjLWxhbmcuYyAoTEFOR19IT09LU19UWVBFU19DT01QQVRJQkxFX1ApOiBEZWZpbmUuCgoyMDA1LTAxLTE2ICBaaWVtb3dpdCBMYXNraSAgPHpsYXNraUBhcHBsZS5jb20+CgoJKiBvYmpjLWFjdC5jIChvYmpjX3B1c2hfcGFybSk6IENhbGwgY190eXBlX3Byb21vdGVzX3RvKCkKCXZpYSBhIGxhbmctaG9vay4KCjIwMDUtMDEtMTUgIFppZW1vd2l0IExhc2tpICA8emxhc2tpQGFwcGxlLmNvbT4KCglQUiBvYmpjLzE5MzIxCgkqIG9iamMtYWN0LmMgKGdldF9hcmdfdHlwZV9saXN0KTogRGVjYXkgZnVuY3Rpb24gYXJndW1lbnRzIGludG8KCXBvaW50ZXJzLgoJKG9iamNfcHVzaF9wYXJtKTogTGlrZXdpc2U7IGJyaW5nIFBBUk1fREVDTCBjb25zdHJ1Y3Rpb24gY2xvc2VyCglpbiBsaW5lIHdpdGggd2hhdCB0aGUgQyBmcm9udC1lbmQgZG9lcy4KCShvYmpjX2dldF9wYXJtX2luZm8pOiBDYWxsIHB1c2hkZWNsKCkgYW5kIGZpbmlzaF9kZWNsKCkgb24KCWVhY2ggUEFSTV9ERUNMLCBsaWtlIHRoZSBDIGZyb250LWVuZCBkb2VzLgoJKHN0YXJ0X21ldGhvZF9kZWYpOiBSZW1vdmUgcmVkdW5kYW50IEFSUkFZX1RZUEUgZGVjYXkuCgkob2JqY19zdGFydF9mdW5jdGlvbik6IEJyaW5nIGNsb3NlciBpbiBsaW5lIHdpdGggd2hhdCB0aGUKCUMgZnJvbnQtZW5kIGRvZXMgZm9yIGZ1bmN0aW9ucy4KCjIwMDUtMDEtMTQgIE1pa2UgU3R1bXAgIDxtcnNAYXBwbGUuY29tPgoKCSogbGFuZy1zcGVjcy5oICgiQG9iamVjdGl2ZS1jIik6IFVzZSBjYzFvYmogd2hlbiAtRSBpcyB1c2VkIHNvCgl0aGF0IC1mb2JqYy1leGNlcHRpb25zIGlzIGFjY2VwdGVkLgoKMjAwNC0xMi0zMCAgWmllbW93aXQgTGFza2kgIDx6bGFza2lAYXBwbGUuY29tPgoKCVBSIG9iamMvMTg5NzEKCSogb2JqYy1hY3QuYyAoZ2V0X2FyZ190eXBlX2xpc3QsIHN0YXJ0X21ldGhvZF9kZWYpOiBEZWNheQoJYXJyYXkgYXJndW1lbnRzIGludG8gcG9pbnRlcnMuCgkoZ2VuX3R5cGVfbmFtZV8wKTogTGVhcm4gdG8gcHJldHR5LXByaW50IGFycmF5IHR5cGVzLgoKMjAwNC0xMi0xNSAgWmllbW93aXQgTGFza2kgIDx6bGFza2lAYXBwbGUuY29tPgoKCSogb2JqYy1hY3QuYyAoYnVpbGRfcHJpdmF0ZV90ZW1wbGF0ZSk6IENoYW5nZSB0byByZXR1cm4gJ3ZvaWQnOyBkbwoJbm90IHNldCBpdmFyX2NvbnRleHQsIHVwcml2YXRlX3JlY29yZCBvciBvYmpjX2luc3RhbmNlX3R5cGUuCgkob2JqY19jb21wdHlwZXMsIGdlbl90eXBlX25hbWVfMCk6IEZvciB0eXBlcyAnaWQnIGFuZCAnQ2xhc3MnLAoJcmV0cmlldmUgcHJvdG9jb2wgbGlzdCBmcm9tIHRoZSBwb2ludGVlIHJhdGhlciB0aGFuIHRoZSBwb2ludGVyIGl0c2VsZjsKCWNoZWNrIFRZUEVfSEFTX09CSkNfSU5GTyguLi4pIHByZWNvbmRpdGlvbiBiZWZvcmUgYWNjZXNzaW5nCglUWVBFX09CSkNfUFJPVE9DT0xfTElTVC4KCShvYmpjX2dldF9wcm90b2NvbF9xdWFsaWZpZWRfdHlwZSk6IEZvciB0eXBlcyAnaWQnIGFuZCAnQ2xhc3MnLAoJY29uc3RydWN0IGEgdmFyaWFudCBvZiB0aGUgcG9pbnRlZSBhcyB3ZWxsIGFzIHRoZSBwb2ludGVyLCBhbmQKCXN0b3JlIHByb3RvY29sIGluZm9ybWF0aW9uIGluIHRoZSBmb3JtZXIuICBXaGVuIGNyZWF0aW5nIHZhcmlhbnRzCglvZiBSRUNPUkRfVFlQRXMsIGNsb25lIHRoZWlyIFRZUEVfTEFOR19TUEVDSUZJQyBmaWVsZHMgYW5kIHByb3BhZ2F0ZQoJVFlQRV9PQkpDX0lOVEVSRkFDRSBpbmZvcm1hdGlvbi4KCShvYmpjX2RlY2xhcmVfY2xhc3MpOiBJZiBhIFRZUEVfREVDTCBpcyBsb29rZWQgdXAsIHJldHJpZXZlIHRoZQoJdW5kZXJseWluZyBSRUNPUkRfVFlQRSB0byBjaGVjayBmb3IgcHJlc2VuY2Ugb2YgVFlQRV9PQkpDX0lOVEVSRkFDRTsKCWZvciBuZXdseS1jcmVhdGVkIFJFQ09SRF9UWVBFcywgY3JlYXRlIGEgdGVudGF0aXZlIFRZUEVfT0JKQ19JTlRFUkZBQ0UKCWhvbGRpbmcgYW4gSURFTlRJRklFUl9OT0RFLgoJKG9iamNfZmluaXNoX21lc3NhZ2VfZXhwcik6IENoZWNrIFRZUEVfSEFTX09CSkNfSU5GTyguLi4pIGJlZm9yZQoJYWNjZXNzaW5nIFRZUEVfT0JKQ19QUk9UT0NPTF9MSVNUOyBVc2UgVFlQRV9PQkpDX0lOVEVSRkFDRSBpbnN0ZWFkCglvZiBjYWxsaW5nIGxvb2t1cF9pbnRlcmZhY2UoKTsgYWxsb3cgZm9yIFRZUEVfT0JKQ19JTlRFUkZBQ0UgaG9sZGluZwoJYW4gSURFTlRJRklFUl9OT0RFIChtZWFuaW5nIGEgQGNsYXNzIGZvcndhcmQtZGVjbGFyYXRpb24gb25seSkuCgkob2JqY19pc19wdWJsaWMpOiBDaGVjayBUWVBFX09CSkNfSU5URVJGQUNFIGluc3RlYWQgb2YgY2FsbGluZwoJbG9va3VwX2ludGVyZmFjZSgpLgoJKGNvbnRpbnVlX2NsYXNzKTogRm9yIEBpbXBsZW1lbnRhdGlvbnMsIHNldCBpdmFyX2NvbnRleHQsCgl1cHJpdmF0ZV9yZWNvcmQgYW5kIG9iamNfaW5zdGFuY2VfdHlwZSwgZm9yIEBpbnRlcmZhY2VzLCBjYWxsCglidWlsZF9wcml2YXRlX3RlbXBsYXRlKCkuCgkoZW5jb2RlX3BvaW50ZXIpOiBDaGVjayBUWVBFX0hBU19PQkpDX0lORk8oLi4uKSBiZWZvcmUgYWNjZXNzaW5nCglUWVBFX09CSkNfSU5URVJGQUNFLgoJKG9iamNfdHlwZXNfYXJlX2VxdWl2YWxlbnQpOiBDaGVjayBUWVBFX0hBU19PQkpDX0lORk8oLi4uKSBiZWZvcmUKCWFjY2Vzc2luZyBUWVBFX09CSkNfUFJPVE9DT0xfTElTVC4KCSogb2JqYy1hY3QuaCAoT0JKQ19JTkZPX1NMT1RfRUxUUywgVFlQRV9PQkpDX0lORk8sIElOSVRfVFlQRV9PQkpDX0lORk8sCglEVVBfVFlQRV9PQkpDX0lORk8sIEFMTE9DX09CSkNfVFlQRV9MQU5HX1NQRUNJRklDLAoJU0laRU9GX09CSkNfVFlQRV9MQU5HX1NQRUNJRklDKTogTmV3IG1hY3Jvcy4KCShUWVBFX09CSkNfSU5URVJGQUNFKTogUmVwbGFjZXMgVFJFRV9TVEFUSUNfSU5TVEFOQ0UgYW5kIG5vdyBwb2ludHMKCXRvIGFuIGFjdHVhbCBAaW50ZXJmYWNlOyBzdG9yZWQgaW4gVFlQRV9MQU5HX1NQRUNJRklDKC4uLikuCgkoVFlQRV9PQkpDX1BST1RPQ09MX0xJU1QpOiBSZXBsYWNlcyBUWVBFX1BST1RPQ09MX0xJU1Q7IHN0b3JlZCBpbgoJVFlQRV9MQU5HX1NQRUNJRklDKC4uLikuCgkoVFJFRV9TVEFUSUNfSU5TVEFOQ0UsIFRZUEVfUFJPVE9DT0xfTElTVCk6IERlbGV0ZS4KCShJU19JRCwgSVNfQ0xBU1MsIElTX1BST1RPQ09MX1FVQUxJRklFRF9VTlRZUEVELCBJU19TVVBFUiwKCVRZUEVEX09CSkVDVCk6IENoZWNrIGZvciBQT0lOVEVSX1RZUEUgcmF0aGVyIHRoYW4gUE9JTlRFUl9UWVBFX1A7CglhZGp1c3QgZm9yIHVzZSBvZiBUWVBFX09CSkNfSU5URVJGQUNFIGFuZCBUWVBFX09CSkNfUFJPVE9DT0xfTElTVAoJaW5zdGVhZCBvZiBUUkVFX1NUQVRJQ19JTlNUQU5DRSBhbmQgVFlQRV9QUk9UT0NPTF9MSVNULgoKMjAwNC0xMS0yOSAgSm9zZXBoIE15ZXJzICA8am9zZXBoQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYy83NTQ0CgkqIE1ha2UtbGFuZy5pbiAob2JqYy9vYmpjLWFjdC5vKTogVXBkYXRlIGRlcGVuZGVuY2llcy4KCSogb2JqYy1hY3QuYyAob2JqY19maW5pc2hfZmlsZSk6IENhbGwKCW1heWJlX2FwcGx5X3BlbmRpbmdfcHJhZ21hX3dlYWtzIGlmIG5vdCBPQkpDUExVUy4KCjIwMDQtMTEtMDkgIEFuZHJldyBQaW5za2kgIDxwaW5za2lhQHBoeXNpY3MudWMuZWR1PgoKCVBSIG9iamMvMTg0MDYKCSogb2JqLWFjdC5jIChlbmNvZGVfdHlwZSk6IDk2Yml0cyBkb3VibGVzIGFyZSBlbmNvZGVkIHRoZQoJc2FtZSB3YXkgYXMgNjRiaXQgYW5kIDEyOGJpdCBkb3VibGVzIGFyZS4KCjIwMDQtMTEtMDkgIEpvc2VwaCBTLiBNeWVycyAgPGpvc2VwaEBjb2Rlc291cmNlcnkuY29tPgoKCSogb2JqYy1hY3QuYzogVXNlICVxLCAlPCBhbmQgJT4gZm9yIHF1b3RpbmcgaW4gZGlhZ25vc3RpY3MuCgoyMDA0LTExLTA4ICBBbmRyZXcgUGluc2tpICA8cGluc2tpYUBwaHlzaWNzLnVjLmVkdT4KCglQUiBvYmpjLzE2NTQ2CgkqIG9iamMtYWN0LmMgKGdlbmVyYXRlX21ldGhvZF9kZXNjcmlwdG9ycyk6IFJlbW92ZSBzZXR0aW5nCgl0aGUgbmV3IGRlY2xzJyB0eXBlIHRvIHZhcmlhYmxlX2xlbmd0aF90eXBlLgoJKGdlbmVyYXRlX2l2YXJfbGlzdHMpOiBMaWtld2lzZS4KCShnZW5lcmF0ZV9kaXNwYXRjaF90YWJsZXMpOiBMaWtld2lzZS4KCjIwMDQtMTAtMzAgIFppZW1vd2l0IExhc2tpICA8emxhc2tpQGFwcGxlLmNvbT4KCgkqIG9iamMtYWN0LmMgKG9iamNfbG9va3VwX2l2YXIpOiBUaGUgbmV3IE9USEVSIHBhcmFtZXRlcgoJY29udGFpbnMgdGhlIHJlc3VsdCBvZiB0aGUgSUQgbG9va3VwIGJ5IHRoZSBDIG9yIEMrKwoJZnJvbnQtZW5kOyBpbiBjbGFzcyBtZXRob2RzLCB1c2UgT1RIRVIgaWYgaXQgZXhpc3RzOwoJaW4gaW5zdGFuY2UgbWV0aG9kcywgdXNlIE9USEVSIG9ubHkgaWYgaXQgaXMgbG9jYWxseQoJZGVjbGFyZWQuCgoyMDA0LTEwLTI2ICBaaWVtb3dpdCBMYXNraSAgPHpsYXNraUBhcHBsZS5jb20+CgoJKiBvYmpjLWFjdC5jIChmaW5pc2hfY2xhc3MpOiBEbyBub3Qgc3ludGhlc2l6ZSBib2d1cwoJJ2V4dGVybiBvYmpjX29iamVjdCAqX0ZvbzsnIGRlY2xhcmF0aW9ucyBmb3IgQGludGVyZmFjZSBGb28uCgoyMDA0LTEwLTI1ICBaaWVtb3dpdCBMYXNraSAgPHpsYXNraUBhcHBsZS5jb20+CgkgICAgRGF2aWQgQXllcnMgIDxkLmF5ZXJzQGlub2RlLmF0PgoKCSogb2JqYy1hY3QuYyAob2JqY19jb21wdHlwZXMpOiBVc2UgSVNfUFJPVE9DT0xfUVVBTElGSUVEX1VOVFlQRUQKCWluc3RlYWQgb2YgSVNfUFJPVE9DT0xfUVVBTElGSUVEX0lEOyBhZGQgY29tcGFyaXNvbnMgZm9yOgoJJ0NsYXNzIDxQcm90b2NvbD4gIT0gaWQgPFByb3RvY29sPic7ICdDbGFzcyA8UHJvdG9jb2w+ICE9IDxjbGFzcz4gKic7CgknQ2xhc3MgPFByb3RvY29sPiA9PSBpZCcgYW5kICdDbGFzcyA8UHJvdG9jb2w+ID09IENsYXNzJy4KCShvYmpjX2lzX2lkKTogQWRkIHRlc3QgZm9yICdzdXBlcicuCgkob2JqY19maW5pc2hfbWVzc2FnZV9leHByKTogQWxsb3cgZm9yIG1lc3NhZ2luZyBvZiAnQ2xhc3MgPFByb3RvPicKCXJlY2VpdmVyczsgaWYgY2xhc3MgbWV0aG9kcyBhcmUgbm90IGZvdW5kIGluIHByb3RvY29sIGxpc3RzLCBzZWFyY2gKCWZvciBpbnN0YW5jZSBtZXRob2RzIHRoZXJlaW4gYW5kIHdhcm4gaWYgb25lIGlzIGZvdW5kLiAgTG9vayBpbgoJZ2xvYmFsIGhhc2ggdGFibGVzIGZvciBzdWl0YWJsZSBtZXRob2QgYXMgYSBsYXN0IHJlc29ydCB3aGVuIG1lc3NhZ2luZwoJJ2lkIDxQcm90bz4nLCAnQ2xhc3MgPFByb3RvPicgYW5kIGludmFsaWQgcmVjZWl2ZXIgdHlwZXMuCgkob2JqY19hZGRfbWV0aG9kKTogSW5zZXJ0IGluc3RhbmNlIG1ldGhvZHMgbGlzdGVkIGluIHByb3RvY29scyBpbnRvCgl0aGUgZ2xvYmFsIGNsYXNzIG1ldGhvZCBoYXNoIHRhYmxlLgoJKiBvYmpjLWFjdC5oIChJU19QUk9UT0NPTF9RVUFMSUZJRURfSUQpOiBSZW5hbWUgdG8KCUlTX1BST1RPQ09MX1FVQUxJRklFRF9VTlRZUEVEIGFuZCBhbGxvdyBmb3IgJ0NsYXNzIDxQcm90bz4nIGluCglhZGRpdGlvbiB0byAnaWQgPFByb3RvPicuCgoyMDA0LTEwLTIxICBBbmRyZXcgUGluc2tpICA8cGluc2tpYUBwaHlzaWNzLnVjLmVkdT4KCglQUiBvYmpjLzE3OTIzCgkqIG9iamMtYWN0LmMgKG9iamNfYnVpbGRfc3RyaW5nX29iamVjdCk6IENyZWF0ZSBhIENPTlNUX0RFQ0wKCWZvciB0aGUgTmVYVCBydW50aW1lIGNhc2UuCgoyMDA0LTEwLTAyICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogb2JqYy1hY3QuYzogRml4IGNvbW1lbnQgdHlwb3MuCgoyMDA0LTA5LTI0ICBaaWVtb3dpdCBMYXNraSAgPHpsYXNraUBhcHBsZS5jb20+CgoJKiBvYmpjLWFjdC5jIChpbml0X29iamNfc3ltdGFiLCBpbml0X21vZHVsZV9kZXNjcmlwdG9yLAoJYnVpbGRfc2hhcmVkX3N0cnVjdHVyZV9pbml0aWFsaXplcik6IFdoZW4gaW5pdGlhbGl6aW5nICdsb25nJwoJZmllbGRzLCBlbnN1cmUgdGhhdCB0aGUgaW5pdGlhbGl6ZXIgdmFsdWUgaXMgYWxzbyAnbG9uZycuCgoyMDA0LTA5LTI0ICBaYWNrIFdlaW5iZXJnICA8emFja0Bjb2Rlc291cmNlcnkuY29tPgoKCSogb2JqYy1hY3QuYzogQ2hhbmdlIGFubm90YXRlX3dpdGhfbG9jdXMgdG8gU0VUX0VYUFJfTE9DQVRJT04KCXRocm91Z2hvdXQuCgkob2JqY19pbml0KTogT25seSBzZXQgaW5wdXRfbGluZSB0byAwICNpZm5kZWYgVVNFX01BUFBFRF9MT0NBVElPTi4KCShidWlsZF9zZWxlY3Rvcl90cmFuc2xhdGlvbl90YWJsZSk6IFVzZSAlSiBpbiBkaWFnbm9zdGljCglpbnN0ZWFkIG9mIGRpZGRsaW5nIGlucHV0X2xpbmUuICBGaXggc3BlbGxpbmcuCgoyMDA0LTA5LTIxICBaaWVtb3dpdCBMYXNraSAgPHpsYXNraUBhcHBsZS5jb20+CgoJKiBvYmpjLWFjdC5jIChvYmpjX2ZvbGRfb2JqY190eXBlX3JlZik6IE5ldyBmdW5jdGlvbi4KCSogb2JqYy1hY3QuaCAob2JqY19mb2xkX29iamNfdHlwZV9yZWYpOiBOZXcgcHJvdG90eXBlLgoKMjAwNC0wOS0wOSAgSm9zZXBoIFMuIE15ZXJzICA8anNtQHBvbHlvbWluby5vcmcudWs+CgoJKiBvYmpjLWFjdC5jIChvYmpjX3N0YXJ0X2Z1bmN0aW9uLCByZWFsbHlfc3RhcnRfbWV0aG9kLAoJb2JqY19nZXRfcGFybV9pbmZvLCBzdGFydF9tZXRob2RfZGVmKTogVXBkYXRlIHRvIG5ldyBhcmdfaW5mbwoJc3RydWN0dXJlcy4KCjIwMDQtMDktMDcgIFppZW1vd2l0IExhc2tpICA8emxhc2tpQGFwcGxlLmNvbT4KCgkqIE1ha2UtbGFuZy5pbiAob2JqYy9vYmpjLXBhcnNlLm8pOiBEZXBlbmQgb24gJChDX0NPTU1PTl9IKSBpbnN0ZWFkIG9mCglvYmpjL29iamMtYWN0LmguCgkob2JqYy9vYmpjLWFjdC5vKTogRGVwZW5kIG9uICQoSEFTSFRBQl9IKS4KCSogb2JqYy1hY3QuYzogSW5jbHVkZSBoYXNodGFiLmg7IGluIE9iakMrKyBtb2RlLCBpbmNsdWRlIGNwLXRyZWUuaCBhbmQKCW9iamNwLWRlY2wuaCBpbnN0ZWFkIG9mIGMtdHJlZS5oLgoJKGJ1aWxkX21vZHVsZV9kZXNjcmlwdG9yLCBnZXRfY2xhc3NfaXZhcnMsIHN5bnRoX2lkX3dpdGhfY2xhc3Nfc3VmZml4LAoJZXJyb3Jfd2l0aF9pdmFyLCBnZW5fbWV0aG9kX2RlY2wsIGdlbl9kZWNsYXJhdGlvbiwgc2V0dXBfc3RyaW5nX2RlY2wsCglidWlsZF9wcm90b2NvbF90ZW1wbGF0ZSk6IEFkanVzdCBwcm90b3R5cGVzLgoJKGJ1aWxkX21vZHVsZV9pbml0aWFsaXplcl9yb3V0aW5lLCBzdGFydF9jbGFzcywgY29udGludWVfY2xhc3MsCglmaW5pc2hfY2xhc3MsIHN0YXJ0X21ldGhvZF9kZWYsIG9iamNfc3RhcnRfZnVuY3Rpb24sIHN0YXJ0X3Byb3RvY29sLAoJYnVpbGRfbWV0aG9kX2RlY2wsIG9iamNfYWRkX21ldGhvZCwgYWRkX2luc3RhbmNlX3ZhcmlhYmxlLAoJYnVpbGRfaXZhcl9yZWZlcmVuY2UsIGlzX2l2YXIsIGlzX3ByaXZhdGUsIGdldF9zdXBlcl9yZWNlaXZlciwKCWJ1aWxkX3NlbGVjdG9yX3RhYmxlX2RlY2wsIG9iamNfcHVzaF9wYXJtLCBvYmpjX2dldF9wYXJtX2luZm8sCglnZW5fdHlwZV9uYW1lLCBnZW5fdHlwZV9uYW1lXzAsIHN0YXJ0X3Zhcl9kZWNsLCBmaW5pc2hfdmFyX2RlY2wsCgljcmVhdGVfZmllbGRfZGVjbCk6IE5ldyBwcm90b3R5cGVzLgoJKG9iamNfZXhwYW5kX2Z1bmN0aW9uX2VuZCwgY29tcF9tZXRob2Rfd2l0aF9wcm90bywgb2JqY19leHByX2xhc3QsCglnZW5fZGVjbGFyYXRpb25fMSwgZ2VuX2RlY2xhcmF0b3IsIGlzX2NvbXBsZXhfZGVjbCwgYWRvcm5fZGVjbCwKCWRlZmluZV9kZWNsLCBjcmVhdGVfYnVpbHRpbl9kZWNsLCBnZW5fZGVjbHNwZWNzKTogUmVtb3ZlIHByb3RvdHlwZXMuCgkoVFlQRV9JRCk6IFJlbmFtZSB0byBPQkpFQ1RfVFlQRURFRl9OQU1FLgoJKENMQVNTX1RZUEVERUZfTkFNRSk6IE5ldy4KCShUQUdfRVhFQ0NMQVNTKTogQ2hhbmdlIGZyb20gYSBnbG9iYWwgdmFyaWFibGUgdG8gYSAjZGVmaW5lLgoJKFRBR19SRVRVUk5fU1RSVUNUKTogRGVsZXRlLgoJKFRBR19HTlVJTklUKTogTmV3LCBob2xkcyAnX19vYmpjX2dudV9pbml0JyBuYW1lLgoJKG9iamNfaW5oZXJpdF9jb2RlLCBvYmpjX3B1YmxpY19mbGFnKTogTmV3LCBtb3ZlZCBmcm9tIGMtcGFyc2UuaW4uCgkoc3RyaW5nX2Rlc2NyaXB0b3IpOiBOZXcgc3RydWN0LgoJKHN0cmluZ19odGFiKTogTmV3IGhhc2ggdGFibGUuCgkoc3RyaW5nX2hhc2gsIHN0cmluZ19lcSk6IE5ldyBwcm90b3R5cGVzLgoJKGdlbmVyYXRlX3N0cnVjdF9ieV92YWx1ZV9hcnJheSk6IENhbGwgY3JlYXRlX2ZpZWxkX2RlY2woKSBpbnN0ZWFkIG9mCgljcmVhdGVfYnVpbHRpbl9kZWNsKCkuCgkob2JqY19pbml0KTogRG8gbm90IGluaXRpYWxpemUgb2JqY19lbGxpcHNpc19ub2RlIG9yIFRBR19FWEVDQ0xBU1M7CglJbiBPYmpDKysgbW9kZSwgY2FsbCBjeHhfaW5pdCgpIGluc3RlYWQgb2YgY19vYmpjX2NvbW1vbl9pbml0KCkuCgkob2JqY19maW5pc2hfZmlsZSk6IEluIE9iakMrKywgY2FsbCBpbnN0YW50aWF0ZV9wZW5kaW5nX3RlbXBsYXRlcygpCglhbmQgY3BfZmluaXNoX2ZpbGUoKS4KCShkZWZpbmVfZGVjbCwgZ2V0X3N0YXRpY19yZWZlcmVuY2UsIGdldF9wcm90b2NvbF9yZWZlcmVuY2UsCgljcmVhdGVfYnVpbHRpbl9kZWNsKTogUmVtb3ZlIGZ1bmN0aW9ucy4KCShvYmpjX3N0YXJ0X2NsYXNzX2ludGVyZmFjZSwgb2JqY19zdGFydF9jYXRlZ29yeV9pbnRlcmZhY2UsCglvYmpjX3N0YXJ0X3Byb3RvY29sLCBvYmpjX2NvbnRpbnVlX2ludGVyZmFjZSwgb2JqY19maW5pc2hfaW50ZXJmYWNlLAoJb2JqY19zdGFydF9jbGFzc19pbXBsZW1lbnRhdGlvbiwgb2JqY19zdGFydF9jYXRlZ29yeV9pbXBsZW1lbnRhdGlvbiwKCW9iamNfY29udGludWVfaW1wbGVtZW50YXRpb24sIG9iamNfZmluaXNoX2ltcGxlbWVudGF0aW9uLAoJb2JqY19zZXRfdmlzaWJpbGl0eSwgb2JqY19zZXRfbWV0aG9kX3R5cGUsCglvYmpjX2J1aWxkX21ldGhvZF9zaWduYXR1cmUsIG9iamNfYWRkX21ldGhvZF9kZWNsYXJhdGlvbiwKCW9iamNfc3RhcnRfbWV0aG9kX2RlZmluaXRpb24sIG9iamNfYWRkX2luc3RhbmNlX3ZhcmlhYmxlLAoJb2JqY19nZXRfcHJvdG9jb2xfcXVhbGlmaWVkX3R5cGUsIGNyZWF0ZV9maWVsZF9kZWNsLAoJc3RhcnRfdmFyX2RlY2wsIGZpbmlzaF92YXJfZGVjbCk6IE5ldyBmdW5jdGlvbnMuCgkoc2V0dXBfc3RyaW5nX2RlY2wpOiBTaW1wbGlmeSBzaW5jZSBpdCBpcyBvbmx5IGNhbGxlZCBvbmNlLgoJKHN5bnRoX21vZHVsZV9wcm9sb2d1ZSk6IENhbGwgYnVpbGRfY2xhc3NfdGVtcGxhdGUoKTsgcHJlZGVmaW5lICdpZCcKCWFuZCAnQ2xhc3MnIGFzIHR5cGVkZWZzOyByZW5hbWUgJ3RlbXBfdHlwZScgdG8gJ3R5cGUnOyBkaXNhYmxlIGRlYnVnCglob29rcyBmb3IgZHVyYXRpb24gb2YgZnVuY3Rpb247IGZpeCBHTlUgcnVudGltZSBtZXNzZW5nZXIgc2lnbmF0dXJlcwoJdG8gY29ycmVzcG9uZCB0byByZWFsaXR5OyBmb3J3YXJkLWRlY2xhcmUgJ19fb2JqY19leGVjX2NsYXNzJyBmb3IgdGhlCglHTlUgcnVudGltZTsgY2FsbCBidWlsZF9zZWxlY3Rvcl90YWJsZV9kZWNsKCk7IGluIE9iakMrKyBtb2RlLCBnZW5lcmF0ZQoJJ2V4dGVybiAiQyIgeyAuLi4gfScgd3JhcHBlcnMgYXJvdW5kIHN5bnRoZXNpemVkIGRlY2xhcmF0aW9uczsgY2FsbAoJYnVpbGRfcHJvdG9jb2xfdGVtcGxhdGUoKSBhbmQgYnVpbGRfY2F0ZWdvcnlfdGVtcGxhdGUoKS4KCShzdHJpbmdfaGFzaCwgc3RyaW5nX2VxKTogTmV3IGZ1bmN0aW9ucy4KCShvYmpjX2J1aWxkX3N0cmluZ19vYmplY3QpOiBDaGVjayBtZXRhY2xhc3MgY29ycmVjdG5lc3Mgb25seSBvbmNlOwoJc3RvcmUgc3RyaW5nIGxpdGVyYWxzIGluIGhhc2ggdGFibGUuCgkob2JqY19idWlsZF9jb25zdHJ1Y3Rvcik6IERvIG5vdCBjb252ZXJ0IGluaXRpYWxpemVyIGVsZW1lbnRzOwoJYWRqdXN0IGZvciBPYmpDKysgaW1wZWRhbmNlIG1pc21hdGNoLgoJKGJ1aWxkX29iamNfc3ltdGFiX3RlbXBsYXRlKTogQ2FsbCBjcmVhdGVfZmllbGRfZGVjbCgpIGluc3RlYWQgb2YKCWNyZWF0ZV9idWlsdGluX2RlY2woKS4KCShpbml0X29iamNfc3ltdGFiKTogQWRkIG1pc3NpbmcgY29udmVyc2lvbiB0byBpbml0aWFsaXplciBlbGVtZW50LgoJKGJ1aWxkX21ldGFkYXRhX2RlY2wpOiBDYWxsIHN0YXJ0X3Zhcl9kZWNsKCkgaW5zdGVhZCBvZiBkZWZpbmVfZGVjbCgpLgoJKGdlbmVyYXRlX29iamNfc3ltdGFiX2RlY2wpOiBEbyBub3QgY2FsbCBidWlsZF9jYXRlZ29yeV90ZW1wbGF0ZSgpOwoJY2FsbCBzdGFydF92YXJfZGVjbCgpIGFuZCBmaW5pc2hfdmFyX2RlY2woKSBpbnN0ZWFkIG9mIHN0YXJ0X2RlY2woKQoJYW5kIGZpbmlzaF9kZWNsKCkuCgkoYnVpbGRfbW9kdWxlX2Rlc2NyaXB0b3IpOiBDYWxsIGNyZWF0ZV9maWVsZF9kZWNsKCkgaW5zdGVhZCBvZgoJZ3Jva2ZpZWxkKCk7IGNhbGwgc3RhcnRfdmFyX2RlY2woKSBhbmQgZmluaXNoX3Zhcl9kZWNsKCkgaW5zdGVhZCBvZgoJc3RhcnRfZGVjbCgpIGFuZCBmaW5pc2hfZGVjbCgpOyBhbHdheXMgbWFyayBtb2R1bGUgZGVzY3JpcHRvciBhcwoJdXNlZDsgbW92ZSBHTlUgcnVudGltZS1zcGVjaWZpYyBmdW5jdGlvbmFsaXR5IHRvCglidWlsZF9tb2R1bGVfaW5pdGlhbGl6ZXJfcm91dGluZSgpLgoJKGJ1aWxkX21vZHVsZV9pbml0aWFsaXplcl9yb3V0aW5lKTogTmV3IGZ1bmN0aW9uLCBicm9rZW4gb2ZmIG9mCglidWlsZF9tb2R1bGVfZGVzY3JpcHRvcigpLgoJKG9iamNfc3RhdGljX2luaXRfbmVlZGVkX3AsIG9iamNfZ2VuZXJhdGVfc3RhdGljX2luaXRfY2FsbCk6IE5ldwoJZnVuY3Rpb25zLgoJKGdlbmVyYXRlX3N0YXRpY19yZWZlcmVuY2VzLCBnZW5lcmF0ZV9zdHJpbmdzLAoJYnVpbGRfc2VsZWN0b3JfdHJhbnNsYXRpb25fdGFibGUsIGdlbmVyYXRlX2Rlc2NyaXB0b3JfdGFibGUsCglnZW5lcmF0ZV9pdmFyc19saXN0LCBnZW5lcmF0ZV9kaXNwYXRjaF90YWJsZSwgZ2VuZXJhdGVfY2F0ZWdvcnkpOiBDYWxsCglzdGFydF92YXJfZGVjbCgpIGFuZCBmaW5pc2hfdmFyX2RlY2woKSBpbnN0ZWFkIG9mIHN0YXJ0X2RlY2woKSBhbmQKCWZpbmlzaF9kZWNsKCk7IGJ1aWxkIGEgdHlwZSBkaXJlY3RseSBpbnN0ZWFkIG9mIHZpYSBncm9rdHlwZW5hbWUoKS4KCShidWlsZF9zZWxlY3Rvcl9yZWZlcmVuY2VfZGVjbCwgYnVpbGRfc2VsZWN0b3JfdGFibGVfZGVjbCwKCWJ1aWxkX2NsYXNzX3JlZmVyZW5jZV9kZWNsLCBidWlsZF9wcm90b2NvbF9yZWZlcmVuY2UsCglnZW5lcmF0ZV9vYmpjX2ltYWdlX2luZm8pOiBDYWxsIHN0YXJ0X3Zhcl9kZWNsKCkgaW5zdGVhZCBvZgoJYnVpbGRfZGVjbCgpLgoJKGJ1aWxkX3NlbGVjdG9yX3JlZmVyZW5jZSk6IEZvciBHTlUgcnVudGltZSwgZG8gbm90IGNhbGwKCWJ1aWxkX3NlbGVjdG9yX3JlZmVyZW5jZV9kZWNsKCkuCgkoYnVpbGRfc2VsZWN0b3IsIGJ1aWxkX3R5cGVkX3NlbGVjdG9yX3JlZmVyZW5jZSk6IEFsd2F5cyBjb252ZXJ0CglyZXN1bHQgdG8gdGhlIHNlbGVjdG9yIHR5cGUuCgkoYWRkX29iamNfc3RyaW5nKTogQ2FzdCByZXR1cm4gdmFsdWUgdG8gJ2NoYXIgKicuCgkoYnVpbGRfbWV0aG9kX3Byb3RvdHlwZV90ZW1wbGF0ZSwgYnVpbGRfc2VsZWN0b3JfdGVtcGxhdGUsCglidWlsZF9tZXRob2RfdGVtcGxhdGUpOiBVc2UgYWN0dWFsIHNlbGVjdG9yIHR5cGUgZm9yIGZpZWxkcwoJcG9pbnRpbmcgdG8gc2VsZWN0b3JzLgoJKGZpbmlzaF9vYmpjKTogRm9yIEdOVSBydW50aW1lLCBjYWxsCglidWlsZF9tb2R1bGVfaW5pdGlhbGl6ZXJfcm91dGluZSgpIGFmdGVyIGJ1aWxkX21vZHVsZV9kZXNjcmlwdG9yKCkuCgkoZ2VuZXJhdGVfcHJvdG9jb2xfbGlzdCwgZ2VuZXJhdGVfc2hhcmVkX3N0cnVjdHVyZXMpOiBDYWxsCglzdGFydF92YXJfZGVjbCgpIGFuZCBmaW5pc2hfdmFyX2RlY2woKSBpbnN0ZWFkIG9mIHN0YXJ0X2RlY2woKSBhbmQKCWZpbmlzaF9kZWNsKCk7IGJ1aWxkIGEgdHlwZSBkaXJlY3RseSBpbnN0ZWFkIG9mIHZpYQoJZ3Jva3R5cGVuYW1lKCkuCgkoc3ludGhfaWRfd2l0aF9jbGFzc19zdWZmaXgpOiBSZXR1cm4gYSBzdHJpbmcuCgkoZ2V0X2FyZ190eXBlX2xpc3QpOiBGb3IgaW5zdGFuY2UgbWV0aG9kcywgdXNlIHRoZSBpbnN0YW5jZSB0eXBlIGZvcgoJJ3NlbGYnOyBkbyBub3QgY2FsbCBncm9rdHlwZW5hbWVfaW5fcGFybV9jb250ZXh0KCkuCgkoYnVpbGRfb2JqY19zdHJpbmdfZGVjbCk6IFNxdWFzaCByZWRlY2xhcmF0aW9uIGVycm9ycyBpbiBPYmpDKysuCgkob2JqY19pc19jbGFzc19uYW1lKTogVXNlIE9CSkNfVFlQRV9OQU1FIGluc3RlYWQgb2YgVFlQRV9OQU1FOwoJaGFuZGxlIFJFQ09SRF9UWVBFcyBpbiBPYmpDIGFzIHdlbGwgYXMgT2JqQysrLgoJKG9iamNfaXNfaWQpOiBOZXcgZnVuY3Rpb24uCgkob2JqY19pc19vYmplY3RfcHRyKTogUmV0dXJuIHRoZSBjYW5vbmljYWwgdHlwZSBub2RlLgoJKG9iamNfZ2V0X2NsYXNzX2l2YXJzKTogU2ltcGxpZnkgdXNpbmcgZ2V0X2NsYXNzX2l2YXJzKCkuCgkoZ2V0X2NsYXNzX2l2YXJzKTogUmVtb3ZlIHNlY29uZCBwYXJhbWV0ZXI7IGNyZWF0ZSBhIGZyZXNoIGNvcHkKCW9mIHRoZSBpdmFyIGxpc3QgZm9yIGVhY2ggY2FsbDsgZG8gbm90IGNoZWNrIGZvciBleGlzdGVuY2Ugb2YKCXN1cGVyIGNsYXNzLgoJKG9iamNfZWhfcnVudGltZV90eXBlKTogTWFyayAjaWZuZGVmIE9CSkNQTFVTLgoJKG9iamNfaW5pdF9leGNlcHRpb25zKTogV2hlbiB1c2luZyBTSkxKLXN0eWxlIGV4Y2VwdGlvbnMsIHJlcXVpcmUKCXRoZSB1c2Ugb2YgJy1mb2JqYy1leGNlcHRpb25zJyBmbGFnOyBkbyBub3QgcmVxdWlyZSBpdCBmb3IgRFdBUkYtc3R5bGUKCWV4Y2VwdGlvbnMuCgkob2JqY19idWlsZF9leGNfcHRyLCBuZXh0X3NqbGpfYnVpbGRfdHJ5X2NhdGNoX2ZpbmFsbHkpOiBVc2UKCW9iamNfb2JqZWN0X3R5cGUgaW5zdGVhZCBvZiBvYmpjX2lkX3R5cGUuCgkob2JqY19iZWdpbl9jYXRjaF9jbGF1c2UpOiBDb252ZXJ0IHRoZSBpbmNvbWluZyBQQVJNX0RFQ0wgaW50bwoJYSBWQVJfREVDTCBiZWZvcmUgcGxhY2luZyBpdCBpbiB0aGUgYXBwcm9wcmlhdGUgc2NvcGU7IGRvIG5vdAoJY2FsbCBkZWZpbmVfZGVjbCgpOyBhZGp1c3QgY2FsbCB0byBjX2JlZ2luX2NvbXBvdW5kX3N0bXQoKTsKCXVzZSBvYmpjX29iamVjdF90eXBlIGluc3RlYWQgb2Ygb2JqY19pZF90eXBlLgoJKGJ1aWxkX25leHRfb2JqY19leGNlcHRpb25fc3R1ZmYpOiBDYWxsIGNyZWF0ZV9maWVsZF9kZWNsKCkgaW5zdGVhZAoJb2YgY3JlYXRlX2J1aWx0aW5fZGVjbCgpOyBjb25zdHJ1Y3QgdHlwZSBkaXJlY3RseSBpbnN0ZWFkIG9mIGNhbGxpbmcKCWdyb2t0eXBlbmFtZSgpOyB1c2UgT0JKQ19WT0lEX0FUX0VORCB0byBtYXJrIGVuZCBvZiBmdW5jdGlvbiBwYXJhbWV0ZXJzLgoJKGJ1aWxkX3ByaXZhdGVfdGVtcGxhdGUpOiBBZGp1c3QgY2FsbCB0byBnZXRfY2xhc3NfaXZhcnMoKTsgYnVpbGQKCWEgdHlwZSBkaXJlY3RseSBpbnN0ZWFkIG9mIHZpYSBncm9rdHlwZW5hbWUoKS4KCShidWlsZF9wcm90b2NvbF90ZW1wbGF0ZSwgYnVpbGRfbWV0aG9kX3Byb3RvdHlwZV9saXN0X3RlbXBsYXRlLAoJYnVpbGRfbWV0aG9kX3Byb3RvdHlwZV90ZW1wbGF0ZSwgYnVpbGRfY2F0ZWdvcnlfdGVtcGxhdGUsCglidWlsZF9zZWxlY3Rvcl90ZW1wbGF0ZSwgYnVpbGRfY2xhc3NfdGVtcGxhdGUsIGJ1aWxkX3N1cGVyX3RlbXBsYXRlLAoJYnVpbGRfaXZhcl90ZW1wbGF0ZSwgYnVpbGRfaXZhcl9saXN0X3RlbXBsYXRlLAoJYnVpbGRfbWV0aG9kX2xpc3RfdGVtcGxhdGUsIGJ1aWxkX21ldGhvZF90ZW1wbGF0ZSk6CglDYWxsIGNyZWF0ZV9maWVsZF9kZWNsKCkgaW5zdGVhZCBvZiBncm9rZmllbGQoKS4KCShvYmpjX21ldGhvZF9wYXJtX3R5cGUpOiBEbyBub3QgY2FsbCBncm9rdHlwZW5hbWUoKS4KCShnZW5lcmF0ZV9kZXNjcmlwdG9yX3RhYmxlKTogQ2FsbCBzdGFydF92YXJfZGVjbCgpIGFuZAoJZmluaXNoX3Zhcl9kZWNsKCkgaW5zdGVhZCBvZiBzdGFydF9kZWNsKCkgYW5kIGZpbmlzaF9kZWNsKCkuCgkoZ2VuZXJhdGVfbWV0aG9kX2Rlc2NyaXB0b3JzLCBidWlsZF9wcm90b2NvbF9pbml0aWFsaXplciwKCWdlbmVyYXRlX2Rpc3BhdGNoX3RhYmxlcywgYnVpbGRfY2F0ZWdvcnlfaW5pdGlhbGl6ZXIsCglidWlsZF9zaGFyZWRfc3RydWN0dXJlX2luaXRpYWxpemVyKTogRG8gbm90IGNhbGwgZ3Jva3R5cGVuYW1lKCkuCgkoZ2VuZXJhdGVfcHJvdG9jb2xzKTogQ2FsbCBzdGFydF92YXJfZGVjbCgpIGFuZCBmaW5pc2hfdmFyX2RlY2woKQoJaW5zdGVhZCBvZiBzdGFydF9kZWNsKCkgYW5kIGZpbmlzaF9kZWNsKCk7IGRvIG5vdCBjYWxsIGdyb2t0eXBlbmFtZSgpLgoJKGVycm9yX3dpdGhfaXZhcik6IFJlbW92ZSBsYXN0IHBhcmFtZXRlci4KCShjaGVja19pdmFycyk6IERvIG5vdCBpdGVyYXRlIG92YXIgQ0xBU1NfUkFXX0lWQVJTIGxpc3RzIGluIGFkZGl0aW9uCgl0byBDTEFTU19JVkFSUyBsaXN0czsgYWRqdXN0IGNhbGxzIHRvIGVycm9yX3dpdGhfaXZhcigpLgoJKGdlbmVyYXRlX2l2YXJfbGlzdHMpOiBDb252ZXJ0IG9uZSBvZiB0aGUgaW5pdGlhbGl6ZXIgZWxlbWVudHM7IGRvCglub3QgY2FsbCBncm9rdHlwZW5hbWUoKS4KCShnZXRfYXJnX3R5cGVfbGlzdCwgc3RhcnRfbWV0aG9kX2RlZiwgZ2VuX21ldGhvZF9kZWYpOiBBY2NvdW50IGZvcgoJbmV3IHJlcHJlc2VudGF0aW9uIG9mIHZhcmlhYmxlIGFyZ3VtZW50cyBhbmQgJy4uLicgaW4gT2JqZWN0aXZlLUMKCW1ldGhvZHM7IGFkZCBPYmplY3RpdmUtQysrIGltcGVkYW5jZSBtYXRjaGluZyBjb2RlLgoJKGlzX29iamNfdHlwZV9xdWFsaWZpZXIpOiBSZW1vdmUgZnVuY3Rpb24uCgkoYWRqdXN0X3R5cGVfZm9yX2lkX2RlZmF1bHQpOiBTaW1wbGlmeTsgdGhlcmUgaXMgbm8gbG9uZ2VyIGEgbmVlZCB0bwoJd2FkZSB0aHJvdWdoIGRlY2xzcGVjcy4KCShsb29rdXBfaW50ZXJmYWNlLCBzdGFydF9jbGFzcywgY29udGludWVfY2xhc3MsCglmaW5pc2hfY2xhc3MsIHN0YXJ0X21ldGhvZF9kZWYsIHN0YXJ0X3Byb3RvY29sLCBidWlsZF9tZXRob2RfZGVjbCwKCW9iamNfYWRkX21ldGhvZCwgYWRkX2luc3RhbmNlX3ZhcmlhYmxlLCBidWlsZF9pdmFyX3JlZmVyZW5jZSwKCWlzX2l2YXIsIGlzX3ByaXZhdGUsIGdldF9zdXBlcl9yZWNlaXZlciwgb2JqY19idWlsZF9maW5hbGx5X2VwaWxvZ3VlKToKCU1ha2UgaW50byBzdGF0aWMgZnVuY3Rpb25zLgoJKHJlY2VpdmVyX2lzX2NsYXNzX29iamVjdCk6IFVzZSBuZXcgSVNfQ0xBU1MoKSBtYWNyby4KCShvYmpjX2J1aWxkX21lc3NhZ2VfZXhwcik6IFR3ZWFrIE9iakMrKyBtZXNzYWdlIGFyZ3VtZW50IGhhbmRsaW5nOwoJY2FsbCBvYmpjX2ZpbmlzaF9tZXNzYWdlX2V4cHIoKSBpbnN0ZWFkIG9mIGZpbmlzaF9tZXNzYWdlX2V4cHIoKS4KCShmaW5pc2hfbWVzc2FnZV9leHByKTogUmVuYW1lIHRvIG9iamNfZmluaXNoX21lc3NhZ2VfZXhwcigpOyB1c2UKCU9CSkNfVFlQRV9OQU1FIGFuZCBPQkpDX1NFVF9UWVBFX05BTUUgbWFjcm9zIGluc3RlYWQgb2YgVFlQRV9OQU1FLgoJY2FsbCBnZW5fdHlwZV9uYW1lKCkgaW5zdGVhZCBvZiBnZW5fZGVjbGFyYXRpb24oKTsgY2FsbCBvYmpjX2lzX2lkKCkKCWluc3RlYWQgb2YgdXNpbmcgSVNfSUQgYW5kIElTX0NMQVNTOyBVc2Ugb2JqY19jbGFzc19uYW1lIGluc3RlYWQgb2YKCWNhbGxpbmcgZ2V0X2lkZW50aWZpZXIoIkNsYXNzIik7IGhhbmRsZSBDT05WRVJUX0VYUFJzIGluIHJlY2VpdmVyLgoJKGJ1aWxkX29iamNfbWV0aG9kX2NhbGwsIHdhcm5fd2l0aF9tZXRob2QpOiBEbyBub3QgY2FsbCBncm9rdHlwZW5hbWUoKS4KCShidWlsZF9pdmFyX3JlZmVyZW5jZSk6IENhbGwgY29udmVydCgpIGluc3RlYWQgb2YgY2xvYmJlcmluZyBpbiBhCgl0eXBlLgoJKGhhc2hfaW5pdCk6IEluaXRpYWxpemUgc3RyaW5nX2h0YWIgaGFzaCB0YWJsZS4KCShhZGRfaW5zdGFuY2VfdmFyaWFibGUpOiBTaW1wbGlmeSBwYXJhbWV0ZXIgbGlzdDsgZG8gbm90IGNhbGwgZ3Jva2ZpZWxkKCk7CglkbyBub3QgcG9wdWxhdGUgQ0xBU1NfSVZBUlMgbGlzdC4KCShzdGFydF9jbGFzcyk6IENoZWNrIGZvciB0aGUgZXhpc3RlbmNlIG9mIHN1cGVyIGNsYXNzLCBpZiBvbmUgd2FzIHNwZWNpZmllZC4KCShjb250aW51ZV9jbGFzcyk6IFVzZSBDTEFTU19SQVdfSVZBUlMgcmF0aGVyIHRoYW4gQ0xBU1NfSVZBUlM7IGRvIG5vdAoJY2FsbCBidWlsZF9jbGFzc190ZW1wbGF0ZSgpOyBhZGp1c3QgY2FsbCB0byBnZXRfY2xhc3NfaXZhcnMoKTsgY2FsbAoJYnVpbGRfZGVjbCgpLCBwdXNoZGVjbCgpIGFuZCBmaW5pc2hfZGVjbCgpIGluc3RlYWQgb2YgZGVmaW5lX2RlY2woKS4KCShmaW5pc2hfY2xhc3MpOiBDYWxsIGJ1aWxkX2RlY2woKSwgcHVzaGRlY2woKSBhbmQgZmluaXNoX2RlY2woKSBpbnN0ZWFkCglvZiBkZWZpbmVfZGVjbCgpLgoJKGFkZF9wcm90b2NvbHMpOiBVc2UgUFJPVE9DT0xfQklORk9fRUxUUyBmb3IgdGhlIHRyZWUgdmVjdG9yIHNpemUuCgkoc3RhcnRfcHJvdG9jb2wpOiBEbyBub3QgY2FsbCBidWlsZF9wcm90b2NvbF90ZW1wbGF0ZSgpOyB1c2UKCVBST1RPQ09MX0JJTkZPX0VMVFMgZm9yIHRoZSB0cmVlIHZlY3RvciBzaXplLgoJKGVuY29kZV90eXBlX3F1YWxpZmllcnMpOiBEbyBub3QgaGFuZGxlIHRoZSAnY29uc3QnIHF1YWxpZmllciBoZXJlLgoJKGVuY29kZV9wb2ludGVyKTogRW5jb2RlICdjb25zdCBjaGFyIConIGFzICdyKicsIGZvciBiYWNrd2FyZHMKCWNvbXBhdGliaWxpdHkuCgkoZW5jb2RlX2FycmF5KTogVXNlIEhPU1RfV0lERV9JTlRfUFJJTlRfREVDIGluc3RlYWQgb2YgIiVsZCIuCgkoZW5jb2RlX3R5cGUpOiBIYW5kbGUgdGhlICdjb25zdCcgcXVhbGlmaWVyIGhlcmUuCgkob2JqY19wYXJtbGlzdCk6IE5ldyBnbG9iYWwgdmFyaWFibGUsIHN1ZWQgYnkgb2JqY19wdXNoX3Bhcm0gYW5kCglvYmpjX2dldF9wYXJtX2luZm8oKS4KCShvYmpjX3B1c2hfcGFybSwgb2JqY19nZXRfcGFybV9pbmZvKTogTmV3IGZ1bmN0aW9ucy4KCShvYmpjX2V4cHJfbGFzdCk6IFJlbW92ZSBmdW5jdGlvbi4KCShzeW50aF9zZWxmX2FuZF91Y21kX2FyZ3MpOiBGb3IgaW5zdGFuY2UgbWV0aG9kcywgdXNlIHRoZSBpbnN0YW5jZQoJdHlwZSBmb3IgJ3NlbGYnOyBjYWxsIG9iamNfcHVzaF9wYXJtKCkgaW5zdGVhZCBvZiBwdXNoX3Bhcm1fZGVjbCgpLgoJKHN0YXJ0X21ldGhvZF9kZWYpOiBEbyBub3QgY2FsbCBwdXNoX3Njb3BlKCksIGRlY2xhcmVfcGFybV9sZXZlbCgpLAoJcG9wX3Njb3BlKCksIHB1c2hfcGFybV9kZWNsKCksIHN0b3JlX3Bhcm1fZGVjbHMoKSBvciBvYmpjX2V4cHJfbGFzdCgpOwoJanVzdCB1c2Ugb2JqY19wdXNoX3Bhcm0oKSBhbmQgb2JqY19nZXRfcGFybV9pbmZvKCkuCgkoY29tcF9tZXRob2Rfd2l0aF9wcm90byk6IFJlbW92ZSBmdW5jdGlvbi4KCShvYmpjX3R5cGVzX2FyZV9lcXVpdmFsZW50KTogU3RyaXAgYXdheSBpbmRpcmVjdGlvbnMgYmVmb3JlIGNvbXBhcmluZwoJdW5kZXJseWluZyB0eXBlcy4KCShjb21wX3Byb3RvX3dpdGhfcHJvdG8pOiBEbyBub3QgY2FsbCBncm9rdHlwZW5hbWUoKTsgdHlwZXMgYXJlIG5vCglsb25nZXIgaW4gcmF3IGRlY2xzcGVjIGZvcm1hdC4KCShvYmpjX3N0YXJ0X2Z1bmN0aW9uKTogTmV3IGZ1bmN0aW9uLgoJKHJlYWxseV9zdGFydF9tZXRob2QpOiBDYWxsIGNvbXBfcHJvdG9fd2l0aF9wcm90bygpIGluc3RlYWQgb2YKCWNvbXBfbWV0aG9kX3dpdGhfcHJvdG8oKTsgY2FsbCBvYmpjX3N0YXJ0X2Z1bmN0aW9uKCkgaW5zdGVhZCBvZgoJaGFuZC1jcmFmdGluZyBhIGZ1bmN0aW9uIGRlY2xhcmF0b3IuCgkoY29udGludWVfbWV0aG9kX2RlZiwgb2JqY19leHBhbmRfZnVuY3Rpb25fZW5kKTogUmVtb3ZlIGZ1bmN0aW9ucy4KCShnZXRfc3VwZXJfcmVjZWl2ZXIpOiBDYWxsIG9iamNfZ2V0X2N1cnJlbnRfc2NvcGUoKSBpbnN0ZWFkIG9mCglnZXRfY3VycmVudF9zY29wZSgpOyByZWZlcmVuY2UgJ3N1cGVyX2NsYXNzJyBmaWVsZCAoaW5zdGVhZCBvZgoJJ2NsYXNzJykuCgkoZmluaXNoX21ldGhvZF9kZWYpOiBSZW5hbWUgdG8gb2JqY19maW5pc2hfbWV0aG9kX2RlZmluaXRpb24oKSBhbmQKCWFkZCBhIGZ1bmN0aW9uIGRlY2wgcGFyYW1ldGVyOyBtb3ZlIG1ldGhvZCBlbmNvZGluZyBjYWxsIGZyb20KCW9iamNfZXhwYW5kX2Z1bmN0aW9uX2VuZCgpLgoJKGlzX2NvbXBsZXhfZGVjbCwgYWRvcm5fZGVjbCwgZ2VuX2RlY2xhcmF0b3IsIGdlbl9kZWNsc3BlY3MsCglnZW5fZGVjbGFyYXRpb25fMSk6IFJlbW92ZSBmdW5jdGlvbnMuCgkodG1wYnVmLCBSQVdfREVDTFNQRUMpOiBSZW1vdmUuCgkoZ2VuX2RlY2xhcmF0aW9uKTogUmVtb3ZlIHNlY29uZCBwYXJhbWV0ZXI7IHNpbXBsaWZ5IHRvIGRlYWwKCXdpdGggVFlQRV9QIG5vZGVzIGluc3RlYWQgb2YgcmF3IGRlY2xzcGVjcy4KCShnZW5fdHlwZV9uYW1lLCBnZW5fdHlwZV9uYW1lXzApOiBOZXcgZnVuY3Rpb25zLgoJKGdlbl9tZXRob2RfZGVjbCk6IFJlbW92ZSBzZWNvbmQgcGFyYW1ldGVyOyBjYWxsIGdlbl90eXBlX25hbWUoKQoJaW5zdGVhZCBvZiBnZW5fZGVjbGFyYXRpb25fMSgpLgoJKGR1bXBfaW50ZXJmYWNlKTogQWRqdXN0IGNhbGxzIHRvIGdlbl9kZWNsYXJhdGlvbigpIGFuZAoJZ2VuX21ldGhvZF9kZWNsKCk7IGRvIG5vdCBhbGxvY2F0ZSBhIHNlcGFyYXRlIHN0cmluZyBidWZmZXIuCgkoaW5pdF9vYmpjKTogQWxsb2NhdGUgYSBsYXJnZXIgc3RyaW5nIGJ1ZmZlciB0byBhY2NvbW1vZGF0ZQoJZHVtcF9pbnRlcmZhY2UoKTsgYWRqdXN0IGNhbGwgdG8gYnVpbGRfbW9kdWxlX2Rlc2NyaXB0b3IoKTsKCWFkZCBjYWxsIHRvIGJ1aWxkX21vZHVsZV9pbml0aWFsaXplcl9yb3V0aW5lKCkgZm9yIHRoZSBHTlUKCXJ1bnRpbWUuCgkoZ2VuZXJhdGVfY2xhc3NyZWZfdHJhbnNsYXRpb25fZW50cnkpOiBEbyBub3QgY2FsbCBzdGFydF9kZWNsKCk7IGNhbGwKCWZpbmlzaF92YXJfZGVjbCgpIGluc3RlYWQgb2YgZmluaXNoX2RlY2woKTsgY2FsbCBjb252ZXJ0KCkgaW5zdGVhZCBvZgoJYnVpbGRfY19jYXN0KCkuCgkqIG9iamMtYWN0LmggKENMQVNTX09XTl9JVkFSUyk6IFJlbW92ZSBhY2Nlc3Nvci4KCShDTEFTU19CSU5GT19FTFRTKTogUmVkdWNlIGZyb20gNiB0byA1LCBub3cgdGhhdCBDTEFTU19PV05fSVZBUlMgaXMKCWdvbmUuCgkoT0NUSV9HTlVfSU5JVF9ERUNMLCBHTlVfSU5JVF9kZWNsKTogTmV3LgoJKE9DVElfRUxMSVBTSVNfTk9ERSwgb2JqY19lbGxpcHNpc19ub2RlKTogUmVtb3ZlLgoJKE9DVElfSURfSUQsIGlkX3R5cGUsIG9iamNfaWRfaWQpOiBSZW5hbWUgdG8gT0NUSV9JRF9OQU1FLAoJb2JqY19vYmplY3RfdHlwZSBhbmQgb2JqY19vYmplY3RfbmFtZSwgcmVzcGVjdGl2ZWx5LgoJKE9DVElfQ0xTX1JFRiwgT0NUSV9DTEFTU19OQU1FLCBvYmpjX2NsYXNzX3JlZmVyZW5jZSwKCW9iamNfY2xhc3NfbmFtZSk6IE5ldy4KCShJU19DTEFTUyk6IE5ldyBtYWNyby4KCShJU19JRCwgSVNfU1VQRVIpOiBSb2J1c3RpZnkuCgkoT0NUSV9FWEVDQ0xBU1NfREVDTCwgZXhlY2NsYXNzX2RlY2wpOiBOZXcuCgkoZmluaXNoX2ZpbGUsIHN0YXJ0X2NsYXNzLCBjb250aW51ZV9jbGFzcywgZmluaXNoX2NsYXNzLAoJc3RhcnRfbWV0aG9kX2RlZiwgY29udGludWVfbWV0aG9kX2RlZiwgZmluaXNoX21ldGhvZF9kZWYsCglzdGFydF9wcm90b2NvbCwgZmluaXNoX3Byb3RvY29sLCBvYmpjX2J1aWxkX3Rocm93X3N0bXQsCglvYmpjX2J1aWxkX3RyeV9jYXRjaF9maW5hbGx5X3N0bXQsIG9iamNfYnVpbGRfc3luY2hyb25pemVkX3Byb2xvZ3VlLAoJb2JqY19idWlsZF9zeW5jaHJvbml6ZWRfZXBpbG9ndWUsIG9iamNfYnVpbGRfdHJ5X3Byb2xvZ3VlLAoJb2JqY19idWlsZF90cnlfZXBpbG9ndWUsIG9iamNfYnVpbGRfY2F0Y2hfc3RtdCwgb2JqY19idWlsZF9jYXRjaF9lcGlsb2d1ZSwKCW9iamNfYnVpbGRfZmluYWxseV9wcm9sb2d1ZSwgb2JqY19idWlsZF9maW5hbGx5X2VwaWxvZ3VlLAoJaXNfaXZhciwgaXNfcHJpdmF0ZSwgaXNfcHVibGljLCBhZGRfaW5zdGFuY2VfdmFyaWFibGUsIG9iamNfYWRkX21ldGhvZCwKCWdldF9zdXBlcl9yZWNlaXZlciwgb2JqY19jbGVhcl9zdXBlcl9yZWNlaXZlciwgZ2V0X2NsYXNzX2l2YXJzX2Zyb21fbmFtZSwKCWdldF9jbGFzc19yZWZlcmVuY2UsIGdldF9zdGF0aWNfcmVmZXJlbmNlLCBnZXRfb2JqZWN0X3JlZmVyZW5jZSwKCWJ1aWxkX21lc3NhZ2VfZXhwciwgZmluaXNoX21lc3NhZ2VfZXhwciwgYnVpbGRfc2VsZWN0b3JfZXhwciwKCWJ1aWxkX2l2YXJfcmVmZXJlbmNlLCBidWlsZF9rZXl3b3JkX2RlY2wsIGJ1aWxkX21ldGhvZF9kZWNsLAoJYnVpbGRfcHJvdG9jb2xfZXhwciwgYnVpbGRfb2JqY19zdHJpbmdfb2JqZWN0LCBvYmpjX2RlY2xhcmVfYWxpYXMsCglvYmpjX2RlY2xhcmVfY2xhc3MsIG9iamNfZGVjbGFyZV9wcm90b2NvbHMsIG9iamNfY29tcHR5cGVzLAoJb2JqY19jaGVja19kZWNsLCBidWlsZF9lbmNvZGVfZXhwcik6IFJlbW92ZSBwcm90b3R5cGVzLgoJKGltcF9jb3VudCwgY2F0X2NvdW50KTogTWFrZSBHR0MtYXdhcmUuCgkoT0JKQ19TRVRfVFlQRV9OQU1FKTogTmV3IG1hY3JvLgoKMjAwNC0wOS0wMyAgWmllbW93aXQgTGFza2kgIDx6bGFza2lAYXBwbGUuY29tPgoKCSogY29uZmlnLWxhbmcuaW46IFVwZGF0ZSBjb3B5cmlnaHQgbm90aWNlLgoJKGxhbmdfcmVxdWlyZXMpOiBJbmRpY2F0ZSB0aGF0IE9iakMgcmVxdWlyZXMgQyB0byBiZSBidWlsdCBmaXJzdC4KCjIwMDQtMDktMDEgIFppZW1vd2l0IExhc2tpICA8emxhc2tpQGFwcGxlLmNvbT4KCgkqIG9iamMtYWN0LmMgKG9iamNfY2hlY2tfZGVjbCk6IFVzZSBPQkpDX1RZUEVfTkFNRSBtYWNybyBpbnN0ZWFkIG9mCglUWVBFX05BTUUuCgkoYnVpbGRfb2JqY19zdHJpbmdfb2JqZWN0KTogUmVuYW1lIHRvIG9iamNfYnVpbGRfc3RyaW5nX29iamVjdCgpLgoJKGdldF9jbGFzc19yZWZlcmVuY2UpOiBSZW5hbWUgdG8gb2JqY19nZXRfY2xhc3NfcmVmZXJlbmNlKCkuCgkoZ2V0X2NsYXNzX2l2YXJzX2Zyb21fbmFtZSk6IFJlbmFtZSB0byBvYmpjX2dldF9jbGFzc19pdmFycygpLgoJKG5leHRfc2psal9idWlsZF9jYXRjaF9saXN0LCBnZXRfc3VwZXJfcmVjZWl2ZXIpOiBDYWxsCglvYmpjX2dldF9jbGFzc19yZWZlcmVuY2UoKSBpbnN0ZWFkIG9mIGdldF9jbGFzc19yZWZlcmVuY2UoKS4KCShidWlsZF9rZXl3b3JkX2RlY2wpOiBSZW5hbWUgdG8gb2JqY19idWlsZF9rZXl3b3JkX2RlY2woKS4KCShidWlsZF9tZXNzYWdlX2V4cHIpOiBSZW5hbWUgdG8gb2JqY19idWlsZF9tZXNzYWdlX2V4cHIoKS4KCShidWlsZF9wcm90b2NvbF9leHByKTogUmVuYW1lIHRvIG9iamNfYnVpbGRfcHJvdG9jb2xfZXhwcigpLgoJKGJ1aWxkX3NlbGVjdG9yX2V4cHIpOiBSZW5hbWUgdG8gb2JqY19idWlsZF9zZWxlY3Rvcl9leHByKCkuCgkoYnVpbGRfZW5jb2RlX2V4cHIpOiBSZW5hbWUgdG8gb2JqY19idWlsZF9lbmNvZGVfZXhwcigpLgoJKiBvYmpjLWFjdC5oIChnZXRfY2xhc3NfaXZhcnNfZnJvbV9uYW1lKTogUmVuYW1lIHByb3RvdHlwZSB0bwoJb2JqY19nZXRfY2xhc3NfaXZhcnMoKS4KCShnZXRfY2xhc3NfcmVmZXJlbmNlKTogUmVuYW1lIHByb3RvdHlwZSB0byBvYmpjX2dldF9jbGFzc19yZWZlcmVuY2UoKS4KCShidWlsZF9tZXNzYWdlX2V4cHIpOiBSZW5hbWUgcHJvdG90eXBlIHRvIG9iamNfYnVpbGRfbWVzc2FnZV9leHByKCkuCgkoYnVpbGRfc2VsZWN0b3JfZXhwcik6IFJlbmFtZSBwcm90b3R5cGUgdG8gb2JqY19idWlsZF9zZWxlY3Rvcl9leHByKCkuCgkoYnVpbGRfa2V5d29yZF9kZWNsKTogUmVuYW1lIHByb3RvdHlwZSB0byBvYmpjX2J1aWxkX2tleXdvcmRfZGVjbCgpLgoJKGJ1aWxkX3Byb3RvY29sX2V4cHIpOiBSZW5hbWUgcHJvdG90eXBlIHRvIG9iamNfYnVpbGRfcHJvdG90eXBlX2V4cHIoKS4KCShidWlsZF9vYmpjX3N0cmluZ19vYmplY3QpOiBSZW5hbWUgcHJvdG90eXBlIHRvCglvYmpjX2J1aWxkX3N0cmluZ19vYmplY3QoKS4KCjIwMDQtMDktMDEgIFppZW1vd2l0IExhc2tpICA8emxhc2tpQGFwcGxlLmNvbT4KCgkqIG9iamMtYWN0LmMgKGxvb2t1cF9pbnRlcmZhY2UpOiBNYWtlIGZ1bmN0aW9uICdzdGF0aWMnIGFuZCBhZGQgYQoJbG9jYWwgcHJvdG90eXBlLgoJKG9iamNfY2hlY2tfZGVjbCwgZ2V0X2NsYXNzX3JlZmVyZW5jZSwgb2JqY19kZWNsYXJlX2FsaWFzLAoJb2JqY19kZWNsYXJlX2NsYXNzLCBvYmpjX2lzX29iamVjdF9wdHIpOiBDYWxsIG9iamNfaXNfY2xhc3NfbmFtZSgpCglpbnN0ZWFkIG9mIGlzX2NsYXNzX25hbWUoKS4KCShnZXRfc3VwZXJfcmVjZWl2ZXIsIG9iamNfY2xlYXJfc3VwZXJfcmVjZWl2ZXIpOiBDYWxsCglvYmpjX2dldF9jdXJyZW50X3Njb3BlKCkgaW5zdGVhZCBvZiBnZXRfY3VycmVudF9zY29wZSgpLgoJKGlzX2NsYXNzX25hbWUpOiBSZW5hbWUgdG8gb2JqY19pc19jbGFzc19uYW1lLgoJKGxvb2t1cF9vYmpjX2l2YXIpOiBSZW5hbWUgdG8gb2JqY19sb29rdXBfaXZhci4KCjIwMDQtMDgtMjggIFppZW1vd2l0IExhc2tpICA8emxhc2tpQGFwcGxlLmNvbT4KCgkqIG9iamMtYWN0LmMgKG9iamNfaXNfcmVzZXJ2ZWRfd29yZCk6IE5ldyBmdW5jdGlvbi4KCjIwMDQtMDgtMTUgIFppZW1vd2l0IExhc2tpICA8emxhc2tpQGFwcGxlLmNvbT4KCgkqIE1ha2UtbGFuZy5pbiAob2JqYy9vYmpjLWxhbmcubyk6IERlcGVuZCBvbiAkKENfUFJFVFRZX1BSSU5UX0gpLAoJJChESUFHTk9TVElDX0gpLCBjLW9iamMtY29tbW9uLmggYW5kIGd0eXBlLW9iamMuaCwgYnV0IG5vdCBvbiB0b3BsZXYuaC4KCShvYmpjL29iamMtcGFyc2Uubyk6IERvIG5vdCBkZXBlbmQgb24gZ3R5cGUtb2JqYy5oLgoJKiBvYmpjLWFjdC5jOiBEbyBub3QgaW5jbHVkZSBndHlwZS1vYmpjLmguCgkoZmluaXNoX2ZpbGUpOiBSZW5hbWUgdG8gb2JqY19maW5pc2hfZmlsZSgpLgoJKiBvYmpjLWFjdC5oIChmaW5pc2hfZmlsZSk6IFVwZGF0ZSBjb3B5cmlnaHQgbm90aWNlOyByZW1vdmUgcHJvdG90eXBlLgoJKiBvYmpjLWxhbmcuYzogVXBkYXRlIGNvcHlyaWdodCBub3RpY2U7IGluY2x1ZGUgZGlhZ25vc3RpYy5oLAoJYy1vYmpjLWNvbW1vbi5oLCBjLXByZXR0eS1wcmludC5oIGFuZCBndHlwZS1vYmpjLmg7IGRvIG5vdCBpbmNsdWRlCgl0b3BsZXYuaC4KCShmaW5pc2hfZmlsZSk6IE5ldyBob29rIHJvdXRpbmUuCgkoTEFOR19IT09LU19GSU5JU0gsIExBTkdfSE9PS1NfSU5JVF9PUFRJT05TLAoJTEFOR19IT09LU19JTklUSUFMSVpFX0RJQUdOT1NUSUNTLCBMQU5HX0hPT0tTX0hBTkRMRV9PUFRJT04sCglMQU5HX0hPT0tTX01JU1NJTkdfQVJHVU1FTlQsIExBTkdfSE9PS1NfUE9TVF9PUFRJT05TLAoJTEFOR19IT09LU19HRVRfQUxJQVNfU0VULCBMQU5HX0hPT0tTX1NBRkVfRlJPTV9QLAoJTEFOR19IT09LU19FWFBBTkRfRVhQUiwgTEFOR19IT09LU19NQVJLX0FERFJFU1NBQkxFLAoJTEFOR19IT09LU19QQVJTRV9GSUxFLCBMQU5HX0hPT0tTX1RSVVRIVkFMVUVfQ09OVkVSU0lPTiwKCUxBTkdfSE9PS1NfRklOSVNIX0lOQ09NUExFVEVfREVDTCwgTEFOR19IT09LU19VTlNBRkVfRk9SX1JFRVZBTCwKCUxBTkdfSE9PS1NfU1RBVElDUCwgTEFOR19IT09LU19TRVRfREVDTF9BU1NFTUJMRVJfTkFNRSwKCUxBTkdfSE9PS1NfTk9fQk9EWV9CTE9DS1MsIExBTkdfSE9PS1NfV0FSTl9VTlVTRURfR0xPQkFMX0RFQ0wsCglMQU5HX0hPT0tTX1BSSU5UX0lERU5USUZJRVIsIExBTkdfSE9PS1NfRlVOQ1RJT05fRU5URVJfTkVTVEVELAoJTEFOR19IT09LU19GVU5DVElPTl9MRUFWRV9ORVNURUQsIExBTkdfSE9PS1NfRFVQX0xBTkdfU1BFQ0lGSUNfREVDTCwKCUxBTkdfSE9PS1NfREVDTF9VTklOSVQsIExBTkdfSE9PS1NfUlRMX0VYUEFORF9TVE1ULAoJTEFOR19IT09LU19DT01NT05fQVRUUklCVVRFX1RBQkxFLCBMQU5HX0hPT0tTX0ZPUk1BVF9BVFRSSUJVVEVfVEFCTEUsCglMQU5HX0hPT0tTX1RSRUVfSU5MSU5JTkdfQ0FOTk9UX0lOTElORV9UUkVFX0ZOLAoJTEFOR19IT09LU19UUkVFX0lOTElOSU5HX0RJU1JFR0FSRF9JTkxJTkVfTElNSVRTLAoJTEFOR19IT09LU19UUkVFX0lOTElOSU5HX0FOT05fQUdHUl9UWVBFX1AsCglMQU5HX0hPT0tTX1RSRUVfSU5MSU5JTkdfQ09OVkVSVF9QQVJNX0ZPUl9JTkxJTklORywKCUxBTkdfSE9PS1NfVFJFRV9JTkxJTklOR19FU1RJTUFURV9OVU1fSU5TTlMsCglMQU5HX0hPT0tTX1RSRUVfRFVNUF9EVU1QX1RSRUVfRk4sCglMQU5HX0hPT0tTX0NBTExHUkFQSF9FWFBBTkRfRlVOQ1RJT04sIExBTkdfSE9PS1NfVFlQRV9GT1JfTU9ERSwKCUxBTkdfSE9PS1NfVFlQRV9GT1JfU0laRSwgTEFOR19IT09LU19TSUdORURfVFlQRSwKCUxBTkdfSE9PS1NfVU5TSUdORURfVFlQRSwgTEFOR19IT09LU19TSUdORURfT1JfVU5TSUdORURfVFlQRSwKCUxBTkdfSE9PS1NfSU5DT01QTEVURV9UWVBFX0VSUk9SLCBMQU5HX0hPT0tTX1RZUEVfUFJPTU9URVNfVE8sCglMQU5HX0hPT0tTX1JFR0lTVEVSX0JVSUxUSU5fVFlQRSwgTEFOR19IT09LU19XUklURV9HTE9CQUxTKToKCU1vdmUgdG8gYy1vYmpjLWNvbW1vbi5oLgo=