ICAgICAgICAgICAgICAgICAgICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQVByb3h5IGhvdy10bwogICAgICAgICAgICAgICAgICAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbiAxLjcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWxseSB0YXJyZWF1CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMDE1LzEwLzEzCgoKMSkgSG93IHRvIGJ1aWxkIGl0Ci0tLS0tLS0tLS0tLS0tLS0tLQoKVGhpcyBpcyBhIGRldmVsb3BtZW50IHZlcnNpb24sIHNvIGl0IGlzIGV4cGVjdGVkIHRvIGJyZWFrIGZyb20gdGltZSB0byB0aW1lLAp0byBhZGQgYW5kIHJlbW92ZSBmZWF0dXJlcyB3aXRob3V0IHByaW9yIG5vdGlmaWNhdGlvbiBhbmQgaXQgc2hvdWxkIG5vdCBiZSB1c2VkCmluIHByb2R1Y3Rpb24uIElmIHlvdSBhcmUgbm90IHVzZWQgdG8gYnVpbGQgZnJvbSBzb3VyY2VzIG9yIGlmIHlvdSBhcmUgbm90IHVzZWQKdG8gZm9sbG93IHVwZGF0ZXMgdGhlbiBpdCBpcyByZWNvbW1lbmRlZCB0aGF0IGluc3RlYWQgeW91IHVzZSB0aGUgcGFja2FnZXMgcHJvdmlkZWQKYnkgeW91ciBzb2Z0d2FyZSB2ZW5kb3Igb3IgTGludXggZGlzdHJpYnV0aW9uLiBNb3N0IG9mIHRoZW0gYXJlIHRha2luZyB0aGlzIHRhc2sKc2VyaW91c2x5IGFuZCBhcmUgZG9pbmcgYSBnb29kIGpvYiBhdCBiYWNrcG9ydGluZyBpbXBvcnRhbnQgZml4ZXMuIElmIGZvciBhbnkKcmVhc29uIHlvdSdkIHByZWZlciBhIGRpZmZlcmVudCB2ZXJzaW9uIHRoYW4gdGhlIG9uZSBwYWNrYWdlZCBmb3IgeW91ciBzeXN0ZW0sCnlvdSB3YW50IHRvIGJlIGNlcnRhaW4gdG8gaGF2ZSBhbGwgdGhlIGZpeGVzIG9yIHRvIGdldCBzb21lIGNvbW1lcmNpYWwgc3VwcG9ydCwKb3RoZXIgY2hvaWNlcyBhcmUgYXZhaWxhYmxlIGF0IDoKCiAgICAgICAgICAgICAgICAgICAgICAgIGh0dHA6Ly93d3cuaGFwcm94eS5jb20vCgpUbyBidWlsZCBoYXByb3h5LCB5b3Ugd2lsbCBuZWVkIDoKICAtIEdOVSBtYWtlLiBOZWl0aGVyIFNvbGFyaXMgbm9yIE9wZW5CU0QncyBtYWtlIHdvcmsgd2l0aCB0aGUgR05VIE1ha2VmaWxlLgogICAgSWYgeW91IGdldCBtYW55IHN5bnRheCBlcnJvcnMgd2hlbiBydW5uaW5nICJtYWtlIiwgeW91IG1heSB3YW50IHRvIHJldHJ5CiAgICB3aXRoICJnbWFrZSIgd2hpY2ggaXMgdGhlIG5hbWUgY29tbW9ubHkgdXNlZCBmb3IgR05VIG1ha2Ugb24gQlNEIHN5c3RlbXMuCiAgLSBHQ0MgYmV0d2VlbiAyLjk1IGFuZCA0LjguIE90aGVycyBtYXkgd29yaywgYnV0IG5vdCB0ZXN0ZWQuCiAgLSBHTlUgbGQKCkFsc28sIHlvdSBtaWdodCB3YW50IHRvIGJ1aWxkIHdpdGggbGlicGNyZSBzdXBwb3J0LCB3aGljaCB3aWxsIHByb3ZpZGUgYSB2ZXJ5CmVmZmljaWVudCByZWdleCBpbXBsZW1lbnRhdGlvbiBhbmQgd2lsbCBhbHNvIGZpeCBzb21lIGJhZG5lc3Mgb24gU29sYXJpcycgb25lLgoKVG8gYnVpbGQgaGFwcm94eSwgeW91IGhhdmUgdG8gY2hvb3NlIHlvdXIgdGFyZ2V0IE9TIGFtb25nc3QgdGhlIGZvbGxvd2luZyBvbmVzCmFuZCBhc3NpZ24gaXQgdG8gdGhlIFRBUkdFVCB2YXJpYWJsZSA6CgogIC0gbGludXgyMiAgICAgZm9yIExpbnV4IDIuMgogIC0gbGludXgyNCAgICAgZm9yIExpbnV4IDIuNCBhbmQgYWJvdmUgKGRlZmF1bHQpCiAgLSBsaW51eDI0ZSAgICBmb3IgTGludXggMi40IHdpdGggc3VwcG9ydCBmb3IgYSB3b3JraW5nIGVwb2xsICg+IDAuMjEpCiAgLSBsaW51eDI2ICAgICBmb3IgTGludXggMi42IGFuZCBhYm92ZQogIC0gbGludXgyNjI4ICAgZm9yIExpbnV4IDIuNi4yOCwgMy54LCBhbmQgYWJvdmUgKGVuYWJsZXMgc3BsaWNlIGFuZCB0cHJveHkpCiAgLSBzb2xhcmlzICAgICBmb3IgU29sYXJpcyA4IG9yIDEwIChvdGhlcnMgdW50ZXN0ZWQpCiAgLSBmcmVlYnNkICAgICBmb3IgRnJlZUJTRCA1IHRvIDEwIChvdGhlcnMgdW50ZXN0ZWQpCiAgLSBuZXRic2QgICAgICBmb3IgTmV0QlNECiAgLSBvc3ggICAgICAgICBmb3IgTWFjIE9TL1gKICAtIG9wZW5ic2QgICAgIGZvciBPcGVuQlNEIDMuMSBhbmQgYWJvdmUKICAtIGFpeDUxICAgICAgIGZvciBBSVggNS4xCiAgLSBhaXg1MiAgICAgICBmb3IgQUlYIDUuMgogIC0gY3lnd2luICAgICAgZm9yIEN5Z3dpbgogIC0gZ2VuZXJpYyAgICAgZm9yIGFueSBvdGhlciBPUyBvciB2ZXJzaW9uLgogIC0gY3VzdG9tICAgICAgdG8gbWFudWFsbHkgYWRqdXN0IGV2ZXJ5IHNldHRpbmcKCllvdSBtYXkgYWxzbyBjaG9vc2UgeW91ciBDUFUgdG8gYmVuZWZpdCBmcm9tIHNvbWUgb3B0aW1pemF0aW9ucy4gVGhpcyBpcwpwYXJ0aWN1bGFybHkgaW1wb3J0YW50IG9uIFVsdHJhU3BhcmMgbWFjaGluZXMuIEZvciB0aGlzLCB5b3UgY2FuIGFzc2lnbgpvbmUgb2YgdGhlIGZvbGxvd2luZyBjaG9pY2VzIHRvIHRoZSBDUFUgdmFyaWFibGUgOgoKICAtIGk2ODYgZm9yIGludGVsIFBlbnRpdW1Qcm8sIFBlbnRpdW0gMiBhbmQgYWJvdmUsIEFNRCBBdGhsb24KICAtIGk1ODYgZm9yIGludGVsIFBlbnRpdW0sIEFNRCBLNiwgVklBIEMzLgogIC0gdWx0cmFzcGFyYyA6IFN1biBVbHRyYVNwYXJjIEkvSUkvSUlJL0lWIHByb2Nlc3NvcgogIC0gbmF0aXZlIDogdXNlIHRoZSBidWlsZCBtYWNoaW5lJ3Mgc3BlY2lmaWMgcHJvY2Vzc29yIG9wdGltaXphdGlvbnMuIFVzZSB3aXRoCiAgICBleHRyZW1lIGNhcmUsIGFuZCBuZXZlciBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKGtub3duIHRvIGJyZWFrKS4KICAtIGdlbmVyaWMgOiBhbnkgb3RoZXIgcHJvY2Vzc29yIG9yIG5vIENQVS1zcGVjaWZpYyBvcHRpbWl6YXRpb24uIChkZWZhdWx0KQoKQWx0ZXJuYXRpdmVseSwgeW91IG1heSBqdXN0IHNldCB0aGUgQ1BVX0NGTEFHUyB2YWx1ZSB0byB0aGUgb3B0aW1hbCBHQ0Mgb3B0aW9ucwpmb3IgeW91ciBwbGF0Zm9ybS4KCllvdSBtYXkgd2FudCB0byBidWlsZCBzcGVjaWZpYyB0YXJnZXQgYmluYXJpZXMgd2hpY2ggZG8gbm90IG1hdGNoIHlvdXIgbmF0aXZlCmNvbXBpbGVyJ3MgdGFyZ2V0LiBUaGlzIGlzIHBhcnRpY3VsYXJseSB0cnVlIG9uIDY0LWJpdCBzeXN0ZW1zIHdoZW4geW91IHdhbnQKdG8gYnVpbGQgYSAzMi1iaXQgYmluYXJ5LiBVc2UgdGhlIEFSQ0ggdmFyaWFibGUgZm9yIHRoaXMgcHVycG9zZS4gUmlnaHQgbm93Cml0IG9ubHkga25vd3MgYWJvdXQgYSBmZXcgeDg2IHZhcmlhbnRzIChpMzg2LGk0ODYsaTU4NixpNjg2LHg4Nl82NCksIHR3bwpnZW5lcmljIG9uZXMgKDMyLDY0KSBhbmQgc2V0cyAtbTMyLy1tNjQgYXMgd2VsbCBhcyAtbWFyY2g9PGFyY2g+IGFjY29yZGluZ2x5LgoKSWYgeW91ciBzeXN0ZW0gc3VwcG9ydHMgUENSRSAoUGVybCBDb21wYXRpYmxlIFJlZ3VsYXIgRXhwcmVzc2lvbnMpLCB0aGVuIHlvdQpyZWFsbHkgc2hvdWxkIGJ1aWxkIHdpdGggbGlicGNyZSB3aGljaCBpcyBiZXR3ZWVuIDIgYW5kIDEwIHRpbWVzIGZhc3RlciB0aGFuCm90aGVyIGxpYmMgaW1wbGVtZW50YXRpb25zLiBSZWdleCBhcmUgdXNlZCBmb3IgaGVhZGVyIHByb2Nlc3NpbmcgKGRlbGV0aW9uLApyZXdyaXRpbmcsIGFsbG93LCBkZW55KS4gVGhlIG9ubHkgaW5jb252ZW5pZW50IG9mIGxpYnBjcmUgaXMgdGhhdCBpdCBpcyBub3QKeWV0IHdpZGVseSBzcHJlYWQsIHNvIGlmIHlvdSBidWlsZCBmb3Igb3RoZXIgc3lzdGVtcywgeW91IG1pZ2h0IGdldCBpbnRvCnRyb3VibGUgaWYgdGhleSBkb24ndCBoYXZlIHRoZSBkeW5hbWljIGxpYnJhcnkuIEluIHRoaXMgc2l0dWF0aW9uLCB5b3Ugc2hvdWxkCnN0YXRpY2FsbHkgbGluayBsaWJwY3JlIGludG8gaGFwcm94eSBzbyB0aGF0IGl0IHdpbGwgbm90IGJlIG5lY2Vzc2FyeSB0bwppbnN0YWxsIGl0IG9uIHRhcmdldCBzeXN0ZW1zLiBBdmFpbGFibGUgYnVpbGQgb3B0aW9ucyBmb3IgUENSRSBhcmUgOgoKICAtIFVTRV9QQ1JFPTEgdG8gdXNlIGxpYnBjcmUsIGluIHdoYXRldmVyIGZvcm0gaXMgYXZhaWxhYmxlIG9uIHlvdXIgc3lzdGVtCiAgICAoc2hhcmVkIG9yIHN0YXRpYykKCiAgLSBVU0VfU1RBVElDX1BDUkU9MSB0byB1c2UgYSBzdGF0aWMgdmVyc2lvbiBvZiBsaWJwY3JlIGV2ZW4gaWYgdGhlIGR5bmFtaWMKICAgIG9uZSBpcyBhdmFpbGFibGUuIFRoaXMgd2lsbCBlbmhhbmNlIHBvcnRhYmlsaXR5LgoKICAtIHdpdGggbm8gb3B0aW9uLCB1c2UgeW91ciBPUyBsaWJjJ3Mgc3RhbmRhcmQgcmVnZXggaW1wbGVtZW50YXRpb24gKGRlZmF1bHQpLgogICAgV2FybmluZyEgZ3JvdXAgcmVmZXJlbmNlcyBvbiBTb2xhcmlzIHNlZW0gYnJva2VuLiBVc2Ugc3RhdGljLXBjcmUgd2hlbmV2ZXIKICAgIHBvc3NpYmxlLgoKSWYgeW91ciBzeXN0ZW0gZG9lc24ndCBwcm92aWRlIFBDUkUsIHlvdSBhcmUgZW5jb3VyYWdlZCB0byBkb3dubG9hZCBpdCBmcm9tCmh0dHA6Ly93d3cucGNyZS5vcmcvIGFuZCBidWlsZCBpdCB5b3Vyc2VsZiwgaXQncyBmYXN0IGFuZCBlYXN5LgoKUmVjZW50IHN5c3RlbXMgY2FuIHJlc29sdmUgSVB2NiBob3N0IG5hbWVzIHVzaW5nIGdldGFkZHJpbmZvKCkuIFRoaXMgcHJpbWl0aXZlCmlzIG5vdCBwcmVzZW50IGluIGFsbCBsaWJjcyBhbmQgZG9lcyBub3Qgd29yayBpbiBhbGwgb2YgdGhlbSBlaXRoZXIuIFN1cHBvcnQgaW4KZ2xpYmMgd2FzIGJyb2tlbiBiZWZvcmUgMi4zLiBTb21lIGVtYmVkZGVkIGxpYnMgbWF5IG5vdCBwcm9wZXJseSB3b3JrIGVpdGhlciwKdGh1cywgc3VwcG9ydCBpcyBkaXNhYmxlZCBieSBkZWZhdWx0LCBtZWFuaW5nIHRoYXQgc29tZSBob3N0IG5hbWVzIHdoaWNoIG9ubHkKcmVzb2x2ZSBhcyBJUHY2IGFkZHJlc3NlcyB3aWxsIG5vdCByZXNvbHZlIGFuZCBjb25maWdzIG1pZ2h0IGVtaXQgYW4gZXJyb3IKZHVyaW5nIHBhcnNpbmcuIElmIHlvdSBrbm93IHRoYXQgeW91ciBPUyBsaWJjIGhhcyByZWxpYWJsZSBzdXBwb3J0IGZvcgpnZXRhZGRyaW5mbygpLCB5b3UgY2FuIGFkZCBVU0VfR0VUQUREUklORk89MSBvbiB0aGUgbWFrZSBjb21tYW5kIGxpbmUgdG8gZW5hYmxlCml0LiBUaGlzIGlzIHRoZSByZWNvbW1lbmRlZCBvcHRpb24gZm9yIG1vc3QgTGludXggZGlzdHJvIHBhY2thZ2VycyBzaW5jZSBpdCdzCndvcmtpbmcgZmluZSBvbiBhbGwgcmVjZW50IG1haW5zdHJlYW0gZGlzdHJvcy4gSXQgaXMgYXV0b21hdGljYWxseSBlbmFibGVkIG9uClNvbGFyaXMgOCBhbmQgYWJvdmUsIGFzIGl0J3Mga25vd24gdG8gd29yay4KCkl0IGlzIHBvc3NpYmxlIHRvIGFkZCBuYXRpdmUgc3VwcG9ydCBmb3IgU1NMIHVzaW5nIHRoZSBHTlUgbWFrZWZpbGUsIGJ5IHBhc3NpbmcKIlVTRV9PUEVOU1NMPTEiIG9uIHRoZSBtYWtlIGNvbW1hbmQgbGluZS4gVGhlIGxpYnNzbCBhbmQgbGliY3J5cHRvIHdpbGwKYXV0b21hdGljYWxseSBiZSBsaW5rZWQgd2l0aCBoYXByb3h5LiBTb21lIHN5c3RlbXMgYWxzbyByZXF1aXJlIGxpYnosIHNvIGlmIHRoZQpidWlsZCBmYWlscyBkdWUgdG8gbWlzc2luZyBzeW1ib2xzIHN1Y2ggYXMgZGVmbGF0ZUluaXQoKSwgdGhlbiB0cnkgYWdhaW4gd2l0aAoiQURETElCPS1seiIuCgpZb3VyIGFyZSBzdHJvbmdseSBlbmNvdXJhZ2VkIHRvIGFsd2F5cyB1c2UgYW4gdXAtdG8tZGF0ZSB2ZXJzaW9uIG9mIE9wZW5TU0wsIGFzCmZvdW5kIG9uIGh0dHBzOi8vd3d3Lm9wZW5zc2wub3JnLyBhcyB2dWxuZXJhYmlsaXRpZXMgYXJlIG9jY2FzaW9uYWxseSBmb3VuZCBhbmQKeW91IGRvbid0IHdhbnQgdGhlbSBvbiB5b3VyIHN5c3RlbXMuIEhBUHJveHkgaXMga25vd24gdG8gYnVpbGQgY29ycmVjdGx5IG9uIGFsbApjdXJyZW50bHkgc3VwcG9ydGVkIGJyYW5jaGVzICgwLjkuOCwgMS4wLjAsIDEuMC4xIGFuZCAxLjAuMiBhdCB0aGUgdGltZSBvZgp3cml0aW5nKS4gQnJhbmNoIDEuMC4yIGlzIHJlY29tbWVuZGVkIGZvciB0aGUgcmljaGVzdCBmZWF0dXJlcy4KClRvIGxpbmsgT3BlblNTTCBzdGF0aWNhbGx5IGFnYWluc3QgaGFwcm94eSwgYnVpbGQgT3BlblNTTCB3aXRoIHRoZSBuby1zaGFyZWQKa2V5d29yZCBhbmQgaW5zdGFsbCBpdCB0byBhIGxvY2FsIGRpcmVjdG9yeSwgc28geW91ciBzeXN0ZW0gaXMgbm90IGFmZmVjdGVkIDoKCiAgICAkIGV4cG9ydCBTVEFUSUNMSUJTU0w9L3RtcC9zdGF0aWNsaWJzc2wKICAgICQgLi9jb25maWcgLS1wcmVmaXg9JFNUQVRJQ0xJQlNTTCBuby1zaGFyZWQKICAgICQgbWFrZSAmJiBtYWtlIGluc3RhbGxfc3cKCldoZW4gYnVpbGRpbmcgaGFwcm94eSwgcGFzcyB0aGF0IHBhdGggdmlhIFNTTF9JTkMgYW5kIFNTTF9MSUIgdG8gbWFrZSBhbmQKaW5jbHVkZSBhZGRpdGlvbmFsIGxpYnMgd2l0aCBBRERMSUIgaWYgbmVlZGVkIChpbiB0aGlzIGNhc2UgZm9yIGV4YW1wbGUgbGliZGwpOgoKICAgICQgbWFrZSBUQVJHRVQ9bGludXgyNiBVU0VfT1BFTlNTTD0xIFNTTF9JTkM9JFNUQVRJQ0xJQlNTTC9pbmNsdWRlIFNTTF9MSUI9JFNUQVRJQ0xJQlNTTC9saWIgQURETElCPS1sZGwKCkl0IGlzIGFsc28gcG9zc2libGUgdG8gaW5jbHVkZSBuYXRpdmUgc3VwcG9ydCBmb3IgemxpYiB0byBiZW5lZml0IGZyb20gSFRUUApjb21wcmVzc2lvbi4gRm9yIHRoaXMsIHBhc3MgIlVTRV9aTElCPTEiIG9uIHRoZSAibWFrZSIgY29tbWFuZCBsaW5lIGFuZCBlbnN1cmUKdGhhdCB6bGliIGlzIHByZXNlbnQgb24gdGhlIHN5c3RlbS4gQWx0ZXJuYXRpdmVseSBpdCBpcyBwb3NzaWJsZSB0byB1c2UgbGlic2x6CmZvciBhIGZhc3RlciwgbWVtb3J5IGxlc3MsIGJ1dCBzbGlnaHRseSBsZXNzIGVmZmljaWVudCBjb21wcmVzc2lvbiwgYnkgcGFzc2luZwoiVVNFX1NMWj0xIi4KClpsaWIgaXMgY29tbW9ubHkgZm91bmQgb24gbW9zdCBzeXN0ZW1zLCBvdGhlcndpc2UgdXBkYXRlcyBjYW4gYmUgcmV0cmlldmVkIGZyb20KaHR0cDovL3d3dy56bGliLm5ldC8uIEl0IGlzIGVhc3kgYW5kIGZhc3QgdG8gYnVpbGQuIExpYnNseiBjYW4gYmUgZG93bmxvYWRlZApmcm9tIGh0dHA6Ly8xd3QuZXUvcHJvamVjdHMvbGlic2x6LyBhbmQgaXMgZXZlbiBlYXNpZXIgdG8gYnVpbGQuCgpCeSBkZWZhdWx0LCB0aGUgREVCVUcgdmFyaWFibGUgaXMgc2V0IHRvICctZycgdG8gZW5hYmxlIGRlYnVnIHN5bWJvbHMuIEl0IGlzCm5vdCB3aXNlIHRvIGRpc2FibGUgaXQgb24gdW5jb21tb24gc3lzdGVtcywgYmVjYXVzZSBpdCdzIG9mdGVuIHRoZSBvbmx5IHdheSB0bwpnZXQgYSBjb21wbGV0ZSBjb3JlIHdoZW4geW91IG5lZWQgb25lLiBPdGhlcndpc2UsIHlvdSBjYW4gc2V0IERFQlVHIHRvICctcycgdG8Kc3RyaXAgdGhlIGJpbmFyeS4KCkZvciBleGFtcGxlLCBJIHVzZSB0aGlzIHRvIGJ1aWxkIGZvciBTb2xhcmlzIDggOgoKICAgICQgbWFrZSBUQVJHRVQ9c29sYXJpcyBDUFU9dWx0cmFzcGFyYyBVU0VfU1RBVElDX1BDUkU9MQoKQW5kIEkgYnVpbGQgaXQgdGhpcyB3YXkgb24gT3BlbkJTRCBvciBGcmVlQlNEIDoKCiAgICAkIGdtYWtlIFRBUkdFVD1mcmVlYnNkIFVTRV9QQ1JFPTEgVVNFX09QRU5TU0w9MSBVU0VfWkxJQj0xCgpBbmQgb24gYSBjbGFzc2ljIExpbnV4IHdpdGggU1NMIGFuZCBaTElCIHN1cHBvcnQgKGVnOiBSZWQgSGF0IDUueCkgOgoKICAgICQgbWFrZSBUQVJHRVQ9bGludXgyNiBVU0VfUENSRT0xIFVTRV9PUEVOU1NMPTEgVVNFX1pMSUI9MQoKQW5kIG9uIGEgcmVjZW50IExpbnV4ID49IDIuNi4yOCB3aXRoIFNTTCBhbmQgWkxJQiBzdXBwb3J0IDoKCiAgICAkIG1ha2UgVEFSR0VUPWxpbnV4MjYyOCBVU0VfUENSRT0xIFVTRV9PUEVOU1NMPTEgVVNFX1pMSUI9MQoKSW4gb3JkZXIgdG8gYnVpbGQgYSAzMi1iaXQgYmluYXJ5IG9uIGFuIHg4Nl82NCBMaW51eCBzeXN0ZW0gd2l0aCBTU0wgc3VwcG9ydAp3aXRob3V0IHN1cHBvcnQgZm9yIGNvbXByZXNzaW9uIGJ1dCB3aGVuIE9wZW5TU0wgcmVxdWlyZXMgWkxJQiBhbnl3YXkgOgoKICAgICQgbWFrZSBUQVJHRVQ9bGludXgyNiBBUkNIPWkzODYgVVNFX09QRU5TU0w9MSBBRERMSUI9LWx6CgpUaGUgU1NMIHN0YWNrIHN1cHBvcnRzIHNlc3Npb24gY2FjaGUgc3luY2hyb25pemF0aW9uIGJldHdlZW4gYWxsIHJ1bm5pbmcKcHJvY2Vzc2VzLiBUaGlzIGludm9sdmVzIHNvbWUgYXRvbWljIG9wZXJhdGlvbnMgYW5kIHN5bmNocm9uaXphdGlvbiBvcGVyYXRpb25zCndoaWNoIGNvbWUgaW4gbXVsdGlwbGUgZmxhdm9ycyBkZXBlbmRpbmcgb24gdGhlIHN5c3RlbSBhbmQgYXJjaGl0ZWN0dXJlIDoKCiAgQXRvbWljIG9wZXJhdGlvbnMgOgogICAgLSBpbnRlcm5hbCBhc3NlbWJsZXIgdmVyc2lvbnMgZm9yIHg4Ni94ODZfNjQgYXJjaGl0ZWN0dXJlcwoKICAgIC0gZ2NjIGJ1aWx0aW5zIGZvciBvdGhlciBhcmNoaXRlY3R1cmVzLiBTb21lIGFyY2hpdGVjdHVyZXMgbWlnaHQgbm90CiAgICAgIGJlIGZ1bGx5IHN1cHBvcnRlZCBvciBtaWdodCByZXF1aXJlIGEgbW9yZSByZWNlbnQgdmVyc2lvbiBvZiBnY2MuCiAgICAgIElmIHlvdXIgYXJjaGl0ZWN0dXJlIGlzIG5vdCBzdXBwb3J0ZWQsIHlvdSB3aWxseSBoYXZlIHRvIGVpdGhlciB1c2UKICAgICAgcHRocmVhZCBpZiBzdXBwb3J0ZWQsIG9yIHRvIGRpc2FibGUgdGhlIHNoYXJlZCBjYWNoZS4KCiAgICAtIHB0aHJlYWQgKHBvc2l4IHRocmVhZHMpLiBQdGhyZWFkcyBhcmUgdmVyeSBjb21tb24gYnV0IGludGVyLXByb2Nlc3MKICAgICAgc3VwcG9ydCBpcyBub3QgdGhhdCBjb21tb24sIGFuZCBzb21lIG9sZGVyIG9wZXJhdGluZyBzeXN0ZW1zIGRpZCBub3QKICAgICAgcmVwb3J0IGFuIGVycm9yIHdoZW4gZW5hYmxpbmcgbXVsdGktcHJvY2VzcyBtb2RlLCBzbyB0aGV5IHVzZWQgdG8KICAgICAgc2lsZW50bHkgZmFpbCwgcG9zc2libHkgY2F1c2luZyBjcmFzaGVzLiBMaW51eCdzIGltcGxlbWVudGF0aW9uIGlzCiAgICAgIGZpbmUuIE9wZW5CU0QgZG9lc24ndCBzdXBwb3J0IHRoZW0gYW5kIGRvZXNuJ3QgYnVpbGQuIEZyZWVCU0QgOSBidWlsZHMKICAgICAgYW5kIHJlcG9ydHMgYW4gZXJyb3IgYXQgcnVudGltZSwgd2hpbGUgY2VydGFpbiBvbGRlciB2ZXJzaW9ucyBtaWdodAogICAgICBzaWxlbnRseSBmYWlsLiBQdGhyZWFkcyBhcmUgZW5hYmxlZCB1c2luZyBVU0VfUFRIUkVBRF9QU0hBUkVEPTEuCgogIFN5bmNocm9uaXphdGlvbiBvcGVyYXRpb25zIDoKICAgIC0gaW50ZXJuYWwgc3BpbmxvY2sgOiB0aGlzIG1vZGUgaXMgT1MtaW5kZXBlbmRhbnQsIGxpZ2h0IGJ1dCB3aWxsIG5vdAogICAgICBzY2FsZSB3ZWxsIHRvIG1hbnkgcHJvY2Vzc2VzLiBIb3dldmVyLCBhY2Nlc3NlcyB0byB0aGUgc2Vzc2lvbiBjYWNoZQogICAgICBhcmUgcmFyZSBlbm91Z2ggdGhhdCB0aGlzIG1vZGUgY291bGQgY2VydGFpbmx5IGFsd2F5cyBiZSB1c2VkLiBUaGlzCiAgICAgIGlzIHRoZSBkZWZhdWx0IG1vZGUuCgogICAgLSBGdXRleGVzLCB3aGljaCBhcmUgTGludXgtc3BlY2lmaWMgaGlnaGx5IHNjYWxhYmxlIGxpZ2h0IHdlaWdodCBtdXRleGVzCiAgICAgIGltcGxlbWVudGVkIGluIHVzZXItc3BhY2Ugd2l0aCBzb21lIGxpbWl0ZWQgYXNzaXN0YW5jZSBmcm9tIHRoZSBrZXJuZWwuCiAgICAgIFRoaXMgaXMgdGhlIGRlZmF1bHQgb24gTGludXggMi42IGFuZCBhYm92ZSBhbmQgaXMgZW5hYmxlZCBieSBwYXNzaW5nCiAgICAgIFVTRV9GVVRFWD0xCgogICAgLSBwdGhyZWFkIChwb3NpeCB0aHJlYWRzKS4gU2VlIGFib3ZlLgoKSWYgbm9uZSBvZiB0aGVzZSBtZWNoYW5pc21zIGlzIHN1cHBvcnRlZCBieSB5b3VyIHBsYXRmb3JtLCB5b3UgbWF5IG5lZWQgdG8KYnVpbGQgd2l0aCBVU0VfUFJJVkFURV9DQUNIRT0xIHRvIHRvdGFsbHkgZGlzYWJsZSBTU0wgY2FjaGUgc2hhcmluZy4gVGhlbgppdCBpcyBiZXR0ZXIgbm90IHRvIHJ1biBTU0wgb24gbXVsdGlwbGUgcHJvY2Vzc2VzLgoKSWYgeW91IG5lZWQgdG8gcGFzcyBvdGhlciBkZWZpbmVzLCBpbmNsdWRlcywgbGlicmFyaWVzLCBldGMuLi4gdGhlbiBwbGVhc2UKY2hlY2sgdGhlIE1ha2VmaWxlIHRvIHNlZSB3aGljaCBvbmVzIHdpbGwgYmUgYXZhaWxhYmxlIGluIHlvdXIgY2FzZSwgYW5kCnVzZSB0aGUgVVNFXyogdmFyaWFibGVzIGluIHRoZSBNYWtlZmlsZS4KCkFJWCA1LjMgaXMga25vd24gdG8gd29yayB3aXRoIHRoZSBnZW5lcmljIHRhcmdldC4gSG93ZXZlciwgZm9yIHRoZSBiaW5hcnkgdG8KYWxzbyBydW4gb24gNS4yIG9yIGVhcmxpZXIsIHlvdSBuZWVkIHRvIGJ1aWxkIHdpdGggREVGSU5FPSItRF9NU0dRU1VQUE9SVCIsCm90aGVyd2lzZSBfX2ZkX3NlbGVjdCgpIHdpbGwgYmUgdXNlZCB3aGlsZSBub3QgYmVpbmcgcHJlc2VudCBpbiB0aGUgbGliYywgYnV0CnRoaXMgaXMgZWFzaWx5IGFkZHJlc3NlZCB1c2luZyB0aGUgImFpeDUyIiB0YXJnZXQuIElmIHlvdSBnZXQgYnVpbGQgZXJyb3JzCmJlY2F1c2Ugb2Ygc3RyYW5nZSBzeW1ib2xzIG9yIHNlY3Rpb24gbWlzbWF0Y2hlcywgc2ltcGx5IHJlbW92ZSAtZyBmcm9tCkRFQlVHX0NGTEFHUy4KCllvdSBjYW4gZWFzaWx5IGRlZmluZSB5b3VyIG93biB0YXJnZXQgd2l0aCB0aGUgR05VIE1ha2VmaWxlLiBVbmtub3duIHRhcmdldHMKYXJlIHByb2Nlc3NlZCB3aXRoIG5vIGRlZmF1bHQgb3B0aW9uIGV4Y2VwdCBVU0VfUE9MTD1kZWZhdWx0LiBTbyB5b3UgY2FuIHZlcnkKd2VsbCB1c2UgdGhhdCBwcm9wZXJ0eSB0byBkZWZpbmUgeW91ciBvd24gc2V0IG9mIG9wdGlvbnMuIFVTRV9QT0xMIGNhbiBldmVuIGJlCmRpc2FibGVkIGJ5IHNldHRpbmcgVVNFX1BPTEw9IiIuIEZvciBleGFtcGxlIDoKCiAgICAkIGdtYWtlIFRBUkdFVD10aW55IFVTRV9QT0xMPSIiIFRBUkdFVF9DRkxBR1M9LWZvbWl0LWZyYW1lLXBvaW50ZXIKCgoxLjEpIERldmljZUF0bGFzIERldmljZSBEZXRlY3Rpb24KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpJbiBvcmRlciB0byBhZGQgRGV2aWNlQXRsYXMgRGV2aWNlIERldGVjdGlvbiBzdXBwb3J0LCB5b3Ugd291bGQgbmVlZCB0byBkb3dubG9hZAp0aGUgQVBJIHNvdXJjZSBjb2RlIGZyb20gaHR0cHM6Ly9kZXZpY2VhdGxhcy5jb20vZGV2aWNlYXRsYXMtaGFwcm94eS1tb2R1bGUgYW5kCm9uY2UgZXh0cmFjdGVkIDoKCiAgICAkIG1ha2UgVEFSR0VUPTx0YXJnZXQ+IFVTRV9QQ1JFPTEgVVNFX0RFVklDRUFUTEFTPTEgREVWSUNFQVRMQVNfU1JDPTxwYXRoIHRvIHRoZSBBUEkgcm9vdCBmb2xkZXI+CgpPcHRpb25hbGx5IERFVklDRUFUTEFTX0lOQyBhbmQgREVWSUNFQVRMQVNfTElCIG1heSBiZSBzZXQgdG8gb3ZlcnJpZGUgdGhlIHBhdGgKdG8gdGhlIGluY2x1ZGUgZmlsZXMgYW5kIGxpYnJhcmllcyByZXNwZWN0aXZlbHkgaWYgdGhleSdyZSBub3QgaW4gdGhlIHNvdXJjZQpkaXJlY3RvcnkuCgpUaGVzZSBhcmUgc3VwcG9ydGVkIERldmljZUF0bGFzIGRpcmVjdGl2ZXMgKHNlZSBkb2MvY29uZmlndXJhdGlvbi50eHQpIDoKICAtIGRldmljZWF0bGFzLWpzb24tZmlsZSA8cGF0aCB0byB0aGUgRGV2aWNlQXRsYXMgSlNPTiBkYXRhIGZpbGU+LgogIC0gZGV2aWNlYXRsYXMtbG9nLWxldmVsIDxudW1iZXI+ICgwIHRvIDMsIGxldmVsIG9mIGluZm9ybWF0aW9uIHJldHVybmVkIGJ5CiAgICB0aGUgQVBJLCAwIGJ5IGRlZmF1bHQpLgogIC0gZGV2aWNlYXRsYXMtcHJvcGVydHktc2VwYXJhdG9yIDxjaGFyYWN0ZXI+IChjaGFyYWN0ZXIgdXNlZCB0byBzZXBhcmF0ZSB0aGUKICAgIHByb3BlcnRpZXMgcHJvZHVjZWQgYnkgdGhlIEFQSSwgfCBieSBkZWZhdWx0KS4KClNhbXBsZSBjb25maWd1cmF0aW9uIDoKCiAgICBnbG9iYWwKCWRldmljZWF0bGFzLWpzb24tZmlsZSA8cGF0aCB0byBqc29uIGZpbGU+CgogICAgLi4uCiAgICBmcm9udGVuZAoJYmluZCAqOjg4ODEKCWRlZmF1bHRfYmFja2VuZCBzZXJ2ZXJzCgpUaGVyZSBhcmUgdHdvIGRpc3RpbmN0IG1ldGhvZHMgYXZhaWxhYmxlLCBvbmUgd2hpY2ggbGV2ZXJhZ2VzIGFsbCBIVFRQIGhlYWRlcnMKYW5kIG9uZSB3aGljaCB1c2VzIG9ubHkgYSBzaW5nbGUgSFRUUCBoZWFkZXIgZm9yIHRoZSBkZXRlY3Rpb24uIFRoZSBmb3JtZXIKbWV0aG9kIGlzIGhpZ2hseSByZWNvbW1lbmRlZCBhbmQgbW9yZSBhY2N1cmF0ZS4KCgpBbGwgSFRUUCBoZWFkZXJzCgoKICAgICAgaHR0cC1yZXF1ZXN0IHNldC1oZWFkZXIgWC1EZXZpY2VBdGxhcy1EYXRhICVbZGEtY3N2LWZldGNoKHByaW1hcnlIYXJkd2FyZVR5cGUsb3NOYW1lLG9zVmVyc2lvbixicm93c2VyTmFtZSxicm93c2VyVmVyc2lvbildCgoKU2luZ2xlIEhUVFAgaGVhZGVyIChlLmcuIFVzZXItQWdlbnQpCgoKICAgICAgaHR0cC1yZXF1ZXN0IHNldC1oZWFkZXIgWC1EZXZpY2VBdGxhcy1EYXRhICVbcmVxLmZoZHIoVXNlci1BZ2VudCksZGEtY3N2LWNvbnYocHJpbWFyeUhhcmR3YXJlVHlwZSxvc05hbWUsb3NWZXJzaW9uLGJyb3dzZXJOYW1lLGJyb3dzZXJWZXJzaW9uKV0KCgpQbGVhc2UgZmluZCBtb3JlIGluZm9ybWF0aW9uIGFib3V0IERldmljZUF0bGFzIGFuZCB0aGUgZGV0ZWN0aW9uIG1ldGhvZHMgYXQgaHR0cHM6Ly9kZXZpY2VhdGxhcy5jb20vcmVzb3VyY2VzIC4KCjEuMikgNTFEZWdyZWVzIERldmljZSBEZXRlY3Rpb24KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKWW91IGNhbiBhbHNvIGluY2x1ZGUgNTFEZWdyZWVzIGZvciBpbmJ1aWx0IGRldmljZSBkZXRlY3Rpb24gZW5hYmxpbmcgYXR0cmlidXRlcwpzdWNoIGFzIHNjcmVlbiBzaXplIChwaHlzaWNhbCAmIHBpeGVscyksIHN1cHBvcnRlZCBpbnB1dCBtZXRob2RzLCByZWxlYXNlIGRhdGUsCmhhcmR3YXJlIHZlbmRvciBhbmQgbW9kZWwsIGJyb3dzZXIgaW5mb3JtYXRpb24sIGFuZCBkZXZpY2UgcHJpY2UgYW1vbmcgbWFueQpvdGhlcnMuIFN1Y2ggaW5mb3JtYXRpb24gY2FuIGJlIHVzZWQgdG8gaW1wcm92ZSB0aGUgdXNlciBleHBlcmllbmNlIG9mIGEgd2ViCnNpdGUgYnkgdGFpbG9yaW5nIHRoZSBwYWdlIGNvbnRlbnQsIGxheW91dCBhbmQgYnVzaW5lc3MgcHJvY2Vzc2VzIHRvIHRoZQpwcmVjaXNlIGNoYXJhY3RlcmlzdGljcyBvZiB0aGUgZGV2aWNlLiBTdWNoIGN1c3RvbWlzYXRpb25zIGltcHJvdmUgcHJvZml0IGJ5Cm1ha2luZyBpdCBlYXNpZXIgZm9yIGN1c3RvbWVycyB0byBnZXQgdG8gdGhlIGluZm9ybWF0aW9uIG9yIHNlcnZpY2VzIHRoZXkKbmVlZC4gQXR0cmlidXRlcyBvZiB0aGUgZGV2aWNlIG1ha2luZyBhIHdlYiByZXF1ZXN0IGNhbiBiZSBhZGRlZCB0byBIVFRQCmhlYWRlcnMgYXMgY29uZmlndXJhYmxlIHBhcmFtZXRlcnMuCgpJbiBvcmRlciB0byBlbmFibGUgNTFEZWdyZWVzIGRvd25sb2FkIHRoZSA1MURlZ3JlZXMgc291cmNlIGNvZGUgZnJvbSB0aGUKb2ZmaWNpYWwgZ2l0aHViIHJlcG9zaXRvcnkgOgoKICAgIGdpdCBjbG9uZSBodHRwczovL2dpdGh1Yi5jb20vNTFEZWdyZWVzL0RldmljZS1EZXRlY3Rpb24KCnRoZW4gcnVuICdtYWtlJyB3aXRoIFVTRV81MURFR1JFRVMgYW5kIDUxREVHUkVFU19TUkMgc2V0LiBCb3RoIDUxREVHUkVFU19JTkMKYW5kIDUxREVHUkVFU19MSUIgbWF5IGFkZGl0aW9uYWxseSBiZSB1c2VkIHRvIGZvcmNlIHNwZWNpZmljIGRpZmZlcmVudCBwYXRocwpmb3IgLm8gYW5kIC5oLCBidXQgd2lsbCBkZWZhdWx0IHRvIDUxREVHUkVFU19TUkMuIE1ha2Ugc3VyZSB0byByZXBsYWNlCic1MURfUkVQT19QQVRIJyB3aXRoIHRoZSBwYXRoIHRvIHRoZSA1MURlZ3JlZXMgcmVwb3NpdG9yeS4KCjUxRGVncmVlcyBwcm92aWRlIDIgZGlmZmVyZW50IGRldGVjdGlvbiBhbGdvcml0aG1zOgoKICAgIDEuIFBhdHRlcm4gLSBiYWxhbmNlcyBtYWluIG1lbW9yeSB1c2FnZSBhbmQgQ1BVLgogICAgMi4gVHJpZSAtIGEgdmVyeSBoaWdoIHBlcmZvcm1hbmNlIGRldGVjdGlvbiBzb2x1dGlvbiB3aGljaCB1c2VzIG1vcmUgbWFpbgogICAgICAgbWVtb3J5IHRoYW4gUGF0dGVybi4KClRvIG1ha2Ugd2l0aCA1MURlZ3JlZXMgUGF0dGVybiBhbGdvcml0aG0gdXNlIHRoZSBmb2xsb3dpbmcgY29tbWFuZCBsaW5lLgoKICAgICQgbWFrZSBUQVJHRVQ9bGludXgyNiBVU0VfNTFERUdSRUVTPTEgNTFERUdSRUVTX1NSQz0nNTFEX1JFUE9fUEFUSCcvc3JjL3BhdHRlcm4KClRvIHVzZSB0aGUgNTFEZWdyZWVzIFRyaWUgYWxnb3JpdGhtIHVzZSB0aGUgZm9sbG93aW5nIGNvbW1hbmQgbGluZS4KCiAgICAkIG1ha2UgVEFSR0VUPWxpbnV4MjYgVVNFXzUxREVHUkVFUz0xIDUxREVHUkVFU19TUkM9JzUxRF9SRVBPX1BBVEgnL3NyYy90cmllCgpBIGRhdGEgZmlsZSBjb250YWluaW5nIGluZm9ybWF0aW9uIGFib3V0IGRldmljZXMsIGJyb3dzZXJzLCBvcGVyYXRpbmcgc3lzdGVtcwphbmQgdGhlaXIgYXNzb2NpYXRlZCBzaWduYXR1cmVzIGlzIHRoZW4gbmVlZGVkLiA1MURlZ3JlZXMgcHJvdmlkZSBhIGZyZWUKZGF0YWJhc2Ugd2l0aCBHaXRodWIgcmVwbyBmb3IgdGhpcyBwdXJwb3NlLiBUaGVzZSBmcmVlIGRhdGEgZmlsZXMgYXJlIGxvY2F0ZWQKaW4gJzUxRF9SRVBPX1BBVEgnL2RhdGEgd2l0aCB0aGUgZXh0ZW5zaW9ucyAuZGF0IGZvciBQYXR0ZXJuIGRhdGEgYW5kIC50cmllIGZvcgpUcmllIGRhdGEuCgpUaGUgY29uZmlndXJhdGlvbiBmaWxlIG5lZWRzIHRvIHNldCB0aGUgZm9sbG93aW5nIHBhcmFtZXRlcnM6CgogICAgNTFkZWdyZWVzLWRhdGEtZmlsZSAgICAgICAgICAgcGF0aCB0byB0aGUgUGF0dGVybiBvciBUcmllIGRhdGEgZmlsZQogICAgNTFkZWdyZWVzLXByb3BlcnR5LW5hbWUtbGlzdCAgbGlzdCBvZiA1MURlZ3JlZXMgcHJvcGVydGllcyB0byBkZXRlY3QKICAgIDUxZGVncmVlcy1wcm9wZXJ0eS1zZXBhcmF0b3IgIHNlcGFyYXRvciB0byB1c2UgYmV0d2VlbiB2YWx1ZXMKICAgIDUxZGVncmVlcy1jYWNoZS1zaXplICAgICAgICAgIExSVS1iYXNlZCBjYWNoZSBzaXplIChkaXNhYmxlZCBieSBkZWZhdWx0KQoKVGhlIGZvbGxvd2luZyBpcyBhbiBleGFtcGxlIG9mIHRoZSBzZXR0aW5ncyBmb3IgUGF0dGVybi4KCiAgICA1MWRlZ3JlZXMtZGF0YS1maWxlICc1MURfUkVQT19QQVRIJy9kYXRhLzUxRGVncmVlcy1MaXRlVjMuMi5kYXQKICAgIDUxZGVncmVlcy1wcm9wZXJ0eS1uYW1lLWxpc3QgSXNUYWJsZXQgRGV2aWNlVHlwZSBJc01vYmlsZQogICAgNTFkZWdyZWVzLXByb3BlcnR5LXNlcGFyYXRvciAsCiAgICA1MWRlZ3JlZXMtY2FjaGUtc2l6ZSAxMDAwMAoKSEFQcm94eSBuZWVkcyBhIHdheSB0byBwYXNzIGRldmljZSBpbmZvcm1hdGlvbiB0byB0aGUgYmFja2VuZCBzZXJ2ZXJzLiBUaGlzIGlzCmRvbmUgYnkgdXNpbmcgdGhlIDUxZCBjb252ZXJ0ZXIgb3IgZmV0Y2ggbWV0aG9kLCB3aGljaCBpbnRlcmNlcHRzIHRoZSBIVFRQCmhlYWRlcnMgYW5kIGNyZWF0ZXMgc29tZSBuZXcgaGVhZGVycy4gVGhpcyBpcyBjb250cm9sbGVkIGluIHRoZSBmcm9udGVuZApodHRwLWluIHNlY3Rpb24uCgpUaGUgZm9sbG93aW5nIGlzIGFuIGV4YW1wbGUgd2hpY2ggYWRkcyB0d28gbmV3IEhUVFAgaGVhZGVycyBwcmVmaXhlZCBYLTUxRC0KCiAgICBmcm9udGVuZCBodHRwLWluCiAgICAgICAgYmluZCAqOjgwODEKICAgICAgICBkZWZhdWx0X2JhY2tlbmQgc2VydmVycwogICAgICAgIGh0dHAtcmVxdWVzdCBzZXQtaGVhZGVyIFgtNTFELURldmljZVR5cGVNb2JpbGVUYWJsZXQgJVs1MWQuYWxsKERldmljZVR5cGUsSXNNb2JpbGUsSXNUYWJsZXQpXQogICAgICAgIGh0dHAtcmVxdWVzdCBzZXQtaGVhZGVyIFgtNTFELVRhYmxldCAlWzUxZC5hbGwoSXNUYWJsZXQpXQoKSGVyZSwgdHdvIGhlYWRlcnMgYXJlIGNyZWF0ZWQgd2l0aCA1MURlZ3JlZXMgZGF0YSwgWC01MUQtRGV2aWNlVHlwZU1vYmlsZVRhYmxldAphbmQgWC01MUQtVGFibGV0LiBBbnkgbnVtYmVyIG9mIGhlYWRlcnMgY2FuIGJlIGNyZWF0ZWQgdGhpcyB3YXkgYW5kIGNhbiBiZQpuYW1lZCBhbnl0aGluZy4gNTFkLmFsbCggKSBpbnZva2VzIHRoZSA1MWRlZ3JlZXMgZmV0Y2guIEl0IGNhbiBiZSBwYXNzZWQgdXAgdG8KZml2ZSBwcm9wZXJ0eSBuYW1lcyBvZiB2YWx1ZXMgdG8gcmV0dXJuLiBWYWx1ZXMgd2lsbCBiZSByZXR1cm5lZCBpbiB0aGUgc2FtZQpvcmRlciwgc2VwZXJhdGVkIGJ5IHRoZSA1MS1kZWdyZWVzLXByb3BlcnR5LXNlcGFyYXRvciBjb25maWd1cmVkIGVhcmxpZXIuIElmIGEKcHJvcGVydHkgbmFtZSBjYW4ndCBiZSBmb3VuZCB0aGUgdmFsdWUgJ05vRGF0YScgaXMgcmV0dXJuZWQgaW5zdGVhZC4KCkluIGFkZGl0aW9uIHRvIHRoZSBkZXZpY2UgcHJvcGVydGllcyB0aHJlZSBhZGRpdGlvbmFsIHByb3BlcnRpZXMgcmVsYXRlZCB0byB0aGUKdmFsaWRpdHkgb2YgdGhlIHJlc3VsdCBjYW4gYmUgcmV0dXJuZWQgd2hlbiB1c2VkIHdpdGggdGhlIFBhdHRlcm4gbWV0aG9kLiBUaGUKZm9sbG93aW5nIGV4YW1wbGUgc2hvd3MgaG93IE1ldGhvZCwgRGlmZmVyZW5jZSBhbmQgUmFuayBjb3VsZCBiZSBpbmNsdWRlZCBhcyBvbmUKbmV3IEhUVFAgaGVhZGVyIFgtNTFELVN0YXRzLgoKICAgICAgICBodHRwLXJlcXVlc3Qgc2V0LWhlYWRlciBYLTUxRC1TdGF0cyAlWzUxZC5hbGwoTWV0aG9kLERpZmZlcmVuY2UsUmFuayldCgpUaGVzZSB2YWx1ZXMgaW5kaWNhdGUgaG93IGNvbmZpZGVudCA1MURlZ3JlZXMgaXMgaW4gdGhlIHJlc3VsdCB0aGF0IHRoYXQgd2FzCnJldHVybmVkLiBNb3JlIGluZm9ybWF0aW9uIGlzIGF2YWlsYWJsZSBvbiB0aGUgNTFEZWdyZWVzIHdlYiBzaXRlIGF0OgoKICAgIGh0dHBzOi8vNTFkZWdyZWVzLmNvbS9zdXBwb3J0L2RvY3VtZW50YXRpb24vcGF0dGVybgoKVGhlIGFib3ZlIDUxZC5hbGwgZmV0Y2ggbWV0aG9kIHVzZXMgYWxsIGF2YWlsYWJsZSBIVFRQIGhlYWRlcnMgZm9yIGRldGVjdGlvbi4gQQptb2Rlc3QgcGVyZm9ybWFuY2UgaW1wcm92ZW1lbnQgY2FuIGJlIG9idGFpbmVkIGJ5IG9ubHkgcGFzc2luZyBvbmUgSFRUUCBoZWFkZXIKdG8gdGhlIGRldGVjdGlvbiBtZXRob2Qgd2l0aCB0aGUgNTFkLnNpbmdsZSBjb252ZXJ0ZXIuIFRoZSBmb2xsb3dpbmcgZXhhbXBsZQp1c2VzIHRoZSBVc2VyLUFnZW50IEhUVFAgaGVhZGVyIG9ubHkgZm9yIGRldGVjdGlvbi4KCiAgICAgICAgaHR0cC1yZXF1ZXN0IHNldC1oZWFkZXIgWC01MUQtRGV2aWNlVHlwZU1vYmlsZVRhYmxldCAlW3JlcS5maGRyKFVzZXItQWdlbnQpLDUxZC5zaW5nbGUoRGV2aWNlVHlwZSxJc01vYmlsZSxJc1RhYmxldCldCgpBbnkgSFRUUCBoZWFkZXIgY291bGQgYmUgdXNlZCBpbnBsYWNlIG9mIFVzZXItQWdlbnQgYnkgY2hhbmdpbmcgdGhlIHBhcmFtZXRlcgpwcm92aWRlZCB0byByZXEuZmhkci4KCldoZW4gY29tcGlsZWQgdG8gdXNlIHRoZSBUcmllIGRldGVjdGlvbiBtZXRob2QgdGhlIHRyaWUgZm9ybWF0IGRhdGEgZmlsZSBuZWVkcwp0byBiZSBwcm92aWRlZC4gQ2hhbmdpbmcgdGhlIGV4dGVuc2lvbiBvZiB0aGUgZGF0YSBmaWxlIGZyb20gZGF0IHRvIHRyaWUgd2lsbAp1c2UgdGhlIGNvcnJlY3QgZGF0YS4KCiAgICAgICAgNTFkZWdyZWVzLWRhdGEtZmlsZSAnNTFEX1JFUE9fUEFUSCcvZGF0YS81MURlZ3JlZXMtTGl0ZVYzLjIudHJpZQoKV2hlbiB1c2VkIHdpdGggVHJpZSB0aGUgTWV0aG9kLCBEaWZmZXJlbmNlIGFuZCBSYW5rIHByb3BlcnRpZXMgYXJlIG5vdAphdmFpbGFibGUuCgpUaGUgZnJlZSBMaXRlIGRhdGEgZmlsZSBjb250YWlucyBpbmZvcm1hdGlvbiBhYm91dCBzY3JlZW4gc2l6ZSBpbiBwaXhlbHMgYW5kCndoZXRoZXIgdGhlIGRldmljZSBpcyBhIG1vYmlsZS4gQSBmdWxsIGxpc3Qgb2YgYXZhaWxhYmxlIHByb3BlcnRpZXMgaXMgbG9jYXRlZApvbiB0aGUgNTFEZWdyZWVzIHdlYiBzaXRlIGF0OgoKICAgIGh0dHBzOi8vNTFkZWdyZWVzLmNvbS9yZXNvdXJjZXMvcHJvcGVydHktZGljdGlvbmFyeQoKU29tZSBwcm9wZXJ0aWVzIGFyZSBvbmx5IGF2YWlsYWJsZSBpbiB0aGUgcGFpZCBmb3IgUHJlbWl1bSBhbmQgRW50ZXJwcmlzZQp2ZXJzaW9ucyBvZiA1MURlZ3JlZXMuIFRoZXNlIGRhdGEgc2V0cyBub3Qgb25seSBjb250YWluIG1vcmUgcHJvcGVydGllcyBidXQKYXJlIHVwZGF0ZWQgd2Vla2x5IGFuZCBkYWlseSBhbmQgY29udGFpbiBzaWduYXR1cmVzIGZvciAxMDAsMDAwcyBvZiBkaWZmZXJlbnQKZGV2aWNlIGNvbWJpbmF0aW9ucy4gRm9yIG1vcmUgaW5mb3JtYXRpb24gc2VlIHRoZSBkYXRhIG9wdGlvbnMgY29tcGFyaXNvbiB3ZWIKcGFnZToKCiAgICBodHRwczovLzUxZGVncmVlcy5jb20vY29tcGFyZS1kYXRhLW9wdGlvbnMKCgoyKSBIb3cgdG8gaW5zdGFsbCBpdAotLS0tLS0tLS0tLS0tLS0tLS0tLQoKVG8gaW5zdGFsbCBoYXByb3h5LCB5b3UgY2FuIGVpdGhlciBjb3B5IHRoZSBzaW5nbGUgcmVzdWx0aW5nIGJpbmFyeSB0byB0aGUKcGxhY2UgeW91IHdhbnQsIG9yIHJ1biA6CgogICAgJCBzdWRvIG1ha2UgaW5zdGFsbAoKSWYgeW91J3JlIHBhY2thZ2luZyBpdCBmb3IgYW5vdGhlciBzeXN0ZW0sIHlvdSBjYW4gc3BlY2lmeSBpdHMgcm9vdCBkaXJlY3RvcnkKaW4gdGhlIHVzdWFsIERFU1RESVIgdmFyaWFibGUuCgoKMykgSG93IHRvIHNldCBpdCB1cAotLS0tLS0tLS0tLS0tLS0tLS0tCgpUaGVyZSBpcyBzb21lIGRvY3VtZW50YXRpb24gaW4gdGhlIGRvYy8gZGlyZWN0b3J5IDoKCiAgICAtIGludHJvLnR4dCA6IHRoaXMgaXMgYW4gaW50cm9kdWN0aW9uIHRvIGhhcHJveHksIGl0IGV4cGxhaW5zIHdoYXQgaXQgaXMKICAgICAgd2hhdCBpdCBpcyBub3QuIFVzZWZ1bCBmb3IgYmVnaW5uZXJzIG9yIHRvIHJlLWRpc2NvdmVyIGl0IHdoZW4gcGxhbm5pbmcKICAgICAgZm9yIGFuIHVwZ3JhZGUuCgogICAgLSBhcmNoaXRlY3R1cmUudHh0IDogdGhpcyBpcyB0aGUgYXJjaGl0ZWN0dXJlIG1hbnVhbC4gSXQgaXMgcXVpdGUgb2xkIGFuZAogICAgICBkb2VzIG5vdCB0ZWxsIGFib3V0IHRoZSBuaWNlIG5ldyBmZWF0dXJlcywgYnV0IGl0J3Mgc3RpbGwgYSBnb29kIHN0YXJ0aW5nCiAgICAgIHBvaW50IHdoZW4geW91IGtub3cgd2hhdCB5b3Ugd2FudCBidXQgZG9uJ3Qga25vdyBob3cgdG8gZG8gaXQuCgogICAgLSBjb25maWd1cmF0aW9uLnR4dCA6IHRoaXMgaXMgdGhlIGNvbmZpZ3VyYXRpb24gbWFudWFsLiBJdCByZWNhbGxzIGEgZmV3CiAgICAgIGVzc2VudGlhbCBIVFRQIGJhc2ljIGNvbmNlcHRzLCBhbmQgZGV0YWlscyBhbGwgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZQogICAgICBzeW50YXggKGtleXdvcmRzLCB1bml0cykuIEl0IGFsc28gZGVzY3JpYmVzIHRoZSBsb2cgYW5kIHN0YXRzIGZvcm1hdC4gSXQKICAgICAgaXMgbm9ybWFsbHkgYWx3YXlzIHVwIHRvIGRhdGUuIElmIHlvdSBzZWUgdGhhdCBzb21ldGhpbmcgaXMgbWlzc2luZyBmcm9tCiAgICAgIGl0LCBwbGVhc2UgcmVwb3J0IGl0IGFzIHRoaXMgaXMgYSBidWcuIFBsZWFzZSBub3RlIHRoYXQgdGhpcyBmaWxlIGlzCiAgICAgIGh1Z2UgYW5kIHRoYXQgaXQncyBnZW5lcmFsbHkgbW9yZSBjb252ZW5pZW50IHRvIHJldmlldyBDeXJpbCBCb2506SdzCiAgICAgIEhUTUwgdHJhbnNsYXRpb24gb25saW5lIGhlcmUgOgoKICAgICAgICAgICBodHRwOi8vY2JvbnRlLmdpdGh1Yi5pby9oYXByb3h5LWRjb252L2NvbmZpZ3VyYXRpb24tMS42Lmh0bWwKCiAgICAtIG1hbmFnZW1lbnQudHh0IDogaXQgZXhwbGFpbnMgaG93IHRvIHN0YXJ0IGhhcHJveHksIGhvdyB0byBtYW5hZ2UgaXQgYXQKICAgICAgcnVudGltZSwgaG93IHRvIG1hbmFnZSBpdCBvbiBtdWx0aXBsZSBub2RlcywgaG93IHRvIHByb2NlZWQgd2l0aCBzZWFtbGVzcwogICAgICB1cGdyYWRlcy4KCiAgICAtIGdwbC50eHQgLyBsZ3BsLnR4dCA6IHRoZSBjb3B5IG9mIHRoZSBsaWNlbnNlcyBjb3ZlcmluZyB0aGUgc29mdHdhcmUuIFNlZQogICAgICB0aGUgJ0xJQ0VOU0UnIGZpbGUgYXQgdGhlIHRvcCBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KCiAgICAtIHRoZSByZXN0IGlzIG1haW5seSBmb3IgZGV2ZWxvcGVycy4KClRoZXJlIGFyZSBhbHNvIGEgbnVtYmVyIG9mIG5pY2UgY29uZmlndXJhdGlvbiBleGFtcGxlcyBpbiB0aGUgImV4YW1wbGVzIgpkaXJlY3RvcnkgYXMgd2VsbCBhcyBvbiBzZXZlcmFsIHNpdGVzIGFuZCBhcnRpY2xlcyBvbiB0aGUgbmV0IHdoaWNoIGFyZSBsaW5rZWQKdG8gZnJvbSB0aGUgaGFwcm94eSB3ZWIgc2l0ZS4KCgo0KSBIb3cgdG8gcmVwb3J0IGEgYnVnCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCkl0IGlzIHBvc3NpYmxlIHRoYXQgZnJvbSB0aW1lIHRvIHRpbWUgeW91J2xsIGZpbmQgYSBidWcuIEEgYnVnIGlzIGEgY2FzZSB3aGVyZQp3aGF0IHlvdSBzZWUgaXMgbm90IHdoYXQgaXMgZG9jdW1lbnRlZC4gT3RoZXJ3aXNlIGl0IGNhbiBiZSBhIG1pc2Rlc2lnbi4gSWYgeW91CmZpbmQgdGhhdCBzb21ldGhpbmcgaXMgc3R1cGlkbHkgZGVzaWduLCBwbGVhc2UgZGlzY3VzcyBpdCBvbiB0aGUgbGlzdCAoc2VlIHRoZQoiaG93IHRvIGNvbnRyaWJ1dGUiIHNlY3Rpb24gYmVsb3cpLiBJZiB5b3UgZmVlbCBsaWtlIHlvdSdyZSBwcm9jZWVkaW5nIHJpZ2h0CmFuZCBoYXByb3h5IGRvZXNuJ3Qgb2JleSwgdGhlbiBmaXJzdCBhc2sgeW91cnNlbGYgaWYgaXQgaXMgcG9zc2libGUgdGhhdCBub2JvZHkKYmVmb3JlIHlvdSBoYXMgZXZlbiBlbmNvdW50ZXJlZCB0aGlzIGlzc3VlLiBJZiBpdCdzIHVubGlrZWx5LCB0aGUgeW91IHByb2JhYmx5CmhhdmUgYW4gaXNzdWUgaW4geW91ciBzZXR1cC4gSnVzdCBpbiBjYXNlIG9mIGRvdWJ0LCBwbGVhc2UgY29uc3VsdCB0aGUgbWFpbGluZwpsaXN0IGFyY2hpdmVzIDoKCiAgICAgICAgICAgICAgICAgICAgICAgIGh0dHA6Ly9tYXJjLmluZm8vP2w9aGFwcm94eQoKT3RoZXJ3aXNlLCBwbGVhc2UgdHJ5IHRvIGdhdGhlciB0aGUgbWF4aW11bSBhbW91bnQgb2YgaW5mb3JtYXRpb24gdG8gaGVscApyZXByb2R1Y2UgdGhlIGlzc3VlIGFuZCBzZW5kIHRoYXQgdG8gdGhlIG1haWxpbmcgbGlzdCA6CgogICAgICAgICAgICAgICAgICAgICAgICBoYXByb3h5QGZvcm1pbHV4Lm9yZwoKUGxlYXNlIGluY2x1ZGUgeW91ciBjb25maWd1cmF0aW9uIGFuZCBsb2dzLiBZb3UgY2FuIG1hc2sgeW91ciBJUCBhZGRyZXNzZXMgYW5kCnBhc3N3b3Jkcywgd2UgZG9uJ3QgbmVlZCB0aGVtLiBCdXQgaXQncyBlc3NlbnRpYWwgdGhhdCB5b3UgcG9zdCB5b3VyIGNvbmZpZyBpZgp5b3Ugd2FudCBwZW9wbGUgdG8gZ3Vlc3Mgd2hhdCBpcyBoYXBwZW5pbmcuCgpBbHNvLCBrZWVwIGluIG1pbmQgdGhhdCBoYXByb3h5IGlzIGRlc2lnbmVkIHRvIE5FVkVSIENSQVNILiBJZiB5b3Ugc2VlIGl0IGRpZQp3aXRob3V0IGFueSByZWFzb24sIHRoZW4gaXQgZGVmaW5pdGVseSBpcyBhIGNyaXRpY2FsIGJ1ZyB0aGF0IG11c3QgYmUgcmVwb3J0ZWQKYW5kIHVyZ2VudGx5IGZpeGVkLiBJdCBoYXMgaGFwcGVuZWQgYSBjb3VwbGUgb2YgdGltZXMgaW4gdGhlIHBhc3QsIGVzc2VudGlhbGx5Cm9uIGRldmVsb3BtZW50IHZlcnNpb25zIHJ1bm5pbmcgb24gbmV3IGFyY2hpdGVjdHVyZXMuIElmIHlvdSB0aGluayB5b3VyIHNldHVwCmlzIGZhaXJseSBjb21tb24sIHRoZW4gaXQgaXMgcG9zc2libGUgdGhhdCB0aGUgaXNzdWUgaXMgdG90YWxseSB1bnJlbGF0ZWQuCkFueXdheSwgaWYgdGhhdCBoYXBwZW5zLCBmZWVsIGZyZWUgdG8gY29udGFjdCBtZSBkaXJlY3RseSwgYXMgSSB3aWxsIGdpdmUgeW91Cmluc3RydWN0aW9ucyBvbiBob3cgdG8gY29sbGVjdCBhIHVzYWJsZSBjb3JlIGZpbGUsIGFuZCB3aWxsIHByb2JhYmx5IGFzayBmb3IKb3RoZXIgY2FwdHVyZXMgdGhhdCB5b3UnbGwgbm90IHdhbnQgdG8gc2hhcmUgd2l0aCB0aGUgbGlzdC4KCgo1KSBIb3cgdG8gY29udHJpYnV0ZQotLS0tLS0tLS0tLS0tLS0tLS0tLQoKUGxlYXNlIGNhcmVmdWxseSByZWFkIHRoZSBDT05UUklCVVRJTkcgZmlsZSB0aGF0IGNvbWVzIHdpdGggdGhlIHNvdXJjZXMuIEl0IGlzCm1hbmRhdG9yeS4KCi0tIGVuZAo=